diff --git a/docs/generated-operations.md b/docs/generated-operations.md index 9ab8f59..2f632b4 100644 --- a/docs/generated-operations.md +++ b/docs/generated-operations.md @@ -34,8 +34,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | GET | `/api/annotations/{id}` | `autoGetApiAnnotationsId` | `auto_get_api_annotations_id` | | DELETE | `/api/annotations/{id}` | `autoDeleteApiAnnotationsId` | `auto_delete_api_annotations_id` | | PUT | `/api/annotations/{id}/resolve` | `autoPutApiAnnotationsIdResolve` | `auto_put_api_annotations_id_resolve` | -| GET | `/api/assignments/{assignmentId}/code-config` | `autoGetApiAssignmentsAssignmentIdCodeConfig` | `auto_get_api_assignments_assignment_id_code_config` | -| POST | `/api/assignments/{assignmentId}/code-config` | `autoPostApiAssignmentsAssignmentIdCodeConfig` | `auto_post_api_assignments_assignment_id_code_config` | | GET | `/api/attachments/{aid}` | `autoGetApiAttachmentsAid` | `auto_get_api_attachments_aid` | | DELETE | `/api/attachments/{aid}` | `autoDeleteApiAttachmentsAid` | `auto_delete_api_attachments_aid` | | GET | `/api/attachments/{aid}/thumbnail` | `autoGetApiAttachmentsAidThumbnail` | `auto_get_api_attachments_aid_thumbnail` | @@ -72,21 +70,10 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | POST | `/api/bulk/export` | `autoPostApiBulkExport` | `auto_post_api_bulk_export` | | POST | `/api/bulk/import` | `autoPostApiBulkImport` | `auto_post_api_bulk_import` | | POST | `/api/bulk/update` | `autoPostApiBulkUpdate` | `auto_post_api_bulk_update` | -| GET | `/api/campaigns/{id}` | `getfieldcampaign` | `get_field_campaign` | -| PUT | `/api/campaigns/{id}` | `updatefieldcampaign` | `update_field_campaign` | -| DELETE | `/api/campaigns/{id}` | `deletefieldcampaign` | `delete_field_campaign` | -| GET | `/api/campaigns/{id}/my-observations` | `listmycampaignobservations` | `list_my_campaign_observations` | -| GET | `/api/campaigns/{id}/observations` | `listcampaignobservations` | `list_campaign_observations` | -| POST | `/api/campaigns/{id}/observations` | `createcampaignobservation` | `create_campaign_observation` | -| GET | `/api/campaigns/{id}/observations/export.geojson` | `exportcampaignobservationsgeojson` | `export_campaign_observations_geo_json` | -| GET | `/api/campaigns/{id}/stac` | `getcampaignstaccatalog` | `get_campaign_stac_catalog` | -| GET | `/api/campaigns/{id}/stac/collection` | `getcampaignstaccollection` | `get_campaign_stac_collection` | -| GET | `/api/campaigns/{id}/stac/items` | `listcampaignstacitems` | `list_campaign_stac_items` | -| GET | `/api/campaigns/{id}/stac/items/{itemId}` | `getcampaignstacitem` | `get_campaign_stac_item` | -| GET | `/api/campaigns/{id}/stac/search` | `searchcampaignstacitems` | `search_campaign_stac_items` | | GET | `/api/catalog` | `listcatalog` | `list_catalog` | | POST | `/api/catalog/annotations/{id}/vote` | `autoPostApiCatalogAnnotationsIdVote` | `auto_post_api_catalog_annotations_id_vote` | | GET | `/api/catalog/categories` | `listcatalogcategories` | `list_catalog_categories` | +| GET | `/api/catalog/deferred` | `listdeferredcatalogsources` | `list_deferred_catalog_sources` | | GET | `/api/catalog/enhanced` | `listenhancedcatalog` | `list_enhanced_catalog` | | GET | `/api/catalog/enhanced/{id}` | `getenhancedcatalogentry` | `get_enhanced_catalog_entry` | | GET | `/api/catalog/enhanced/{id}/annotations` | `autoGetApiCatalogEnhancedIdAnnotations` | `auto_get_api_catalog_enhanced_id_annotations` | @@ -94,66 +81,8 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | PATCH | `/api/catalog/enhanced/{id}/verify` | `autoPatchApiCatalogEnhancedIdVerify` | `auto_patch_api_catalog_enhanced_id_verify` | | POST | `/api/catalog/import` | `importfromcatalog` | `import_from_catalog` | | GET | `/api/catalog/tags` | `listcatalogtags` | `list_catalog_tags` | -| GET | `/api/classrooms` | `listclassrooms` | `list_classrooms` | -| POST | `/api/classrooms` | `createclassroom` | `create_classroom` | -| POST | `/api/classrooms/join` | `joinclassroom` | `join_classroom` | -| GET | `/api/classrooms/templates` | `autoGetApiClassroomsTemplates` | `auto_get_api_classrooms_templates` | -| GET | `/api/classrooms/templates/db` | `autoGetApiClassroomsTemplatesDb` | `auto_get_api_classrooms_templates_db` | -| GET | `/api/classrooms/{classroomId}/analytics` | `autoGetApiClassroomsClassroomIdAnalytics` | `auto_get_api_classrooms_classroom_id_analytics` | -| GET | `/api/classrooms/{classroomId}/analytics/latest` | `autoGetApiClassroomsClassroomIdAnalyticsLatest` | `auto_get_api_classrooms_classroom_id_analytics_latest` | -| POST | `/api/classrooms/{classroomId}/analytics/refresh` | `autoPostApiClassroomsClassroomIdAnalyticsRefresh` | `auto_post_api_classrooms_classroom_id_analytics_refresh` | -| GET | `/api/classrooms/{classroomId}/assignments/{assignmentId}/my-team` | `autoGetApiClassroomsClassroomIdAssignmentsAssignmentIdMyTeam` | `auto_get_api_classrooms_classroom_id_assignments_assignment_id_my_team` | -| POST | `/api/classrooms/{classroomId}/assignments/{assignmentId}/peer-reviews` | `autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdPeerReviews` | `auto_post_api_classrooms_classroom_id_assignments_assignment_id_peer_reviews` | -| POST | `/api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-check` | `autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdPlagiarismCheck` | `auto_post_api_classrooms_classroom_id_assignments_assignment_id_plagiarism_check` | -| POST | `/api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-check-all` | `autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdPlagiarismCheckAll` | `auto_post_api_classrooms_classroom_id_assignments_assignment_id_plagiarism_check_all` | -| GET | `/api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-reports` | `autoGetApiClassroomsClassroomIdAssignmentsAssignmentIdPlagiarismReports` | `auto_get_api_classrooms_classroom_id_assignments_assignment_id_plagiarism_reports` | -| GET | `/api/classrooms/{classroomId}/assignments/{assignmentId}/teams` | `autoGetApiClassroomsClassroomIdAssignmentsAssignmentIdTeams` | `auto_get_api_classrooms_classroom_id_assignments_assignment_id_teams` | -| POST | `/api/classrooms/{classroomId}/assignments/{assignmentId}/teams` | `autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdTeams` | `auto_post_api_classrooms_classroom_id_assignments_assignment_id_teams` | -| DELETE | `/api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}` | `autoDeleteApiClassroomsClassroomIdAssignmentsAssignmentIdTeamsTeamId` | `auto_delete_api_classrooms_classroom_id_assignments_assignment_id_teams_team_id` | -| POST | `/api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}/members` | `autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdTeamsTeamIdMembers` | `auto_post_api_classrooms_classroom_id_assignments_assignment_id_teams_team_id_members` | -| DELETE | `/api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}/members/{userId}` | `autoDeleteApiClassroomsClassroomIdAssignmentsAssignmentIdTeamsTeamIdMembersUserId` | `auto_delete_api_classrooms_classroom_id_assignments_assignment_id_teams_team_id_members_user_id` | -| GET | `/api/classrooms/{classroomId}/campaigns` | `autoGetApiClassroomsClassroomIdCampaigns` | `auto_get_api_classrooms_classroom_id_campaigns` | -| POST | `/api/classrooms/{classroomId}/campaigns` | `autoPostApiClassroomsClassroomIdCampaigns` | `auto_post_api_classrooms_classroom_id_campaigns` | -| GET | `/api/classrooms/{classroomId}/forums` | `autoGetApiClassroomsClassroomIdForums` | `auto_get_api_classrooms_classroom_id_forums` | -| POST | `/api/classrooms/{classroomId}/forums` | `autoPostApiClassroomsClassroomIdForums` | `auto_post_api_classrooms_classroom_id_forums` | -| GET | `/api/classrooms/{classroomId}/submissions/{submissionId}/peer-reviews` | `autoGetApiClassroomsClassroomIdSubmissionsSubmissionIdPeerReviews` | `auto_get_api_classrooms_classroom_id_submissions_submission_id_peer_reviews` | -| GET | `/api/classrooms/{id}` | `getclassroom` | `get_classroom` | -| PUT | `/api/classrooms/{id}` | `autoPutApiClassroomsId` | `auto_put_api_classrooms_id` | -| DELETE | `/api/classrooms/{id}` | `autoDeleteApiClassroomsId` | `auto_delete_api_classrooms_id` | -| GET | `/api/classrooms/{id}/assignments` | `listassignments` | `list_assignments` | -| POST | `/api/classrooms/{id}/assignments` | `createassignment` | `create_assignment` | -| GET | `/api/classrooms/{id}/assignments/{aid}` | `getassignment` | `get_assignment` | -| PUT | `/api/classrooms/{id}/assignments/{aid}` | `autoPutApiClassroomsIdAssignmentsAid` | `auto_put_api_classrooms_id_assignments_aid` | -| DELETE | `/api/classrooms/{id}/assignments/{aid}` | `autoDeleteApiClassroomsIdAssignmentsAid` | `auto_delete_api_classrooms_id_assignments_aid` | -| POST | `/api/classrooms/{id}/assignments/{aid}/auto-grade` | `autoPostApiClassroomsIdAssignmentsAidAutoGrade` | `auto_post_api_classrooms_id_assignments_aid_auto_grade` | -| GET | `/api/classrooms/{id}/assignments/{aid}/rubric` | `autoGetApiClassroomsIdAssignmentsAidRubric` | `auto_get_api_classrooms_id_assignments_aid_rubric` | -| POST | `/api/classrooms/{id}/assignments/{aid}/rubric` | `autoPostApiClassroomsIdAssignmentsAidRubric` | `auto_post_api_classrooms_id_assignments_aid_rubric` | -| DELETE | `/api/classrooms/{id}/assignments/{aid}/rubric` | `autoDeleteApiClassroomsIdAssignmentsAidRubric` | `auto_delete_api_classrooms_id_assignments_aid_rubric` | -| POST | `/api/classrooms/{id}/assignments/{aid}/start` | `startassignment` | `start_assignment` | -| GET | `/api/classrooms/{id}/assignments/{aid}/submissions` | `listsubmissions` | `list_submissions` | -| POST | `/api/classrooms/{id}/assignments/{aid}/submissions/{sid}/grade` | `gradesubmission` | `grade_submission` | -| POST | `/api/classrooms/{id}/assignments/{aid}/submissions/{sid}/return` | `autoPostApiClassroomsIdAssignmentsAidSubmissionsSidReturn` | `auto_post_api_classrooms_id_assignments_aid_submissions_sid_return` | -| POST | `/api/classrooms/{id}/assignments/{aid}/submit` | `submitwork` | `submit_work` | -| GET | `/api/classrooms/{id}/curricula` | `autoGetApiClassroomsIdCurricula` | `auto_get_api_classrooms_id_curricula` | -| GET | `/api/classrooms/{id}/grades/export` | `autoGetApiClassroomsIdGradesExport` | `auto_get_api_classrooms_id_grades_export` | -| POST | `/api/classrooms/{id}/import` | `autoPostApiClassroomsIdImport` | `auto_post_api_classrooms_id_import` | -| GET | `/api/classrooms/{id}/live` | `autoGetApiClassroomsIdLive` | `auto_get_api_classrooms_id_live` | -| GET | `/api/classrooms/{id}/members` | `autoGetApiClassroomsIdMembers` | `auto_get_api_classrooms_id_members` | -| PUT | `/api/classrooms/{id}/members/{uid}` | `autoPutApiClassroomsIdMembersUid` | `auto_put_api_classrooms_id_members_uid` | -| DELETE | `/api/classrooms/{id}/members/{uid}` | `autoDeleteApiClassroomsIdMembersUid` | `auto_delete_api_classrooms_id_members_uid` | -| GET | `/api/classrooms/{id}/my-submissions` | `autoGetApiClassroomsIdMySubmissions` | `auto_get_api_classrooms_id_my_submissions` | -| GET | `/api/classrooms/{id}/progress` | `autoGetApiClassroomsIdProgress` | `auto_get_api_classrooms_id_progress` | -| GET | `/api/classrooms/{id}/quizzes` | `autoGetApiClassroomsIdQuizzes` | `auto_get_api_classrooms_id_quizzes` | -| PUT | `/api/code-assignments/{id}` | `autoPutApiCodeAssignmentsId` | `auto_put_api_code_assignments_id` | -| DELETE | `/api/code-assignments/{id}` | `autoDeleteApiCodeAssignmentsId` | `auto_delete_api_code_assignments_id` | -| POST | `/api/code-assignments/{id}/run` | `autoPostApiCodeAssignmentsIdRun` | `auto_post_api_code_assignments_id_run` | -| GET | `/api/code-assignments/{id}/submissions` | `autoGetApiCodeAssignmentsIdSubmissions` | `auto_get_api_code_assignments_id_submissions` | -| POST | `/api/code-assignments/{id}/submit` | `autoPostApiCodeAssignmentsIdSubmit` | `auto_post_api_code_assignments_id_submit` | -| GET | `/api/code-submissions/{id}` | `autoGetApiCodeSubmissionsId` | `auto_get_api_code_submissions_id` | | GET | `/api/collab/metrics` | `collabmetrics` | `collab_metrics` | | GET | `/api/collab/rooms` | `listcollabrooms` | `list_collab_rooms` | -| GET | `/api/collab/{roomId}/contributions` | `autoGetApiCollabRoomIdContributions` | `auto_get_api_collab_room_id_contributions` | -| GET | `/api/collab/{roomId}/summary` | `autoGetApiCollabRoomIdSummary` | `auto_get_api_collab_room_id_summary` | | GET | `/api/collections/{id}/history` | `autoGetApiCollectionsIdHistory` | `auto_get_api_collections_id_history` | | GET | `/api/collections/{id}/items.arrow` | `autoGetApiCollectionsIdItemsArrow` | `auto_get_api_collections_id_items_arrow` | | GET | `/api/collections/{id}/items.parquet` | `autoGetApiCollectionsIdItemsParquet` | `auto_get_api_collections_id_items_parquet` | @@ -168,17 +97,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | GET | `/api/collections/{id}/items/{fid}/history` | `autoGetApiCollectionsIdItemsFidHistory` | `auto_get_api_collections_id_items_fid_history` | | GET | `/api/comments/{commentId}/replies` | `autoGetApiCommentsCommentIdReplies` | `auto_get_api_comments_comment_id_replies` | | POST | `/api/convert` | `convertdataset` | `convert_dataset` | -| GET | `/api/curricula` | `autoGetApiCurricula` | `auto_get_api_curricula` | -| POST | `/api/curricula` | `autoPostApiCurricula` | `auto_post_api_curricula` | -| GET | `/api/curricula/{id}` | `autoGetApiCurriculaId` | `auto_get_api_curricula_id` | -| PUT | `/api/curricula/{id}` | `autoPutApiCurriculaId` | `auto_put_api_curricula_id` | -| DELETE | `/api/curricula/{id}` | `autoDeleteApiCurriculaId` | `auto_delete_api_curricula_id` | -| POST | `/api/curricula/{id}/lessons` | `autoPostApiCurriculaIdLessons` | `auto_post_api_curricula_id_lessons` | -| GET | `/api/curricula/{id}/lessons/{lid}` | `autoGetApiCurriculaIdLessonsLid` | `auto_get_api_curricula_id_lessons_lid` | -| PUT | `/api/curricula/{id}/lessons/{lid}` | `autoPutApiCurriculaIdLessonsLid` | `auto_put_api_curricula_id_lessons_lid` | -| DELETE | `/api/curricula/{id}/lessons/{lid}` | `autoDeleteApiCurriculaIdLessonsLid` | `auto_delete_api_curricula_id_lessons_lid` | -| PUT | `/api/curricula/{id}/lessons/{lid}/progress` | `autoPutApiCurriculaIdLessonsLidProgress` | `auto_put_api_curricula_id_lessons_lid_progress` | -| GET | `/api/curricula/{id}/progress` | `autoGetApiCurriculaIdProgress` | `auto_get_api_curricula_id_progress` | | GET | `/api/datasets/{id}/lineage` | `autoGetApiDatasetsIdLineage` | `auto_get_api_datasets_id_lineage` | | GET | `/api/datasets/{name}/metadata` | `autoGetApiDatasetsNameMetadata` | `auto_get_api_datasets_name_metadata` | | PATCH | `/api/datasets/{name}/metadata` | `autoPatchApiDatasetsNameMetadata` | `auto_patch_api_datasets_name_metadata` | @@ -201,11 +119,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | GET | `/api/federation/sources/{id}` | `autoGetApiFederationSourcesId` | `auto_get_api_federation_sources_id` | | DELETE | `/api/federation/sources/{id}` | `autoDeleteApiFederationSourcesId` | `auto_delete_api_federation_sources_id` | | GET | `/api/formats` | `autoGetApiFormats` | `auto_get_api_formats` | -| GET | `/api/forums/{forumId}` | `autoGetApiForumsForumId` | `auto_get_api_forums_forum_id` | -| DELETE | `/api/forums/{forumId}` | `autoDeleteApiForumsForumId` | `auto_delete_api_forums_forum_id` | -| PUT | `/api/forums/{forumId}/lock` | `autoPutApiForumsForumIdLock` | `auto_put_api_forums_forum_id_lock` | -| GET | `/api/forums/{forumId}/posts` | `autoGetApiForumsForumIdPosts` | `auto_get_api_forums_forum_id_posts` | -| POST | `/api/forums/{forumId}/posts` | `autoPostApiForumsForumIdPosts` | `auto_post_api_forums_forum_id_posts` | | POST | `/api/gdpr/delete-cancel` | `autoPostApiGdprDeleteCancel` | `auto_post_api_gdpr_delete_cancel` | | POST | `/api/gdpr/delete-request` | `autoPostApiGdprDeleteRequest` | `auto_post_api_gdpr_delete_request` | | GET | `/api/gdpr/delete-status` | `autoGetApiGdprDeleteStatus` | `auto_get_api_gdpr_delete_status` | @@ -216,85 +129,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | GET | `/api/geocode/reverse` | `reversegeocode` | `reverse_geocode` | | POST | `/api/geodesic/area` | `autoPostApiGeodesicArea` | `auto_post_api_geodesic_area` | | POST | `/api/geodesic/length` | `autoPostApiGeodesicLength` | `auto_post_api_geodesic_length` | -| GET | `/api/indoor/buildings` | `listbuildings` | `list_buildings` | -| POST | `/api/indoor/buildings` | `createbuilding` | `create_building` | -| GET | `/api/indoor/buildings/{id}` | `getbuilding` | `get_building` | -| PUT | `/api/indoor/buildings/{id}` | `updatebuilding` | `update_building` | -| DELETE | `/api/indoor/buildings/{id}` | `deletebuilding` | `delete_building` | -| GET | `/api/indoor/buildings/{id}/analysis/accessibility` | `getaccessibilityvalidation` | `get_accessibility_validation` | -| GET | `/api/indoor/buildings/{id}/analysis/dead-zones` | `autoGetApiIndoorBuildingsIdAnalysisDeadZones` | `auto_get_api_indoor_buildings_id_analysis_dead_zones` | -| GET | `/api/indoor/buildings/{id}/analysis/reachable` | `autoGetApiIndoorBuildingsIdAnalysisReachable` | `auto_get_api_indoor_buildings_id_analysis_reachable` | -| GET | `/api/indoor/buildings/{id}/analytics` | `gethistoricalanalytics` | `get_historical_analytics` | -| GET | `/api/indoor/buildings/{id}/assets` | `listassets` | `list_assets` | -| POST | `/api/indoor/buildings/{id}/assets` | `createasset` | `create_asset` | -| PUT | `/api/indoor/buildings/{id}/assets/{aid}` | `updateassetposition` | `update_asset_position` | -| GET | `/api/indoor/buildings/{id}/bookings` | `listbookings` | `list_bookings` | -| POST | `/api/indoor/buildings/{id}/bookings` | `createbooking` | `create_booking` | -| DELETE | `/api/indoor/buildings/{id}/bookings/{bid}` | `cancelbooking` | `cancel_booking` | -| POST | `/api/indoor/buildings/{id}/bookings/{bid}/checkin` | `checkinbooking` | `checkin_booking` | -| GET | `/api/indoor/buildings/{id}/boundaries` | `listboundaries` | `list_boundaries` | -| POST | `/api/indoor/buildings/{id}/boundaries` | `createboundary` | `create_boundary` | -| GET | `/api/indoor/buildings/{id}/boundaries/{bid}` | `getboundary` | `get_boundary` | -| PUT | `/api/indoor/buildings/{id}/boundaries/{bid}` | `updateboundary` | `update_boundary` | -| DELETE | `/api/indoor/buildings/{id}/boundaries/{bid}` | `deleteboundary` | `delete_boundary` | -| POST | `/api/indoor/buildings/{id}/evacuation` | `getevacuationroutes` | `get_evacuation_routes` | -| POST | `/api/indoor/buildings/{id}/evacuation/alert` | `triggerevacuationalert` | `trigger_evacuation_alert` | -| POST | `/api/indoor/buildings/{id}/evacuation/optimal` | `indoorevacuationot` | `indoor_evacuation_ot` | -| GET | `/api/indoor/buildings/{id}/export/imdf` | `exportimdf` | `export_imdf` | -| GET | `/api/indoor/buildings/{id}/export/indoorgml` | `autoGetApiIndoorBuildingsIdExportIndoorgml` | `auto_get_api_indoor_buildings_id_export_indoorgml` | -| GET | `/api/indoor/buildings/{id}/floors` | `listfloors` | `list_floors` | -| POST | `/api/indoor/buildings/{id}/floors` | `createfloor` | `create_floor` | -| POST | `/api/indoor/buildings/{id}/floors/{fid}/plan` | `uploadfloorplan` | `upload_floor_plan` | -| GET | `/api/indoor/buildings/{id}/floors/{level}/spaces` | `listfloorspaces` | `list_floor_spaces` | -| GET | `/api/indoor/buildings/{id}/geofences` | `listgeofences` | `list_geofences` | -| POST | `/api/indoor/buildings/{id}/geofences` | `creategeofence` | `create_geofence` | -| GET | `/api/indoor/buildings/{id}/geofences/{gid}` | `getgeofence` | `get_geofence` | -| PUT | `/api/indoor/buildings/{id}/geofences/{gid}` | `updategeofence` | `update_geofence` | -| DELETE | `/api/indoor/buildings/{id}/geofences/{gid}` | `deletegeofence` | `delete_geofence` | -| GET | `/api/indoor/buildings/{id}/occupancy` | `buildingoccupancy` | `building_occupancy` | -| POST | `/api/indoor/buildings/{id}/positions` | `ingestpositions` | `ingest_positions` | -| GET | `/api/indoor/buildings/{id}/positions/latest` | `getlatestpositions` | `get_latest_positions` | -| GET | `/api/indoor/buildings/{id}/positions/{deviceId}/history` | `getpositionhistory` | `get_position_history` | -| GET | `/api/indoor/buildings/{id}/scenarios` | `autoGetApiIndoorBuildingsIdScenarios` | `auto_get_api_indoor_buildings_id_scenarios` | -| POST | `/api/indoor/buildings/{id}/scenarios` | `autoPostApiIndoorBuildingsIdScenarios` | `auto_post_api_indoor_buildings_id_scenarios` | -| GET | `/api/indoor/buildings/{id}/scenarios/{sid}` | `autoGetApiIndoorBuildingsIdScenariosSid` | `auto_get_api_indoor_buildings_id_scenarios_sid` | -| PUT | `/api/indoor/buildings/{id}/scenarios/{sid}` | `autoPutApiIndoorBuildingsIdScenariosSid` | `auto_put_api_indoor_buildings_id_scenarios_sid` | -| DELETE | `/api/indoor/buildings/{id}/scenarios/{sid}` | `autoDeleteApiIndoorBuildingsIdScenariosSid` | `auto_delete_api_indoor_buildings_id_scenarios_sid` | -| GET | `/api/indoor/buildings/{id}/sensors` | `autoGetApiIndoorBuildingsIdSensors` | `auto_get_api_indoor_buildings_id_sensors` | -| POST | `/api/indoor/buildings/{id}/sensors` | `autoPostApiIndoorBuildingsIdSensors` | `auto_post_api_indoor_buildings_id_sensors` | -| GET | `/api/indoor/buildings/{id}/sensors/heatmap` | `getindoorsensorheatmap` | `get_indoor_sensor_heatmap` | -| GET | `/api/indoor/buildings/{id}/sensors/timeseries` | `getindoorsensortimeseries` | `get_indoor_sensor_time_series` | -| POST | `/api/indoor/buildings/{id}/simulate/fire-evacuation` | `indoorfireevacuation` | `indoor_fire_evacuation` | -| POST | `/api/indoor/buildings/{id}/spaces` | `createspace` | `create_space` | -| GET | `/api/indoor/buildings/{id}/spaces/{sid}` | `getspace` | `get_space` | -| PUT | `/api/indoor/buildings/{id}/spaces/{sid}` | `autoPutApiIndoorBuildingsIdSpacesSid` | `auto_put_api_indoor_buildings_id_spaces_sid` | -| DELETE | `/api/indoor/buildings/{id}/spaces/{sid}` | `autoDeleteApiIndoorBuildingsIdSpacesSid` | `auto_delete_api_indoor_buildings_id_spaces_sid` | -| POST | `/api/indoor/buildings/{id}/spectral` | `indoorspectralanalysis` | `indoor_spectral_analysis` | -| GET | `/api/indoor/buildings/{id}/stats` | `getbuildingstats` | `get_building_stats` | -| GET | `/api/indoor/buildings/{id}/stream` | `indoorstream` | `indoor_stream` | -| GET | `/api/indoor/buildings/{id}/stream/status` | `autoGetApiIndoorBuildingsIdStreamStatus` | `auto_get_api_indoor_buildings_id_stream_status` | -| POST | `/api/indoor/buildings/{id}/topology/compare` | `indoortopologycompare` | `indoor_topology_compare` | -| POST | `/api/indoor/buildings/{id}/topology/resilience` | `indoortopologyresilience` | `indoor_topology_resilience` | -| POST | `/api/indoor/buildings/{id}/topology/track` | `indoortopologytrack` | `indoor_topology_track` | -| GET | `/api/indoor/buildings/{id}/transitions` | `listtransitions` | `list_transitions` | -| GET | `/api/indoor/buildings/{id}/validate` | `validatebuilding` | `validate_building` | -| GET | `/api/indoor/campuses` | `listcampuses` | `list_campuses` | -| POST | `/api/indoor/campuses` | `createcampus` | `create_campus` | -| GET | `/api/indoor/campuses/{id}` | `getcampus` | `get_campus` | -| PUT | `/api/indoor/campuses/{id}` | `updatecampus` | `update_campus` | -| DELETE | `/api/indoor/campuses/{id}` | `deletecampus` | `delete_campus` | -| GET | `/api/indoor/campuses/{id}/buildings` | `listcampusbuildings` | `list_campus_buildings` | -| POST | `/api/indoor/floors/{id}/forecast` | `indoorforecast` | `indoor_forecast` | -| POST | `/api/indoor/floors/{id}/navigate/manifold` | `indoormanifoldnavigate` | `indoor_manifold_navigate` | -| POST | `/api/indoor/floors/{id}/simulate/acoustics` | `indooracoustics` | `indoor_acoustics` | -| POST | `/api/indoor/floors/{id}/simulate/airflow` | `indoorairflow` | `indoor_airflow` | -| POST | `/api/indoor/floors/{id}/simulate/infection-risk` | `indoorinfectionrisk` | `indoor_infection_risk` | -| POST | `/api/indoor/floors/{id}/simulate/rf` | `indoorrfcoverage` | `indoor_rf_coverage` | -| POST | `/api/indoor/floors/{id}/simulate/thermal` | `indoorthermal` | `indoor_thermal` | -| POST | `/api/indoor/import` | `importbuilding` | `import_building` | -| POST | `/api/indoor/navigate` | `navigateindoor` | `navigate_indoor` | -| POST | `/api/indoor/navigate/nearest` | `findnearestindoor` | `find_nearest_indoor` | -| POST | `/api/indoor/navigate/outdoor` | `navigateindooroutdoor` | `navigate_indoor_outdoor` | | GET | `/api/jobs` | `autoGetApiJobs` | `auto_get_api_jobs` | | POST | `/api/jobs` | `autoPostApiJobs` | `auto_post_api_jobs` | | GET | `/api/jobs/{id}` | `autoGetApiJobsId` | `auto_get_api_jobs_id` | @@ -339,11 +173,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | POST | `/api/notifications/test` | `autoPostApiNotificationsTest` | `auto_post_api_notifications_test` | | GET | `/api/notifications/unread-count` | `autoGetApiNotificationsUnreadCount` | `auto_get_api_notifications_unread_count` | | PUT | `/api/notifications/{id}/read` | `autoPutApiNotificationsIdRead` | `auto_put_api_notifications_id_read` | -| GET | `/api/observations/{id}` | `autoGetApiObservationsId` | `auto_get_api_observations_id` | -| DELETE | `/api/observations/{id}` | `autoDeleteApiObservationsId` | `auto_delete_api_observations_id` | -| GET | `/api/observations/{id}/attachments` | `listobservationattachments` | `list_observation_attachments` | -| POST | `/api/observations/{id}/attachments` | `uploadobservationattachment` | `upload_observation_attachment` | -| PUT | `/api/observations/{id}/sync` | `autoPutApiObservationsIdSync` | `auto_put_api_observations_id_sync` | | GET | `/api/openapi.yaml` | `getopenapispec` | `get_open_api_spec` | | GET | `/api/operations` | `listoperations` | `list_operations` | | GET | `/api/orgs` | `autoGetApiOrgs` | `auto_get_api_orgs` | @@ -368,17 +197,12 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | PUT | `/api/ownership-transfers/{id}/accept` | `autoPutApiOwnershipTransfersIdAccept` | `auto_put_api_ownership_transfers_id_accept` | | PUT | `/api/ownership-transfers/{id}/cancel` | `autoPutApiOwnershipTransfersIdCancel` | `auto_put_api_ownership_transfers_id_cancel` | | PUT | `/api/ownership-transfers/{id}/reject` | `autoPutApiOwnershipTransfersIdReject` | `auto_put_api_ownership_transfers_id_reject` | -| GET | `/api/peer-reviews/my-assignments` | `autoGetApiPeerReviewsMyAssignments` | `auto_get_api_peer_reviews_my_assignments` | -| GET | `/api/peer-reviews/{id}` | `autoGetApiPeerReviewsId` | `auto_get_api_peer_reviews_id` | -| PUT | `/api/peer-reviews/{id}/complete` | `autoPutApiPeerReviewsIdComplete` | `auto_put_api_peer_reviews_id_complete` | | GET | `/api/permissions` | `autoGetApiPermissions` | `auto_get_api_permissions` | | POST | `/api/permissions` | `autoPostApiPermissions` | `auto_post_api_permissions` | | POST | `/api/permissions/check` | `autoPostApiPermissionsCheck` | `auto_post_api_permissions_check` | | DELETE | `/api/permissions/{id}` | `autoDeleteApiPermissionsId` | `auto_delete_api_permissions_id` | | POST | `/api/pipeline` | `autoPostApiPipeline` | `auto_post_api_pipeline` | -| GET | `/api/plagiarism-reports/{id}` | `autoGetApiPlagiarismReportsId` | `auto_get_api_plagiarism_reports_id` | -| DELETE | `/api/plagiarism-reports/{id}` | `autoDeleteApiPlagiarismReportsId` | `auto_delete_api_plagiarism_reports_id` | -| PUT | `/api/plagiarism-reports/{id}/flag` | `autoPutApiPlagiarismReportsIdFlag` | `auto_put_api_plagiarism_reports_id_flag` | +| GET | `/api/pipeline/operations` | `autoGetApiPipelineOperations` | `auto_get_api_pipeline_operations` | | GET | `/api/plugins` | `listplugins` | `list_plugins` | | GET | `/api/plugins/catalog` | `plugincatalog` | `plugin_catalog` | | POST | `/api/plugins/install` | `installplugin` | `install_plugin` | @@ -399,10 +223,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | POST | `/api/plugins/marketplace/{id}/reviews` | `autoPostApiPluginsMarketplaceIdReviews` | `auto_post_api_plugins_marketplace_id_reviews` | | GET | `/api/plugins/registry` | `autoGetApiPluginsRegistry` | `auto_get_api_plugins_registry` | | POST | `/api/plugins/registry/install` | `autoPostApiPluginsRegistryInstall` | `auto_post_api_plugins_registry_install` | -| PUT | `/api/posts/{postId}` | `autoPutApiPostsPostId` | `auto_put_api_posts_post_id` | -| DELETE | `/api/posts/{postId}` | `autoDeleteApiPostsPostId` | `auto_delete_api_posts_post_id` | -| PUT | `/api/posts/{postId}/pin` | `autoPutApiPostsPostIdPin` | `auto_put_api_posts_post_id_pin` | -| GET | `/api/posts/{postId}/replies` | `autoGetApiPostsPostIdReplies` | `auto_get_api_posts_post_id_replies` | | GET | `/api/preferences/{key}` | `getpreference` | `get_preference` | | PUT | `/api/preferences/{key}` | `setpreference` | `set_preference` | | POST | `/api/process` | `processdataset` | `process_dataset` | @@ -437,13 +257,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | POST | `/api/query/sql` | `postApiQuerySql` | `post_api_query_sql` | | GET | `/api/query/sql/datasets` | `getApiQuerySqlDatasets` | `get_api_query_sql_datasets` | | GET | `/api/query/sql/info` | `getApiQuerySqlInfo` | `get_api_query_sql_info` | -| POST | `/api/quizzes` | `autoPostApiQuizzes` | `auto_post_api_quizzes` | -| GET | `/api/quizzes/{id}` | `autoGetApiQuizzesId` | `auto_get_api_quizzes_id` | -| PUT | `/api/quizzes/{id}` | `autoPutApiQuizzesId` | `auto_put_api_quizzes_id` | -| DELETE | `/api/quizzes/{id}` | `autoDeleteApiQuizzesId` | `auto_delete_api_quizzes_id` | -| POST | `/api/quizzes/{id}/questions` | `autoPostApiQuizzesIdQuestions` | `auto_post_api_quizzes_id_questions` | -| PUT | `/api/quizzes/{id}/questions/{qid}` | `autoPutApiQuizzesIdQuestionsQid` | `auto_put_api_quizzes_id_questions_qid` | -| DELETE | `/api/quizzes/{id}/questions/{qid}` | `autoDeleteApiQuizzesIdQuestionsQid` | `auto_delete_api_quizzes_id_questions_qid` | | POST | `/api/raster/classify/isodata` | `autoPostApiRasterClassifyIsodata` | `auto_post_api_raster_classify_isodata` | | POST | `/api/raster/classify/kmeans` | `autoPostApiRasterClassifyKmeans` | `auto_post_api_raster_classify_kmeans` | | POST | `/api/raster/classify/ml` | `autoPostApiRasterClassifyMl` | `auto_post_api_raster_classify_ml` | @@ -470,9 +283,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | POST | `/api/route/isochrone` | `computeisochrone` | `compute_isochrone` | | POST | `/api/route/matrix` | `computeroutematrix` | `compute_route_matrix` | | POST | `/api/route/service-area` | `computeservicearea` | `compute_service_area` | -| POST | `/api/rubrics/{rubricId}/criteria` | `autoPostApiRubricsRubricIdCriteria` | `auto_post_api_rubrics_rubric_id_criteria` | -| PUT | `/api/rubrics/{rubricId}/criteria/{criterionId}` | `autoPutApiRubricsRubricIdCriteriaCriterionId` | `auto_put_api_rubrics_rubric_id_criteria_criterion_id` | -| DELETE | `/api/rubrics/{rubricId}/criteria/{criterionId}` | `autoDeleteApiRubricsRubricIdCriteriaCriterionId` | `auto_delete_api_rubrics_rubric_id_criteria_criterion_id` | | GET | `/api/search` | `autoGetApiSearch` | `auto_get_api_search` | | POST | `/api/share` | `autoPostApiShare` | `auto_post_api_share` | | POST | `/api/share/links` | `autoPostApiShareLinks` | `auto_post_api_share_links` | @@ -497,6 +307,7 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | GET | `/api/stories/{id}` | `getstory` | `get_story` | | PUT | `/api/stories/{id}` | `updatestory` | `update_story` | | DELETE | `/api/stories/{id}` | `deletestory` | `delete_story` | +| GET | `/api/stories/{id}/collections/{collectionId}/items` | `autoGetApiStoriesIdCollectionsCollectionIdItems` | `auto_get_api_stories_id_collections_collection_id_items` | | GET | `/api/stories/{id}/members` | `liststorymembers` | `list_story_members` | | POST | `/api/stories/{id}/members` | `addstorymember` | `add_story_member` | | DELETE | `/api/stories/{id}/members/{uid}` | `removestorymember` | `remove_story_member` | @@ -506,8 +317,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | POST | `/api/stories/{id}/slides/reorder` | `reorderslides` | `reorder_slides` | | PUT | `/api/stories/{id}/slides/{sid}` | `updateslide` | `update_slide` | | DELETE | `/api/stories/{id}/slides/{sid}` | `deleteslide` | `delete_slide` | -| GET | `/api/submissions/{sid}/rubric-scores` | `autoGetApiSubmissionsSidRubricScores` | `auto_get_api_submissions_sid_rubric_scores` | -| POST | `/api/submissions/{sid}/rubric-scores` | `autoPostApiSubmissionsSidRubricScores` | `auto_post_api_submissions_sid_rubric_scores` | | POST | `/api/sync/diff` | `autoPostApiSyncDiff` | `auto_post_api_sync_diff` | | POST | `/api/sync/download` | `autoPostApiSyncDownload` | `auto_post_api_sync_download` | | POST | `/api/sync/merge` | `autoPostApiSyncMerge` | `auto_post_api_sync_merge` | @@ -521,7 +330,6 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | POST | `/api/topology/homology` | `computepersistenthomology` | `compute_persistent_homology` | | POST | `/api/topology/spatiotemporal` | `computespatiotemporal` | `compute_spatiotemporal` | | POST | `/api/topology/wasserstein` | `computewassersteindistance` | `compute_wasserstein_distance` | -| GET | `/api/users/autocomplete` | `autoGetApiUsersAutocomplete` | `auto_get_api_users_autocomplete` | | GET | `/api/vcs/branches` | `autoGetApiVcsBranches` | `auto_get_api_vcs_branches` | | POST | `/api/vcs/branches` | `autoPostApiVcsBranches` | `auto_post_api_vcs_branches` | | POST | `/api/vcs/branches/switch` | `autoPostApiVcsBranchesSwitch` | `auto_post_api_vcs_branches_switch` | @@ -570,6 +378,7 @@ Auto-generated from the server OpenAPI spec. Each operation is available in both | GET | `/pmtiles/{archive}/{z}/{x}/{y}` | `getpmtile` | `get_pm_tile` | | GET | `/public/maps/{token}` | `getpublicmap` | `get_public_map` | | GET | `/public/stories/{token}` | `getpublicstory` | `get_public_story` | +| GET | `/public/stories/{token}/collections/{collectionId}/items` | `autoGetPublicStoriesTokenCollectionsCollectionIdItems` | `auto_get_public_stories_token_collections_collection_id_items` | | POST | `/raster/{name}/aspect` | `autoPostRasterNameAspect` | `auto_post_raster_name_aspect` | | POST | `/raster/{name}/band-math` | `rasterbandmath` | `raster_band_math` | | GET | `/raster/{name}/cog` | `autoGetRasterNameCog` | `auto_get_raster_name_cog` | diff --git a/docs/python.md b/docs/python.md index 6506b3c..39fdc91 100644 --- a/docs/python.md +++ b/docs/python.md @@ -3,7 +3,7 @@ The Python SDK exposes the Cairn/Roteiro API through the same three layers used by the TypeScript SDK: 1. `RoteiroClient` for the handwritten, high-traffic workflows. -2. Domain modules such as `analysis`, `attachments`, `collections`, `indoor`, `layers`, `raster`, and `vcs`. +2. Domain modules such as `analysis`, `attachments`, `collections`, `layers`, `raster`, and `vcs`. 3. `RoteiroGeneratedApi` for full parity with the server OpenAPI spec and the generated operation map in [`generated-operations.md`](./generated-operations.md). ## SDK Shape @@ -11,7 +11,7 @@ The Python SDK exposes the Cairn/Roteiro API through the same three layers used | Layer | Export | Use it for | |------|--------|------------| | Handwritten client | `RoteiroClient` | Health, datasets, collections, processing jobs, uploads, raster workflow helpers, and tile URL helpers | -| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `indoor`, `Pipeline` | Focused helpers grouped by domain; these are standalone modules, not instance methods on `RoteiroClient` | +| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `Pipeline` | Focused helpers grouped by domain; these are standalone modules, not instance methods on `RoteiroClient` | | Full API coverage | `RoteiroGeneratedApi` | Endpoints that are only available in the generated OpenAPI client | ## Installation @@ -152,7 +152,7 @@ print([op["name"] for op in catalog["operations"]]) Domain helpers are standalone modules, not `RoteiroClient` instance methods. ```python -from roteiro import analysis, attachments, collections, indoor, layers, raster, vcs +from roteiro import analysis, attachments, collections, layers, raster, vcs ``` | Module | Key helpers | @@ -163,7 +163,6 @@ from roteiro import analysis, attachments, collections, indoor, layers, raster, | `layers` | `upload_layer`, `list_layers`, `get_layer`, `update_layer`, `publish_layer`, `archive_layer`, `upload_layer_data`, `delete_layer`, `preview_layer` | | `vcs` | `init_repo`, `commit`, `log`, `diff`, `checkout` | | `raster` | `get_raster_info`, `get_raster_stats`, `get_raster_histogram`, `get_raster_dimensions`, `get_raster_band_values`, `band_math`, `ndvi`, `hillshade`, `zonal_stats`, `export_raster`, `contour`, `viewshed`, `elevation_profile`, `kde`, `process`, `mosaic`, `get_mosaic_info` | -| `indoor` | `list_buildings`, `get_building`, `create_building`, `update_building`, `delete_building`, `list_floors`, `create_floor`, `list_spaces`, `create_space`, `get_space`, `list_assets`, `create_asset`, `find_path`, `parse_indoor_gml`, `import_ifc`, `import_indoor_file`, `import_imdf`, `get_occupancy`, `get_evacuation_routes` | ### Example: analysis helpers @@ -211,22 +210,6 @@ ndvi = raster.ndvi(client, "landsat_scene", nir_band=4, red_band=3) contours = raster.contour(client, "dem", interval=5) ``` -### Example: indoor helpers - -```python -from roteiro import indoor - -buildings = indoor.list_buildings(client) - -route = indoor.find_path( - client, - "hq", - "lobby", - "room-201", - accessible_only=True, -) -``` - ## Pipeline Builder Use `Pipeline` when you want a compact, fluent wrapper around repeated `/api/process` calls: diff --git a/docs/typescript.md b/docs/typescript.md index 128da17..aafcdd1 100644 --- a/docs/typescript.md +++ b/docs/typescript.md @@ -3,7 +3,7 @@ The TypeScript SDK exposes the Cairn/Roteiro API through the same three layers used by the Python SDK: 1. `RoteiroClient` for the handwritten, high-traffic workflows. -2. Domain namespaces such as `analysis`, `attachments`, `collections`, `indoor`, `layers`, `raster`, and `vcs`. +2. Domain namespaces such as `analysis`, `attachments`, `collections`, `layers`, `raster`, and `vcs`. 3. `RoteiroGeneratedApi` for full parity with the server OpenAPI spec and the generated operation map in [`generated-operations.md`](./generated-operations.md). ## SDK Shape @@ -11,7 +11,7 @@ The TypeScript SDK exposes the Cairn/Roteiro API through the same three layers u | Layer | Export | Use it for | |------|--------|------------| | Handwritten client | `RoteiroClient` | Health, datasets, collections, processing jobs, uploads, raster workflow helpers, and tile URL helpers | -| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `indoor`, `Pipeline` | Focused helpers grouped by domain; these are namespace exports, not instance methods on `RoteiroClient` | +| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `Pipeline` | Focused helpers grouped by domain; these are namespace exports, not instance methods on `RoteiroClient` | | Full API coverage | `RoteiroGeneratedApi` | Endpoints that are only available in the generated OpenAPI client | ## Installation @@ -161,7 +161,6 @@ import { analysis, attachments, collections, - indoor, layers, raster, vcs, @@ -176,7 +175,6 @@ import { | `layers` | `uploadLayer`, `listLayers`, `getLayer`, `updateLayer`, `publishLayer`, `archiveLayer`, `uploadLayerData`, `deleteLayer`, `previewLayer` | | `vcs` | `initRepo`, `commit`, `log`, `diff`, `checkout` | | `raster` | `getRasterInfo`, `getRasterStats`, `getRasterHistogram`, `getRasterDimensions`, `getRasterBandValues`, `bandMath`, `ndvi`, `hillshade`, `zonalStats`, `exportRaster`, `contour`, `viewshed`, `elevationProfile`, `kde`, `process`, `mosaic`, `getMosaicInfo` | -| `indoor` | `listBuildings`, `getBuilding`, `createBuilding`, `updateBuilding`, `deleteBuilding`, `listFloors`, `createFloor`, `listSpaces`, `createSpace`, `getSpace`, `listAssets`, `createAsset`, `findPath`, `parseIndoorGml`, `importIfc`, `importIndoorFile`, `importImdf`, `getOccupancy`, `getEvacuationRoutes` | ### Example: analysis helpers @@ -220,22 +218,6 @@ const ndvi = await raster.ndvi(client, 'landsat_scene', 4, 3); const contours = await raster.contour(client, 'dem', { interval: 5 }); ``` -### Example: indoor helpers - -```typescript -import { indoor } from '@roteiro/sdk'; - -const buildings = await indoor.listBuildings(client); - -const route = await indoor.findPath( - client, - 'hq', - 'lobby', - 'room-201', - true, -); -``` - ## Pipeline Builder Use `Pipeline` when you want a compact, fluent wrapper around repeated `/api/process` calls: diff --git a/python/README.md b/python/README.md index e68323d..90de4eb 100644 --- a/python/README.md +++ b/python/README.md @@ -51,7 +51,7 @@ print(health.status, len(collections), len(features.features), len(areas), len(h | Layer | Export | Notes | |------|--------|-------| | Handwritten client | `RoteiroClient` | Health, datasets, collections, processing jobs, uploads, raster workflow helpers, and tile URL helpers | -| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `indoor`, `Pipeline` | Standalone modules, not instance methods on `RoteiroClient` | +| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `Pipeline` | Standalone modules, not instance methods on `RoteiroClient` | | Full API coverage | `RoteiroGeneratedApi` | Generated from the server OpenAPI spec | ## Core Client Surface @@ -74,7 +74,6 @@ print(health.status, len(collections), len(features.features), len(areas), len(h | `layers` | `upload_layer`, `list_layers`, `get_layer`, `update_layer`, `publish_layer`, `archive_layer`, `upload_layer_data`, `delete_layer`, `preview_layer` | | `vcs` | `init_repo`, `commit`, `log`, `diff`, `checkout` | | `raster` | `get_raster_info`, `get_raster_stats`, `get_raster_histogram`, `get_raster_dimensions`, `get_raster_band_values`, `band_math`, `ndvi`, `hillshade`, `zonal_stats`, `export_raster`, `contour`, `viewshed`, `elevation_profile`, `kde`, `process`, `mosaic`, `get_mosaic_info` | -| `indoor` | `list_buildings`, `get_building`, `create_building`, `update_building`, `delete_building`, `list_floors`, `create_floor`, `list_spaces`, `create_space`, `get_space`, `list_assets`, `create_asset`, `find_path`, `parse_indoor_gml`, `import_ifc`, `import_indoor_file`, `import_imdf`, `get_occupancy`, `get_evacuation_routes` | ## Full API Coverage diff --git a/python/examples/quickstart.py b/python/examples/quickstart.py index eec90ff..90d580d 100644 --- a/python/examples/quickstart.py +++ b/python/examples/quickstart.py @@ -6,7 +6,6 @@ - Querying features with filters - Running spatial processing pipelines - Using the VCS (version control) API - - Working with indoor GIS buildings - Performing raster analysis Prerequisites: @@ -104,40 +103,7 @@ # print(f" [{c.id[:8]}] {c.message}") # --------------------------------------------------------------------------- -# 6. Indoor GIS -# --------------------------------------------------------------------------- - -from roteiro import indoor - -# List buildings -buildings = indoor.list_buildings(client) -print(f"\n{len(buildings)} indoor buildings") - -# Create a building with floors and spaces -# building = indoor.create_building(client, { -# "id": "office-hq", -# "name": "Headquarters", -# "address": "123 Main St", -# "floors": [ -# { -# "id": "floor-1", -# "name": "Ground Floor", -# "level": 0, -# "spaces": [ -# {"id": "lobby", "name": "Lobby", "space_type": "corridor", "navigable": True}, -# {"id": "room-101", "name": "Conference Room", "space_type": "room"}, -# ], -# }, -# ], -# }) -# print(f"Created building: {building.name}") - -# Find a path between spaces -# route = indoor.find_path(client, "office-hq", "lobby", "room-101") -# print(f"Route: {len(route.path)} steps, {route.total_distance:.1f}m") - -# --------------------------------------------------------------------------- -# 7. Raster Analysis +# 6. Raster Analysis # --------------------------------------------------------------------------- from roteiro import raster @@ -154,7 +120,7 @@ # result = raster.band_math(client, "sentinel2", "(b4 - b3) / (b4 + b3)") # --------------------------------------------------------------------------- -# 8. Tile URL helpers (for MapLibre / Leaflet integration) +# 7. Tile URL helpers (for MapLibre / Leaflet integration) # --------------------------------------------------------------------------- print("\nTile URL templates:") diff --git a/python/pyproject.toml b/python/pyproject.toml index e89ba30..983a920 100644 --- a/python/pyproject.toml +++ b/python/pyproject.toml @@ -12,7 +12,7 @@ requires-python = ">=3.9" authors = [ {name = "roteiro contributors"} ] -keywords = ["gis", "geospatial", "ogc", "maps", "indoor"] +keywords = ["gis", "geospatial", "ogc", "maps"] classifiers = [ "Development Status :: 3 - Alpha", "Intended Audience :: Developers", diff --git a/python/roteiro/__init__.py b/python/roteiro/__init__.py index 4f7976c..698dae1 100644 --- a/python/roteiro/__init__.py +++ b/python/roteiro/__init__.py @@ -42,15 +42,7 @@ FeatureCollection, HealthStatus, HostedLayer, - IndoorAsset, - IndoorBuilding, - IndoorFloor, - IndoorModel, - IndoorSpace, - IndoorTransition, Link, - NavigationResult, - NavigationStep, ProcessBatchSubmitResponse, ProcessJobRecord, ProcessPreflightResult, @@ -99,15 +91,7 @@ "FeatureCollection", "HealthStatus", "HostedLayer", - "IndoorAsset", - "IndoorBuilding", - "IndoorFloor", - "IndoorModel", - "IndoorSpace", - "IndoorTransition", "Link", - "NavigationResult", - "NavigationStep", "ProcessBatchSubmitResponse", "ProcessJobRecord", "ProcessPreflightResult", @@ -133,8 +117,7 @@ "pipeline", "attachments", "raster", - "indoor", ] # Make sub-modules importable as roteiro.collections, roteiro.vcs, etc. -from . import analysis, attachments, collections, indoor, layers, raster, vcs +from . import analysis, attachments, collections, layers, raster, vcs diff --git a/python/roteiro/client.py b/python/roteiro/client.py index 336d6d3..d6c0415 100644 --- a/python/roteiro/client.py +++ b/python/roteiro/client.py @@ -4,7 +4,7 @@ custom error handling, and typed helper methods for the core handwritten SDK surface. Domain-specific helpers also live in separate modules (``collections``, ``layers``, ``vcs``, ``pipeline``, ``attachments``, -``raster``, ``indoor``) which accept a ``RoteiroClient`` instance. +``raster``) which accept a ``RoteiroClient`` instance. """ from __future__ import annotations @@ -28,15 +28,10 @@ FeatureCollection, HealthStatus, HostedLayer, - IndoorBuilding, - IndoorFloor, - IndoorModel, - IndoorSpace, RasterMosaicInfo, ProcessBatchSubmitResponse, ProcessJobRecord, ProcessPreflightResult, - NavigationResult, ProcessResult, RasterExportResult, RasterBandValues, diff --git a/python/roteiro/generated.py b/python/roteiro/generated.py index b8341a1..e69fd45 100644 --- a/python/roteiro/generated.py +++ b/python/roteiro/generated.py @@ -404,32 +404,6 @@ def auto_put_api_annotations_id_resolve(self, id: str, query: Optional[Dict[str, extra_headers['Content-Type'] = 'application/json' return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def auto_get_api_assignments_assignment_id_code_config(self, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/assignments/{assignmentId}/code-config""" - path = f"/api/assignments/{_quote_path_value(assignmentId)}/code-config" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_assignments_assignment_id_code_config(self, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/assignments/{assignmentId}/code-config""" - path = f"/api/assignments/{_quote_path_value(assignmentId)}/code-config" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_get_api_attachments_aid(self, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] GET /api/attachments/{aid}""" path = f"/api/attachments/{_quote_path_value(aid)}" @@ -898,61 +872,9 @@ def auto_post_api_bulk_update(self, query: Optional[Dict[str, Any]] = None, body extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def get_field_campaign(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get field campaign""" - path = f"/api/campaigns/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def update_field_campaign(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Update field campaign""" - path = f"/api/campaigns/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def delete_field_campaign(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Delete field campaign""" - path = f"/api/campaigns/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def list_my_campaign_observations(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List authenticated user observations for a campaign""" - path = f"/api/campaigns/{_quote_path_value(id)}/my-observations" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def list_campaign_observations(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List campaign observations""" - path = f"/api/campaigns/{_quote_path_value(id)}/observations" + def list_catalog(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """List public data catalog entries""" + path = "/api/catalog" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -963,9 +885,9 @@ def list_campaign_observations(self, id: str, query: Optional[Dict[str, Any]] = extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def create_campaign_observation(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create campaign observation""" - path = f"/api/campaigns/{_quote_path_value(id)}/observations" + def auto_post_api_catalog_annotations_id_vote(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/catalog/annotations/{id}/vote""" + path = f"/api/catalog/annotations/{_quote_path_value(id)}/vote" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -976,87 +898,9 @@ def create_campaign_observation(self, id: str, query: Optional[Dict[str, Any]] = extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def export_campaign_observations_geo_json(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Export campaign observations as GeoJSON""" - path = f"/api/campaigns/{_quote_path_value(id)}/observations/export.geojson" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def get_campaign_stac_catalog(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Campaign STAC catalog root""" - path = f"/api/campaigns/{_quote_path_value(id)}/stac" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def get_campaign_stac_collection(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Campaign STAC collection""" - path = f"/api/campaigns/{_quote_path_value(id)}/stac/collection" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def list_campaign_stac_items(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Campaign STAC items""" - path = f"/api/campaigns/{_quote_path_value(id)}/stac/items" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def get_campaign_stac_item(self, id: str, itemId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Campaign STAC item by ID""" - path = f"/api/campaigns/{_quote_path_value(id)}/stac/items/{_quote_path_value(itemId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def search_campaign_stac_items(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Search campaign STAC items""" - path = f"/api/campaigns/{_quote_path_value(id)}/stac/search" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def list_catalog(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List public data catalog entries""" - path = "/api/catalog" + def list_catalog_categories(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """List catalog categories""" + path = "/api/catalog/categories" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -1067,22 +911,9 @@ def list_catalog(self, query: Optional[Dict[str, Any]] = None, body: Any = None, extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_post_api_catalog_annotations_id_vote(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/catalog/annotations/{id}/vote""" - path = f"/api/catalog/annotations/{_quote_path_value(id)}/vote" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def list_catalog_categories(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List catalog categories""" - path = "/api/catalog/categories" + def list_deferred_catalog_sources(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """List deferred catalog sources""" + path = "/api/catalog/deferred" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -1184,113 +1015,9 @@ def list_catalog_tags(self, query: Optional[Dict[str, Any]] = None, body: Any = extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def list_classrooms(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List classrooms for the authenticated user""" - path = "/api/classrooms" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_classroom(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create a classroom""" - path = "/api/classrooms" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def join_classroom(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Join a classroom using a join code""" - path = "/api/classrooms/join" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_templates(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/templates""" - path = "/api/classrooms/templates" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_templates_db(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/templates/db""" - path = "/api/classrooms/templates/db" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_analytics(self, classroomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/analytics""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/analytics" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_analytics_latest(self, classroomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/analytics/latest""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/analytics/latest" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_classroom_id_analytics_refresh(self, classroomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/analytics/refresh""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/analytics/refresh" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_assignments_assignment_id_my_team(self, classroomId: str, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/assignments/{assignmentId}/my-team""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/my-team" + def collab_metrics(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """Collaboration hub metrics""" + path = "/api/collab/metrics" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -1301,1894 +1028,9 @@ def auto_get_api_classrooms_classroom_id_assignments_assignment_id_my_team(self, extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_post_api_classrooms_classroom_id_assignments_assignment_id_peer_reviews(self, classroomId: str, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/peer-reviews""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/peer-reviews" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_classroom_id_assignments_assignment_id_plagiarism_check(self, classroomId: str, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-check""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/plagiarism-check" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_classroom_id_assignments_assignment_id_plagiarism_check_all(self, classroomId: str, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-check-all""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/plagiarism-check-all" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_assignments_assignment_id_plagiarism_reports(self, classroomId: str, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-reports""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/plagiarism-reports" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_assignments_assignment_id_teams(self, classroomId: str, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/assignments/{assignmentId}/teams""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/teams" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_classroom_id_assignments_assignment_id_teams(self, classroomId: str, assignmentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/teams""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/teams" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_classrooms_classroom_id_assignments_assignment_id_teams_team_id(self, classroomId: str, assignmentId: str, teamId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/teams/{_quote_path_value(teamId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_classroom_id_assignments_assignment_id_teams_team_id_members(self, classroomId: str, assignmentId: str, teamId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}/members""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/teams/{_quote_path_value(teamId)}/members" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_classrooms_classroom_id_assignments_assignment_id_teams_team_id_members_user_id(self, classroomId: str, assignmentId: str, teamId: str, userId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}/members/{userId}""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/assignments/{_quote_path_value(assignmentId)}/teams/{_quote_path_value(teamId)}/members/{_quote_path_value(userId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_campaigns(self, classroomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/campaigns""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/campaigns" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_classroom_id_campaigns(self, classroomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/campaigns""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/campaigns" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_forums(self, classroomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/forums""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/forums" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_classroom_id_forums(self, classroomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{classroomId}/forums""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/forums" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_classroom_id_submissions_submission_id_peer_reviews(self, classroomId: str, submissionId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{classroomId}/submissions/{submissionId}/peer-reviews""" - path = f"/api/classrooms/{_quote_path_value(classroomId)}/submissions/{_quote_path_value(submissionId)}/peer-reviews" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def get_classroom(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get classroom details""" - path = f"/api/classrooms/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_classrooms_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/classrooms/{id}""" - path = f"/api/classrooms/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_classrooms_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/classrooms/{id}""" - path = f"/api/classrooms/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def list_assignments(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List assignments in a classroom""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_assignment(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create an assignment""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def get_assignment(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get assignment details""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_classrooms_id_assignments_aid(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/classrooms/{id}/assignments/{aid}""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_classrooms_id_assignments_aid(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/classrooms/{id}/assignments/{aid}""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_id_assignments_aid_auto_grade(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{id}/assignments/{aid}/auto-grade""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/auto-grade" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_assignments_aid_rubric(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/assignments/{aid}/rubric""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/rubric" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_id_assignments_aid_rubric(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{id}/assignments/{aid}/rubric""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/rubric" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_classrooms_id_assignments_aid_rubric(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/classrooms/{id}/assignments/{aid}/rubric""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/rubric" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def start_assignment(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Start an assignment (create a submission)""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/start" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def list_submissions(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List submissions for an assignment""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/submissions" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def grade_submission(self, id: str, aid: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Grade a submission""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/submissions/{_quote_path_value(sid)}/grade" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_id_assignments_aid_submissions_sid_return(self, id: str, aid: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{id}/assignments/{aid}/submissions/{sid}/return""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/submissions/{_quote_path_value(sid)}/return" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def submit_work(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Submit work for grading""" - path = f"/api/classrooms/{_quote_path_value(id)}/assignments/{_quote_path_value(aid)}/submit" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_curricula(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/curricula""" - path = f"/api/classrooms/{_quote_path_value(id)}/curricula" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_grades_export(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/grades/export""" - path = f"/api/classrooms/{_quote_path_value(id)}/grades/export" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_classrooms_id_import(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/classrooms/{id}/import""" - path = f"/api/classrooms/{_quote_path_value(id)}/import" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_live(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/live""" - path = f"/api/classrooms/{_quote_path_value(id)}/live" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_members(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/members""" - path = f"/api/classrooms/{_quote_path_value(id)}/members" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_classrooms_id_members_uid(self, id: str, uid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/classrooms/{id}/members/{uid}""" - path = f"/api/classrooms/{_quote_path_value(id)}/members/{_quote_path_value(uid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_classrooms_id_members_uid(self, id: str, uid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/classrooms/{id}/members/{uid}""" - path = f"/api/classrooms/{_quote_path_value(id)}/members/{_quote_path_value(uid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_my_submissions(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/my-submissions""" - path = f"/api/classrooms/{_quote_path_value(id)}/my-submissions" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_progress(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/progress""" - path = f"/api/classrooms/{_quote_path_value(id)}/progress" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_classrooms_id_quizzes(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/classrooms/{id}/quizzes""" - path = f"/api/classrooms/{_quote_path_value(id)}/quizzes" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_code_assignments_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/code-assignments/{id}""" - path = f"/api/code-assignments/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_code_assignments_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/code-assignments/{id}""" - path = f"/api/code-assignments/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_code_assignments_id_run(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/code-assignments/{id}/run""" - path = f"/api/code-assignments/{_quote_path_value(id)}/run" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_code_assignments_id_submissions(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/code-assignments/{id}/submissions""" - path = f"/api/code-assignments/{_quote_path_value(id)}/submissions" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_code_assignments_id_submit(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/code-assignments/{id}/submit""" - path = f"/api/code-assignments/{_quote_path_value(id)}/submit" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_code_submissions_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/code-submissions/{id}""" - path = f"/api/code-submissions/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def collab_metrics(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Collaboration hub metrics""" - path = "/api/collab/metrics" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def list_collab_rooms(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List active collaboration rooms""" - path = "/api/collab/rooms" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collab_room_id_contributions(self, roomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collab/{roomId}/contributions""" - path = f"/api/collab/{_quote_path_value(roomId)}/contributions" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collab_room_id_summary(self, roomId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collab/{roomId}/summary""" - path = f"/api/collab/{_quote_path_value(roomId)}/summary" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collections_id_history(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collections/{id}/history""" - path = f"/api/collections/{_quote_path_value(id)}/history" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collections_id_items_arrow(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collections/{id}/items.arrow""" - path = f"/api/collections/{_quote_path_value(id)}/items.arrow" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collections_id_items_parquet(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collections/{id}/items.parquet""" - path = f"/api/collections/{_quote_path_value(id)}/items.parquet" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_collections_id_items_export(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/collections/{id}/items/export""" - path = f"/api/collections/{_quote_path_value(id)}/items/export" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collections_id_items_feature_id_comments(self, id: str, featureId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collections/{id}/items/{featureId}/comments""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_collections_id_items_feature_id_comments(self, id: str, featureId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/collections/{id}/items/{featureId}/comments""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_collections_id_items_feature_id_comments_comment_id(self, id: str, featureId: str, commentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/collections/{id}/items/{featureId}/comments/{commentId}""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments/{_quote_path_value(commentId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_collections_id_items_feature_id_comments_comment_id(self, id: str, featureId: str, commentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/collections/{id}/items/{featureId}/comments/{commentId}""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments/{_quote_path_value(commentId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collections_id_items_fid_attachments(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collections/{id}/items/{fid}/attachments""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/attachments" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_collections_id_items_fid_attachments(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/collections/{id}/items/{fid}/attachments""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/attachments" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collections_id_items_fid_attachments_count(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collections/{id}/items/{fid}/attachments/count""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/attachments/count" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_collections_id_items_fid_history(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/collections/{id}/items/{fid}/history""" - path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/history" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_comments_comment_id_replies(self, commentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/comments/{commentId}/replies""" - path = f"/api/comments/{_quote_path_value(commentId)}/replies" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def convert_dataset(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Convert dataset format""" - path = "/api/convert" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_curricula(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/curricula""" - path = "/api/curricula" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_curricula(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/curricula""" - path = "/api/curricula" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_curricula_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/curricula/{id}""" - path = f"/api/curricula/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_curricula_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/curricula/{id}""" - path = f"/api/curricula/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_curricula_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/curricula/{id}""" - path = f"/api/curricula/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_curricula_id_lessons(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/curricula/{id}/lessons""" - path = f"/api/curricula/{_quote_path_value(id)}/lessons" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_curricula_id_lessons_lid(self, id: str, lid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/curricula/{id}/lessons/{lid}""" - path = f"/api/curricula/{_quote_path_value(id)}/lessons/{_quote_path_value(lid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_curricula_id_lessons_lid(self, id: str, lid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/curricula/{id}/lessons/{lid}""" - path = f"/api/curricula/{_quote_path_value(id)}/lessons/{_quote_path_value(lid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_curricula_id_lessons_lid(self, id: str, lid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/curricula/{id}/lessons/{lid}""" - path = f"/api/curricula/{_quote_path_value(id)}/lessons/{_quote_path_value(lid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_curricula_id_lessons_lid_progress(self, id: str, lid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/curricula/{id}/lessons/{lid}/progress""" - path = f"/api/curricula/{_quote_path_value(id)}/lessons/{_quote_path_value(lid)}/progress" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_curricula_id_progress(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/curricula/{id}/progress""" - path = f"/api/curricula/{_quote_path_value(id)}/progress" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_datasets_id_lineage(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/datasets/{id}/lineage""" - path = f"/api/datasets/{_quote_path_value(id)}/lineage" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_datasets_name_metadata(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/datasets/{name}/metadata""" - path = f"/api/datasets/{_quote_path_value(name)}/metadata" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_patch_api_datasets_name_metadata(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PATCH /api/datasets/{name}/metadata""" - path = f"/api/datasets/{_quote_path_value(name)}/metadata" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PATCH', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_datasets_name_profile(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/datasets/{name}/profile""" - path = f"/api/datasets/{_quote_path_value(name)}/profile" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_datasets_name_schema(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/datasets/{name}/schema""" - path = f"/api/datasets/{_quote_path_value(name)}/schema" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_datasets_name_schema(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/datasets/{name}/schema""" - path = f"/api/datasets/{_quote_path_value(name)}/schema" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_datasets_name_validate(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/datasets/{name}/validate""" - path = f"/api/datasets/{_quote_path_value(name)}/validate" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_datasets_name_validation_rules(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/datasets/{name}/validation-rules""" - path = f"/api/datasets/{_quote_path_value(name)}/validation-rules" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_datasets_name_validation_rules(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/datasets/{name}/validation-rules""" - path = f"/api/datasets/{_quote_path_value(name)}/validation-rules" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def diff_datasets(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Compare two datasets""" - path = "/api/diff" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def get_swagger_ui(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """API documentation UI""" - path = "/api/docs" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_docs_internal_manifest(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/docs/internal/manifest""" - path = "/api/docs/internal/manifest" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_docs_internal_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/docs/internal/{id}""" - path = f"/api/docs/internal/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_docs_public_manifest(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/docs/public/manifest""" - path = "/api/docs/public/manifest" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_docs_public_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/docs/public/{id}""" - path = f"/api/docs/public/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_errors(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/errors""" - path = "/api/errors" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def export_data(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Export GeoJSON data to another format""" - path = "/api/export" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_federation_sources(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/federation/sources""" - path = "/api/federation/sources" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_federation_sources(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/federation/sources""" - path = "/api/federation/sources" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_federation_sources_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/federation/sources/{id}""" - path = f"/api/federation/sources/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_federation_sources_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/federation/sources/{id}""" - path = f"/api/federation/sources/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_formats(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/formats""" - path = "/api/formats" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_forums_forum_id(self, forumId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/forums/{forumId}""" - path = f"/api/forums/{_quote_path_value(forumId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_forums_forum_id(self, forumId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/forums/{forumId}""" - path = f"/api/forums/{_quote_path_value(forumId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_forums_forum_id_lock(self, forumId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/forums/{forumId}/lock""" - path = f"/api/forums/{_quote_path_value(forumId)}/lock" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_forums_forum_id_posts(self, forumId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/forums/{forumId}/posts""" - path = f"/api/forums/{_quote_path_value(forumId)}/posts" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_forums_forum_id_posts(self, forumId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/forums/{forumId}/posts""" - path = f"/api/forums/{_quote_path_value(forumId)}/posts" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_gdpr_delete_cancel(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/gdpr/delete-cancel""" - path = "/api/gdpr/delete-cancel" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_gdpr_delete_request(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/gdpr/delete-request""" - path = "/api/gdpr/delete-request" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_gdpr_delete_status(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/gdpr/delete-status""" - path = "/api/gdpr/delete-status" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_gdpr_export(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/gdpr/export""" - path = "/api/gdpr/export" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_geo(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/geo""" - path = "/api/geo" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def geocode(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Forward geocode an address""" - path = "/api/geocode" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_geocode_batch(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/geocode/batch""" - path = "/api/geocode/batch" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def reverse_geocode(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Reverse geocode coordinates""" - path = "/api/geocode/reverse" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_geodesic_area(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/geodesic/area""" - path = "/api/geodesic/area" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_geodesic_length(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/geodesic/length""" - path = "/api/geodesic/length" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def list_buildings(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List all buildings""" - path = "/api/indoor/buildings" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_building(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create a building with floors, spaces, and transitions""" - path = "/api/indoor/buildings" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def get_building(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get building with floors and transitions""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def update_building(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Update a building""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def delete_building(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Delete a building""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def get_accessibility_validation(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Accessibility compliance analysis""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/analysis/accessibility" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_indoor_buildings_id_analysis_dead_zones(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/indoor/buildings/{id}/analysis/dead-zones""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/analysis/dead-zones" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_indoor_buildings_id_analysis_reachable(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/indoor/buildings/{id}/analysis/reachable""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/analysis/reachable" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def get_historical_analytics(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Historical occupancy and booking analytics""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/analytics" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def list_assets(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List assets in a building""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/assets" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_asset(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create an asset""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/assets" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def update_asset_position(self, id: str, aid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Update asset position""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/assets/{_quote_path_value(aid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def list_bookings(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List bookings""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/bookings" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_booking(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create a booking""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/bookings" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def cancel_booking(self, id: str, bid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Cancel a booking""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/bookings/{_quote_path_value(bid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def checkin_booking(self, id: str, bid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Check in to a booking""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/bookings/{_quote_path_value(bid)}/checkin" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def list_boundaries(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List boundaries""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/boundaries" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_boundary(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create boundary""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/boundaries" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def get_boundary(self, id: str, bid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get boundary""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/boundaries/{_quote_path_value(bid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def update_boundary(self, id: str, bid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Update boundary""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/boundaries/{_quote_path_value(bid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def delete_boundary(self, id: str, bid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Delete boundary""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/boundaries/{_quote_path_value(bid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def get_evacuation_routes(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Compute evacuation routes""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/evacuation" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def trigger_evacuation_alert(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Trigger evacuation alert event""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/evacuation/alert" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def indoor_evacuation_ot(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Optimal transport evacuation plan""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/evacuation/optimal" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def export_imdf(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Export building as IMDF""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/export/imdf" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_indoor_buildings_id_export_indoorgml(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/indoor/buildings/{id}/export/indoorgml""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/export/indoorgml" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def list_floors(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List floors in a building""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/floors" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_floor(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create a floor""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/floors" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def upload_floor_plan(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Upload floor plan image/PDF""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/floors/{_quote_path_value(fid)}/plan" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def list_floor_spaces(self, id: str, level: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List spaces on a floor""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/floors/{_quote_path_value(level)}/spaces" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def list_geofences(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List geofences""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/geofences" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def create_geofence(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create geofence""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/geofences" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def get_geofence(self, id: str, gid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get geofence""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/geofences/{_quote_path_value(gid)}" + def list_collab_rooms(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """List active collaboration rooms""" + path = "/api/collab/rooms" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3199,9 +1041,9 @@ def get_geofence(self, id: str, gid: str, query: Optional[Dict[str, Any]] = None extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def update_geofence(self, id: str, gid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Update geofence""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/geofences/{_quote_path_value(gid)}" + def auto_get_api_collections_id_history(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/collections/{id}/history""" + path = f"/api/collections/{_quote_path_value(id)}/history" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3210,11 +1052,11 @@ def update_geofence(self, id: str, gid: str, query: Optional[Dict[str, Any]] = N payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def delete_geofence(self, id: str, gid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Delete geofence""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/geofences/{_quote_path_value(gid)}" + def auto_get_api_collections_id_items_arrow(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/collections/{id}/items.arrow""" + path = f"/api/collections/{_quote_path_value(id)}/items.arrow" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3223,11 +1065,11 @@ def delete_geofence(self, id: str, gid: str, query: Optional[Dict[str, Any]] = N payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def building_occupancy(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get building occupancy analytics""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/occupancy" + def auto_get_api_collections_id_items_parquet(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/collections/{id}/items.parquet""" + path = f"/api/collections/{_quote_path_value(id)}/items.parquet" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3238,9 +1080,9 @@ def building_occupancy(self, id: str, query: Optional[Dict[str, Any]] = None, bo extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def ingest_positions(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Batch ingest device positions""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/positions" + def auto_post_api_collections_id_items_export(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/collections/{id}/items/export""" + path = f"/api/collections/{_quote_path_value(id)}/items/export" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3251,9 +1093,9 @@ def ingest_positions(self, id: str, query: Optional[Dict[str, Any]] = None, body extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def get_latest_positions(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Latest position per device""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/positions/latest" + def auto_get_api_collections_id_items_feature_id_comments(self, id: str, featureId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/collections/{id}/items/{featureId}/comments""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3264,9 +1106,9 @@ def get_latest_positions(self, id: str, query: Optional[Dict[str, Any]] = None, extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def get_position_history(self, id: str, deviceId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Device position history""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/positions/{_quote_path_value(deviceId)}/history" + def auto_post_api_collections_id_items_feature_id_comments(self, id: str, featureId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/collections/{id}/items/{featureId}/comments""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3275,11 +1117,11 @@ def get_position_history(self, id: str, deviceId: str, query: Optional[Dict[str, payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_get_api_indoor_buildings_id_scenarios(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/indoor/buildings/{id}/scenarios""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/scenarios" + def auto_put_api_collections_id_items_feature_id_comments_comment_id(self, id: str, featureId: str, commentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] PUT /api/collections/{id}/items/{featureId}/comments/{commentId}""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments/{_quote_path_value(commentId)}" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3288,11 +1130,11 @@ def auto_get_api_indoor_buildings_id_scenarios(self, id: str, query: Optional[Di payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def auto_post_api_indoor_buildings_id_scenarios(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/indoor/buildings/{id}/scenarios""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/scenarios" + def auto_delete_api_collections_id_items_feature_id_comments_comment_id(self, id: str, featureId: str, commentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] DELETE /api/collections/{id}/items/{featureId}/comments/{commentId}""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(featureId)}/comments/{_quote_path_value(commentId)}" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3301,11 +1143,11 @@ def auto_post_api_indoor_buildings_id_scenarios(self, id: str, query: Optional[D payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - def auto_get_api_indoor_buildings_id_scenarios_sid(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/indoor/buildings/{id}/scenarios/{sid}""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/scenarios/{_quote_path_value(sid)}" + def auto_get_api_collections_id_items_fid_attachments(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/collections/{id}/items/{fid}/attachments""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/attachments" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3316,9 +1158,9 @@ def auto_get_api_indoor_buildings_id_scenarios_sid(self, id: str, sid: str, quer extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_put_api_indoor_buildings_id_scenarios_sid(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/indoor/buildings/{id}/scenarios/{sid}""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/scenarios/{_quote_path_value(sid)}" + def auto_post_api_collections_id_items_fid_attachments(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/collections/{id}/items/{fid}/attachments""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/attachments" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3327,11 +1169,11 @@ def auto_put_api_indoor_buildings_id_scenarios_sid(self, id: str, sid: str, quer payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) + return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_delete_api_indoor_buildings_id_scenarios_sid(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/indoor/buildings/{id}/scenarios/{sid}""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/scenarios/{_quote_path_value(sid)}" + def auto_get_api_collections_id_items_fid_attachments_count(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/collections/{id}/items/{fid}/attachments/count""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/attachments/count" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3340,11 +1182,11 @@ def auto_delete_api_indoor_buildings_id_scenarios_sid(self, id: str, sid: str, q payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_get_api_indoor_buildings_id_sensors(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/indoor/buildings/{id}/sensors""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/sensors" + def auto_get_api_collections_id_items_fid_history(self, id: str, fid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/collections/{id}/items/{fid}/history""" + path = f"/api/collections/{_quote_path_value(id)}/items/{_quote_path_value(fid)}/history" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3355,9 +1197,9 @@ def auto_get_api_indoor_buildings_id_sensors(self, id: str, query: Optional[Dict extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_post_api_indoor_buildings_id_sensors(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/indoor/buildings/{id}/sensors""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/sensors" + def auto_get_api_comments_comment_id_replies(self, commentId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/comments/{commentId}/replies""" + path = f"/api/comments/{_quote_path_value(commentId)}/replies" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3366,11 +1208,11 @@ def auto_post_api_indoor_buildings_id_sensors(self, id: str, query: Optional[Dic payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def get_indoor_sensor_heatmap(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Sensor heatmap aggregation by space""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/sensors/heatmap" + def convert_dataset(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """Convert dataset format""" + path = "/api/convert" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3379,11 +1221,11 @@ def get_indoor_sensor_heatmap(self, id: str, query: Optional[Dict[str, Any]] = N payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def get_indoor_sensor_time_series(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Sensor timeseries for space/sensor type""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/sensors/timeseries" + def auto_get_api_datasets_id_lineage(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/datasets/{id}/lineage""" + path = f"/api/datasets/{_quote_path_value(id)}/lineage" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3394,9 +1236,9 @@ def get_indoor_sensor_time_series(self, id: str, query: Optional[Dict[str, Any]] extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_fire_evacuation(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Coupled fire and evacuation simulation""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/simulate/fire-evacuation" + def auto_get_api_datasets_name_metadata(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/datasets/{name}/metadata""" + path = f"/api/datasets/{_quote_path_value(name)}/metadata" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3405,11 +1247,11 @@ def indoor_fire_evacuation(self, id: str, query: Optional[Dict[str, Any]] = None payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def create_space(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create a space in a building""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/spaces" + def auto_patch_api_datasets_name_metadata(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] PATCH /api/datasets/{name}/metadata""" + path = f"/api/datasets/{_quote_path_value(name)}/metadata" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3418,11 +1260,11 @@ def create_space(self, id: str, query: Optional[Dict[str, Any]] = None, body: An payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('PATCH', path, body=payload, extra_headers=extra_headers) - def get_space(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get a single space""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/spaces/{_quote_path_value(sid)}" + def auto_get_api_datasets_name_profile(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/datasets/{name}/profile""" + path = f"/api/datasets/{_quote_path_value(name)}/profile" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3433,9 +1275,9 @@ def get_space(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None, b extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_put_api_indoor_buildings_id_spaces_sid(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/indoor/buildings/{id}/spaces/{sid}""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/spaces/{_quote_path_value(sid)}" + def auto_get_api_datasets_name_schema(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/datasets/{name}/schema""" + path = f"/api/datasets/{_quote_path_value(name)}/schema" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3444,11 +1286,11 @@ def auto_put_api_indoor_buildings_id_spaces_sid(self, id: str, sid: str, query: payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_delete_api_indoor_buildings_id_spaces_sid(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/indoor/buildings/{id}/spaces/{sid}""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/spaces/{_quote_path_value(sid)}" + def auto_put_api_datasets_name_schema(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] PUT /api/datasets/{name}/schema""" + path = f"/api/datasets/{_quote_path_value(name)}/schema" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3457,11 +1299,11 @@ def auto_delete_api_indoor_buildings_id_spaces_sid(self, id: str, sid: str, quer payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) + return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def indoor_spectral_analysis(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Spectral graph analysis""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/spectral" + def auto_post_api_datasets_name_validate(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/datasets/{name}/validate""" + path = f"/api/datasets/{_quote_path_value(name)}/validate" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3472,9 +1314,9 @@ def indoor_spectral_analysis(self, id: str, query: Optional[Dict[str, Any]] = No extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def get_building_stats(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get building statistics""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/stats" + def auto_get_api_datasets_name_validation_rules(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/datasets/{name}/validation-rules""" + path = f"/api/datasets/{_quote_path_value(name)}/validation-rules" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3485,9 +1327,9 @@ def get_building_stats(self, id: str, query: Optional[Dict[str, Any]] = None, bo extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_stream(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Real-time indoor event stream (SSE)""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/stream" + def auto_put_api_datasets_name_validation_rules(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] PUT /api/datasets/{name}/validation-rules""" + path = f"/api/datasets/{_quote_path_value(name)}/validation-rules" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3496,11 +1338,11 @@ def indoor_stream(self, id: str, query: Optional[Dict[str, Any]] = None, body: A payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def auto_get_api_indoor_buildings_id_stream_status(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/indoor/buildings/{id}/stream/status""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/stream/status" + def diff_datasets(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """Compare two datasets""" + path = "/api/diff" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3509,11 +1351,11 @@ def auto_get_api_indoor_buildings_id_stream_status(self, id: str, query: Optiona payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def indoor_topology_compare(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Compare topology of two buildings""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/topology/compare" + def get_swagger_ui(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """API documentation UI""" + path = "/api/docs" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3522,11 +1364,11 @@ def indoor_topology_compare(self, id: str, query: Optional[Dict[str, Any]] = Non payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_topology_resilience(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Topological connectivity resilience""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/topology/resilience" + def auto_get_api_docs_internal_manifest(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/docs/internal/manifest""" + path = "/api/docs/internal/manifest" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3535,11 +1377,11 @@ def indoor_topology_resilience(self, id: str, query: Optional[Dict[str, Any]] = payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_topology_track(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Track topology across building state snapshots""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/topology/track" + def auto_get_api_docs_internal_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/docs/internal/{id}""" + path = f"/api/docs/internal/{_quote_path_value(id)}" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3548,11 +1390,11 @@ def indoor_topology_track(self, id: str, query: Optional[Dict[str, Any]] = None, payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def list_transitions(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List transitions in a building""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/transitions" + def auto_get_api_docs_public_manifest(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/docs/public/manifest""" + path = "/api/docs/public/manifest" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3563,9 +1405,9 @@ def list_transitions(self, id: str, query: Optional[Dict[str, Any]] = None, body extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def validate_building(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Validate building topology/integrity""" - path = f"/api/indoor/buildings/{_quote_path_value(id)}/validate" + def auto_get_api_docs_public_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/docs/public/{id}""" + path = f"/api/docs/public/{_quote_path_value(id)}" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3576,9 +1418,9 @@ def validate_building(self, id: str, query: Optional[Dict[str, Any]] = None, bod extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def list_campuses(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List campuses""" - path = "/api/indoor/campuses" + def auto_post_api_errors(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/errors""" + path = "/api/errors" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3587,11 +1429,11 @@ def list_campuses(self, query: Optional[Dict[str, Any]] = None, body: Any = None payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def create_campus(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Create campus""" - path = "/api/indoor/campuses" + def export_data(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """Export GeoJSON data to another format""" + path = "/api/export" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3602,9 +1444,9 @@ def create_campus(self, query: Optional[Dict[str, Any]] = None, body: Any = None extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def get_campus(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Get campus""" - path = f"/api/indoor/campuses/{_quote_path_value(id)}" + def auto_get_api_federation_sources(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/federation/sources""" + path = "/api/federation/sources" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3615,9 +1457,9 @@ def get_campus(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def update_campus(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Update campus""" - path = f"/api/indoor/campuses/{_quote_path_value(id)}" + def auto_post_api_federation_sources(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/federation/sources""" + path = "/api/federation/sources" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3626,11 +1468,11 @@ def update_campus(self, id: str, query: Optional[Dict[str, Any]] = None, body: A payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) + return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def delete_campus(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Delete campus""" - path = f"/api/indoor/campuses/{_quote_path_value(id)}" + def auto_get_api_federation_sources_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/federation/sources/{id}""" + path = f"/api/federation/sources/{_quote_path_value(id)}" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3639,11 +1481,11 @@ def delete_campus(self, id: str, query: Optional[Dict[str, Any]] = None, body: A payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def list_campus_buildings(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List buildings in a campus""" - path = f"/api/indoor/campuses/{_quote_path_value(id)}/buildings" + def auto_delete_api_federation_sources_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] DELETE /api/federation/sources/{id}""" + path = f"/api/federation/sources/{_quote_path_value(id)}" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3652,11 +1494,11 @@ def list_campus_buildings(self, id: str, query: Optional[Dict[str, Any]] = None, payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - def indoor_forecast(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Multi-hour indoor condition forecast""" - path = f"/api/indoor/floors/{_quote_path_value(id)}/forecast" + def auto_get_api_formats(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/formats""" + path = "/api/formats" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3665,11 +1507,11 @@ def indoor_forecast(self, id: str, query: Optional[Dict[str, Any]] = None, body: payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_manifold_navigate(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Riemannian cost-weighted navigation""" - path = f"/api/indoor/floors/{_quote_path_value(id)}/navigate/manifold" + def auto_post_api_gdpr_delete_cancel(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/gdpr/delete-cancel""" + path = "/api/gdpr/delete-cancel" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3680,9 +1522,9 @@ def indoor_manifold_navigate(self, id: str, query: Optional[Dict[str, Any]] = No extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def indoor_acoustics(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Indoor acoustic ray tracing""" - path = f"/api/indoor/floors/{_quote_path_value(id)}/simulate/acoustics" + def auto_post_api_gdpr_delete_request(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/gdpr/delete-request""" + path = "/api/gdpr/delete-request" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3693,9 +1535,9 @@ def indoor_acoustics(self, id: str, query: Optional[Dict[str, Any]] = None, body extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def indoor_airflow(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """LBM indoor airflow / ventilation simulation""" - path = f"/api/indoor/floors/{_quote_path_value(id)}/simulate/airflow" + def auto_get_api_gdpr_delete_status(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/gdpr/delete-status""" + path = "/api/gdpr/delete-status" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3704,11 +1546,11 @@ def indoor_airflow(self, id: str, query: Optional[Dict[str, Any]] = None, body: payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_infection_risk(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Aerosol infection risk model""" - path = f"/api/indoor/floors/{_quote_path_value(id)}/simulate/infection-risk" + def auto_get_api_gdpr_export(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/gdpr/export""" + path = "/api/gdpr/export" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3717,11 +1559,11 @@ def indoor_infection_risk(self, id: str, query: Optional[Dict[str, Any]] = None, payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_rf_coverage(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """RF / wireless signal coverage""" - path = f"/api/indoor/floors/{_quote_path_value(id)}/simulate/rf" + def auto_get_api_geo(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/geo""" + path = "/api/geo" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3730,11 +1572,11 @@ def indoor_rf_coverage(self, id: str, query: Optional[Dict[str, Any]] = None, bo payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def indoor_thermal(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Indoor thermal distribution""" - path = f"/api/indoor/floors/{_quote_path_value(id)}/simulate/thermal" + def geocode(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """Forward geocode an address""" + path = "/api/geocode" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3743,11 +1585,11 @@ def indoor_thermal(self, id: str, query: Optional[Dict[str, Any]] = None, body: payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def import_building(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Import a building from IFC or IndoorGML""" - path = "/api/indoor/import" + def auto_post_api_geocode_batch(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/geocode/batch""" + path = "/api/geocode/batch" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3758,9 +1600,9 @@ def import_building(self, query: Optional[Dict[str, Any]] = None, body: Any = No extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def navigate_indoor(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Find indoor navigation path between two spaces""" - path = "/api/indoor/navigate" + def reverse_geocode(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """Reverse geocode coordinates""" + path = "/api/geocode/reverse" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3769,11 +1611,11 @@ def navigate_indoor(self, query: Optional[Dict[str, Any]] = None, body: Any = No payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def find_nearest_indoor(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Find nearest reachable space matching criteria""" - path = "/api/indoor/navigate/nearest" + def auto_post_api_geodesic_area(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/geodesic/area""" + path = "/api/geodesic/area" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -3784,9 +1626,9 @@ def find_nearest_indoor(self, query: Optional[Dict[str, Any]] = None, body: Any extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def navigate_indoor_outdoor(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Indoor-to-outdoor navigation""" - path = "/api/indoor/navigate/outdoor" + def auto_post_api_geodesic_length(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/geodesic/length""" + path = "/api/geodesic/length" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -4319,72 +2161,7 @@ def auto_get_api_notifications_settings(self, query: Optional[Dict[str, Any]] = def auto_put_api_notifications_settings(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] PUT /api/notifications/settings""" - path = "/api/notifications/settings" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_notifications_test(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/notifications/test""" - path = "/api/notifications/test" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_notifications_unread_count(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/notifications/unread-count""" - path = "/api/notifications/unread-count" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_notifications_id_read(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/notifications/{id}/read""" - path = f"/api/notifications/{_quote_path_value(id)}/read" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_observations_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/observations/{id}""" - path = f"/api/observations/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_observations_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/observations/{id}""" - path = f"/api/observations/{_quote_path_value(id)}" + path = "/api/notifications/settings" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -4393,11 +2170,11 @@ def auto_delete_api_observations_id(self, id: str, query: Optional[Dict[str, Any payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) + return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def list_observation_attachments(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """List observation attachments""" - path = f"/api/observations/{_quote_path_value(id)}/attachments" + def auto_post_api_notifications_test(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] POST /api/notifications/test""" + path = "/api/notifications/test" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -4406,11 +2183,11 @@ def list_observation_attachments(self, id: str, query: Optional[Dict[str, Any]] payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def upload_observation_attachment(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """Upload observation attachment""" - path = f"/api/observations/{_quote_path_value(id)}/attachments" + def auto_get_api_notifications_unread_count(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/notifications/unread-count""" + path = "/api/notifications/unread-count" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -4419,11 +2196,11 @@ def upload_observation_attachment(self, id: str, query: Optional[Dict[str, Any]] payload = body if payload is not None and 'Content-Type' not in extra_headers: extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_put_api_observations_id_sync(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/observations/{id}/sync""" - path = f"/api/observations/{_quote_path_value(id)}/sync" + def auto_put_api_notifications_id_read(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] PUT /api/notifications/{id}/read""" + path = f"/api/notifications/{_quote_path_value(id)}/read" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -4746,45 +2523,6 @@ def auto_put_api_ownership_transfers_id_reject(self, id: str, query: Optional[Di extra_headers['Content-Type'] = 'application/json' return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def auto_get_api_peer_reviews_my_assignments(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/peer-reviews/my-assignments""" - path = "/api/peer-reviews/my-assignments" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_peer_reviews_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/peer-reviews/{id}""" - path = f"/api/peer-reviews/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_peer_reviews_id_complete(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/peer-reviews/{id}/complete""" - path = f"/api/peer-reviews/{_quote_path_value(id)}/complete" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def auto_get_api_permissions(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] GET /api/permissions""" path = "/api/permissions" @@ -4850,9 +2588,9 @@ def auto_post_api_pipeline(self, query: Optional[Dict[str, Any]] = None, body: A extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_get_api_plagiarism_reports_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/plagiarism-reports/{id}""" - path = f"/api/plagiarism-reports/{_quote_path_value(id)}" + def auto_get_api_pipeline_operations(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/pipeline/operations""" + path = "/api/pipeline/operations" if query: q = urlencode({k: v for k, v in query.items() if v is not None}) if q: @@ -4863,32 +2601,6 @@ def auto_get_api_plagiarism_reports_id(self, id: str, query: Optional[Dict[str, extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_delete_api_plagiarism_reports_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/plagiarism-reports/{id}""" - path = f"/api/plagiarism-reports/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_plagiarism_reports_id_flag(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/plagiarism-reports/{id}/flag""" - path = f"/api/plagiarism-reports/{_quote_path_value(id)}/flag" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - def list_plugins(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """List installed plugins""" path = "/api/plugins" @@ -5149,58 +2861,6 @@ def auto_post_api_plugins_registry_install(self, query: Optional[Dict[str, Any]] extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_put_api_posts_post_id(self, postId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/posts/{postId}""" - path = f"/api/posts/{_quote_path_value(postId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_posts_post_id(self, postId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/posts/{postId}""" - path = f"/api/posts/{_quote_path_value(postId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_posts_post_id_pin(self, postId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/posts/{postId}/pin""" - path = f"/api/posts/{_quote_path_value(postId)}/pin" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_posts_post_id_replies(self, postId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/posts/{postId}/replies""" - path = f"/api/posts/{_quote_path_value(postId)}/replies" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def get_preference(self, key: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """Get a user preference""" path = f"/api/preferences/{_quote_path_value(key)}" @@ -5643,97 +3303,6 @@ def get_api_query_sql_info(self, query: Optional[Dict[str, Any]] = None, body: A extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_post_api_quizzes(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/quizzes""" - path = "/api/quizzes" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_get_api_quizzes_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/quizzes/{id}""" - path = f"/api/quizzes/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_quizzes_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/quizzes/{id}""" - path = f"/api/quizzes/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_quizzes_id(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/quizzes/{id}""" - path = f"/api/quizzes/{_quote_path_value(id)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_quizzes_id_questions(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/quizzes/{id}/questions""" - path = f"/api/quizzes/{_quote_path_value(id)}/questions" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_quizzes_id_questions_qid(self, id: str, qid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/quizzes/{id}/questions/{qid}""" - path = f"/api/quizzes/{_quote_path_value(id)}/questions/{_quote_path_value(qid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_quizzes_id_questions_qid(self, id: str, qid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/quizzes/{id}/questions/{qid}""" - path = f"/api/quizzes/{_quote_path_value(id)}/questions/{_quote_path_value(qid)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - def auto_post_api_raster_classify_isodata(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] POST /api/raster/classify/isodata""" path = "/api/raster/classify/isodata" @@ -6072,45 +3641,6 @@ def compute_service_area(self, query: Optional[Dict[str, Any]] = None, body: Any extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_post_api_rubrics_rubric_id_criteria(self, rubricId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/rubrics/{rubricId}/criteria""" - path = f"/api/rubrics/{_quote_path_value(rubricId)}/criteria" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - - def auto_put_api_rubrics_rubric_id_criteria_criterion_id(self, rubricId: str, criterionId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] PUT /api/rubrics/{rubricId}/criteria/{criterionId}""" - path = f"/api/rubrics/{_quote_path_value(rubricId)}/criteria/{_quote_path_value(criterionId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('PUT', path, body=payload, extra_headers=extra_headers) - - def auto_delete_api_rubrics_rubric_id_criteria_criterion_id(self, rubricId: str, criterionId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] DELETE /api/rubrics/{rubricId}/criteria/{criterionId}""" - path = f"/api/rubrics/{_quote_path_value(rubricId)}/criteria/{_quote_path_value(criterionId)}" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - def auto_get_api_search(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] GET /api/search""" path = "/api/search" @@ -6423,6 +3953,19 @@ def delete_story(self, id: str, query: Optional[Dict[str, Any]] = None, body: An extra_headers['Content-Type'] = 'application/json' return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) + def auto_get_api_stories_id_collections_collection_id_items(self, id: str, collectionId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /api/stories/{id}/collections/{collectionId}/items""" + path = f"/api/stories/{_quote_path_value(id)}/collections/{_quote_path_value(collectionId)}/items" + if query: + q = urlencode({k: v for k, v in query.items() if v is not None}) + if q: + path = f"{path}?{q}" + extra_headers = dict(headers or {}) + payload = body + if payload is not None and 'Content-Type' not in extra_headers: + extra_headers['Content-Type'] = 'application/json' + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + def list_story_members(self, id: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """List story members""" path = f"/api/stories/{_quote_path_value(id)}/members" @@ -6540,32 +4083,6 @@ def delete_slide(self, id: str, sid: str, query: Optional[Dict[str, Any]] = None extra_headers['Content-Type'] = 'application/json' return self._client._request('DELETE', path, body=payload, extra_headers=extra_headers) - def auto_get_api_submissions_sid_rubric_scores(self, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/submissions/{sid}/rubric-scores""" - path = f"/api/submissions/{_quote_path_value(sid)}/rubric-scores" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - - def auto_post_api_submissions_sid_rubric_scores(self, sid: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] POST /api/submissions/{sid}/rubric-scores""" - path = f"/api/submissions/{_quote_path_value(sid)}/rubric-scores" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_post_api_sync_diff(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] POST /api/sync/diff""" path = "/api/sync/diff" @@ -6735,19 +4252,6 @@ def compute_wasserstein_distance(self, query: Optional[Dict[str, Any]] = None, b extra_headers['Content-Type'] = 'application/json' return self._client._request('POST', path, body=payload, extra_headers=extra_headers) - def auto_get_api_users_autocomplete(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: - """[auto] GET /api/users/autocomplete""" - path = "/api/users/autocomplete" - if query: - q = urlencode({k: v for k, v in query.items() if v is not None}) - if q: - path = f"{path}?{q}" - extra_headers = dict(headers or {}) - payload = body - if payload is not None and 'Content-Type' not in extra_headers: - extra_headers['Content-Type'] = 'application/json' - return self._client._request('GET', path, body=payload, extra_headers=extra_headers) - def auto_get_api_vcs_branches(self, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] GET /api/vcs/branches""" path = "/api/vcs/branches" @@ -7372,6 +4876,19 @@ def get_public_story(self, token: str, query: Optional[Dict[str, Any]] = None, b extra_headers['Content-Type'] = 'application/json' return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + def auto_get_public_stories_token_collections_collection_id_items(self, token: str, collectionId: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: + """[auto] GET /public/stories/{token}/collections/{collectionId}/items""" + path = f"/public/stories/{_quote_path_value(token)}/collections/{_quote_path_value(collectionId)}/items" + if query: + q = urlencode({k: v for k, v in query.items() if v is not None}) + if q: + path = f"{path}?{q}" + extra_headers = dict(headers or {}) + payload = body + if payload is not None and 'Content-Type' not in extra_headers: + extra_headers['Content-Type'] = 'application/json' + return self._client._request('GET', path, body=payload, extra_headers=extra_headers) + def auto_post_raster_name_aspect(self, name: str, query: Optional[Dict[str, Any]] = None, body: Any = None, headers: Optional[Dict[str, str]] = None) -> Any: """[auto] POST /raster/{name}/aspect""" path = f"/raster/{_quote_path_value(name)}/aspect" diff --git a/python/roteiro/indoor.py b/python/roteiro/indoor.py deleted file mode 100644 index ec3a68d..0000000 --- a/python/roteiro/indoor.py +++ /dev/null @@ -1,444 +0,0 @@ -"""Indoor GIS operations. - -Provides functions for managing indoor buildings, floors, spaces, assets, -navigation, and importing IndoorGML/IFC models. -""" - -from __future__ import annotations - -from typing import TYPE_CHECKING, Any, Dict, List, Optional - -from .client import _encode_path_value, _with_query -from .models import ( - IndoorAsset, - IndoorBuilding, - IndoorFloor, - IndoorModel, - IndoorSpace, - NavigationResult, -) - -if TYPE_CHECKING: - from .client import RoteiroClient - - -def _infer_import_format(file_path: str) -> str: - lower = file_path.lower() - if lower.endswith(".ifc"): - return "ifc" - if lower.endswith(".gml") or lower.endswith(".xml"): - return "indoorgml" - if lower.endswith(".imdf.zip") or lower.endswith(".zip"): - return "imdf" - return "" - - -# --------------------------------------------------------------------------- -# Building CRUD -# --------------------------------------------------------------------------- - - -def list_buildings(client: RoteiroClient) -> List[IndoorBuilding]: - """List all indoor buildings. - - Args: - client: An initialised RoteiroClient instance. - - Returns: - A list of IndoorBuilding objects. - """ - data = client._get("/api/indoor/buildings") - return [IndoorBuilding.from_dict(b) for b in data] - - -def get_building(client: RoteiroClient, building_id: str) -> IndoorBuilding: - """Get a building with its floors and transitions. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - - Returns: - An IndoorBuilding object with nested floors and transitions. - """ - data = client._get(f"/api/indoor/buildings/{_encode_path_value(building_id)}") - return IndoorBuilding.from_dict(data) - - -def create_building(client: RoteiroClient, data: Dict[str, Any]) -> IndoorBuilding: - """Create a new building with optional floors, spaces, and transitions. - - Args: - client: An initialised RoteiroClient instance. - data: Building definition dict with ``id``, ``name``, and optionally - ``address``, ``metadata``, ``floors``, and ``transitions``. - - Returns: - The created IndoorBuilding. - """ - resp = client._post("/api/indoor/buildings", data) - return IndoorBuilding.from_dict(resp) - - -def update_building( - client: RoteiroClient, - building_id: str, - data: Dict[str, Any], -) -> IndoorBuilding: - """Update an existing building's metadata. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - data: Fields to update (``name``, ``address``, ``metadata``, ``bounds``). - - Returns: - The updated IndoorBuilding. - """ - resp = client._put( - f"/api/indoor/buildings/{_encode_path_value(building_id)}", - data, - ) - return IndoorBuilding.from_dict(resp) - - -def delete_building(client: RoteiroClient, building_id: str) -> None: - """Delete a building and all its associated data. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - """ - client._delete(f"/api/indoor/buildings/{_encode_path_value(building_id)}") - - -# --------------------------------------------------------------------------- -# Floor operations -# --------------------------------------------------------------------------- - - -def list_floors(client: RoteiroClient, building_id: str) -> List[IndoorFloor]: - """List all floors in a building. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - - Returns: - A list of IndoorFloor objects. - """ - data = client._get( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/floors" - ) - return [IndoorFloor.from_dict(f) for f in data] - - -def create_floor( - client: RoteiroClient, - building_id: str, - floor_data: Dict[str, Any], -) -> IndoorFloor: - """Create a new floor in a building. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - floor_data: Floor definition with ``id``, ``name``, ``level``, etc. - - Returns: - The created IndoorFloor. - """ - resp = client._post( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/floors", - floor_data, - ) - return IndoorFloor.from_dict(resp) - - -# --------------------------------------------------------------------------- -# Space operations -# --------------------------------------------------------------------------- - - -def list_spaces( - client: RoteiroClient, - building_id: str, - level: int, -) -> List[IndoorSpace]: - """List all spaces on a given floor level. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - level: The floor level number. - - Returns: - A list of IndoorSpace objects. - """ - data = client._get( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/floors/{_encode_path_value(level)}/spaces" - ) - return [IndoorSpace.from_dict(s) for s in data] - - -def create_space( - client: RoteiroClient, - building_id: str, - space_data: Dict[str, Any], -) -> IndoorSpace: - """Create a new space in a building. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - space_data: Space definition with ``id``, ``floor_id``, ``name``, etc. - - Returns: - The created IndoorSpace. - """ - resp = client._post( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/spaces", - space_data, - ) - return IndoorSpace.from_dict(resp) - - -def get_space( - client: RoteiroClient, - building_id: str, - space_id: str, -) -> IndoorSpace: - """Get a specific space within a building. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - space_id: The space identifier. - - Returns: - An IndoorSpace object. - """ - data = client._get( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/spaces/{_encode_path_value(space_id)}" - ) - return IndoorSpace.from_dict(data) - - -# --------------------------------------------------------------------------- -# Asset operations -# --------------------------------------------------------------------------- - - -def list_assets( - client: RoteiroClient, - building_id: str, - floor_id: Optional[str] = None, - space_id: Optional[str] = None, -) -> List[IndoorAsset]: - """List assets in a building, optionally filtered by floor or space. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - floor_id: Optional floor ID to filter by. - space_id: Optional space ID to filter by. - - Returns: - A list of IndoorAsset objects. - """ - path = _with_query( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/assets", - [("floor", floor_id), ("space", space_id)], - ) - data = client._get(path) - return [IndoorAsset.from_dict(a) for a in data] - - -def create_asset( - client: RoteiroClient, - building_id: str, - asset_data: Dict[str, Any], -) -> IndoorAsset: - """Create a new asset in a building. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - asset_data: Asset definition with ``id``, ``name``, ``floor_id``, - ``space_id``, etc. - - Returns: - The created IndoorAsset. - """ - resp = client._post( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/assets", - asset_data, - ) - return IndoorAsset.from_dict(resp) - - -# --------------------------------------------------------------------------- -# Navigation -# --------------------------------------------------------------------------- - - -def find_path( - client: RoteiroClient, - building_id: str, - from_space: str, - to_space: str, - accessible_only: bool = False, -) -> NavigationResult: - """Find an indoor navigation path between two spaces. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - from_space: Source space ID. - to_space: Destination space ID. - accessible_only: If True, only use accessible transitions. - - Returns: - A NavigationResult with path steps, total distance, and time estimate. - """ - data = client._post( - "/api/indoor/navigate", - { - "building_id": building_id, - "from": from_space, - "to": to_space, - "accessible_only": accessible_only, - }, - ) - return NavigationResult.from_dict(data) - - -def find_nearest( - client: RoteiroClient, - building_id: str, - from_space: str, - target_type: str, - accessible_only: bool = False, -) -> NavigationResult: - """Find the nearest space of a given type from a starting space. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - from_space: Source space ID. - target_type: Type of space to search for (e.g. ``restroom``, ``exit``). - accessible_only: If True, only use accessible transitions. - - Returns: - A NavigationResult with path steps, total distance, and time estimate. - """ - data = client._post( - "/api/indoor/navigate/nearest", - { - "building_id": building_id, - "from": from_space, - "target_type": target_type, - "accessible_only": accessible_only, - }, - ) - return NavigationResult.from_dict(data) - - -# --------------------------------------------------------------------------- -# Import -# --------------------------------------------------------------------------- - - -def parse_indoor_gml(client: RoteiroClient, file_path: str) -> IndoorModel: - """Import and parse an IndoorGML file. - - Uploads the file to the server for parsing and creates the building - model in the indoor GIS system. - - Args: - client: An initialised RoteiroClient instance. - file_path: Local path to the IndoorGML (.gml/.xml) file. - - Returns: - An IndoorModel containing the parsed building. - """ - return import_indoor_file(client, file_path) - - -def import_ifc(client: RoteiroClient, file_path: str) -> IndoorModel: - """Import and parse an IFC (Industry Foundation Classes) file. - - Uploads the file to the server for parsing and creates the building - model in the indoor GIS system. - - Args: - client: An initialised RoteiroClient instance. - file_path: Local path to the IFC file. - - Returns: - An IndoorModel containing the parsed building. - """ - return import_indoor_file(client, file_path) - - -def import_imdf(client: RoteiroClient, file_path: str) -> IndoorModel: - """Import and parse an IMDF archive. - - Args: - client: An initialised RoteiroClient instance. - file_path: Local path to the IMDF ZIP archive. - - Returns: - An IndoorModel containing the imported building. - """ - return import_indoor_file(client, file_path) - - -def import_indoor_file(client: RoteiroClient, file_path: str) -> IndoorModel: - """Import an IFC, IndoorGML, or IMDF file via Cairn's multipart endpoint.""" - data = client._upload_file("/api/indoor/import", file_path) - return IndoorModel( - building=IndoorBuilding.from_dict(data), - source_format=_infer_import_format(file_path), - ) - - -# --------------------------------------------------------------------------- -# Occupancy & Analytics -# --------------------------------------------------------------------------- - - -def get_occupancy(client: RoteiroClient, building_id: str) -> Dict[str, Any]: - """Get occupancy analytics for a building. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - - Returns: - A dictionary with occupancy data per floor and space. - """ - return client._get( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/occupancy" - ) - - -def get_evacuation_routes( - client: RoteiroClient, - building_id: str, - params: Optional[Dict[str, Any]] = None, -) -> Dict[str, Any]: - """Compute evacuation routes for a building. - - Args: - client: An initialised RoteiroClient instance. - building_id: The building identifier. - params: Optional parameters for evacuation routing. - - Returns: - A dictionary with evacuation route data. - """ - return client._post( - f"/api/indoor/buildings/{_encode_path_value(building_id)}/evacuation", - params or {}, - ) diff --git a/python/roteiro/models.py b/python/roteiro/models.py index 7f3f9a4..c92637d 100644 --- a/python/roteiro/models.py +++ b/python/roteiro/models.py @@ -527,239 +527,6 @@ def from_dict(cls, data: Dict[str, Any]) -> "DiffResult": ) -# --------------------------------------------------------------------------- -# Indoor GIS types -# --------------------------------------------------------------------------- - - -@dataclass -class IndoorBuilding: - """An indoor GIS building.""" - - id: str - name: str - campus_id: Optional[str] = None - address: str = "" - metadata: Optional[Dict[str, str]] = None - bounds: Optional[Any] = None - created_by: Optional[int] = None - created_at: str = "" - updated_at: str = "" - floors: Optional[List["IndoorFloor"]] = None - transitions: Optional[List["IndoorTransition"]] = None - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "IndoorBuilding": - floors = None - if data.get("floors"): - floors = [IndoorFloor.from_dict(f) for f in data["floors"]] - transitions = None - if data.get("transitions"): - transitions = [IndoorTransition.from_dict(t) for t in data["transitions"]] - return cls( - id=data.get("id", ""), - campus_id=data.get("campus_id"), - name=data.get("name", ""), - address=data.get("address", ""), - metadata=data.get("metadata"), - bounds=data.get("bounds"), - created_by=data.get("created_by"), - created_at=data.get("created_at", ""), - updated_at=data.get("updated_at", ""), - floors=floors, - transitions=transitions, - ) - - -@dataclass -class IndoorFloor: - """A floor within a building.""" - - id: str - building_id: str = "" - name: str = "" - level: int = 0 - elevation: float = 0.0 - height: float = 0.0 - outline: Optional[Any] = None - plan_image: Optional[str] = None - plan_bounds: Optional[List[float]] = None - created_at: str = "" - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "IndoorFloor": - return cls( - id=data.get("id", ""), - building_id=data.get("building_id", ""), - name=data.get("name", ""), - level=data.get("level", 0), - elevation=data.get("elevation", 0.0), - height=data.get("height", 0.0), - outline=data.get("outline"), - plan_image=data.get("plan_image"), - plan_bounds=data.get("plan_bounds"), - created_at=data.get("created_at", ""), - ) - - -@dataclass -class IndoorSpace: - """A space within a floor.""" - - id: str - floor_id: str = "" - building_id: str = "" - name: str = "" - space_type: str = "" - geometry: Optional[Any] = None - navigable: bool = True - capacity: Optional[int] = None - area: Optional[float] = None - properties: Optional[Dict[str, Any]] = None - connections: Optional[List[str]] = None - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "IndoorSpace": - return cls( - id=data.get("id", ""), - floor_id=data.get("floor_id", ""), - building_id=data.get("building_id", ""), - name=data.get("name", ""), - space_type=data.get("space_type", ""), - geometry=data.get("geometry"), - navigable=data.get("navigable", True), - capacity=data.get("capacity"), - area=data.get("area"), - properties=data.get("properties"), - connections=data.get("connections"), - ) - - -@dataclass -class IndoorTransition: - """A transition (elevator, stairs, etc.) between floors.""" - - id: str - building_id: str = "" - name: str = "" - transition_type: str = "" - connects_floors: List[int] = field(default_factory=list) - accessible: bool = True - bidirectional: bool = True - space_ids: Optional[List[str]] = None - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "IndoorTransition": - return cls( - id=data.get("id", ""), - building_id=data.get("building_id", ""), - name=data.get("name", ""), - transition_type=data.get("transition_type", ""), - connects_floors=data.get("connects_floors", []), - accessible=data.get("accessible", True), - bidirectional=data.get("bidirectional", True), - space_ids=data.get("space_ids"), - ) - - -@dataclass -class IndoorAsset: - """An asset tracked within a building.""" - - id: str - building_id: str = "" - name: str = "" - floor_id: str = "" - space_id: str = "" - asset_type: str = "" - asset_category: str = "" - position: Optional[Any] = None - properties: Optional[Dict[str, Any]] = None - status: str = "" - last_seen: Optional[str] = None - created_at: str = "" - updated_at: str = "" - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "IndoorAsset": - return cls( - id=data.get("id", ""), - building_id=data.get("building_id", ""), - name=data.get("name", ""), - floor_id=data.get("floor_id", ""), - space_id=data.get("space_id", ""), - asset_type=data.get("asset_type", ""), - asset_category=data.get("asset_category", ""), - position=data.get("position"), - properties=data.get("properties"), - status=data.get("status", ""), - last_seen=data.get("last_seen"), - created_at=data.get("created_at", ""), - updated_at=data.get("updated_at", ""), - ) - - -@dataclass -class NavigationStep: - """A single step in an indoor navigation path.""" - - space_id: str = "" - space_name: str = "" - floor_level: int = 0 - instruction: str = "" - distance: float = 0.0 - traversal_type: str = "" - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "NavigationStep": - return cls( - space_id=data.get("spaceId", data.get("space_id", "")), - space_name=data.get("spaceName", data.get("space_name", "")), - floor_level=data.get("floorLevel", data.get("floor_level", 0)), - instruction=data.get("instruction", ""), - distance=data.get("distance", 0.0), - traversal_type=data.get("traversalType", data.get("traversal_type", "")), - ) - - -@dataclass -class NavigationResult: - """The result of an indoor navigation request.""" - - path: List[NavigationStep] = field(default_factory=list) - total_distance: float = 0.0 - floor_changes: int = 0 - estimated_time_seconds: float = 0.0 - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "NavigationResult": - steps = [NavigationStep.from_dict(s) for s in data.get("path", [])] - return cls( - path=steps, - total_distance=data.get("totalDistance", data.get("total_distance", 0.0)), - floor_changes=data.get("floorChanges", data.get("floor_changes", 0)), - estimated_time_seconds=data.get( - "estimatedTimeSeconds", - data.get("estimated_time_seconds", 0.0), - ), - ) - - -@dataclass -class IndoorModel: - """A parsed indoor model (from IndoorGML or IFC import).""" - - building: IndoorBuilding - source_format: str = "" - - @classmethod - def from_dict(cls, data: Dict[str, Any]) -> "IndoorModel": - return cls( - building=IndoorBuilding.from_dict(data), - source_format=data.get("source_format", ""), - ) - - # --------------------------------------------------------------------------- # Hosted Layer types # --------------------------------------------------------------------------- diff --git a/python/tests/test_indoor.py b/python/tests/test_indoor.py deleted file mode 100644 index 55c49ce..0000000 --- a/python/tests/test_indoor.py +++ /dev/null @@ -1,35 +0,0 @@ -import unittest - -from roteiro import indoor -from roteiro.client import RoteiroClient - - -class IndoorModuleTests(unittest.TestCase): - def test_import_indoor_file_uses_multipart_import_endpoint(self): - client = RoteiroClient("https://example.com") - captured = {} - - def fake_upload(path, file_path, field_name="file", extra_fields=None): - captured["path"] = path - captured["file_path"] = file_path - captured["field_name"] = field_name - captured["extra_fields"] = extra_fields - return { - "id": "building-1", - "name": "HQ", - "created_at": "2026-03-16T00:00:00Z", - "updated_at": "2026-03-16T00:00:00Z", - } - - client._upload_file = fake_upload # type: ignore[method-assign] - - model = indoor.import_indoor_file(client, "/tmp/campus.imdf.zip") - - self.assertEqual(captured["path"], "/api/indoor/import") - self.assertEqual(captured["file_path"], "/tmp/campus.imdf.zip") - self.assertEqual(model.building.id, "building-1") - self.assertEqual(model.source_format, "imdf") - - -if __name__ == "__main__": - unittest.main() diff --git a/typescript/README.md b/typescript/README.md index a07f075..0c58418 100644 --- a/typescript/README.md +++ b/typescript/README.md @@ -51,7 +51,7 @@ console.log(health.status, collections.length, features.features.length, areas.l | Layer | Export | Notes | |------|--------|-------| | Handwritten client | `RoteiroClient` | Health, datasets, collections, processing jobs, uploads, raster workflow helpers, and tile URL helpers | -| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `indoor`, `Pipeline` | Namespace exports, not instance methods on `RoteiroClient` | +| Domain helpers | `analysis`, `collections`, `attachments`, `layers`, `vcs`, `raster`, `Pipeline` | Namespace exports, not instance methods on `RoteiroClient` | | Full API coverage | `RoteiroGeneratedApi` | Generated from the server OpenAPI spec | ## Core Client Surface @@ -74,7 +74,6 @@ console.log(health.status, collections.length, features.features.length, areas.l | `layers` | `uploadLayer`, `listLayers`, `getLayer`, `updateLayer`, `publishLayer`, `archiveLayer`, `uploadLayerData`, `deleteLayer`, `previewLayer` | | `vcs` | `initRepo`, `commit`, `log`, `diff`, `checkout` | | `raster` | `getRasterInfo`, `getRasterStats`, `getRasterHistogram`, `getRasterDimensions`, `getRasterBandValues`, `bandMath`, `ndvi`, `hillshade`, `zonalStats`, `exportRaster`, `contour`, `viewshed`, `elevationProfile`, `kde`, `process`, `mosaic`, `getMosaicInfo` | -| `indoor` | `listBuildings`, `getBuilding`, `createBuilding`, `updateBuilding`, `deleteBuilding`, `listFloors`, `createFloor`, `listSpaces`, `createSpace`, `getSpace`, `listAssets`, `createAsset`, `findPath`, `parseIndoorGml`, `importIfc`, `importIndoorFile`, `importImdf`, `getOccupancy`, `getEvacuationRoutes` | ## Full API Coverage diff --git a/typescript/examples/quickstart.ts b/typescript/examples/quickstart.ts index d701757..e2b7cd8 100644 --- a/typescript/examples/quickstart.ts +++ b/typescript/examples/quickstart.ts @@ -7,7 +7,6 @@ * - Querying features with filters * - Running spatial processing pipelines * - Using the VCS (version control) API - * - Working with indoor GIS buildings * - Performing raster analysis * * Prerequisites: @@ -19,7 +18,6 @@ import { RoteiroClient, Pipeline, vcs, - indoor, raster, layers, } from '../src/index'; @@ -110,36 +108,7 @@ async function main() { // } // ----------------------------------------------------------------------- - // 6. Indoor GIS - // ----------------------------------------------------------------------- - - // Uncomment if indoor GIS is enabled: - // const buildings = await indoor.listBuildings(client); - // console.log(`\n${buildings.length} indoor buildings`); - // - // const building = await indoor.createBuilding(client, { - // id: 'office-hq', - // name: 'Headquarters', - // address: '123 Main St', - // floors: [ - // { - // id: 'floor-1', - // name: 'Ground Floor', - // level: 0, - // spaces: [ - // { id: 'lobby', name: 'Lobby', space_type: 'corridor', navigable: true }, - // { id: 'room-101', name: 'Conference Room', space_type: 'room' }, - // ], - // }, - // ], - // }); - // console.log(`Created building: ${building.name}`); - // - // const route = await indoor.findPath(client, 'office-hq', 'lobby', 'room-101'); - // console.log(`Route: ${route.path.length} steps, ${route.totalDistance}m`); - - // ----------------------------------------------------------------------- - // 7. Raster Analysis + // 6. Raster Analysis // ----------------------------------------------------------------------- // Uncomment for raster operations: @@ -150,7 +119,7 @@ async function main() { // console.log('Band stats:', stats); // ----------------------------------------------------------------------- - // 8. Tile URL helpers (for MapLibre / Leaflet) + // 7. Tile URL helpers (for MapLibre / Leaflet) // ----------------------------------------------------------------------- console.log('\nTile URL templates:'); diff --git a/typescript/src/generated.ts b/typescript/src/generated.ts index e7fb8fd..f4997ae 100644 --- a/typescript/src/generated.ts +++ b/typescript/src/generated.ts @@ -501,38 +501,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/assignments/{assignmentId}/code-config */ - async autoGetApiAssignmentsAssignmentIdCodeConfig(pathParams: { assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/code-config`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/assignments/{assignmentId}/code-config */ - async autoPostApiAssignmentsAssignmentIdCodeConfig(pathParams: { assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/code-config`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - /** [auto] GET /api/attachments/{aid} */ async autoGetApiAttachmentsAid(pathParams: { aid: string }, options: GeneratedRequestOptions = {}): Promise { const path = withQuery(`/api/attachments/${encodeURIComponent(String(pathParams.aid))}`, options.query); @@ -1109,73 +1077,9 @@ export class RoteiroGeneratedApi { }); } - /** Get field campaign */ - async getfieldcampaign(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Update field campaign */ - async updatefieldcampaign(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** Delete field campaign */ - async deletefieldcampaign(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** List authenticated user observations for a campaign */ - async listmycampaignobservations(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/my-observations`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** List campaign observations */ - async listcampaignobservations(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/observations`, options.query); + /** List public data catalog entries */ + async listcatalog(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/catalog', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1189,9 +1093,9 @@ export class RoteiroGeneratedApi { }); } - /** Create campaign observation */ - async createcampaignobservation(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/observations`, options.query); + /** [auto] POST /api/catalog/annotations/{id}/vote */ + async autoPostApiCatalogAnnotationsIdVote(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/catalog/annotations/${encodeURIComponent(String(pathParams.id))}/vote`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1205,105 +1109,9 @@ export class RoteiroGeneratedApi { }); } - /** Export campaign observations as GeoJSON */ - async exportcampaignobservationsgeojson(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/observations/export.geojson`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Campaign STAC catalog root */ - async getcampaignstaccatalog(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/stac`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Campaign STAC collection */ - async getcampaignstaccollection(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/stac/collection`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Campaign STAC items */ - async listcampaignstacitems(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/stac/items`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Campaign STAC item by ID */ - async getcampaignstacitem(pathParams: { id: string, itemId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/stac/items/${encodeURIComponent(String(pathParams.itemId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Search campaign STAC items */ - async searchcampaignstacitems(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/campaigns/${encodeURIComponent(String(pathParams.id))}/stac/search`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** List public data catalog entries */ - async listcatalog(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/catalog', options.query); + /** List catalog categories */ + async listcatalogcategories(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/catalog/categories', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1317,25 +1125,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] POST /api/catalog/annotations/{id}/vote */ - async autoPostApiCatalogAnnotationsIdVote(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/catalog/annotations/${encodeURIComponent(String(pathParams.id))}/vote`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** List catalog categories */ - async listcatalogcategories(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/catalog/categories', options.query); + /** List deferred catalog sources */ + async listdeferredcatalogsources(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/catalog/deferred', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1461,9 +1253,9 @@ export class RoteiroGeneratedApi { }); } - /** List classrooms for the authenticated user */ - async listclassrooms(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/classrooms', options.query); + /** Collaboration hub metrics */ + async collabmetrics(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/collab/metrics', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1477,9 +1269,9 @@ export class RoteiroGeneratedApi { }); } - /** Create a classroom */ - async createclassroom(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/classrooms', options.query); + /** List active collaboration rooms */ + async listcollabrooms(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/collab/rooms', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1487,15 +1279,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Join a classroom using a join code */ - async joinclassroom(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/classrooms/join', options.query); + /** [auto] GET /api/collections/{id}/history */ + async autoGetApiCollectionsIdHistory(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/history`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1503,15 +1295,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** [auto] GET /api/classrooms/templates */ - async autoGetApiClassroomsTemplates(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/classrooms/templates', options.query); + /** [auto] GET /api/collections/{id}/items.arrow */ + async autoGetApiCollectionsIdItemsArrow(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items.arrow`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1525,9 +1317,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/classrooms/templates/db */ - async autoGetApiClassroomsTemplatesDb(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/classrooms/templates/db', options.query); + /** [auto] GET /api/collections/{id}/items.parquet */ + async autoGetApiCollectionsIdItemsParquet(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items.parquet`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1541,9 +1333,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/classrooms/{classroomId}/analytics */ - async autoGetApiClassroomsClassroomIdAnalytics(pathParams: { classroomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/analytics`, options.query); + /** [auto] POST /api/collections/{id}/items/export */ + async autoPostApiCollectionsIdItemsExport(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/export`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1551,15 +1343,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'GET', + method: 'POST', headers, body, }); } - /** [auto] GET /api/classrooms/{classroomId}/analytics/latest */ - async autoGetApiClassroomsClassroomIdAnalyticsLatest(pathParams: { classroomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/analytics/latest`, options.query); + /** [auto] GET /api/collections/{id}/items/{featureId}/comments */ + async autoGetApiCollectionsIdItemsFeatureIdComments(pathParams: { id: string, featureId: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1573,9 +1365,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] POST /api/classrooms/{classroomId}/analytics/refresh */ - async autoPostApiClassroomsClassroomIdAnalyticsRefresh(pathParams: { classroomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/analytics/refresh`, options.query); + /** [auto] POST /api/collections/{id}/items/{featureId}/comments */ + async autoPostApiCollectionsIdItemsFeatureIdComments(pathParams: { id: string, featureId: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1589,9 +1381,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/classrooms/{classroomId}/assignments/{assignmentId}/my-team */ - async autoGetApiClassroomsClassroomIdAssignmentsAssignmentIdMyTeam(pathParams: { classroomId: string, assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/my-team`, options.query); + /** [auto] PUT /api/collections/{id}/items/{featureId}/comments/{commentId} */ + async autoPutApiCollectionsIdItemsFeatureIdCommentsCommentId(pathParams: { id: string, featureId: string, commentId: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments/${encodeURIComponent(String(pathParams.commentId))}`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1599,15 +1391,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'GET', + method: 'PUT', headers, body, }); } - /** [auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/peer-reviews */ - async autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdPeerReviews(pathParams: { classroomId: string, assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/peer-reviews`, options.query); + /** [auto] DELETE /api/collections/{id}/items/{featureId}/comments/{commentId} */ + async autoDeleteApiCollectionsIdItemsFeatureIdCommentsCommentId(pathParams: { id: string, featureId: string, commentId: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments/${encodeURIComponent(String(pathParams.commentId))}`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1615,15 +1407,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'DELETE', headers, body, }); } - /** [auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-check */ - async autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdPlagiarismCheck(pathParams: { classroomId: string, assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/plagiarism-check`, options.query); + /** [auto] GET /api/collections/{id}/items/{fid}/attachments */ + async autoGetApiCollectionsIdItemsFidAttachments(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/attachments`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1631,15 +1423,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** [auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-check-all */ - async autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdPlagiarismCheckAll(pathParams: { classroomId: string, assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/plagiarism-check-all`, options.query); + /** [auto] POST /api/collections/{id}/items/{fid}/attachments */ + async autoPostApiCollectionsIdItemsFidAttachments(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/attachments`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1653,9 +1445,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/classrooms/{classroomId}/assignments/{assignmentId}/plagiarism-reports */ - async autoGetApiClassroomsClassroomIdAssignmentsAssignmentIdPlagiarismReports(pathParams: { classroomId: string, assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/plagiarism-reports`, options.query); + /** [auto] GET /api/collections/{id}/items/{fid}/attachments/count */ + async autoGetApiCollectionsIdItemsFidAttachmentsCount(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/attachments/count`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1669,9 +1461,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/classrooms/{classroomId}/assignments/{assignmentId}/teams */ - async autoGetApiClassroomsClassroomIdAssignmentsAssignmentIdTeams(pathParams: { classroomId: string, assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/teams`, options.query); + /** [auto] GET /api/collections/{id}/items/{fid}/history */ + async autoGetApiCollectionsIdItemsFidHistory(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/history`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1685,9 +1477,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/teams */ - async autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdTeams(pathParams: { classroomId: string, assignmentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/teams`, options.query); + /** [auto] GET /api/comments/{commentId}/replies */ + async autoGetApiCommentsCommentIdReplies(pathParams: { commentId: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/comments/${encodeURIComponent(String(pathParams.commentId))}/replies`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1695,15 +1487,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** [auto] DELETE /api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId} */ - async autoDeleteApiClassroomsClassroomIdAssignmentsAssignmentIdTeamsTeamId(pathParams: { classroomId: string, assignmentId: string, teamId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/teams/${encodeURIComponent(String(pathParams.teamId))}`, options.query); + /** Convert dataset format */ + async convertdataset(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/convert', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1711,15 +1503,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'DELETE', + method: 'POST', headers, body, }); } - /** [auto] POST /api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}/members */ - async autoPostApiClassroomsClassroomIdAssignmentsAssignmentIdTeamsTeamIdMembers(pathParams: { classroomId: string, assignmentId: string, teamId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/teams/${encodeURIComponent(String(pathParams.teamId))}/members`, options.query); + /** [auto] GET /api/datasets/{id}/lineage */ + async autoGetApiDatasetsIdLineage(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.id))}/lineage`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -1727,2447 +1519,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** [auto] DELETE /api/classrooms/{classroomId}/assignments/{assignmentId}/teams/{teamId}/members/{userId} */ - async autoDeleteApiClassroomsClassroomIdAssignmentsAssignmentIdTeamsTeamIdMembersUserId(pathParams: { classroomId: string, assignmentId: string, teamId: string, userId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/assignments/${encodeURIComponent(String(pathParams.assignmentId))}/teams/${encodeURIComponent(String(pathParams.teamId))}/members/${encodeURIComponent(String(pathParams.userId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{classroomId}/campaigns */ - async autoGetApiClassroomsClassroomIdCampaigns(pathParams: { classroomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/campaigns`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/classrooms/{classroomId}/campaigns */ - async autoPostApiClassroomsClassroomIdCampaigns(pathParams: { classroomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/campaigns`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{classroomId}/forums */ - async autoGetApiClassroomsClassroomIdForums(pathParams: { classroomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/forums`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/classrooms/{classroomId}/forums */ - async autoPostApiClassroomsClassroomIdForums(pathParams: { classroomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/forums`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{classroomId}/submissions/{submissionId}/peer-reviews */ - async autoGetApiClassroomsClassroomIdSubmissionsSubmissionIdPeerReviews(pathParams: { classroomId: string, submissionId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.classroomId))}/submissions/${encodeURIComponent(String(pathParams.submissionId))}/peer-reviews`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Get classroom details */ - async getclassroom(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/classrooms/{id} */ - async autoPutApiClassroomsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/classrooms/{id} */ - async autoDeleteApiClassroomsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** List assignments in a classroom */ - async listassignments(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Create an assignment */ - async createassignment(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Get assignment details */ - async getassignment(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/classrooms/{id}/assignments/{aid} */ - async autoPutApiClassroomsIdAssignmentsAid(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/classrooms/{id}/assignments/{aid} */ - async autoDeleteApiClassroomsIdAssignmentsAid(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] POST /api/classrooms/{id}/assignments/{aid}/auto-grade */ - async autoPostApiClassroomsIdAssignmentsAidAutoGrade(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/auto-grade`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/assignments/{aid}/rubric */ - async autoGetApiClassroomsIdAssignmentsAidRubric(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/rubric`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/classrooms/{id}/assignments/{aid}/rubric */ - async autoPostApiClassroomsIdAssignmentsAidRubric(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/rubric`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] DELETE /api/classrooms/{id}/assignments/{aid}/rubric */ - async autoDeleteApiClassroomsIdAssignmentsAidRubric(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/rubric`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** Start an assignment (create a submission) */ - async startassignment(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/start`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** List submissions for an assignment */ - async listsubmissions(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/submissions`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Grade a submission */ - async gradesubmission(pathParams: { id: string, aid: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/submissions/${encodeURIComponent(String(pathParams.sid))}/grade`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] POST /api/classrooms/{id}/assignments/{aid}/submissions/{sid}/return */ - async autoPostApiClassroomsIdAssignmentsAidSubmissionsSidReturn(pathParams: { id: string, aid: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/submissions/${encodeURIComponent(String(pathParams.sid))}/return`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Submit work for grading */ - async submitwork(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/assignments/${encodeURIComponent(String(pathParams.aid))}/submit`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/curricula */ - async autoGetApiClassroomsIdCurricula(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/curricula`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/grades/export */ - async autoGetApiClassroomsIdGradesExport(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/grades/export`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/classrooms/{id}/import */ - async autoPostApiClassroomsIdImport(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/import`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/live */ - async autoGetApiClassroomsIdLive(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/live`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/members */ - async autoGetApiClassroomsIdMembers(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/members`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/classrooms/{id}/members/{uid} */ - async autoPutApiClassroomsIdMembersUid(pathParams: { id: string, uid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/members/${encodeURIComponent(String(pathParams.uid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/classrooms/{id}/members/{uid} */ - async autoDeleteApiClassroomsIdMembersUid(pathParams: { id: string, uid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/members/${encodeURIComponent(String(pathParams.uid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/my-submissions */ - async autoGetApiClassroomsIdMySubmissions(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/my-submissions`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/progress */ - async autoGetApiClassroomsIdProgress(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/progress`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/classrooms/{id}/quizzes */ - async autoGetApiClassroomsIdQuizzes(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/classrooms/${encodeURIComponent(String(pathParams.id))}/quizzes`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/code-assignments/{id} */ - async autoPutApiCodeAssignmentsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/code-assignments/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/code-assignments/{id} */ - async autoDeleteApiCodeAssignmentsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/code-assignments/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] POST /api/code-assignments/{id}/run */ - async autoPostApiCodeAssignmentsIdRun(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/code-assignments/${encodeURIComponent(String(pathParams.id))}/run`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/code-assignments/{id}/submissions */ - async autoGetApiCodeAssignmentsIdSubmissions(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/code-assignments/${encodeURIComponent(String(pathParams.id))}/submissions`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/code-assignments/{id}/submit */ - async autoPostApiCodeAssignmentsIdSubmit(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/code-assignments/${encodeURIComponent(String(pathParams.id))}/submit`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/code-submissions/{id} */ - async autoGetApiCodeSubmissionsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/code-submissions/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Collaboration hub metrics */ - async collabmetrics(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/collab/metrics', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** List active collaboration rooms */ - async listcollabrooms(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/collab/rooms', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/collab/{roomId}/contributions */ - async autoGetApiCollabRoomIdContributions(pathParams: { roomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collab/${encodeURIComponent(String(pathParams.roomId))}/contributions`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/collab/{roomId}/summary */ - async autoGetApiCollabRoomIdSummary(pathParams: { roomId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collab/${encodeURIComponent(String(pathParams.roomId))}/summary`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/collections/{id}/history */ - async autoGetApiCollectionsIdHistory(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/history`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/collections/{id}/items.arrow */ - async autoGetApiCollectionsIdItemsArrow(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items.arrow`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/collections/{id}/items.parquet */ - async autoGetApiCollectionsIdItemsParquet(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items.parquet`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/collections/{id}/items/export */ - async autoPostApiCollectionsIdItemsExport(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/export`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/collections/{id}/items/{featureId}/comments */ - async autoGetApiCollectionsIdItemsFeatureIdComments(pathParams: { id: string, featureId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/collections/{id}/items/{featureId}/comments */ - async autoPostApiCollectionsIdItemsFeatureIdComments(pathParams: { id: string, featureId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] PUT /api/collections/{id}/items/{featureId}/comments/{commentId} */ - async autoPutApiCollectionsIdItemsFeatureIdCommentsCommentId(pathParams: { id: string, featureId: string, commentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments/${encodeURIComponent(String(pathParams.commentId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/collections/{id}/items/{featureId}/comments/{commentId} */ - async autoDeleteApiCollectionsIdItemsFeatureIdCommentsCommentId(pathParams: { id: string, featureId: string, commentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.featureId))}/comments/${encodeURIComponent(String(pathParams.commentId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] GET /api/collections/{id}/items/{fid}/attachments */ - async autoGetApiCollectionsIdItemsFidAttachments(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/attachments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/collections/{id}/items/{fid}/attachments */ - async autoPostApiCollectionsIdItemsFidAttachments(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/attachments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/collections/{id}/items/{fid}/attachments/count */ - async autoGetApiCollectionsIdItemsFidAttachmentsCount(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/attachments/count`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/collections/{id}/items/{fid}/history */ - async autoGetApiCollectionsIdItemsFidHistory(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/collections/${encodeURIComponent(String(pathParams.id))}/items/${encodeURIComponent(String(pathParams.fid))}/history`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/comments/{commentId}/replies */ - async autoGetApiCommentsCommentIdReplies(pathParams: { commentId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/comments/${encodeURIComponent(String(pathParams.commentId))}/replies`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Convert dataset format */ - async convertdataset(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/convert', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/curricula */ - async autoGetApiCurricula(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/curricula', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/curricula */ - async autoPostApiCurricula(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/curricula', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/curricula/{id} */ - async autoGetApiCurriculaId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/curricula/{id} */ - async autoPutApiCurriculaId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/curricula/{id} */ - async autoDeleteApiCurriculaId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] POST /api/curricula/{id}/lessons */ - async autoPostApiCurriculaIdLessons(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}/lessons`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/curricula/{id}/lessons/{lid} */ - async autoGetApiCurriculaIdLessonsLid(pathParams: { id: string, lid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}/lessons/${encodeURIComponent(String(pathParams.lid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/curricula/{id}/lessons/{lid} */ - async autoPutApiCurriculaIdLessonsLid(pathParams: { id: string, lid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}/lessons/${encodeURIComponent(String(pathParams.lid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/curricula/{id}/lessons/{lid} */ - async autoDeleteApiCurriculaIdLessonsLid(pathParams: { id: string, lid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}/lessons/${encodeURIComponent(String(pathParams.lid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] PUT /api/curricula/{id}/lessons/{lid}/progress */ - async autoPutApiCurriculaIdLessonsLidProgress(pathParams: { id: string, lid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}/lessons/${encodeURIComponent(String(pathParams.lid))}/progress`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] GET /api/curricula/{id}/progress */ - async autoGetApiCurriculaIdProgress(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/curricula/${encodeURIComponent(String(pathParams.id))}/progress`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/datasets/{id}/lineage */ - async autoGetApiDatasetsIdLineage(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.id))}/lineage`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/datasets/{name}/metadata */ - async autoGetApiDatasetsNameMetadata(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/metadata`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PATCH /api/datasets/{name}/metadata */ - async autoPatchApiDatasetsNameMetadata(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/metadata`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PATCH', - headers, - body, - }); - } - - /** [auto] GET /api/datasets/{name}/profile */ - async autoGetApiDatasetsNameProfile(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/profile`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/datasets/{name}/schema */ - async autoGetApiDatasetsNameSchema(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/schema`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/datasets/{name}/schema */ - async autoPutApiDatasetsNameSchema(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/schema`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] POST /api/datasets/{name}/validate */ - async autoPostApiDatasetsNameValidate(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/validate`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/datasets/{name}/validation-rules */ - async autoGetApiDatasetsNameValidationRules(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/validation-rules`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/datasets/{name}/validation-rules */ - async autoPutApiDatasetsNameValidationRules(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/validation-rules`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** Compare two datasets */ - async diffdatasets(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/diff', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** API documentation UI */ - async getswaggerui(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/docs', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/docs/internal/manifest */ - async autoGetApiDocsInternalManifest(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/docs/internal/manifest', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/docs/internal/{id} */ - async autoGetApiDocsInternalId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/docs/internal/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/docs/public/manifest */ - async autoGetApiDocsPublicManifest(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/docs/public/manifest', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/docs/public/{id} */ - async autoGetApiDocsPublicId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/docs/public/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/errors */ - async autoPostApiErrors(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/errors', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Export GeoJSON data to another format */ - async exportdata(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/export', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/federation/sources */ - async autoGetApiFederationSources(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/federation/sources', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/federation/sources */ - async autoPostApiFederationSources(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/federation/sources', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/federation/sources/{id} */ - async autoGetApiFederationSourcesId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/federation/sources/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] DELETE /api/federation/sources/{id} */ - async autoDeleteApiFederationSourcesId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/federation/sources/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] GET /api/formats */ - async autoGetApiFormats(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/formats', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/forums/{forumId} */ - async autoGetApiForumsForumId(pathParams: { forumId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/forums/${encodeURIComponent(String(pathParams.forumId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] DELETE /api/forums/{forumId} */ - async autoDeleteApiForumsForumId(pathParams: { forumId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/forums/${encodeURIComponent(String(pathParams.forumId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] PUT /api/forums/{forumId}/lock */ - async autoPutApiForumsForumIdLock(pathParams: { forumId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/forums/${encodeURIComponent(String(pathParams.forumId))}/lock`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] GET /api/forums/{forumId}/posts */ - async autoGetApiForumsForumIdPosts(pathParams: { forumId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/forums/${encodeURIComponent(String(pathParams.forumId))}/posts`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/forums/{forumId}/posts */ - async autoPostApiForumsForumIdPosts(pathParams: { forumId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/forums/${encodeURIComponent(String(pathParams.forumId))}/posts`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] POST /api/gdpr/delete-cancel */ - async autoPostApiGdprDeleteCancel(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/gdpr/delete-cancel', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] POST /api/gdpr/delete-request */ - async autoPostApiGdprDeleteRequest(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/gdpr/delete-request', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/gdpr/delete-status */ - async autoGetApiGdprDeleteStatus(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/gdpr/delete-status', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/gdpr/export */ - async autoGetApiGdprExport(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/gdpr/export', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/geo */ - async autoGetApiGeo(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/geo', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Forward geocode an address */ - async geocode(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/geocode', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/geocode/batch */ - async autoPostApiGeocodeBatch(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/geocode/batch', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Reverse geocode coordinates */ - async reversegeocode(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/geocode/reverse', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/geodesic/area */ - async autoPostApiGeodesicArea(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/geodesic/area', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] POST /api/geodesic/length */ - async autoPostApiGeodesicLength(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/geodesic/length', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** List all buildings */ - async listbuildings(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/buildings', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Create a building with floors, spaces, and transitions */ - async createbuilding(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/buildings', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Get building with floors and transitions */ - async getbuilding(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Update a building */ - async updatebuilding(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** Delete a building */ - async deletebuilding(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** Accessibility compliance analysis */ - async getaccessibilityvalidation(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/analysis/accessibility`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/indoor/buildings/{id}/analysis/dead-zones */ - async autoGetApiIndoorBuildingsIdAnalysisDeadZones(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/analysis/dead-zones`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/indoor/buildings/{id}/analysis/reachable */ - async autoGetApiIndoorBuildingsIdAnalysisReachable(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/analysis/reachable`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Historical occupancy and booking analytics */ - async gethistoricalanalytics(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/analytics`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** List assets in a building */ - async listassets(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/assets`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Create an asset */ - async createasset(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/assets`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Update asset position */ - async updateassetposition(pathParams: { id: string, aid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/assets/${encodeURIComponent(String(pathParams.aid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** List bookings */ - async listbookings(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/bookings`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Create a booking */ - async createbooking(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/bookings`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Cancel a booking */ - async cancelbooking(pathParams: { id: string, bid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/bookings/${encodeURIComponent(String(pathParams.bid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** Check in to a booking */ - async checkinbooking(pathParams: { id: string, bid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/bookings/${encodeURIComponent(String(pathParams.bid))}/checkin`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** List boundaries */ - async listboundaries(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/boundaries`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Create boundary */ - async createboundary(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/boundaries`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Get boundary */ - async getboundary(pathParams: { id: string, bid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/boundaries/${encodeURIComponent(String(pathParams.bid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Update boundary */ - async updateboundary(pathParams: { id: string, bid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/boundaries/${encodeURIComponent(String(pathParams.bid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** Delete boundary */ - async deleteboundary(pathParams: { id: string, bid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/boundaries/${encodeURIComponent(String(pathParams.bid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** Compute evacuation routes */ - async getevacuationroutes(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/evacuation`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Trigger evacuation alert event */ - async triggerevacuationalert(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/evacuation/alert`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Optimal transport evacuation plan */ - async indoorevacuationot(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/evacuation/optimal`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Export building as IMDF */ - async exportimdf(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/export/imdf`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/indoor/buildings/{id}/export/indoorgml */ - async autoGetApiIndoorBuildingsIdExportIndoorgml(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/export/indoorgml`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** List floors in a building */ - async listfloors(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/floors`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Create a floor */ - async createfloor(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/floors`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Upload floor plan image/PDF */ - async uploadfloorplan(pathParams: { id: string, fid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/floors/${encodeURIComponent(String(pathParams.fid))}/plan`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** List spaces on a floor */ - async listfloorspaces(pathParams: { id: string, level: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/floors/${encodeURIComponent(String(pathParams.level))}/spaces`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** List geofences */ - async listgeofences(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/geofences`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Create geofence */ - async creategeofence(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/geofences`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Get geofence */ - async getgeofence(pathParams: { id: string, gid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/geofences/${encodeURIComponent(String(pathParams.gid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Update geofence */ - async updategeofence(pathParams: { id: string, gid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/geofences/${encodeURIComponent(String(pathParams.gid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** Delete geofence */ - async deletegeofence(pathParams: { id: string, gid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/geofences/${encodeURIComponent(String(pathParams.gid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** Get building occupancy analytics */ - async buildingoccupancy(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/occupancy`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Batch ingest device positions */ - async ingestpositions(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/positions`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Latest position per device */ - async getlatestpositions(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/positions/latest`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Device position history */ - async getpositionhistory(pathParams: { id: string, deviceId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/positions/${encodeURIComponent(String(pathParams.deviceId))}/history`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/indoor/buildings/{id}/scenarios */ - async autoGetApiIndoorBuildingsIdScenarios(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/scenarios`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/indoor/buildings/{id}/scenarios */ - async autoPostApiIndoorBuildingsIdScenarios(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/scenarios`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/indoor/buildings/{id}/scenarios/{sid} */ - async autoGetApiIndoorBuildingsIdScenariosSid(pathParams: { id: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/scenarios/${encodeURIComponent(String(pathParams.sid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/indoor/buildings/{id}/scenarios/{sid} */ - async autoPutApiIndoorBuildingsIdScenariosSid(pathParams: { id: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/scenarios/${encodeURIComponent(String(pathParams.sid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/indoor/buildings/{id}/scenarios/{sid} */ - async autoDeleteApiIndoorBuildingsIdScenariosSid(pathParams: { id: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/scenarios/${encodeURIComponent(String(pathParams.sid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] GET /api/indoor/buildings/{id}/sensors */ - async autoGetApiIndoorBuildingsIdSensors(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/sensors`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/indoor/buildings/{id}/sensors */ - async autoPostApiIndoorBuildingsIdSensors(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/sensors`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Sensor heatmap aggregation by space */ - async getindoorsensorheatmap(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/sensors/heatmap`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Sensor timeseries for space/sensor type */ - async getindoorsensortimeseries(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/sensors/timeseries`, options.query); + /** [auto] GET /api/datasets/{name}/metadata */ + async autoGetApiDatasetsNameMetadata(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/metadata`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4181,25 +1541,9 @@ export class RoteiroGeneratedApi { }); } - /** Coupled fire and evacuation simulation */ - async indoorfireevacuation(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/simulate/fire-evacuation`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** Create a space in a building */ - async createspace(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/spaces`, options.query); + /** [auto] PATCH /api/datasets/{name}/metadata */ + async autoPatchApiDatasetsNameMetadata(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/metadata`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4207,15 +1551,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'PATCH', headers, body, }); } - /** Get a single space */ - async getspace(pathParams: { id: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/spaces/${encodeURIComponent(String(pathParams.sid))}`, options.query); + /** [auto] GET /api/datasets/{name}/profile */ + async autoGetApiDatasetsNameProfile(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/profile`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4229,9 +1573,9 @@ export class RoteiroGeneratedApi { }); } - /** [auto] PUT /api/indoor/buildings/{id}/spaces/{sid} */ - async autoPutApiIndoorBuildingsIdSpacesSid(pathParams: { id: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/spaces/${encodeURIComponent(String(pathParams.sid))}`, options.query); + /** [auto] GET /api/datasets/{name}/schema */ + async autoGetApiDatasetsNameSchema(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/schema`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4239,15 +1583,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'PUT', + method: 'GET', headers, body, }); } - /** [auto] DELETE /api/indoor/buildings/{id}/spaces/{sid} */ - async autoDeleteApiIndoorBuildingsIdSpacesSid(pathParams: { id: string, sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/spaces/${encodeURIComponent(String(pathParams.sid))}`, options.query); + /** [auto] PUT /api/datasets/{name}/schema */ + async autoPutApiDatasetsNameSchema(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/schema`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4255,15 +1599,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'DELETE', + method: 'PUT', headers, body, }); } - /** Spectral graph analysis */ - async indoorspectralanalysis(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/spectral`, options.query); + /** [auto] POST /api/datasets/{name}/validate */ + async autoPostApiDatasetsNameValidate(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/validate`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4277,9 +1621,9 @@ export class RoteiroGeneratedApi { }); } - /** Get building statistics */ - async getbuildingstats(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/stats`, options.query); + /** [auto] GET /api/datasets/{name}/validation-rules */ + async autoGetApiDatasetsNameValidationRules(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/validation-rules`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4293,9 +1637,9 @@ export class RoteiroGeneratedApi { }); } - /** Real-time indoor event stream (SSE) */ - async indoorstream(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/stream`, options.query); + /** [auto] PUT /api/datasets/{name}/validation-rules */ + async autoPutApiDatasetsNameValidationRules(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/datasets/${encodeURIComponent(String(pathParams.name))}/validation-rules`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4303,15 +1647,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'GET', + method: 'PUT', headers, body, }); } - /** [auto] GET /api/indoor/buildings/{id}/stream/status */ - async autoGetApiIndoorBuildingsIdStreamStatus(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/stream/status`, options.query); + /** Compare two datasets */ + async diffdatasets(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/diff', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4319,15 +1663,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'GET', + method: 'POST', headers, body, }); } - /** Compare topology of two buildings */ - async indoortopologycompare(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/topology/compare`, options.query); + /** API documentation UI */ + async getswaggerui(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/docs', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4335,15 +1679,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Topological connectivity resilience */ - async indoortopologyresilience(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/topology/resilience`, options.query); + /** [auto] GET /api/docs/internal/manifest */ + async autoGetApiDocsInternalManifest(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/docs/internal/manifest', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4351,15 +1695,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Track topology across building state snapshots */ - async indoortopologytrack(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/topology/track`, options.query); + /** [auto] GET /api/docs/internal/{id} */ + async autoGetApiDocsInternalId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/docs/internal/${encodeURIComponent(String(pathParams.id))}`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4367,15 +1711,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** List transitions in a building */ - async listtransitions(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/transitions`, options.query); + /** [auto] GET /api/docs/public/manifest */ + async autoGetApiDocsPublicManifest(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/docs/public/manifest', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4389,9 +1733,9 @@ export class RoteiroGeneratedApi { }); } - /** Validate building topology/integrity */ - async validatebuilding(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/buildings/${encodeURIComponent(String(pathParams.id))}/validate`, options.query); + /** [auto] GET /api/docs/public/{id} */ + async autoGetApiDocsPublicId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/docs/public/${encodeURIComponent(String(pathParams.id))}`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4405,9 +1749,9 @@ export class RoteiroGeneratedApi { }); } - /** List campuses */ - async listcampuses(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/campuses', options.query); + /** [auto] POST /api/errors */ + async autoPostApiErrors(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/errors', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4415,15 +1759,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'GET', + method: 'POST', headers, body, }); } - /** Create campus */ - async createcampus(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/campuses', options.query); + /** Export GeoJSON data to another format */ + async exportdata(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/export', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4437,9 +1781,9 @@ export class RoteiroGeneratedApi { }); } - /** Get campus */ - async getcampus(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/campuses/${encodeURIComponent(String(pathParams.id))}`, options.query); + /** [auto] GET /api/federation/sources */ + async autoGetApiFederationSources(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/federation/sources', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4453,9 +1797,9 @@ export class RoteiroGeneratedApi { }); } - /** Update campus */ - async updatecampus(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/campuses/${encodeURIComponent(String(pathParams.id))}`, options.query); + /** [auto] POST /api/federation/sources */ + async autoPostApiFederationSources(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/federation/sources', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4463,15 +1807,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'PUT', + method: 'POST', headers, body, }); } - /** Delete campus */ - async deletecampus(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/campuses/${encodeURIComponent(String(pathParams.id))}`, options.query); + /** [auto] GET /api/federation/sources/{id} */ + async autoGetApiFederationSourcesId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/federation/sources/${encodeURIComponent(String(pathParams.id))}`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4479,15 +1823,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'DELETE', + method: 'GET', headers, body, }); } - /** List buildings in a campus */ - async listcampusbuildings(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/campuses/${encodeURIComponent(String(pathParams.id))}/buildings`, options.query); + /** [auto] DELETE /api/federation/sources/{id} */ + async autoDeleteApiFederationSourcesId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/federation/sources/${encodeURIComponent(String(pathParams.id))}`, options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4495,15 +1839,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'GET', + method: 'DELETE', headers, body, }); } - /** Multi-hour indoor condition forecast */ - async indoorforecast(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/floors/${encodeURIComponent(String(pathParams.id))}/forecast`, options.query); + /** [auto] GET /api/formats */ + async autoGetApiFormats(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/formats', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4511,15 +1855,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Riemannian cost-weighted navigation */ - async indoormanifoldnavigate(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/floors/${encodeURIComponent(String(pathParams.id))}/navigate/manifold`, options.query); + /** [auto] POST /api/gdpr/delete-cancel */ + async autoPostApiGdprDeleteCancel(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/gdpr/delete-cancel', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4533,9 +1877,9 @@ export class RoteiroGeneratedApi { }); } - /** Indoor acoustic ray tracing */ - async indooracoustics(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/floors/${encodeURIComponent(String(pathParams.id))}/simulate/acoustics`, options.query); + /** [auto] POST /api/gdpr/delete-request */ + async autoPostApiGdprDeleteRequest(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/gdpr/delete-request', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4549,9 +1893,9 @@ export class RoteiroGeneratedApi { }); } - /** LBM indoor airflow / ventilation simulation */ - async indoorairflow(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/floors/${encodeURIComponent(String(pathParams.id))}/simulate/airflow`, options.query); + /** [auto] GET /api/gdpr/delete-status */ + async autoGetApiGdprDeleteStatus(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/gdpr/delete-status', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4559,15 +1903,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Aerosol infection risk model */ - async indoorinfectionrisk(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/floors/${encodeURIComponent(String(pathParams.id))}/simulate/infection-risk`, options.query); + /** [auto] GET /api/gdpr/export */ + async autoGetApiGdprExport(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/gdpr/export', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4575,15 +1919,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** RF / wireless signal coverage */ - async indoorrfcoverage(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/floors/${encodeURIComponent(String(pathParams.id))}/simulate/rf`, options.query); + /** [auto] GET /api/geo */ + async autoGetApiGeo(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/geo', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4591,15 +1935,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Indoor thermal distribution */ - async indoorthermal(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/indoor/floors/${encodeURIComponent(String(pathParams.id))}/simulate/thermal`, options.query); + /** Forward geocode an address */ + async geocode(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/geocode', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4607,15 +1951,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Import a building from IFC or IndoorGML */ - async importbuilding(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/import', options.query); + /** [auto] POST /api/geocode/batch */ + async autoPostApiGeocodeBatch(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/geocode/batch', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4629,9 +1973,9 @@ export class RoteiroGeneratedApi { }); } - /** Find indoor navigation path between two spaces */ - async navigateindoor(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/navigate', options.query); + /** Reverse geocode coordinates */ + async reversegeocode(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/geocode/reverse', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4639,15 +1983,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'POST', + method: 'GET', headers, body, }); } - /** Find nearest reachable space matching criteria */ - async findnearestindoor(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/navigate/nearest', options.query); + /** [auto] POST /api/geodesic/area */ + async autoPostApiGeodesicArea(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/geodesic/area', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -4661,9 +2005,9 @@ export class RoteiroGeneratedApi { }); } - /** Indoor-to-outdoor navigation */ - async navigateindooroutdoor(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/indoor/navigate/outdoor', options.query); + /** [auto] POST /api/geodesic/length */ + async autoPostApiGeodesicLength(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/geodesic/length', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -5381,86 +2725,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/observations/{id} */ - async autoGetApiObservationsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/observations/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] DELETE /api/observations/{id} */ - async autoDeleteApiObservationsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/observations/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** List observation attachments */ - async listobservationattachments(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/observations/${encodeURIComponent(String(pathParams.id))}/attachments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** Upload observation attachment */ - async uploadobservationattachment(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/observations/${encodeURIComponent(String(pathParams.id))}/attachments`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] PUT /api/observations/{id}/sync */ - async autoPutApiObservationsIdSync(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/observations/${encodeURIComponent(String(pathParams.id))}/sync`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - /** OpenAPI specification */ async getopenapispec(options: GeneratedRequestOptions = {}): Promise { const path = withQuery('/api/openapi.yaml', options.query); @@ -5845,54 +3109,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/peer-reviews/my-assignments */ - async autoGetApiPeerReviewsMyAssignments(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/peer-reviews/my-assignments', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] GET /api/peer-reviews/{id} */ - async autoGetApiPeerReviewsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/peer-reviews/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/peer-reviews/{id}/complete */ - async autoPutApiPeerReviewsIdComplete(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/peer-reviews/${encodeURIComponent(String(pathParams.id))}/complete`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - /** [auto] GET /api/permissions */ async autoGetApiPermissions(options: GeneratedRequestOptions = {}): Promise { const path = withQuery('/api/permissions', options.query); @@ -5951,47 +3167,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] POST /api/pipeline */ - async autoPostApiPipeline(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/pipeline', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/plagiarism-reports/{id} */ - async autoGetApiPlagiarismReportsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/plagiarism-reports/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', + method: 'DELETE', headers, body, }); } - /** [auto] DELETE /api/plagiarism-reports/{id} */ - async autoDeleteApiPlagiarismReportsId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/plagiarism-reports/${encodeURIComponent(String(pathParams.id))}`, options.query); + /** [auto] POST /api/pipeline */ + async autoPostApiPipeline(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/pipeline', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -5999,15 +3183,15 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'DELETE', + method: 'POST', headers, body, }); } - /** [auto] PUT /api/plagiarism-reports/{id}/flag */ - async autoPutApiPlagiarismReportsIdFlag(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/plagiarism-reports/${encodeURIComponent(String(pathParams.id))}/flag`, options.query); + /** [auto] GET /api/pipeline/operations */ + async autoGetApiPipelineOperations(options: GeneratedRequestOptions = {}): Promise { + const path = withQuery('/api/pipeline/operations', options.query); const headers: Record = { ...(options.headers ?? {}) }; let body: BodyInit | undefined; if (options.body !== undefined) { @@ -6015,7 +3199,7 @@ export class RoteiroGeneratedApi { if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; } return this.client.request(path, { - method: 'PUT', + method: 'GET', headers, body, }); @@ -6341,70 +3525,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] PUT /api/posts/{postId} */ - async autoPutApiPostsPostId(pathParams: { postId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/posts/${encodeURIComponent(String(pathParams.postId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/posts/{postId} */ - async autoDeleteApiPostsPostId(pathParams: { postId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/posts/${encodeURIComponent(String(pathParams.postId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] PUT /api/posts/{postId}/pin */ - async autoPutApiPostsPostIdPin(pathParams: { postId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/posts/${encodeURIComponent(String(pathParams.postId))}/pin`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] GET /api/posts/{postId}/replies */ - async autoGetApiPostsPostIdReplies(pathParams: { postId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/posts/${encodeURIComponent(String(pathParams.postId))}/replies`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - /** Get a user preference */ async getpreference(pathParams: { key: string }, options: GeneratedRequestOptions = {}): Promise { const path = withQuery(`/api/preferences/${encodeURIComponent(String(pathParams.key))}`, options.query); @@ -6949,118 +4069,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] POST /api/quizzes */ - async autoPostApiQuizzes(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/quizzes', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] GET /api/quizzes/{id} */ - async autoGetApiQuizzesId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/quizzes/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] PUT /api/quizzes/{id} */ - async autoPutApiQuizzesId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/quizzes/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/quizzes/{id} */ - async autoDeleteApiQuizzesId(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/quizzes/${encodeURIComponent(String(pathParams.id))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - - /** [auto] POST /api/quizzes/{id}/questions */ - async autoPostApiQuizzesIdQuestions(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/quizzes/${encodeURIComponent(String(pathParams.id))}/questions`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] PUT /api/quizzes/{id}/questions/{qid} */ - async autoPutApiQuizzesIdQuestionsQid(pathParams: { id: string, qid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/quizzes/${encodeURIComponent(String(pathParams.id))}/questions/${encodeURIComponent(String(pathParams.qid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/quizzes/{id}/questions/{qid} */ - async autoDeleteApiQuizzesIdQuestionsQid(pathParams: { id: string, qid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/quizzes/${encodeURIComponent(String(pathParams.id))}/questions/${encodeURIComponent(String(pathParams.qid))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - /** [auto] POST /api/raster/classify/isodata */ async autoPostApiRasterClassifyIsodata(options: GeneratedRequestOptions = {}): Promise { const path = withQuery('/api/raster/classify/isodata', options.query); @@ -7477,54 +4485,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] POST /api/rubrics/{rubricId}/criteria */ - async autoPostApiRubricsRubricIdCriteria(pathParams: { rubricId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/rubrics/${encodeURIComponent(String(pathParams.rubricId))}/criteria`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - - /** [auto] PUT /api/rubrics/{rubricId}/criteria/{criterionId} */ - async autoPutApiRubricsRubricIdCriteriaCriterionId(pathParams: { rubricId: string, criterionId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/rubrics/${encodeURIComponent(String(pathParams.rubricId))}/criteria/${encodeURIComponent(String(pathParams.criterionId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'PUT', - headers, - body, - }); - } - - /** [auto] DELETE /api/rubrics/{rubricId}/criteria/{criterionId} */ - async autoDeleteApiRubricsRubricIdCriteriaCriterionId(pathParams: { rubricId: string, criterionId: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/rubrics/${encodeURIComponent(String(pathParams.rubricId))}/criteria/${encodeURIComponent(String(pathParams.criterionId))}`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'DELETE', - headers, - body, - }); - } - /** [auto] GET /api/search */ async autoGetApiSearch(options: GeneratedRequestOptions = {}): Promise { const path = withQuery('/api/search', options.query); @@ -7909,6 +4869,22 @@ export class RoteiroGeneratedApi { }); } + /** [auto] GET /api/stories/{id}/collections/{collectionId}/items */ + async autoGetApiStoriesIdCollectionsCollectionIdItems(pathParams: { id: string, collectionId: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/api/stories/${encodeURIComponent(String(pathParams.id))}/collections/${encodeURIComponent(String(pathParams.collectionId))}/items`, options.query); + const headers: Record = { ...(options.headers ?? {}) }; + let body: BodyInit | undefined; + if (options.body !== undefined) { + body = JSON.stringify(options.body); + if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; + } + return this.client.request(path, { + method: 'GET', + headers, + body, + }); + } + /** List story members */ async liststorymembers(pathParams: { id: string }, options: GeneratedRequestOptions = {}): Promise { const path = withQuery(`/api/stories/${encodeURIComponent(String(pathParams.id))}/members`, options.query); @@ -8053,38 +5029,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/submissions/{sid}/rubric-scores */ - async autoGetApiSubmissionsSidRubricScores(pathParams: { sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/submissions/${encodeURIComponent(String(pathParams.sid))}/rubric-scores`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - - /** [auto] POST /api/submissions/{sid}/rubric-scores */ - async autoPostApiSubmissionsSidRubricScores(pathParams: { sid: string }, options: GeneratedRequestOptions = {}): Promise { - const path = withQuery(`/api/submissions/${encodeURIComponent(String(pathParams.sid))}/rubric-scores`, options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'POST', - headers, - body, - }); - } - /** [auto] POST /api/sync/diff */ async autoPostApiSyncDiff(options: GeneratedRequestOptions = {}): Promise { const path = withQuery('/api/sync/diff', options.query); @@ -8293,22 +5237,6 @@ export class RoteiroGeneratedApi { }); } - /** [auto] GET /api/users/autocomplete */ - async autoGetApiUsersAutocomplete(options: GeneratedRequestOptions = {}): Promise { - const path = withQuery('/api/users/autocomplete', options.query); - const headers: Record = { ...(options.headers ?? {}) }; - let body: BodyInit | undefined; - if (options.body !== undefined) { - body = JSON.stringify(options.body); - if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; - } - return this.client.request(path, { - method: 'GET', - headers, - body, - }); - } - /** [auto] GET /api/vcs/branches */ async autoGetApiVcsBranches(options: GeneratedRequestOptions = {}): Promise { const path = withQuery('/api/vcs/branches', options.query); @@ -9077,6 +6005,22 @@ export class RoteiroGeneratedApi { }); } + /** [auto] GET /public/stories/{token}/collections/{collectionId}/items */ + async autoGetPublicStoriesTokenCollectionsCollectionIdItems(pathParams: { token: string, collectionId: string }, options: GeneratedRequestOptions = {}): Promise { + const path = withQuery(`/public/stories/${encodeURIComponent(String(pathParams.token))}/collections/${encodeURIComponent(String(pathParams.collectionId))}/items`, options.query); + const headers: Record = { ...(options.headers ?? {}) }; + let body: BodyInit | undefined; + if (options.body !== undefined) { + body = JSON.stringify(options.body); + if (!headers['Content-Type']) headers['Content-Type'] = 'application/json'; + } + return this.client.request(path, { + method: 'GET', + headers, + body, + }); + } + /** [auto] POST /raster/{name}/aspect */ async autoPostRasterNameAspect(pathParams: { name: string }, options: GeneratedRequestOptions = {}): Promise { const path = withQuery(`/raster/${encodeURIComponent(String(pathParams.name))}/aspect`, options.query); diff --git a/typescript/src/index.ts b/typescript/src/index.ts index df62014..322ee13 100644 --- a/typescript/src/index.ts +++ b/typescript/src/index.ts @@ -8,7 +8,6 @@ export * as layers from './layers'; export * as vcs from './vcs'; export * as attachments from './attachments'; export * as raster from './raster'; -export * as indoor from './indoor'; // Pipeline builder export { Pipeline } from './pipeline'; @@ -56,19 +55,6 @@ export type { Repo, Commit, DiffResult, - // Indoor GIS - IndoorBuilding, - IndoorFloor, - IndoorSpace, - IndoorTransition, - IndoorAsset, - IndoorModel, - NavigationStep, - NavigationResult, - OccupancyFloorSummary, - OccupancySpaceSummary, - OccupancyData, - OccupancyTypeSummary, // Hosted Layers HostedLayer, // Attachments diff --git a/typescript/src/indoor.ts b/typescript/src/indoor.ts deleted file mode 100644 index 1e04512..0000000 --- a/typescript/src/indoor.ts +++ /dev/null @@ -1,470 +0,0 @@ -/** - * Indoor GIS operations. - * - * Provides functions for managing buildings, floors, spaces, assets, - * navigation, and importing IndoorGML/IFC models. - * @module indoor - */ - -import type { RoteiroClient } from './client'; -import type { - IndoorAsset, - IndoorBuilding, - IndoorFloor, - IndoorModel, - IndoorSpace, - NavigationResult, - OccupancyData, -} from './types'; - -function inferIndoorImportFormat(filename: string): IndoorModel['source_format'] { - const lower = filename.toLowerCase(); - if (lower.endsWith('.ifc')) return 'ifc'; - if (lower.endsWith('.gml') || lower.endsWith('.xml')) return 'indoorgml'; - if (lower.endsWith('.imdf.zip') || lower.endsWith('.zip')) return 'imdf'; - return undefined; -} - -// --------------------------------------------------------------------------- -// Buildings -// --------------------------------------------------------------------------- - -/** - * List all indoor buildings. - * - * @param client - An initialised RoteiroClient instance. - * @returns A list of IndoorBuilding objects. - */ -export async function listBuildings( - client: RoteiroClient, -): Promise { - return client.request('/api/indoor/buildings'); -} - -/** - * Get a building with its floors and transitions. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @returns An IndoorBuilding with nested floors and transitions. - */ -export async function getBuilding( - client: RoteiroClient, - buildingId: string, -): Promise { - return client.request( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}`, - ); -} - -/** - * Create a new building with optional floors, spaces, and transitions. - * - * @param client - An initialised RoteiroClient instance. - * @param data - Building definition with id, name, floors, transitions, etc. - * @returns The created IndoorBuilding. - */ -export async function createBuilding( - client: RoteiroClient, - data: { - id: string; - name: string; - address?: string; - metadata?: Record; - floors?: Array<{ - id: string; - name: string; - level: number; - elevation?: number; - height?: number; - spaces?: Array<{ - id: string; - name: string; - space_type?: string; - geometry?: unknown; - navigable?: boolean; - connections?: string[]; - }>; - }>; - transitions?: Array<{ - id: string; - name: string; - transition_type?: string; - connects_floors: number[]; - accessible?: boolean; - bidirectional?: boolean; - space_ids?: string[]; - }>; - }, -): Promise { - return client.post('/api/indoor/buildings', data); -} - -/** - * Update an existing building's metadata. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param data - Fields to update (name, address, metadata, bounds). - * @returns The updated IndoorBuilding. - */ -export async function updateBuilding( - client: RoteiroClient, - buildingId: string, - data: Partial, -): Promise { - return client.put( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}`, - data, - ); -} - -/** - * Delete a building and all its associated data. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - */ -export async function deleteBuilding( - client: RoteiroClient, - buildingId: string, -): Promise { - await client.del(`/api/indoor/buildings/${encodeURIComponent(buildingId)}`); -} - -// --------------------------------------------------------------------------- -// Floors -// --------------------------------------------------------------------------- - -/** - * List all floors in a building. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @returns A list of IndoorFloor objects. - */ -export async function listFloors( - client: RoteiroClient, - buildingId: string, -): Promise { - return client.request( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/floors`, - ); -} - -/** - * Create a new floor in a building. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param floorData - Floor definition with id, name, level, etc. - * @returns The created IndoorFloor. - */ -export async function createFloor( - client: RoteiroClient, - buildingId: string, - floorData: Partial, -): Promise { - return client.post( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/floors`, - floorData, - ); -} - -// --------------------------------------------------------------------------- -// Spaces -// --------------------------------------------------------------------------- - -/** - * List all spaces on a given floor level. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param level - The floor level number. - * @returns A list of IndoorSpace objects. - */ -export async function listSpaces( - client: RoteiroClient, - buildingId: string, - level: number, -): Promise { - return client.request( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/floors/${level}/spaces`, - ); -} - -/** - * Create a new space in a building. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param spaceData - Space definition with id, floor_id, name, etc. - * @returns The created IndoorSpace. - */ -export async function createSpace( - client: RoteiroClient, - buildingId: string, - spaceData: Partial, -): Promise { - return client.post( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/spaces`, - spaceData, - ); -} - -/** - * Get a specific space within a building. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param spaceId - The space identifier. - * @returns An IndoorSpace object. - */ -export async function getSpace( - client: RoteiroClient, - buildingId: string, - spaceId: string, -): Promise { - return client.request( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/spaces/${encodeURIComponent(spaceId)}`, - ); -} - -// --------------------------------------------------------------------------- -// Assets -// --------------------------------------------------------------------------- - -/** - * List assets in a building, optionally filtered by floor or space. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param floorId - Optional floor ID filter. - * @param spaceId - Optional space ID filter. - * @returns A list of IndoorAsset objects. - */ -export async function listAssets( - client: RoteiroClient, - buildingId: string, - floorId?: string, - spaceId?: string, -): Promise { - const params = new URLSearchParams(); - if (floorId) params.set('floor', floorId); - if (spaceId) params.set('space', spaceId); - const q = params.toString(); - return client.request( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/assets${q ? `?${q}` : ''}`, - ); -} - -/** - * Create a new asset in a building. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param assetData - Asset definition with id, name, floor_id, space_id, etc. - * @returns The created IndoorAsset. - */ -export async function createAsset( - client: RoteiroClient, - buildingId: string, - assetData: Partial, -): Promise { - return client.post( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/assets`, - assetData, - ); -} - -// --------------------------------------------------------------------------- -// Navigation -// --------------------------------------------------------------------------- - -/** - * Find an indoor navigation path between two spaces. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param fromSpace - Source space ID. - * @param toSpace - Destination space ID. - * @param accessibleOnly - Only use accessible transitions (default: false). - * @returns A NavigationResult with path steps, distance, and time estimate. - */ -export async function findPath( - client: RoteiroClient, - buildingId: string, - fromSpace: string, - toSpace: string, - accessibleOnly: boolean = false, -): Promise { - return client.post('/api/indoor/navigate', { - building_id: buildingId, - from: fromSpace, - to: toSpace, - accessible_only: accessibleOnly, - }); -} - -/** - * Find the nearest space of a given type from a starting space. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param fromSpace - Source space ID. - * @param targetType - Type of space to search for (e.g. "restroom", "exit"). - * @param accessibleOnly - Only use accessible transitions (default: false). - * @returns A NavigationResult with path steps, distance, and time estimate. - */ -export async function findNearest( - client: RoteiroClient, - buildingId: string, - fromSpace: string, - targetType: string, - accessibleOnly: boolean = false, -): Promise { - return client.post('/api/indoor/navigate/nearest', { - building_id: buildingId, - from: fromSpace, - target_type: targetType, - accessible_only: accessibleOnly, - }); -} - -// --------------------------------------------------------------------------- -// Import -// --------------------------------------------------------------------------- - -/** - * Import an IndoorGML file to create a building model. - * - * Note: For file uploads, use a FormData approach or pass the file content - * as the request body with the appropriate Content-Type header. - * - * @param client - An initialised RoteiroClient instance. - * @param fileContent - The IndoorGML file content as a string. - * @param filename - Optional filename hint for format detection. - * @returns The imported IndoorModel. - */ -export async function parseIndoorGml( - client: RoteiroClient, - fileContent: string, - filename: string = 'model.gml', -): Promise { - const resp = await client.request( - `/api/indoor/import?filename=${encodeURIComponent(filename)}`, - { - method: 'POST', - headers: { 'Content-Type': 'application/xml' }, - body: fileContent, - }, - ); - return { building: resp, source_format: inferIndoorImportFormat(filename) }; -} - -/** - * Import an IFC file to create a building model. - * - * @param client - An initialised RoteiroClient instance. - * @param fileContent - The IFC file content as a string. - * @param filename - Optional filename hint for format detection. - * @returns The imported IndoorModel. - */ -export async function importIfc( - client: RoteiroClient, - fileContent: string, - filename: string = 'model.ifc', -): Promise { - const resp = await client.request( - `/api/indoor/import?filename=${encodeURIComponent(filename)}`, - { - method: 'POST', - headers: { 'Content-Type': 'application/octet-stream' }, - body: fileContent, - }, - ); - return { building: resp, source_format: inferIndoorImportFormat(filename) }; -} - -/** - * Import an indoor model file using Cairn's multipart upload endpoint. - * - * Supports IFC, IndoorGML, and IMDF archives. - * - * @param client - An initialised RoteiroClient instance. - * @param file - The file as a Blob or File object. - * @param filename - Filename used for server-side format detection. - * @returns The imported IndoorModel. - */ -export async function importIndoorFile( - client: RoteiroClient, - file: Blob, - filename: string, -): Promise { - const formData = new FormData(); - formData.append('file', file, filename); - - const building = await client.request('/api/indoor/import', { - method: 'POST', - body: formData, - }); - return { - building, - source_format: inferIndoorImportFormat(filename), - }; -} - -/** - * Import an IMDF archive using Cairn's multipart upload endpoint. - * - * @param client - An initialised RoteiroClient instance. - * @param file - The IMDF ZIP archive. - * @param filename - Filename hint for format detection. - * @returns The imported IndoorModel. - */ -export async function importImdf( - client: RoteiroClient, - file: Blob, - filename: string = 'model.imdf.zip', -): Promise { - return importIndoorFile(client, file, filename); -} - -// --------------------------------------------------------------------------- -// Occupancy & Evacuation -// --------------------------------------------------------------------------- - -/** - * Get occupancy analytics for a building. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @returns Occupancy data with per-floor and per-space breakdown. - */ -export async function getOccupancy( - client: RoteiroClient, - buildingId: string, -): Promise { - return client.request( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/occupancy`, - ); -} - -/** - * Compute evacuation routes for a building. - * - * @param client - An initialised RoteiroClient instance. - * @param buildingId - The building identifier. - * @param params - Optional evacuation routing parameters. - * @returns Evacuation route data. - */ -export async function getEvacuationRoutes( - client: RoteiroClient, - buildingId: string, - params?: Record, -): Promise { - return client.post( - `/api/indoor/buildings/${encodeURIComponent(buildingId)}/evacuation`, - params ?? {}, - ); -} diff --git a/typescript/src/types.ts b/typescript/src/types.ts index e46d8c8..654b79f 100644 --- a/typescript/src/types.ts +++ b/typescript/src/types.ts @@ -316,143 +316,6 @@ export interface DiffResult { }; } -// --------------------------------------------------------------------------- -// Indoor GIS -// --------------------------------------------------------------------------- - -export interface IndoorBuilding { - id: string; - campus_id?: string; - name: string; - address?: string; - metadata?: Record; - bounds?: unknown; - created_by?: number; - created_at: string; - updated_at: string; - floors?: IndoorFloor[]; - transitions?: IndoorTransition[]; -} - -export interface IndoorFloor { - id: string; - building_id: string; - name: string; - level: number; - elevation: number; - height: number; - outline?: unknown; - plan_image?: string; - plan_bounds?: [number, number, number, number]; - created_at: string; -} - -export interface IndoorSpace { - id: string; - floor_id: string; - building_id: string; - name: string; - space_type: string; - geometry?: unknown; - navigable: boolean; - capacity?: number; - area?: number; - properties?: Record; - connections?: string[]; -} - -export interface IndoorTransition { - id: string; - building_id: string; - name: string; - transition_type: string; - connects_floors: number[]; - accessible: boolean; - bidirectional: boolean; - space_ids?: string[]; -} - -export interface IndoorAsset { - id: string; - building_id: string; - name: string; - floor_id: string; - space_id: string; - asset_type?: string; - asset_category?: 'person' | 'equipment' | 'furniture' | string; - position?: unknown; - properties?: Record; - status?: 'active' | 'inactive' | 'maintenance' | 'missing' | string; - last_seen?: string; - created_at?: string; - updated_at?: string; -} - -export interface NavigationStep { - spaceId: string; - spaceName: string; - floorLevel: number; - instruction: string; - distance: number; - traversalType: string; -} - -export interface NavigationResult { - path: NavigationStep[]; - totalDistance: number; - floorChanges: number; - estimatedTimeSeconds: number; -} - -export interface IndoorModel { - /** The parsed building. */ - building: IndoorBuilding; - /** Source format (ifc, indoorgml). */ - source_format?: string; -} - -export interface OccupancySpaceSummary { - space_id: string; - space_name: string; - floor_id: string; - floor_level: number; - space_type: string; - capacity: number; - current_count: number; - utilization: number; - status: 'low' | 'medium' | 'high'; -} - -export interface OccupancyFloorSummary { - floor_id: string; - floor_name: string; - level: number; - capacity: number; - occupants: number; - utilization: number; - space_count: number; -} - -export interface OccupancyTypeSummary { - space_type: string; - count: number; - capacity: number; - occupants: number; - utilization: number; -} - -export interface OccupancyData { - building_id: string; - total_capacity?: number; - total_occupants?: number; - overall_utilization?: number; - spaces?: OccupancySpaceSummary[]; - floor_summary?: OccupancyFloorSummary[]; - type_summary?: OccupancyTypeSummary[]; - floors?: Record[]; - [key: string]: unknown; -} - // --------------------------------------------------------------------------- // Hosted Layers // --------------------------------------------------------------------------- diff --git a/typescript/test/indoor.test.ts b/typescript/test/indoor.test.ts deleted file mode 100644 index 636b922..0000000 --- a/typescript/test/indoor.test.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { describe, expect, it, vi } from 'vitest'; -import { importIndoorFile } from '../src/indoor'; -import { RoteiroClient } from '../src/client'; - -describe('indoor module', () => { - it('uploads indoor model files through the multipart import endpoint', async () => { - const fetchMock = vi.fn(async (url: string, init?: RequestInit) => { - expect(new URL(url).pathname).toBe('/api/indoor/import'); - expect(init?.method).toBe('POST'); - expect(init?.body).toBeInstanceOf(FormData); - - const form = init?.body as FormData; - const uploaded = form.get('file'); - expect(uploaded).toBeInstanceOf(File); - expect((uploaded as File).name).toBe('campus.imdf.zip'); - - return new Response( - JSON.stringify({ - id: 'building-1', - name: 'HQ', - created_at: '2026-03-16T00:00:00Z', - updated_at: '2026-03-16T00:00:00Z', - }), - { status: 201, headers: { 'Content-Type': 'application/json' } }, - ); - }); - - const client = new RoteiroClient({ - baseUrl: 'https://example.com', - fetch: fetchMock as typeof globalThis.fetch, - }); - - const model = await importIndoorFile( - client, - new File(['zip-bytes'], 'campus.imdf.zip', { type: 'application/zip' }), - 'campus.imdf.zip', - ); - - expect(model.building.id).toBe('building-1'); - expect(model.source_format).toBe('imdf'); - }); -});