{"openapi":"3.0.1","info":{"title":"API Core","description":"This is the core module of the API. It contains the entities, repositories, services and controllers.","license":{"name":"LICENSE","url":"https://example.com/license"},"version":"1.0.0"},"servers":[{"url":"http://localhost:8486","description":"Development server"}],"security":[{"default":[]}],"tags":[{"name":"net-rid","description":"Endpoints exposed by the AirDodge RemoteID server."},{"name":"Notifications","description":"API for managing notifications"},{"name":"Authentication","description":"API for MQTT authentication via JWT token"},{"name":"Drone Models","description":"Manage drone model"},{"name":"RID Sensors","description":"Manage Dronetag Scout RID Sensors"},{"name":"Legal","description":"Terms & Conditions and data-processing consent APIs"},{"name":"User Management","description":"Operations related to managing users"},{"name":"Organization","description":"API for managing organizations"},{"name":"GeoZones Admin","description":"Administrative API for managing geo zones, datasets, and map visualisations"},{"name":"Push devices","description":"FCM token registration for mobile clients"},{"name":"AirdodgeUSpace","description":"Operations related to managing AirdodgeUSpace entities"},{"name":"Ground Control Station","description":"Manage ground control stations"},{"name":"Drones","description":"Manage drones"},{"name":"Pilot","description":"Operations related to drone pilots"},{"name":"NIS Drones","description":"Manage drones"},{"name":"IDP Users","description":"Operations related to Identity Provider users"},{"name":"RID Sensor Service Accounts","description":"Auto-generated Scout API credentials (max 5 per sensor)"},{"name":"flight-authorization","description":"API for managing flight authorizations"},{"name":"Bird Webhooks","description":"Webhook endpoints for Bird.com SMS status callbacks"},{"name":"Topic Authorization","description":"APIs for checking topic authorization"},{"name":"Flight Hub Service Accounts","description":"Manage Flight Hub integration service accounts"},{"name":"USpaceAction","description":"Operations related to managing USpace actions"},{"name":"HREF Terrain Data Management","description":"Operations for importing and managing HREF terrain elevation data, including altitude conversion between coordinate systems"},{"name":"terrain-elevation","description":"Terrain elevation at a geographic point"},{"name":"Organization Invitations","description":"Invite users into an organization"},{"name":"Traffic Information Service","description":"Retrieve traffic records from Redis database"},{"name":"Flight Manager","description":"Operations related to flight managers"},{"name":"RID Tags","description":"Manage Remote ID Tags"},{"name":"Drone Dock Models","description":"List DJI and other dock hardware models"},{"name":"NIS Drone Telemetry","description":"Drone telemetry audit log operations"},{"name":"Onboarding","description":"Self-registration wizard APIs"}],"paths":{"/orgmng/rid-tags/{id}":{"get":{"tags":["RID Tags"],"summary":"Get a RID Tag by ID","description":"Retrieves a RID Tag by its ID","operationId":"getRidTagById","parameters":[{"name":"id","in":"path","description":"ID of the RID Tag to retrieve","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"RID Tag not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"RID Tag found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagDTO"}}}}}},"put":{"tags":["RID Tags"],"summary":"Update a RID Tag","description":"Updates name and description of an existing RID Tag","operationId":"updateRidTag","parameters":[{"name":"id","in":"path","description":"ID of the RID Tag to update","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRidTagDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"RID Tag not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"200":{"description":"RID Tag updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagDTO"}}}}}},"delete":{"tags":["RID Tags"],"summary":"Delete a RID Tag","description":"Soft deletes a RID Tag","operationId":"deleteRidTag","parameters":[{"name":"id","in":"path","description":"ID of the RID Tag to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"RID Tag not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"RID Tag deleted successfully"}}}},"/orgmng/pilots/{id}":{"get":{"tags":["Pilot"],"summary":"Get pilot by ID","description":"Returns a single pilot by pilot ID with user information","operationId":"getPilotById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Pilot returned successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PilotDTO"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access forbidden - user does not have permission to access this pilot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Pilot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"put":{"tags":["Pilot"],"summary":"Update a pilot","description":"Updates the pilot's information.","operationId":"updatePilot","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePilotDTO"}}},"required":true},"responses":{"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"422":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access forbidden - user does not have permission to update pilot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Pilot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Pilot updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PilotDTO"}}}}}}},"/orgmng/fh-service-accounts/config/integration":{"put":{"tags":["Flight Hub Service Accounts"],"summary":"Enable or disable FlightHub integration","description":"Updates the enabled/disabled state of the FlightHub integration for the current organization","operationId":"updateIntegration","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFlightHubIntegrationRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Integration updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightHubConfigDTO"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/orgmng/drones/{id}":{"get":{"tags":["Drones"],"summary":"Get a drone by ID","description":"Retrieves a drone by its ID","operationId":"getDroneById","parameters":[{"name":"id","in":"path","description":"ID of the drone to retrieve","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Drone not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Drone found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneDTO"}}}}}},"put":{"tags":["Drones"],"summary":"Update a drone","description":"Updates name and description of an existing drone","operationId":"updateDrone","parameters":[{"name":"id","in":"path","description":"ID of the drone to update","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDroneDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Drone updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneDTO"}}}},"404":{"description":"Drone not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}},"delete":{"tags":["Drones"],"summary":"Delete a drone","description":"Soft deletes a drone by setting its status to DELETED","operationId":"deleteDrone","parameters":[{"name":"id","in":"path","description":"ID of the drone to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Drone not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Drone deleted successfully"},"403":{"description":"Forbidden - User does not have permission to delete this drone","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/join-request":{"put":{"tags":["Onboarding"],"summary":"Update join-by-org-admin-email target (authenticated pending user)","description":"Only valid post-submit while PENDING_APPROVAL in join-existing-organization mode. Re-resolves the admin and notifies them on match.","operationId":"updateJoinRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateJoinRequestDTO"}}},"required":true},"responses":{"204":{"description":"Updated"},"409":{"description":"Not eligible for join-request update","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/draft":{"get":{"tags":["Onboarding"],"summary":"Get onboarding draft","description":"Resume registration: returns saved wizard state for the authenticated user.","operationId":"getDraft","responses":{"200":{"description":"Draft found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OnboardingDraftDTO"}}}},"404":{"description":"Draft not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"put":{"tags":["Onboarding"],"summary":"Update onboarding draft","description":"Persist intermediate wizard step data to DB.","operationId":"updateDraft","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOnboardingDraftDTO"}}},"required":true},"responses":{"409":{"description":"Already submitted","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Draft updated","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OnboardingDraftDTO"}}}}}}},"/nis/rid-sensors/{id}":{"get":{"tags":["RID Sensors"],"summary":"Get a RID Sensor by ID","operationId":"getById_2","parameters":[{"name":"id","in":"path","description":"RID Sensor ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidSensorDTO"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"put":{"tags":["RID Sensors"],"summary":"Update a RID Sensor","description":"Updates Scout sensor SSN and description.","operationId":"update","parameters":[{"name":"id","in":"path","description":"RID Sensor ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRidSensorDTO"}}},"required":true},"responses":{"200":{"description":"RID Sensor updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidSensorDTO"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}},"delete":{"tags":["RID Sensors"],"summary":"Delete a RID Sensor","description":"Soft-deletes a RID Sensor and its service accounts","operationId":"delete_2","parameters":[{"name":"id","in":"path","description":"RID Sensor ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"Deleted"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths/uspace/{id}":{"get":{"tags":["AirdodgeUSpace"],"summary":"Get AirdodgeUSpace by ID","description":"Retrieves a specific AirdodgeUSpace by its ID","operationId":"getUSpaceById","parameters":[{"name":"id","in":"path","description":"AirdodgeUSpace ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"AirdodgeUSpace not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved the AirdodgeUSpace","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AirdodgeUSpaceDTO"}}}}}},"put":{"tags":["AirdodgeUSpace"],"summary":"Update AirdodgeUSpace","description":"Updates an existing AirdodgeUSpace entity","operationId":"updateUSpace","parameters":[{"name":"id","in":"path","description":"AirdodgeUSpace ID","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAirdodgeUSpaceDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid input data or code already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"AirdodgeUSpace not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"AirdodgeUSpace updated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AirdodgeUSpaceDTO"}}}}}}},"/fa-geo-zones/{id}":{"get":{"tags":["fa-geo-zone-controller"],"operationId":"getById_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FaGeoZoneDTO"}}}}}},"put":{"tags":["fa-geo-zone-controller"],"operationId":"update_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFaGeoZoneRequestDTO"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FaGeoZoneDTO"}}}}}},"delete":{"tags":["fa-geo-zone-controller"],"operationId":"delete_3","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/api/v1/geoaware/admin/map-visualisations":{"get":{"tags":["GeoZones Admin"],"summary":"List map visualisations","description":"Retrieves all map visualisations","operationId":"listMapVisualisations","responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved map visualisations","content":{"application/json":{}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"put":{"tags":["GeoZones Admin"],"summary":"Edit map visualisation","description":"Updates an existing map visualisation","operationId":"editMapVisualisation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMapVisualisationRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Map visualisation updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapVisualisationDTO"}}}},"404":{"description":"Map visualisation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}},"post":{"tags":["GeoZones Admin"],"summary":"Add map visualisation","description":"Creates a new map visualisation","operationId":"addMapVisualisation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMapVisualisationRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"201":{"description":"Map visualisation created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapVisualisationDTO"}}}}}}},"/api/v1/geoaware/admin/dataset-definitions":{"get":{"tags":["GeoZones Admin"],"summary":"Get dataset definitions","description":"Retrieves dataset definitions by IDs or all if no IDs provided","operationId":"getDatasetDefinitions","parameters":[{"name":"datasetDefinitionIds","in":"query","description":"List of dataset definition IDs","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved dataset definitions","content":{"application/json":{}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"put":{"tags":["GeoZones Admin"],"summary":"Edit dataset definition","description":"Updates an existing dataset definition","operationId":"editDatasetDefinition","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDatasetDefinitionRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Dataset definition not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Dataset definition updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetDefinitionDTO"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}},"post":{"tags":["GeoZones Admin"],"summary":"Add dataset definition","description":"Creates a new dataset definition","operationId":"addDatasetDefinition","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDatasetDefinitionRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Dataset definition created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetDefinitionDTO"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/api/v1/geoaware/admin/dataset-definitions/{datasetId}/activate":{"put":{"tags":["GeoZones Admin"],"summary":"Activate/deactivate dataset definition","description":"Activates or deactivates a dataset definition","operationId":"activateDatasetDefinition","parameters":[{"name":"datasetId","in":"path","description":"Dataset definition ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"activate","in":"query","description":"Activate flag","required":true,"schema":{"type":"boolean"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Dataset definition not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Dataset definition activation status updated successfully"}}}},"/terrain/elevation/point":{"post":{"tags":["terrain-elevation"],"summary":"Terrain elevation at a point","description":"Returns terrain surface elevation in metres (AMSL-style orthometric height from DTM) at the given WGS84 coordinates.","operationId":"queryPointElevation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerrainElevationPointRequestDTO"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TerrainElevationPointResponseDTO"}}}}}}},"/orgmng/users/{userId}/unblock":{"post":{"tags":["User Management"],"summary":"Unblock user in organization","operationId":"unblockUser","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/orgmng/users/{userId}/revoke-org-admin":{"post":{"tags":["User Management"],"summary":"Revoke Organization Admin role","operationId":"revokeOrgAdmin","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/orgmng/users/{userId}/block":{"post":{"tags":["User Management"],"summary":"Block user in organization","operationId":"blockUser","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/orgmng/users/{userId}/assign-org-admin":{"post":{"tags":["User Management"],"summary":"Assign Organization Admin role","operationId":"assignOrgAdmin","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/orgmng/users/super-admin":{"post":{"tags":["User Management"],"summary":"Create a new Super Admin","description":"Creates a new user with the SUPER_ADMIN role.","operationId":"createSuperAdmin","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserDTO"}}},"required":true},"responses":{"422":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Super Admin created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserDTO"}}}}}}},"/orgmng/users/assign-pilot-role":{"post":{"tags":["User Management"],"summary":"Assign PILOT role to FLIGHT_MANAGER user","description":"Assigns PILOT role and creates Pilot entity for a FLIGHT_MANAGER user. Users with 'assign_pilot:flight_manager' permission can only assign to themselves. Users with 'assign_pilot:flight_manager:all' permission can assign to any user.","operationId":"assignPilotRole","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AssignPilotRoleDTO"}}},"required":true},"responses":{"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"User already has PILOT role or pilot registration number already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Pilot role assigned successfully"},"404":{"description":"User not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/rid-tags":{"get":{"tags":["RID Tags"],"summary":"Get all RID Tags","description":"Retrieves a pageable list of all RID Tags","operationId":"getAllRidTags","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"RID Tags retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagPageDTO"}}}}}},"post":{"tags":["RID Tags"],"summary":"Create a new RID Tag","description":"Creates and registers a new Remote ID Tag in the system","operationId":"createRidTag","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRidTagDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Organization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"RID Tag created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagDTO"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/orgmng/rid-tags/{id}/unbind":{"post":{"tags":["RID Tags"],"summary":"Unbind RID Tag from a Drone","description":"Removes the binding between a RID Tag and its drone","operationId":"unbindRidTag","parameters":[{"name":"id","in":"path","description":"ID of the RID Tag to unbind","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"RID Tag not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"RID Tag is not bound to any drone","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"200":{"description":"RID Tag unbound successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagDTO"}}}}}}},"/orgmng/rid-tags/{id}/bind":{"post":{"tags":["RID Tags"],"summary":"Bind RID Tag to a Drone","description":"Binds a RID Tag to a specific drone within the same organization","operationId":"bindRidTag","parameters":[{"name":"id","in":"path","description":"ID of the RID Tag to bind","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BindRidTagDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"RID Tag bound successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagDTO"}}}},"404":{"description":"RID Tag or Drone not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/orgmng/pilots":{"get":{"tags":["Pilot"],"summary":"Get all pilots","description":"Returns a paginated list of pilots with user info. Super Admin may filter by organizationId; other users always receive pilots from their own organization. Optional search is for portal autocomplete; omitting it keeps the legacy paginated list (mobile-compatible).","operationId":"getAllPilots","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}},{"name":"organizationId","in":"query","description":"When the caller is Super Admin, limits results to this organization; ignored for self-org readers.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"search","in":"query","description":"Optional. Filters by pilot name, registration number, or id. When omitted/blank, returns the legacy unfiltered page (mobile-compatible).","required":false,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"List of pilots returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PilotPageDTO"}}}}}},"post":{"tags":["Pilot"],"summary":"Create a new pilot","description":"Creates a new user with pilot role and registration number","operationId":"createPilot","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePilotDTO"}}},"required":true},"responses":{"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"422":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"Email already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Organization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Pilot created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PilotDTO"}}}}}},"delete":{"tags":["Pilot"],"summary":"Delete multiple pilots","description":"Marks all specified pilots as RETIRED in the system and removes them from the identity provider.","operationId":"deletePilot","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeletePilotsDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"One or more pilots not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"One or more pilots already retired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access forbidden - user does not have permission to delete pilots","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Pilots deleted successfully"}}}},"/orgmng/pilots/{id}/unblock":{"post":{"tags":["Pilot"],"summary":"Unblock a pilot","description":"Unblocks the pilot in the system and in idp. After this, the pilot can log in again.","operationId":"unblockPilot","parameters":[{"name":"id","in":"path","description":"Pilot ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"Pilot is not blocked or is retired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Pilot unblocked successfully"},"404":{"description":"Pilot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/pilots/{id}/block":{"post":{"tags":["Pilot"],"summary":"Block a pilot","description":"Blocks the pilot in the system and in idp. After this, the pilot cannot log in.","operationId":"blockPilot","parameters":[{"name":"id","in":"path","description":"Pilot ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Pilot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"Pilot is already blocked or retired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Pilot blocked successfully"}}}},"/orgmng/organizations":{"get":{"tags":["Organization"],"summary":"Get paginated list of organizations","description":"Returns paginated organizations. Optional search filters by name/id (portal autocomplete). Omitting search preserves the legacy paginated list used by mobile.","operationId":"getOrganizations","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}},{"name":"search","in":"query","description":"Optional. When present, filters by organization name or id. When omitted/blank, returns the legacy unfiltered page (mobile-compatible).","required":false,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid query parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved organizations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationPageDTO"}}}}}},"post":{"tags":["Organization"],"summary":"Create a new organization","description":"Creates a new organization","operationId":"createOrganization","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrganizationDTO"}}},"required":true},"responses":{"422":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Successfully created the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDTO"}}}}}},"delete":{"tags":["Organization"],"summary":"Delete multiple organizations","description":"Deletes organizations by their IDs","operationId":"deleteOrganizationsByIds","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteOrganizationsDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Successfully deleted organizations"},"404":{"description":"Organizations not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/invitations":{"get":{"tags":["Organization Invitations"],"summary":"List invitations for current organization (all statuses, paginated)","operationId":"list","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageDTOInvitationDTO"}}}}}},"post":{"tags":["Organization Invitations"],"summary":"Create invitation","operationId":"create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInvitationDTO"}}},"required":true},"responses":{"409":{"description":"Conflict","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Created","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationDTO"}}}},"400":{"description":"Validation error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/orgmng/invitations/{invitationId}/resend":{"post":{"tags":["Organization Invitations"],"summary":"Resend invitation email (renews token and expiry)","operationId":"resend","parameters":[{"name":"invitationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Resent","content":{"*/*":{"schema":{"$ref":"#/components/schemas/InvitationDTO"}}}},"409":{"description":"Conflict","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Rate limited","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/invitations/{invitationId}/cancel":{"post":{"tags":["Organization Invitations"],"summary":"Cancel pending invitation","operationId":"cancel","parameters":[{"name":"invitationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/orgmng/idp/users":{"post":{"tags":["IDP Users"],"summary":"Create a new Identity Provider user","description":"Registers a new user in the Identity Provider with a specific role","operationId":"createUser","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateIdpUserDTO"}}},"required":true},"responses":{"422":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"User created successfully"},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/idp/users/reset-password":{"post":{"tags":["IDP Users"],"summary":"Send password reset email","description":"Sends a reset link to user's email using identity provider","operationId":"sendPasswordResetRequest","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetPasswordRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Reset email sent"}}}},"/orgmng/flight-managers":{"get":{"tags":["Flight Manager"],"summary":"Get all flight managers","description":"Returns a paginated list of flight managers. Super Admin may filter by organizationId; other users always receive flight managers from their own organization.","operationId":"getAllFlightManagers","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}},{"name":"organizationId","in":"query","description":"When the caller is Super Admin, limits results to this organization; ignored for self-org readers.","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Paginated list of flight managers","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightManagerPageDTO"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"post":{"tags":["Flight Manager"],"summary":"Create a new flight manager","description":"Creates a new user with flight manager role","operationId":"createFlightManager","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFlightManagerDTO"}}},"required":true},"responses":{"422":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Flight manager created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FlightManagerDTO"}}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"delete":{"tags":["Flight Manager"],"summary":"Delete multiple flight managers","description":"Marks all specified flight managers as RETIRED in the system and removes them from the identity provider.","operationId":"deleteFlightManagers","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteFlightManagersDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"One or more flight managers already deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight managers deleted successfully"},"404":{"description":"One or more flight managers not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/fh-service-accounts":{"get":{"tags":["Flight Hub Service Accounts"],"summary":"List Flight Hub service accounts","description":"Retrieves a paginated list of active Flight Hub service accounts. Passwords are not included.","operationId":"getAll","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}},{"name":"organizationId","in":"query","description":"When the caller has read:fh-service-accounts:any-org, limits results to this organization; omit to list all organizations.","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Service accounts retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageDTO"}}}}}},"post":{"tags":["Flight Hub Service Accounts"],"summary":"Generate a Flight Hub service account","description":"Generates a new service account with an auto-generated username and password. The password is only returned once.","operationId":"generate","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateFlightHubServiceAccountRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Organization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"201":{"description":"Service account generated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightHubServiceAccountCreatedDTO"}}}}}}},"/orgmng/drones":{"get":{"tags":["Drones"],"summary":"Get all drones","description":"Retrieves a pageable list of drones. Super Admin may filter by organizationId; other users always receive drones from their own organization. Optional search is for portal autocomplete; omitting it keeps the legacy paginated list (mobile-compatible). Sort supports Spring-style repeated params (e.g. sort=status,DESC&sort=id,DESC). When sorted by a non-unique field such as status, id DESC is appended as a tiebreaker so OFFSET pagination is stable.","operationId":"getAllDrones","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}},{"name":"organizationId","in":"query","description":"When the caller is Super Admin, limits results to this organization; ignored for self-org readers.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"search","in":"query","description":"Optional. Filters by drone name or id. When omitted/blank, returns the legacy unfiltered page (mobile-compatible).","required":false,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Drones retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DronePageDTO"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"post":{"tags":["Drones"],"summary":"Create a new drone","description":"Creates and registers a new drone in the system","operationId":"createDrone","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDroneDTO"}}},"required":true},"responses":{"404":{"description":"Organization or model not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Drone created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneDTO"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/orgmng/drones/check-registration":{"post":{"tags":["Drones"],"summary":"Check drone registration status","description":"Checks if a drone is registered in system","operationId":"checkDroneRegisteredInSystem","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckDroneRegistrationDTO"}}},"required":true},"responses":{"200":{"description":"Registration status retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneRegistrationStatusDTO"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/orgmng/drone-models":{"get":{"tags":["Drone Models"],"summary":"Get all drone models","description":"Returns a list of available drone models. When manufacturer is provided, only models with that manufacturer are returned (case-insensitive); omit the parameter to return all models.","operationId":"getAll_1","parameters":[{"name":"manufacturer","in":"query","description":"Filter by manufacturer (e.g. DJI). Omit or leave empty for no filter.","required":false,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"List returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneModelDTO"}}}}}},"post":{"tags":["Drone Models"],"summary":"Create a new drone model","description":"Creates and stores a new drone model in the system","operationId":"create_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDroneModelDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"409":{"description":"Model with such name already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Model created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneModelDTO"}}}}}}},"/onboarding/{userId}/reject":{"post":{"tags":["Onboarding"],"summary":"Reject pending registration","description":"Create-org: Super Admin only. Invite join: Org Admin, Flight Manager, or Super Admin.","operationId":"reject","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectOnboardingDTO"}}},"required":true},"responses":{"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"Not pending","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Rejected"}}}},"/onboarding/{userId}/approve":{"post":{"tags":["Onboarding"],"summary":"Approve pending registration","description":"Create-org: Super Admin only. Invite join: Org Admin, Flight Manager, or Super Admin.","operationId":"approve","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"403":{"description":"Forbidden","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"Not pending","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Approved"}}}},"/onboarding/submit":{"post":{"tags":["Onboarding"],"summary":"Submit registration","description":"Creates organization (or joins via invitation), sets PENDING_APPROVAL, notifies approvers.","operationId":"submit","responses":{"409":{"description":"Already submitted","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Incomplete registration","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Submitted","content":{"*/*":{"schema":{"$ref":"#/components/schemas/SubmitOnboardingResponseDTO"}}}}}}},"/onboarding/registration/cancel":{"post":{"tags":["Onboarding"],"summary":"Cancel own in-progress registration","description":"Deletes the caller's own unfinished registration (user, Auth0, draft, verification codes, legal acceptances). Identity comes only from the HttpOnly continuation cookie — no user id is accepted from the client. Only PENDING_VERIFICATION registrations are removed.","operationId":"cancelOwnRegistration","responses":{"403":{"description":"Not an in-progress registration","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Registration cancelled; continuation cookie cleared"},"401":{"description":"Missing / invalid continuation cookie","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/phone/verify":{"post":{"tags":["Onboarding"],"summary":"Verify phone SMS OTP","operationId":"verifyPhoneCode","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPhoneCodeDTO"}}},"required":true},"responses":{"204":{"description":"Phone verified"},"400":{"description":"Invalid / expired code","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/phone/send-code":{"post":{"tags":["Onboarding"],"summary":"Send phone verification SMS OTP","operationId":"sendPhoneCode","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendPhoneVerificationDTO"}}},"required":true},"responses":{"204":{"description":"Code sent"},"400":{"description":"SMS failed, invalid phone, or rate limited","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/join-request/resend":{"post":{"tags":["Onboarding"],"summary":"Resend join-request notification (authenticated pending user)","description":"Re-notifies org admins via the standard pending-approval path when the target email resolves. Always returns 204 on success or no-op (no enumeration). Rate limited.","operationId":"resendJoinRequest","responses":{"204":{"description":"Accepted"},"400":{"description":"Rate limited","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/email/verify-code":{"post":{"tags":["Onboarding"],"summary":"Confirm email via 6-digit code (public, MOBILE)","operationId":"verifyEmailCode","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailCodeDTO"}}},"required":true},"responses":{"404":{"description":"No account / code found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid / expired code","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Email verified; continuation token returned in body for X-Onboarding-Token (mobile cannot rely on HttpOnly cookies)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfirmEmailVerificationResponseDTO"}}}}}}},"/onboarding/email/resend":{"post":{"tags":["Onboarding"],"summary":"Resend email verification link/code (public)","operationId":"resendEmail","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResendEmailVerificationDTO"}}},"required":true},"responses":{"204":{"description":"Accepted (no account enumeration; email sent only when applicable)"}}}},"/onboarding/email/confirm":{"post":{"tags":["Onboarding"],"summary":"Confirm email via verification link token (public)","operationId":"confirmEmail","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmEmailVerificationDTO"}}},"required":true},"responses":{"400":{"description":"Invalid / expired link","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Link not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Email verified; HttpOnly continuation cookie issued","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ConfirmEmailVerificationResponseDTO"}}}},"409":{"description":"Already verified","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/continuation/clear":{"post":{"tags":["Onboarding"],"summary":"Clear continuation cookie (public)","description":"Expires the HttpOnly onboarding continuation cookie (e.g. exit registration / logout).","operationId":"clearContinuation","responses":{"204":{"description":"Cookie cleared"}}}},"/onboarding/continuation/activate":{"post":{"tags":["Onboarding"],"summary":"Activate continuation from email resume link (public)","description":"Validates the token from /continue-registration/{token} and sets the HttpOnly cookie. Does not store the secret in the browser.","operationId":"activateContinuation","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmEmailVerificationDTO"}}},"required":true},"responses":{"204":{"description":"Cookie issued"},"401":{"description":"Invalid / expired token","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/account":{"post":{"tags":["Onboarding"],"summary":"Create onboarding account (public)","description":"Step 1: email + password. Creates Auth0 user and draft registration immediately; password is stored only in the IdP. Email verification follows.","operationId":"createAccount","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOnboardingAccountDTO"}}},"required":true},"responses":{"400":{"description":"Validation / captcha error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"201":{"description":"Accepted (verification or account instructions emailed). Response is identical for new and existing emails.","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CreateOnboardingAccountResponseDTO"}}}}}}},"/notifications/push-devices":{"post":{"tags":["Push devices"],"summary":"Register or update FCM token for the current user","operationId":"register","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterPushDeviceRequestDTO"}}},"required":true},"responses":{"200":{"description":"OK"}}},"delete":{"tags":["Push devices"],"summary":"Remove FCM token for the current user (e.g. logout)","operationId":"unregister","parameters":[{"name":"fcmToken","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/notifications/mark-read":{"post":{"tags":["Notifications"],"summary":"Mark notifications as read","description":"Mark a list of notifications as read. Only the recipient of the notifications can mark them as read.","operationId":"markNotificationsAsRead","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkNotificationsAsReadRequestDTO"}}},"required":true},"responses":{"200":{"description":"Successfully marked notifications as read"},"400":{"description":"Invalid request parameters"},"500":{"description":"Internal server error"},"403":{"description":"Access denied - user can only mark their own notifications as read"}}}},"/notifications/confirm-by-code":{"post":{"tags":["Notifications"],"summary":"Confirm notification by code","description":"Confirm a notification using its confirmation code. Security is provided by the confirmation code itself.","operationId":"confirmNotificationByCode","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfirmNotificationByCodeRequestDTO"}}},"required":true},"responses":{"200":{"description":"Successfully confirmed notification"},"400":{"description":"Invalid confirmation code or notification already confirmed"},"500":{"description":"Internal server error"}}}},"/nis/rid-sensors":{"get":{"tags":["RID Sensors"],"summary":"List RID Sensors","description":"Returns a pageable list of active RID Sensors","operationId":"getAll_3","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageDTORidSensorDTO"}}}}}},"post":{"tags":["RID Sensors"],"summary":"Create a RID Sensor","description":"Registers a Scout sensor by SSN. Generate service accounts separately for HTTP Basic auth.","operationId":"create_2","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRidSensorDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"RID Sensor created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidSensorDTO"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/nis/rid-sensors/{sensorId}/service-accounts":{"get":{"tags":["RID Sensor Service Accounts"],"summary":"List service accounts","operationId":"list_1","parameters":[{"name":"sensorId","in":"path","description":"RID Sensor ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RidSensorServiceAccountDTO"}}}}},"404":{"description":"Sensor not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"post":{"tags":["RID Sensor Service Accounts"],"summary":"Generate a service account","description":"Creates username/password and returns plaintext password once (for HTTP Basic / Scout URL userinfo).","operationId":"generate_1","parameters":[{"name":"sensorId","in":"path","description":"RID Sensor ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"201":{"description":"Generated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidSensorServiceAccountCreatedDTO"}}}},"422":{"description":"Limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"404":{"description":"Sensor not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/nis/drones/unlink-user":{"post":{"tags":["NIS Drones"],"summary":"Unlink user from device","description":"Unlinks a user from both aircraft and remote controller devices","operationId":"unlinkUserFromDevice","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnlinkUserFromDeviceDTO"}}},"required":true},"responses":{"422":{"description":"Validation failed","content":{"application/json":{}}},"200":{"description":"User unlinked successfully"},"500":{"description":"Internal server error","content":{"application/json":{}}}}}},"/nis/drones/telemetry/geo-window":{"post":{"tags":["NIS Drone Telemetry"],"summary":"Get drone telemetry by geographic window","description":"Returns grouped drone data within a specified geographic bounding box.\nThis endpoint provides optimized response structure with current positions, speeds, and trajectories.\nEach drone includes its latest position, current speed, and trajectory for the last hour.\nUses Redis Geo Windowing to efficiently find drone positions within the given coordinates.\n","operationId":"getDroneTelemetryByGeoWindow","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoWindowDTO"}}},"required":true},"responses":{"200":{"description":"Drone telemetry retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneTelemetryResponseDTO"}}}},"400":{"description":"Invalid bounding box coordinates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneTelemetryResponseDTO"}}}}}}},"/net-remote-id/records":{"post":{"tags":["net-rid"],"summary":"Post RemoteID Record","description":"Publish Remote ID Record to make UAS electronically conspicuous.","operationId":"postRemoteIdRecord","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRemoteIdRecordParameters"}}},"required":true},"responses":{"201":{"description":"RemoteID Data Record was created successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostRemoteIdRecordResponse"}}}},"400":{"description":"* One or more parameters were missing or invalid. * The RemoteID Record information could not be parsed, or contains illegal data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Bearer access token was not provided in Authorization header, token could not be decoded, or token was invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"* The access token was decoded successfully but did not include a scope appropriate to this endpoint. * The client identified in the access token is not the owner of this Entity according to the receiving client's records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"Authority":["rid.uas_operator"]}]}},"/net-remote-id/gcs/records":{"post":{"tags":["net-rid"],"summary":"Submit GCS position record","description":"Submit the current position of a Ground Control Station (GCS).","operationId":"postGcsPosition","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GcsPositionRecordParameters"}}},"required":true},"responses":{"201":{"description":"GCS position record was created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PostGcsPositionResponse"}}}},"400":{"description":"* One or more parameters were missing or invalid. * The RemoteID Record information could not be parsed, or contains illegal data.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Bearer access token was not provided in Authorization header, token could not be decoded, or token was invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"* The access token was decoded successfully but did not include a scope appropriate to this endpoint. * The client identified in the access token is not the owner of this Entity according to the receiving client's records.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"Authority":["rid.gcs_operator"]}]}},"/legal/documents":{"get":{"tags":["Legal"],"summary":"List published legal document versions","description":"Requires read:legal_documents. Catalog of immutable published versions.","operationId":"listPublishedDocuments","responses":{"200":{"description":"Published versions","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/LegalDocumentVersionDTO"}}}}}}},"post":{"tags":["Legal"],"summary":"Publish a new legal document version","description":"Requires create:legal_document. Creates an immutable catalog row. Duplicate type+version returns 409. SHA-256 is computed server-side from content.","operationId":"publishDocument","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishLegalDocumentRequestDTO"}}},"required":true},"responses":{"201":{"description":"Published","content":{"*/*":{"schema":{"$ref":"#/components/schemas/LegalDocumentVersionDTO"}}}},"400":{"description":"Validation error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"409":{"description":"Version already exists — change version and upload again","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/legal/data-processing-consents":{"get":{"tags":["Legal"],"summary":"List my data-processing consents","operationId":"listDataProcessingConsents","responses":{"200":{"description":"Consent history","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DataProcessingConsentDTO"}}}}}}},"post":{"tags":["Legal"],"summary":"Record optional data-processing consent","description":"Records marketing/analytics/other consents separately from Terms and Conditions. Append-only.","operationId":"recordDataProcessingConsent","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecordDataProcessingConsentRequestDTO"}}},"required":true},"responses":{"201":{"description":"Consent recorded","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DataProcessingConsentDTO"}}}},"400":{"description":"Validation error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/legal/acceptances":{"get":{"tags":["Legal"],"summary":"List my Terms and Conditions acceptances","operationId":"listAcceptances","responses":{"200":{"description":"Acceptance history","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentAcceptanceDTO"}}}}}}},"post":{"tags":["Legal"],"summary":"Accept current Terms and Conditions","description":"Creates a new immutable acceptance record for the authenticated user. Duplicate acceptance of the same version returns 409.","operationId":"acceptTerms","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptTermsRequestDTO"}}},"required":true},"responses":{"201":{"description":"Acceptance recorded","content":{"*/*":{"schema":{"$ref":"#/components/schemas/DocumentAcceptanceDTO"}}}},"400":{"description":"Validation error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"409":{"description":"Version already accepted","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths":{"post":{"tags":["flight-authorization"],"summary":"Create flight authorization from flight plan","description":"Creates a new flight authorization from a ready flight plan JSON file","operationId":"createFlightAuthorization","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["flightAuthorization","importingFile"],"type":"object","properties":{"flightAuthorization":{"$ref":"#/components/schemas/CreateFlightAuthorizationRequestDTO"},"importingFile":{"type":"string","description":"Flight plan JSON file","format":"binary"}}}}}},"responses":{"422":{"description":"Validation error - Invalid JSON, missing drone/pilot, or parsing errors","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"451":{"description":"Terrain data unavailable - Coordinates outside HREF coverage area","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Error in parsing request or flight plan conflicts detected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"Flight authorization created successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFlightAuthResponseDTO"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"409":{"description":"Flight authorization collision or lock acquisition failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightAuthorizationConflictResponse"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}},"404":{"description":"Resource not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths/{id}/withdraw":{"post":{"tags":["flight-authorization"],"summary":"Withdraw flight authorization by ID","description":"Withdraws a flight authorization by its UUID ID, marking it as withdrawn by the current user with a reason","operationId":"withdrawFlightAuthorization","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to withdraw","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawFlightAuthRequestDTO"}}},"required":true},"responses":{"400":{"description":"Invalid UUID format or request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation error - Only ACTIVATED or ACCEPTED status flight authorizations can be withdrawn","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight authorization withdrawn successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WithdrawFlightAuthResponseDTO"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/reject":{"post":{"tags":["flight-authorization"],"summary":"Reject flight authorization by ID","description":"Rejects a flight authorization by its UUID ID, marking it as rejected by the current user with a reason","operationId":"rejectFlightAuthorization","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to reject","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectFlightAuthRequestDTO"}}},"required":true},"responses":{"400":{"description":"Invalid UUID format or request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation error - Only PROPOSED status flight authorizations can be rejected","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight authorization rejected successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RejectFlightAuthResponseDTO"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/end":{"post":{"tags":["flight-authorization"],"summary":"End flight authorization by ID","description":"Ends a flight authorization by its UUID ID, marking it as ended by the current user","operationId":"endFlightAuthorization","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to end","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"responses":{"200":{"description":"Flight authorization ended successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EndFlightAuthResponseDTO"}}}},"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation error - Only ACTIVATED status flight authorizations can be ended","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Invalid UUID format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied - Access denied for flight authorizations from different organizations or insufficient permissions","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/contingency":{"post":{"tags":["flight-authorization"],"summary":"Set flight authorization to CONTINGENT","description":"Marks a flight authorization as CONTINGENT and triggers notifications and realtime updates","operationId":"contingencyFlightAuthorization","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to set to CONTINGENT","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight authorization set to CONTINGENT","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContingencyFlightAuthResponseDTO"}}}},"400":{"description":"Invalid UUID format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/cancel":{"post":{"tags":["flight-authorization"],"summary":"Cancel flight authorization by ID","description":"Cancels a flight authorization by its UUID ID, marking it as cancelled by the current user with an optional reason","operationId":"cancelFlightAuthorization","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to cancel","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelFlightAuthRequestDTO"}}},"required":true},"responses":{"200":{"description":"Flight authorization cancelled successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelFlightAuthResponseDTO"}}}},"400":{"description":"Invalid UUID format or request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation error - Only PROPOSED or ACCEPTED status flight authorizations can be cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/activate":{"post":{"tags":["flight-authorization"],"summary":"Activate flight authorization by ID","description":"Activates a flight authorization by its UUID ID, marking it as activated by the current user","operationId":"activateFlightAuthorization","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to activate","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"responses":{"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid UUID format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation error - Only ACCEPTED status flight authorizations can be activated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"200":{"description":"Flight authorization activated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateFlightAuthResponseDTO"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/accept":{"post":{"tags":["flight-authorization"],"summary":"Accept flight authorization by ID","description":"Accepts a flight authorization by its UUID ID, marking it as accepted by the current user","operationId":"acceptFlightAuthorization","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to accept","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"responses":{"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight authorization accepted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptFlightAuthResponseDTO"}}}},"400":{"description":"Invalid UUID format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{faId}/geo-zone-allowances/{allowanceId}/deny":{"post":{"tags":["geo-zone-allowance-controller"],"operationId":"deny","parameters":[{"name":"faId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"allowanceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DenyGeoZoneAllowanceRequestDTO"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/flight-auths/{faId}/geo-zone-allowances/{allowanceId}/allow":{"post":{"tags":["geo-zone-allowance-controller"],"operationId":"allow","parameters":[{"name":"faId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"allowanceId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/flight-auths/uspace":{"get":{"tags":["AirdodgeUSpace"],"summary":"Get all AirdodgeUSpaces","description":"Retrieves a list of all AirdodgeUSpace entities","operationId":"getAllUSpaces","responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved AirdodgeUSpaces","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AirdodgeUSpaceDTO"}}}}}},"post":{"tags":["AirdodgeUSpace"],"summary":"Create a new AirdodgeUSpace","description":"Creates a new AirdodgeUSpace entity with the provided data","operationId":"createUSpace","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAirdodgeUSpaceDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid input data or code already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"201":{"description":"AirdodgeUSpace created successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AirdodgeUSpaceDTO"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}}}}},"/flight-auths/uspace-action/shutdown":{"post":{"tags":["USpaceAction"],"summary":"Shutdown USpace","description":"Shuts down a USpace and withdraws all affected flight authorizations","operationId":"shutdownUSpace","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ShutdownUSpaceRequestDTO"}}},"required":true},"responses":{"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"USpace not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"USpace shut down successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/USpaceActionDTO"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths/uspace-action/activate":{"post":{"tags":["USpaceAction"],"summary":"Activate USpace","description":"Activates a USpace by setting its state to ACTIVE","operationId":"activateUSpace","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActivateUSpaceRequestDTO"}}},"required":true},"responses":{"400":{"description":"Invalid input data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"USpace activated successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/USpaceActionDTO"}}}},"404":{"description":"USpace not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths/parseQgcPlanFile":{"post":{"tags":["flight-authorization"],"summary":"Parse Flight Plan File with Compression","description":"Parses QGC plan files and returns compressed response.","operationId":"parseQgcPlanFile","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["flightEndTime","flightStartTime","importingFile","processingType"],"type":"object","properties":{"importingFile":{"type":"string","description":"QGC plan file to parse","format":"binary"},"flightStartTime":{"type":"string","description":"Flight start time in ISO-8601 format","format":"date-time","example":"2024-01-15T10:00:00Z"},"flightEndTime":{"type":"string","description":"Flight end time in ISO-8601 format","format":"date-time","example":"2024-01-15T12:00:00Z"},"processingType":{"type":"string","description":"Processing type (CIRCLE, SEGMENTS)","example":"SEGMENTS"}}}}}},"responses":{"451":{"description":"Terrain data unavailable - Coordinates outside HREF coverage area","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Error in parsing Flight Plan File","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation error - Invalid parameters or compression failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight Plan File Parsed Successfully - Response contains gzip-compressed data.","content":{"application/gzip":{"schema":{"$ref":"#/components/schemas/FlightPlanResponseDTO"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/parseCustomPlan":{"post":{"tags":["flight-authorization"],"summary":"Parse Custom File with Compression","description":"Creates custom volumes based on provided parameters, returns compressed response. Supports different CUSTOM processing types.","operationId":"parseCustomPlan","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["flightEndTime","flightStartTime","importingFile","processingType"],"type":"object","properties":{"importingFile":{"type":"string","description":"Custom JSON file with volume parameters (e.g., radius, altitude, coordinates)","format":"binary"},"flightStartTime":{"type":"string","description":"Flight start time in ISO-8601 format","format":"date-time","example":"2024-01-15T10:00:00Z"},"flightEndTime":{"type":"string","description":"Flight end time in ISO-8601 format","format":"date-time","example":"2024-01-15T12:00:00Z"},"processingType":{"type":"string","description":"Processing type","example":"CUSTOM_CIRCLE"}}}}}},"responses":{"451":{"description":"Terrain data unavailable - Coordinates outside HREF coverage area","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Custom Flight Plan Created Successfully - Response contains gzip-compressed data.","content":{"application/gzip":{"schema":{"$ref":"#/components/schemas/FlightPlanResponseDTO"}}}},"422":{"description":"Validation error - Invalid parameters or compression failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Error in creating custom flight plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/geo-window":{"post":{"tags":["flight-authorization"],"summary":"Get all flight authorizations with compression within user organisation by geographic window","description":"Fetches flight authorizations with plans and MQTT subscription plan for realtime map updates within a geographic bounding box. Response is gzip-compressed JSON.","operationId":"getAllFlightAuthorizations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeoWindowDTO"}}},"required":true},"responses":{"200":{"description":"Successful retrieval - gzip-compressed FlightAuthGeoWindowPayloadDTO (flights + realtime.mqttTopics).","content":{"application/gzip":{"schema":{"$ref":"#/components/schemas/FlightAuthGeoWindowPayloadDTO"}}}},"422":{"description":"Validation error - Compression or serialization failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"400":{"description":"Invalid bounding box coordinates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/check-conflicts":{"post":{"tags":["flight-authorization"],"summary":"Check flight plan conflicts","description":"Analyzes a flight plan file for potential conflicts with existing flight authorizations without creating a new authorization","operationId":"checkFlightPlanConflicts","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["flightEndTime","flightStartTime","importingFile"],"type":"object","properties":{"importingFile":{"type":"string","description":"Flight plan file (JSON format) to analyze for conflicts","format":"binary"},"flightStartTime":{"type":"string","description":"Flight start time in ISO-8601 format (e.g., 2024-01-15T10:00:00Z)","format":"date-time","example":"2024-01-15T10:00:00Z"},"flightEndTime":{"type":"string","description":"Flight end time in ISO-8601 format (e.g., 2024-01-15T12:00:00Z)","format":"date-time","example":"2024-01-15T12:00:00Z"}}}}}},"responses":{"451":{"description":"Terrain data unavailable - Coordinates outside HREF coverage area","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Conflict analysis completed successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightPlanResponseDTO"}}}},"400":{"description":"Error in parsing flight plan file or invalid parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation error - Invalid flight times or processing type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/fa-geo-zones":{"get":{"tags":["fa-geo-zone-controller"],"operationId":"list_2","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PageDTOFaGeoZoneDTO"}}}}}},"post":{"tags":["fa-geo-zone-controller"],"operationId":"create_3","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateFaGeoZoneRequestDTO"}}},"required":true},"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/FaGeoZoneDTO"}}}}}}},"/fa-geo-zones/{id}/controllers":{"get":{"tags":["fa-geo-zone-controller"],"operationId":"listControllers","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FaGeoZoneControllerDTO"}}}}}}},"post":{"tags":["fa-geo-zone-controller"],"operationId":"addController","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddFaGeoZoneControllerRequestDTO"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/v1/webhooks/bird/sms-status":{"post":{"tags":["Bird Webhooks"],"summary":"Receive SMS delivery status updates from Bird.com","operationId":"handleSmsStatusWebhook","requestBody":{"content":{"application/json":{"schema":{"type":"string"}}},"required":true},"responses":{"200":{"description":"OK"}}}},"/api/v1/geoaware/admin/geozones":{"post":{"tags":["GeoZones Admin"],"summary":"Get geo zones","description":"Retrieves geo zones based on bounding box and feature types","operationId":"getGeoZones","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetGeoZonesRequestDTO"}}},"required":true},"responses":{"200":{"description":"Successfully retrieved geo zones","content":{"application/json":{}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/api/v1/geoaware/admin/datasets/fetch":{"post":{"tags":["GeoZones Admin"],"summary":"Fetch dataset","description":"Triggers fetching of datasets for the specified dataset definition IDs","operationId":"fetchDataset","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FetchDatasetRequestDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Dataset fetch jobs created successfully","content":{"application/json":{}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/api/href/import":{"post":{"tags":["HREF Terrain Data Management"],"summary":"Import HREF terrain data file","description":"Imports HREF2018B_NN2000_EUREF89.bin file into PostGIS raster for terrain elevation calculations. The file must be a valid HREF binary format containing height reference data for the specified region.","operationId":"importHrefTerrainData","requestBody":{"content":{"multipart/form-data":{"schema":{"required":["file"],"type":"object","properties":{"file":{"type":"string","description":"HREF binary file to import. Must be HREF2018B_NN2000_EUREF89.bin format.","format":"binary"}}}}}},"responses":{"200":{"description":"HREF file successfully imported","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HrefImportResult"},"examples":{"Successful Import":{"description":"Successful Import"}}}}},"500":{"description":"Internal server error during import or database operation","content":{"application/json":{"schema":{"type":"string"}}}},"400":{"description":"Bad request - file is missing, empty, or invalid format","content":{"application/json":{"schema":{"type":"string"},"examples":{"Missing File":{"description":"Missing File"}}}}}}}},"/access-ctrl/topic-auth/check":{"post":{"tags":["Topic Authorization"],"summary":"Check user authorization for a topic","description":"Validates if a user has permission to perform an action on a specific topic","operationId":"checkUserAuth","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckAuthRequestDto"}}},"required":true},"responses":{"200":{"description":"Authorization check completed successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CheckAuthResultDto"}}}},"400":{"description":"Invalid request parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"422":{"description":"Validation failed","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/access-ctrl/auth/check":{"post":{"tags":["Authentication"],"summary":"Check authentication","description":"Validates MQTT credentials (JWT token)","operationId":"checkAuthentication","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthRequestDto"}}},"required":true},"responses":{"200":{"description":"Authentication successful","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CheckAuthResultDto"}}}}}}},"/orgmng/users/{userId}":{"get":{"tags":["User Management"],"summary":"Get AirdodgeUser by ID","description":"Retrieves an AirdodgeUser by their ID. Callers with 'read:airdodge_user:all' can access any user. Everyone else can access themselves or non-retired, non-rejected members of their own organization.","operationId":"getAirdodgeUserById","parameters":[{"name":"userId","in":"path","description":"User ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"User retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AirdodgeUserResponseDTO"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}},"delete":{"tags":["User Management"],"summary":"Delete user in organization","operationId":"deleteUser","parameters":[{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}},"/orgmng/users/organizations":{"get":{"tags":["Organization"],"summary":"Get current user's organization","description":"Returns the organization associated with the currently authenticated user.","operationId":"getCurrentUserOrganization","responses":{"404":{"description":"Organization not found for the current user","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved the organization","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrganizationDTO"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/users/members":{"get":{"tags":["User Management"],"summary":"List members","description":"Returns non-retired, non-rejected members, excluding the caller. Callers with read:airdodge_user:all see all organizations when organizationId is omitted; everyone else is limited to their own organization.","operationId":"getMembers","parameters":[{"name":"organizationId","in":"query","description":"Optional organization filter (Super Admin / read-all only)","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AirdodgeUserResponseDTO"}}}}}}}},"/orgmng/users/by-organization/{organizationId}":{"get":{"tags":["User Management"],"summary":"Get organization members","description":"Returns non-retired, non-rejected users in the organization. Scoped to caller's org unless read:airdodge_user:all.","operationId":"getUsersByOrganization","parameters":[{"name":"organizationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AirdodgeUserResponseDTO"}}}}}}}},"/orgmng/rid-tags/{id}/audit-log":{"get":{"tags":["RID Tags"],"summary":"Get audit log for a RID Tag","description":"Retrieves the audit log entries for a specific RID Tag","operationId":"getAuditLog","parameters":[{"name":"id","in":"path","description":"ID of the RID Tag","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Audit log retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogRidTag"}}}}},"404":{"description":"RID Tag not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/rid-tags/is-linked":{"get":{"tags":["RID Tags"],"summary":"Check if a DroneTag is linked","description":"Checks whether a DroneTag device with the given serial number exists in the traffic-datasource system","operationId":"isDroneTagLinked","parameters":[{"name":"serialNumber","in":"query","description":"Serial number of the DroneTag device","required":true,"schema":{"type":"string"}},{"name":"organizationId","in":"query","description":"Organization ID (required for Super Admin, optional for Flight Manager)","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Link status retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagLinkedDTO"}}}}}}},"/orgmng/rid-tags/by-drone/{droneId}":{"get":{"tags":["RID Tags"],"summary":"Get a RID Tag by Drone ID","description":"Retrieves a RID Tag bound to a specific drone","operationId":"getRidTagByDroneId","parameters":[{"name":"droneId","in":"path","description":"ID of the Drone","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"RID Tag not found for the given Drone","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"RID Tag found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RidTagDTO"}}}}}}},"/orgmng/pilots/me":{"get":{"tags":["Pilot"],"summary":"Get current pilot details","description":"Returns pilot details for the currently logged-in user","operationId":"getCurrentPilot","responses":{"200":{"description":"Pilot returned successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PilotDTO"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Pilot not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/organizations/{id}":{"get":{"tags":["Organization"],"summary":"Get organization by ID","description":"Returns an organization by its ID","operationId":"getOrganization","parameters":[{"name":"id","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid parameter format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Organization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved the organization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationDTO"}}}}}}},"/orgmng/organizations/{id}/registration":{"get":{"tags":["Organization"],"summary":"Get organization registration by ID","description":"Returns organization registration information (operator registration number and organization name) by its ID","operationId":"getOrganizationRegistration","parameters":[{"name":"id","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid parameter format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Organization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved the organization registration","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganizationRegistrationDTO"}}}}}}},"/orgmng/idp/users/authorities":{"get":{"tags":["IDP Users"],"summary":"Get all authorities","description":"Returns all roles with permissions","operationId":"getAllAuthorities","responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successful response","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/RoleWithPermissionsDTO"}}}}}}}},"/orgmng/gcs/{serialNumber}/last-position":{"get":{"tags":["Ground Control Station"],"summary":"Get last GCS position","description":"Retrieves the last known position of a ground control station by its remote controller serial number","operationId":"getLastGcsPositionByRemoteControllerSerialNumber","parameters":[{"name":"serialNumber","in":"path","description":"Remote Controller Serial Number of the GCS","required":true,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"GCS position not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"GCS position found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GcsPositionDTO"}}}}}}},"/orgmng/fh-service-accounts/connection-status":{"get":{"tags":["Flight Hub Service Accounts"],"summary":"Flight Hub connection status","description":"Returns whether Flight Hub MQTT clients are connected (per EMQX) for each service account in the current organization","operationId":"getConnectionStatus","parameters":[{"name":"organizationId","in":"query","description":"Required when the caller has read:fh-service-accounts:any-org; ignored for self-org readers.","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Status retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightHubConnectionStatusDTO"}}}}}}},"/orgmng/fh-service-accounts/config":{"get":{"tags":["Flight Hub Service Accounts"],"summary":"Get FlightHub config","description":"Returns the FlightHub configuration for the current organization","operationId":"getConfig","parameters":[{"name":"organizationId","in":"query","description":"Required when the caller has read:fh-config:any-org; ignored for self-org readers.","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Config retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightHubConfigDTO"}}}}}}},"/orgmng/drones/remote-controllers/{serialNumber}":{"get":{"tags":["Drones"],"summary":"Get a drone by Remote Controller Serial Number","description":"Retrieves a drone by its Remote Controller Serial Number","operationId":"getDroneByRemoteControllerSerialNumber","parameters":[{"name":"serialNumber","in":"path","description":"Remote Controller Serial Number of the drone to retrieve","required":true,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Drone not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Drone found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneDTO"}}}}}}},"/orgmng/drones/by-serial/{serialNumber}":{"get":{"tags":["Drones"],"summary":"Get a drone by serial number and organization","description":"Retrieves a drone by its aircraft or remote controller serial number within the given organization. Returns droneId, pilotId (in dronePilotDetails), and full drone details.","operationId":"getDroneBySerialNumberAndOrganization","parameters":[{"name":"serialNumber","in":"path","description":"Aircraft or Remote Controller Serial Number","required":true,"schema":{"type":"string"}},{"name":"organizationId","in":"query","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Drone not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Drone found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneDTO"}}}}}}},"/orgmng/drone-models/{id}":{"get":{"tags":["Drone Models"],"summary":"Get drone model by ID","description":"Returns a drone model by its ID","operationId":"getById","parameters":[{"name":"id","in":"path","description":"ID of the drone model to retrieve","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Model found successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneModelDTO"}}}},"404":{"description":"Model not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/drone-dock-models":{"get":{"tags":["Drone Dock Models"],"summary":"List drone dock models","description":"Returns dock models. When manufacturer is provided, only matching models are returned (case-insensitive); omit for no filter.","operationId":"getAll_2","parameters":[{"name":"manufacturer","in":"query","description":"Filter by manufacturer (e.g. DJI). Omit or leave empty for no filter.","required":false,"schema":{"type":"string"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"List returned successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneDockModelDTO"}}}}}}},"/orgmng/drone-dock-models/{id}":{"get":{"tags":["Drone Dock Models"],"summary":"Get drone dock model by id","description":"Returns a single dock hardware model by its primary key.","operationId":"getById_1","parameters":[{"name":"id","in":"path","description":"Dock model id","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Model found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DroneDockModelDTO"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/onboarding/pending":{"get":{"tags":["Onboarding"],"summary":"List pending onboarding approvals","description":"Super Admin sees all. Org Admin / Flight Manager see invite joins for their organization.","operationId":"listPending","responses":{"200":{"description":"Pending list","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PendingOnboardingRegistrationDTO"}}}}}}}},"/notifications":{"get":{"tags":["Notifications"],"summary":"Get notifications","description":"Get paginated list of notifications. Users can only see their own notifications unless they have admin permissions. Admin users can filter by any userId. Non-admin users can filter by userId only if it equals their own userId.","operationId":"getNotifications","parameters":[{"name":"page","in":"query","description":"Page number (0-based)","required":false,"schema":{"minimum":0,"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"Page size","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32","default":20}},{"name":"sortBy","in":"query","description":"Sort field","required":false,"schema":{"type":"string","default":"createdAt"}},{"name":"sortDir","in":"query","description":"Sort direction","required":false,"schema":{"pattern":"^(asc|desc)$","type":"string","default":"desc"}},{"name":"flightAuthorizationId","in":"query","description":"Filter by flight authorization ID","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"userId","in":"query","description":"Filter by user ID (admin only, or non-admin users can filter by their own userId)","required":false,"schema":{"minimum":1,"type":"integer","format":"int64"}},{"name":"type","in":"query","description":"Filter by notification type","required":false,"schema":{"type":"string"}},{"name":"category","in":"query","description":"Filter by notification category","required":false,"schema":{"type":"string","enum":["TRAFFIC","FLIGHT_AUTHORIZATION","GEO_ZONE","ONBOARDING","SYSTEM"]}},{"name":"fromDate","in":"query","description":"Filter by creation date from (ISO 8601 format: yyyy-MM-ddTHH:mm:ss)","required":false,"schema":{"pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$","type":"string"}},{"name":"toDate","in":"query","description":"Filter by creation date to (ISO 8601 format: yyyy-MM-ddTHH:mm:ss)","required":false,"schema":{"pattern":"^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$","type":"string"}},{"name":"confirmationStatus","in":"query","description":"Filter by confirmation status: unconfirmed, confirmed, all","required":false,"schema":{"pattern":"^(unconfirmed|confirmed|all)$","type":"string"}},{"name":"orgName","in":"query","description":"Include organization name in response","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"400":{"description":"Invalid parameters","content":{"application/json":{}}},"403":{"description":"Access denied","content":{"application/json":{}}},"500":{"description":"Internal server error","content":{"application/json":{}}},"200":{"description":"Successfully retrieved notifications","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponseDTO"}}}}}}},"/notifications/statistics":{"get":{"tags":["Notifications"],"summary":"Get notification statistics","description":"Get notification statistics (unread and unconfirmed counts) for a specific user. Users can only see their own statistics unless they have admin permissions.","operationId":"getNotificationStatistics","parameters":[{"name":"userId","in":"query","description":"User ID (admin only, or non-admin users can query their own userId)","required":false,"schema":{"minimum":1,"type":"integer","format":"int64"}}],"responses":{"400":{"description":"Invalid parameters","content":{"application/json":{}}},"200":{"description":"Successfully retrieved notification statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationStatisticsDTO"}}}},"403":{"description":"Access denied","content":{"application/json":{}}},"500":{"description":"Internal server error","content":{"application/json":{}}}}}},"/notifications/priority":{"get":{"tags":["Notifications"],"summary":"Get notifications with priority sorting","description":"Get paginated list of notifications with priority sorting (unconfirmed notifications first, then by creation date). Users can only see their own notifications unless they have admin permissions.","operationId":"getNotificationsWithPriority","parameters":[{"name":"page","in":"query","description":"Page number (0-based)","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32","default":20}},{"name":"flightAuthorizationId","in":"query","description":"Filter by flight authorization ID","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"userId","in":"query","description":"Filter by user ID (admin only, or non-admin users can filter by their own userId)","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"orgName","in":"query","description":"Include organization name in response","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"400":{"description":"Invalid parameters","content":{"application/json":{}}},"403":{"description":"Access denied","content":{"application/json":{}}},"500":{"description":"Internal server error","content":{"application/json":{}}},"200":{"description":"Successfully retrieved notifications","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponseDTO"}}}}}}},"/notifications/by-confirmation-code/{confirmationCode}":{"get":{"tags":["Notifications"],"summary":"Get notification by confirmation code","description":"Get a notification using its confirmation code. Security is provided by the confirmation code itself.","operationId":"getNotificationByConfirmationCode","parameters":[{"name":"confirmationCode","in":"path","description":"Confirmation code","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Successfully retrieved notification","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationDTO"}}}},"400":{"description":"Invalid confirmation code or notification not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationDTO"}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationDTO"}}}}}}},"/nis/drones/{organizationId}/{droneId}/telemetry/downsampled":{"get":{"tags":["NIS Drone Telemetry"],"summary":"Get downsampled drone telemetry for the last hour","description":"Retrieves downsampled telemetry data for a specific drone for the last hour","operationId":"getDownsampledTelemetryLastHour","parameters":[{"name":"organizationId","in":"path","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"droneId","in":"path","description":"Drone ID","required":true,"schema":{"type":"string"}}],"responses":{"403":{"description":"Access denied - insufficient permissions","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DownsampledTelemetryDTO"}}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DownsampledTelemetryDTO"}}}}},"200":{"description":"Telemetry data retrieved successfully","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DownsampledTelemetryDTO"}}}}}}}},"/nis/drones/unregistered/{droneId}/telemetry/downsampled":{"get":{"tags":["NIS Drone Telemetry"],"summary":"Get downsampled unregistered drone telemetry for the last hour","description":"Retrieves downsampled telemetry for RID detections that have no resolved organization","operationId":"getDownsampledUnregisteredTelemetryLastHour","parameters":[{"name":"droneId","in":"path","description":"Drone serial number / remote ID","required":true,"schema":{"type":"string"}}],"responses":{"403":{"description":"Access denied - insufficient permissions","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DownsampledTelemetryDTO"}}}}},"500":{"description":"Internal server error","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DownsampledTelemetryDTO"}}}}},"200":{"description":"Telemetry data retrieved successfully","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DownsampledTelemetryDTO"}}}}}}}},"/legal/documents/current":{"get":{"tags":["Legal"],"summary":"Get currently published legal documents","description":"Returns the latest Terms and Conditions and Privacy Policy including immutable markdown content and SHA-256 hashes.","operationId":"getCurrentDocuments","responses":{"200":{"description":"Current documents","content":{"*/*":{"schema":{"$ref":"#/components/schemas/CurrentLegalDocumentsDTO"}}}}}}},"/internal/geoaware/geozones":{"get":{"tags":["geo-zones-rest-controller"],"operationId":"exportNonObstacleGeoZones","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}},{"name":"featureTypes","in":"query","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"OK","content":{"application/gzip":{"schema":{"type":"string","format":"byte"}}}}}}},"/internal/geoaware/geozones/{id}":{"get":{"tags":["geo-zones-rest-controller"],"operationId":"getInternalGeoZoneById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GeoZoneDetailDTO"}}}}}}},"/geojson":{"get":{"tags":["geo-zones-rest-controller"],"operationId":"getGeoZones_1","parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string"}},{"name":"zoomLevel","in":"query","required":true,"schema":{"type":"number","format":"double"}},{"name":"features","in":"query","required":false,"schema":{"type":"string"}},{"name":"v","in":"query","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"application/gzip":{"schema":{"type":"string","format":"byte"}}}}}}},"/geo-zones/{id}":{"get":{"tags":["geo-zones-rest-controller"],"operationId":"getGeoZoneById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK","content":{"*/*":{"schema":{"$ref":"#/components/schemas/GeoZoneDetailDTO"}}}}}}},"/flight-auths/{id}":{"get":{"tags":["flight-authorization"],"summary":"Get flight authorization basic information by ID","description":"Fetches basic information about a specific flight authorization by its UUID ID. Optional query parameter includeFlightPlan (default false, not required): when omitted or false, volumes and waypoints are omitted; when true, includes both (same shape as current FA in with-nearby).","operationId":"getFlightAuthorizationById","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to retrieve","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}},{"name":"includeFlightPlan","in":"query","description":"Optional; default false. When true, includes flight plan volumes and waypoints in the response.","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid UUID format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight authorization basic information retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightAuthorizationBasicDTO"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}},"delete":{"tags":["flight-authorization"],"summary":"Delete flight authorization by ID","description":"Deletes a flight authorization by its UUID ID","operationId":"deleteFlightAuthorizationById","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to delete","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"responses":{"200":{"description":"Flight authorization deleted successfully","content":{"application/json":{"schema":{"type":"object","description":"Empty response body"}}}},"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid UUID format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/with-nearby":{"get":{"tags":["flight-authorization"],"summary":"Get flight authorization with nearby flight authorizations by ID","description":"Fetches detailed information about a specific flight authorization along with all nearby flight authorizations by its UUID ID","operationId":"getFlightAuthorizationWithNearby","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization to retrieve","required":true,"schema":{"type":"string","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}}],"responses":{"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid UUID format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight authorization with nearby flight authorizations retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightAuthorizationWithNearbyDTO"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/{id}/audit-log":{"get":{"tags":["flight-authorization"],"summary":"Get audit log for a flight authorization","description":"Returns ordered audit log entries for the given Flight Authorization. Requires read:fa_audit_log within same org or read:fa_audit_log:all.","operationId":"getAuditLogByFlightAuthId","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFlightAuthorization"}}}}},"200":{"description":"Audit log retrieved successfully","content":{"application/json":{}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFlightAuthorization"}}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogFlightAuthorization"}}}}}}}},"/flight-auths/{id}/audit-log/drone-telemetry":{"get":{"tags":["flight-authorization"],"summary":"Get drone telemetry audit log by Flight Authorization ID","description":"Returns ordered drone telemetry audit records for the given Flight Authorization.\n\nTime window: from activation time minus 1 minute to end time plus 1 minute. If the flight is not ended, the window is from activation time minus 1 minute to now.\n\nAuthorization: requires `read:audit_drone_telemetry` AND (user is a Flight Manager of the same organization as the Flight Authorization, or the Pilot of this Flight Authorization); alternatively, users with `read:audit_drone_telemetry:all` can access any record.\n","operationId":"getDroneTelemetryByFlightAuthId","parameters":[{"name":"id","in":"path","description":"UUID of the flight authorization","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"404":{"description":"Flight authorization not found","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogDroneTelemetry"}}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogDroneTelemetry"}}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogDroneTelemetry"}}}}},"200":{"description":"Audit telemetry retrieved successfully","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/AuditLogDroneTelemetry"}}}}}}}},"/flight-auths/uspace/paged":{"get":{"tags":["AirdodgeUSpace"],"summary":"Get all AirdodgeUSpaces (paginated)","description":"Retrieves a paginated list of all AirdodgeUSpace entities","operationId":"getAllUSpacesPaged","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"200":{"description":"Successfully retrieved AirdodgeUSpaces","content":{"*/*":{"schema":{"$ref":"#/components/schemas/AirdodgeUSpacePageDTO"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths/uspace-action":{"get":{"tags":["USpaceAction"],"summary":"Get all USpace actions","description":"Retrieves a paginated list of all USpaceAction entities ordered by date","operationId":"getAllActions","parameters":[{"name":"page","in":"query","description":"Page number (0-based)","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved USpaceActions","content":{"*/*":{"schema":{"$ref":"#/components/schemas/USpaceActionDTO"}}}}}}},"/flight-auths/uspace-action/{id}":{"get":{"tags":["USpaceAction"],"summary":"Get USpace action by ID","description":"Retrieves a specific USpaceAction by its ID","operationId":"getActionById","parameters":[{"name":"id","in":"path","description":"USpaceAction ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Successfully retrieved the USpaceAction","content":{"*/*":{"schema":{"$ref":"#/components/schemas/USpaceActionDTO"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"USpaceAction not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths/uspace-action/{id}/withdrawal-notifications":{"get":{"tags":["USpaceAction"],"summary":"Get withdrawal notifications for USpace action","description":"Retrieves all FLIGHT_AUTH_WITHDRAWN notifications for the flight authorizations associated with the given USpaceAction","operationId":"getWithdrawalNotifications","parameters":[{"name":"id","in":"path","description":"USpaceAction ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"page","in":"query","description":"Page number (0-based)","required":false,"schema":{"type":"integer","format":"int32","default":0}},{"name":"size","in":"query","description":"Page size","required":false,"schema":{"type":"integer","format":"int32","default":20}}],"responses":{"200":{"description":"Successfully retrieved notifications","content":{"*/*":{"schema":{"$ref":"#/components/schemas/NotificationListResponseDTO"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"USpaceAction not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/flight-auths/list":{"get":{"tags":["flight-authorization"],"summary":"Get paginated list of flight authorizations","description":"Retrieves a paginated list of flight authorizations for the current user's organization with status statistics and filtering capabilities","operationId":"getFlightAuthList","parameters":[{"name":"status","in":"query","description":"Filter by flight authorization status","required":false,"schema":{"type":"string","enum":["DRAFT","PROPOSED","REJECTED","CANCELLED","ACCEPTED","ACTIVATED","NON_CONFIRMING","WITHDRAWN","ENDED","CONTINGENT","TIMED_OUT"]}},{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"422":{"description":"Validation error - Invalid pagination parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"200":{"description":"Flight authorization list retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightAuthListResponseDTO"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/list/current":{"get":{"tags":["flight-authorization"],"summary":"Get paginated current flight authorization list","description":"Returns current (non-ended, non-cancelled) flight authorizations for the user's organization with fixed severity ordering (CONTINGENT, withdrawn after activation, NON_CONFIRMING, ACTIVATED, ACCEPTED with start within ±4 hours, then remaining). Pagination uses page and size only; sort is server-defined. Includes the same per-status statistics as the list endpoint.","operationId":"getCurrentFlightAuthList","parameters":[{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"422":{"description":"Validation error - Invalid pagination parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"200":{"description":"Flight authorization list retrieved successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlightAuthListResponseDTO"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/flight-auths/active-by-drone":{"get":{"tags":["flight-authorization"],"summary":"Get active flight authorization for drone","description":"Returns the active flight authorization (ACTIVATED, CONTINGENT, NON_CONFIRMING) currently bound to the given drone","operationId":"getActiveFlightAuthorizationByDrone","parameters":[{"name":"droneSerialNumber","in":"query","description":"Drone serial number (aircraft or remote controller SN)","required":true,"schema":{"type":"string"}},{"name":"organizationId","in":"query","description":"Organization ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Active flight authorization found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveFlightAuthorizationResponseDTO"}}}},"404":{"description":"Drone not found or no active flight authorization for the drone","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Authorization denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{}}}}}},"/api/v1/tis/traffic/geo-window":{"get":{"tags":["Traffic Information Service"],"summary":"Get traffic records by geo window","description":"Retrieves traffic records within the specified geographic bounds","operationId":"getTrafficRecordsByGeoWindow","parameters":[{"name":"minLat","in":"query","description":"Minimum latitude","required":true,"schema":{"type":"number","format":"double"}},{"name":"maxLat","in":"query","description":"Maximum latitude","required":true,"schema":{"type":"number","format":"double"}},{"name":"minLng","in":"query","description":"Minimum longitude","required":true,"schema":{"type":"number","format":"double"}},{"name":"maxLng","in":"query","description":"Maximum longitude","required":true,"schema":{"type":"number","format":"double"}}],"responses":{"500":{"description":"Internal server error","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TrafficGeoWindowResponse"}}}},"200":{"description":"Traffic records found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrafficGeoWindowResponse"}}}},"400":{"description":"Invalid parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/TrafficGeoWindowResponse"}}}}}}},"/api/v1/geoaware/admin/map-visualisations/{mapVisualisationId}":{"get":{"tags":["GeoZones Admin"],"summary":"Get map visualisation","description":"Retrieves a specific map visualisation by ID","operationId":"getMapVisualisation","parameters":[{"name":"mapVisualisationId","in":"path","description":"Map visualisation ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved map visualisation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MapVisualisationDTO"}}}},"404":{"description":"Map visualisation not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/api/v1/geoaware/admin/feature-type-coverage":{"get":{"tags":["GeoZones Admin"],"summary":"Get feature type coverage","description":"Retrieves feature type coverage for specified countries","operationId":"getFeatureTypeCoverage","parameters":[{"name":"countryIds","in":"query","description":"List of country IDs","required":false,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved feature type coverage","content":{"application/json":{}}}}}},"/api/v1/geoaware/admin/datasets":{"get":{"tags":["GeoZones Admin"],"summary":"Get datasets","description":"Retrieves datasets by dataset definition IDs","operationId":"getDatasets","parameters":[{"name":"datasetDefinitionIds","in":"query","description":"List of dataset definition IDs","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"latest","in":"query","description":"If true, return only the latest dataset for each definition","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved datasets","content":{"application/json":{}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/api/v1/geoaware/admin/dataset-jobs":{"get":{"tags":["GeoZones Admin"],"summary":"Get dataset jobs","description":"Retrieves dataset jobs by status and/or job IDs with pagination and date filtering support","operationId":"getDatasetJobs","parameters":[{"name":"jobStatuses","in":"query","description":"List of job statuses to filter by","required":false,"schema":{"type":"array","items":{"type":"string","enum":["QUEUED","PENDING","DATA_DOWNLOADING","DATA_DOWNLOADED","DATA_IMPORTING","IMPORTING_COMPLETED","COMPLETED","FAILED","CANCELLED"]}}},{"name":"jobIds","in":"query","description":"List of job IDs to filter by","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"datasetDefinitionIds","in":"query","description":"List of dataset definition IDs to filter by","required":false,"schema":{"type":"array","items":{"type":"integer","format":"int64"}}},{"name":"createdFrom","in":"query","description":"Filter by creation date from (ISO 8601 format: yyyy-MM-ddTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"createdTo","in":"query","description":"Filter by creation date to (ISO 8601 format: yyyy-MM-ddTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"updatedFrom","in":"query","description":"Filter by update date from (ISO 8601 format: yyyy-MM-ddTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"updatedTo","in":"query","description":"Filter by update date to (ISO 8601 format: yyyy-MM-ddTHH:mm:ss)","required":false,"schema":{"type":"string"}},{"name":"page","in":"query","required":false,"schema":{"maximum":100000,"minimum":0,"type":"integer","format":"int32"}},{"name":"size","in":"query","required":false,"schema":{"maximum":1000,"minimum":1,"type":"integer","format":"int32"}},{"name":"sort","in":"query","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC.","required":false,"schema":{"type":"string","description":"Sort criteria. Prefer Spring-style repeated params, e.g. sort=status,DESC&sort=id,DESC. Each value is `field` (default DESC) or `field,DIR`. Repeated sort params are joined by the binder; a single value such as status,DESC,id,DESC is also accepted. Invalid formats fall back to id,DESC."}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"400":{"description":"Invalid request parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Successfully retrieved dataset jobs","content":{"application/json":{}}}}}},"/orgmng/users/me":{"delete":{"tags":["User Management"],"summary":"Delete my account","description":"Soft-deletes the authenticated user (status RETIRED) and removes their Auth0 identity. Re-registration with the same email creates a new account.","operationId":"deleteMyAccount","responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Account deleted"},"409":{"description":"Account already deleted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"User not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/orgmng/flight-managers/emails":{"delete":{"tags":["Flight Manager"],"summary":"Delete multiple flight managers by emails","description":"Marks all specified flight managers as RETIRED in the system and removes them from the identity provider.","operationId":"deleteFlightManagersByEmails","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteFlightManagersByEmailDTO"}}},"required":true},"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"200":{"description":"Flight managers deleted successfully"}}}},"/orgmng/fh-service-accounts/{id}":{"delete":{"tags":["Flight Hub Service Accounts"],"summary":"Delete a Flight Hub service account","description":"Soft-deletes a Flight Hub service account","operationId":"delete","parameters":[{"name":"id","in":"path","description":"ID of the service account to delete","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"204":{"description":"Service account deleted successfully"},"403":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}},"404":{"description":"Service account not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/nis/rid-sensors/{sensorId}/service-accounts/{accountId}":{"delete":{"tags":["RID Sensor Service Accounts"],"summary":"Delete a service account","description":"Soft-deletes the account","operationId":"delete_1","parameters":[{"name":"sensorId","in":"path","description":"RID Sensor ID","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"accountId","in":"path","description":"Service account ID","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"Deleted"},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RestError"}}}}}}},"/fa-geo-zones/{id}/controllers/{userId}":{"delete":{"tags":["fa-geo-zone-controller"],"operationId":"removeController","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"userId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK"}}}}},"components":{"schemas":{"UpdateRidTagDTO":{"required":["name"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"}},"description":"RID Tag update payload"},"RestError":{"type":"object","properties":{"status":{"type":"integer","format":"int32"},"message":{"type":"string"},"code":{"type":"string"}}},"FieldErrorDTO":{"type":"object","properties":{"field":{"type":"string"},"message":{"type":"string"},"code":{"type":"string"},"errorCode":{"type":"integer","format":"int32"},"uspaceId":{"type":"integer","format":"int64"},"uspaceName":{"type":"string"},"uspaceCode":{"type":"string"},"uspaceState":{"type":"string"}}},"ValidationErrorResponse":{"type":"object","properties":{"status":{"type":"integer","format":"int32"},"message":{"type":"string"},"validationErrors":{"type":"array","items":{"$ref":"#/components/schemas/FieldErrorDTO"}}}},"IdNameTupleDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"OrganizationDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"workspaceId":{"type":"string","format":"uuid"},"name":{"type":"string"},"operatorRegistrationNumber":{"type":"string"},"description":{"type":"string"},"blockSms":{"type":"boolean"},"blockEmail":{"type":"boolean"},"active":{"type":"boolean"}}},"RidTagDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"organization":{"$ref":"#/components/schemas/OrganizationDTO"},"name":{"type":"string"},"manufacturer":{"type":"string","enum":["DRONETAG"]},"model":{"type":"string","enum":["DRONETAG_MINI"]},"serialNumber":{"type":"string"},"description":{"type":"string"},"drone":{"$ref":"#/components/schemas/IdNameTupleDTO"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}}},"AddressDTO":{"required":["city","streetAddress","zipCode"],"type":"object","properties":{"streetAddress":{"maxLength":100,"minLength":3,"type":"string"},"zipCode":{"maxLength":10,"minLength":2,"pattern":"^\\d{2,10}$","type":"string"},"city":{"maxLength":100,"minLength":3,"type":"string"}}},"UpdatePilotDTO":{"required":["address","description","phone"],"type":"object","properties":{"phone":{"pattern":"^\\+\\d{1,3}\\d{4,14}(?:x.+)?$","type":"string"},"address":{"$ref":"#/components/schemas/AddressDTO"},"description":{"maxLength":500,"minLength":0,"type":"string"}}},"BaseAddressDTO":{"type":"object","properties":{"streetAddress":{"type":"string"},"zipCode":{"type":"string"},"city":{"type":"string"}}},"PilotDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"$ref":"#/components/schemas/BaseAddressDTO"},"description":{"type":"string"},"status":{"type":"string"},"rejectionReason":{"type":"string"},"organization":{"$ref":"#/components/schemas/OrganizationDTO"},"pilotRegistrationNumber":{"type":"string"},"eligibilityConfirmedAt":{"type":"string","format":"date-time"}}},"UpdateFlightHubIntegrationRequestDTO":{"required":["enabledIntegration"],"type":"object","properties":{"enabledIntegration":{"type":"boolean","description":"Whether the FlightHub integration is enabled"},"organizationId":{"type":"integer","description":"Target organization ID. Required when the caller has update:fh-config:any-org; ignored for self-org updates.","format":"int64"}},"description":"Integration update request"},"FlightHubConfigDTO":{"type":"object","properties":{"id":{"type":"integer","description":"FlightHub config ID","format":"int64"},"organizationId":{"type":"integer","description":"Organization ID","format":"int64"},"enabledIntegration":{"type":"boolean","description":"Whether the FlightHub integration is enabled"}}},"UpdateDroneDTO":{"required":["name"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"}},"description":"Drone update payload"},"DroneDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"organization":{"$ref":"#/components/schemas/OrganizationDTO"},"dronePilotDetails":{"$ref":"#/components/schemas/IdNameTupleDTO"},"gcsPilotDetails":{"$ref":"#/components/schemas/IdNameTupleDTO"},"name":{"type":"string"},"manufacturer":{"type":"string","enum":["DJI","CUSTOM"]},"aircraftSerialNumber":{"type":"string"},"remoteControllerSerialNumber":{"type":"string"},"dockSerialNumber":{"type":"string"},"type":{"type":"string"},"model":{"type":"string"},"modelCode":{"type":"string"},"supportDjiCloudApi":{"type":"boolean"},"status":{"type":"string","enum":["ONLINE","OFFLINE"]},"weight":{"type":"integer","format":"int32"},"height":{"type":"integer","format":"int32"},"length":{"type":"integer","format":"int32"},"width":{"type":"integer","format":"int32"},"description":{"type":"string"},"contingent":{"type":"boolean"},"dockModelId":{"type":"integer","format":"int64"},"dockModel":{"$ref":"#/components/schemas/DroneDockModelDTO"},"cClassMarking":{"type":"string","enum":["C0","C1","C2","C3","C4","C5","C6"]}}},"DroneDockModelDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"code":{"type":"string"},"manufacturer":{"type":"string"},"description":{"type":"string"}}},"UpdateJoinRequestDTO":{"required":["targetOrgAdminEmail"],"type":"object","properties":{"targetOrgAdminEmail":{"type":"string"}}},"UpdateOnboardingDraftDTO":{"type":"object","properties":{"currentStep":{"type":"string","enum":["ACCOUNT_CREATED","EMAIL_VERIFICATION","TERMS_ACCEPTANCE","USER_INFORMATION","PHONE_VERIFICATION","ORGANIZATION_INFORMATION","SUBMITTED"]},"firstName":{"maxLength":100,"minLength":1,"type":"string"},"lastName":{"maxLength":100,"minLength":1,"type":"string"},"phone":{"pattern":"^\\+\\d{8,15}$","type":"string"},"intendedRoles":{"maxLength":200,"minLength":0,"type":"string"},"organizationName":{"maxLength":100,"minLength":3,"type":"string"},"organizationCountry":{"maxLength":100,"minLength":2,"type":"string"},"organizationAddress":{"maxLength":200,"minLength":5,"type":"string"},"operatorRegistrationNumber":{"maxLength":50,"minLength":7,"pattern":"^[A-Za-z]{3}[A-Za-z0-9]+-[A-Za-z0-9]{3}$","type":"string"},"zipCode":{"maxLength":10,"minLength":2,"pattern":"^\\d{2,10}$","type":"string"},"city":{"maxLength":100,"minLength":3,"type":"string"},"streetAddress":{"maxLength":100,"minLength":3,"type":"string"},"country":{"maxLength":100,"minLength":2,"type":"string"},"pilotRegistrationNumber":{"maxLength":100,"minLength":0,"type":"string"},"pilotEligibilityConfirmed":{"type":"boolean"},"legalEntity":{"type":"boolean"},"vatNumber":{"maxLength":50,"minLength":0,"type":"string"},"organizationZipCode":{"maxLength":20,"minLength":2,"pattern":"^\\d{2,20}$","type":"string"},"organizationCity":{"maxLength":100,"minLength":0,"type":"string"},"organizationStreetAddress":{"maxLength":200,"minLength":0,"type":"string"},"joinExistingOrganization":{"type":"boolean"},"targetOrgAdminEmail":{"maxLength":255,"minLength":0,"type":"string"}}},"OnboardingDraftDTO":{"type":"object","properties":{"userId":{"type":"integer","format":"int64"},"email":{"type":"string"},"userStatus":{"type":"string","enum":["PENDING_VERIFICATION","PENDING_APPROVAL","ACTIVE","BLOCKED","REJECTED","RETIRED"]},"currentStep":{"type":"string","enum":["ACCOUNT_CREATED","EMAIL_VERIFICATION","TERMS_ACCEPTANCE","USER_INFORMATION","PHONE_VERIFICATION","ORGANIZATION_INFORMATION","SUBMITTED"]},"firstName":{"type":"string"},"lastName":{"type":"string"},"phone":{"type":"string"},"intendedRoles":{"type":"string"},"organizationName":{"type":"string"},"organizationCountry":{"type":"string"},"organizationAddress":{"type":"string"},"operatorRegistrationNumber":{"type":"string"},"zipCode":{"type":"string"},"city":{"type":"string"},"streetAddress":{"type":"string"},"country":{"type":"string"},"pilotRegistrationNumber":{"type":"string"},"pilotEligibilityConfirmed":{"type":"boolean"},"pilotEligibilityConfirmedAt":{"type":"string","format":"date-time"},"legalEntity":{"type":"boolean"},"vatNumber":{"type":"string"},"organizationZipCode":{"type":"string"},"organizationCity":{"type":"string"},"organizationStreetAddress":{"type":"string"},"invitationId":{"type":"integer","format":"int64"},"joinExistingOrganization":{"type":"boolean"},"targetOrgAdminEmail":{"type":"string"},"emailVerifiedAt":{"type":"string","format":"date-time"},"phoneVerifiedAt":{"type":"string","format":"date-time"},"submittedAt":{"type":"string","format":"date-time"},"termsAcceptedAt":{"type":"string","format":"date-time"}}},"UpdateRidSensorDTO":{"required":["ssn"],"type":"object","properties":{"ssn":{"maxLength":100,"minLength":1,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"}},"description":"Update a RID Sensor metadata (SSN and description)."},"RidSensorDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"ssn":{"type":"string"},"description":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"description":"RID Sensor metadata. Service-account secrets are never returned here."},"CoordinateDTO":{"required":["latitude","longitude"],"type":"object","properties":{"longitude":{"maximum":180.0,"exclusiveMaximum":false,"minimum":-180.0,"exclusiveMinimum":false,"type":"number","description":"Longitude coordinate","format":"double","example":-73.973},"latitude":{"maximum":90.0,"exclusiveMaximum":false,"minimum":-90.0,"exclusiveMinimum":false,"type":"number","description":"Latitude coordinate","format":"double","example":40.7648}},"description":"Coordinate DTO representing a geographic point"},"LocalTime":{"type":"object","properties":{"hour":{"type":"integer","format":"int32"},"minute":{"type":"integer","format":"int32"},"second":{"type":"integer","format":"int32"},"nano":{"type":"integer","format":"int32"}},"description":"Service schedule: buffer window end (e.g. 08:00)"},"UpdateAirdodgeUSpaceDTO":{"required":["code","coordinates","maxAltitudeAgl","minAltitudeAgl","name"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string","description":"USpace name","example":"Central Park USpace"},"code":{"maxLength":50,"minLength":3,"type":"string","description":"USpace code","example":"CP001"},"coordinates":{"maxItems":2147483647,"minItems":4,"type":"array","description":"List of coordinates defining the USpace polygon boundary","items":{"$ref":"#/components/schemas/CoordinateDTO"}},"description":{"maxLength":500,"minLength":0,"type":"string","description":"USpace description","example":"Central Park unmanned aircraft space"},"maxAltitudeAgl":{"type":"number","description":"Maximum altitude AGL in meters","format":"double","example":150.0},"minAltitudeAgl":{"type":"number","description":"Minimum altitude AGL in meters","format":"double","example":30.0},"workingDayStart":{"$ref":"#/components/schemas/LocalTime"},"workingDayEnd":{"$ref":"#/components/schemas/LocalTime"},"workingDays":{"type":"array","description":"Service schedule: working days (e.g. MONDAY, TUESDAY)","items":{"type":"string","description":"Service schedule: working days (e.g. MONDAY, TUESDAY)","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]}},"bufferWindowStart":{"$ref":"#/components/schemas/LocalTime"},"bufferWindowEnd":{"$ref":"#/components/schemas/LocalTime"},"minLeadTimeHours":{"type":"integer","description":"Service schedule: min hours before flight start to create FA (e.g. 1)","format":"int32","example":1},"timeZone":{"maxLength":64,"minLength":0,"type":"string","description":"IANA time zone for schedule (e.g. Europe/Oslo)","example":"Europe/Oslo"},"scheduleEnabled":{"type":"boolean","description":"When true, schedule validation is enabled and working day/hours, working days and min lead time are required; buffer is optional","example":false}},"description":"AirdodgeUSpace update data"},"AirdodgeUSpaceDTO":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier","format":"int64","example":1},"name":{"type":"string","description":"USpace name","example":"Central Park USpace"},"code":{"type":"string","description":"USpace code","example":"CP001"},"coordinates":{"type":"array","description":"List of coordinates defining the USpace polygon boundary","items":{"$ref":"#/components/schemas/CoordinateDTO"}},"description":{"type":"string","description":"USpace description","example":"Central Park unmanned aircraft space"},"state":{"type":"string","description":"USpace state","example":"ACTIVE","enum":["ACTIVE","INACTIVE"]},"maxAltitudeAgl":{"type":"number","description":"Maximum altitude AGL in meters","format":"double","example":120.0},"minAltitudeAgl":{"type":"number","description":"Minimum altitude AGL in meters","format":"double","example":0.0},"createdAt":{"type":"string","description":"Creation timestamp","format":"date-time"},"updatedAt":{"type":"string","description":"Last update timestamp","format":"date-time"},"workingDayStart":{"$ref":"#/components/schemas/LocalTime"},"workingDayEnd":{"$ref":"#/components/schemas/LocalTime"},"workingDays":{"type":"array","description":"Service schedule: working days (e.g. MONDAY, TUESDAY)","items":{"type":"string","description":"Service schedule: working days (e.g. MONDAY, TUESDAY)","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]}},"bufferWindowStart":{"$ref":"#/components/schemas/LocalTime"},"bufferWindowEnd":{"$ref":"#/components/schemas/LocalTime"},"minLeadTimeHours":{"type":"integer","description":"Service schedule: min hours before flight start to create FA (e.g. 1)","format":"int32"},"timeZone":{"type":"string","description":"IANA time zone for schedule (e.g. Europe/Oslo)"},"scheduleEnabled":{"type":"boolean","description":"When true, schedule validation is enabled for FA creation"}},"description":"AirdodgeUSpace response DTO"},"FaGeoZoneCoordinateDTO":{"required":["latitude","longitude"],"type":"object","properties":{"latitude":{"maximum":90,"minimum":-90,"type":"number","format":"double"},"longitude":{"maximum":180,"minimum":-180,"type":"number","format":"double"}}},"UpdateFaGeoZoneRequestDTO":{"required":["code","lowerLimitAmsl","name"],"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"coordinates":{"maxItems":2147483647,"minItems":3,"type":"array","items":{"$ref":"#/components/schemas/FaGeoZoneCoordinateDTO"}},"lowerLimitAmsl":{"type":"number","format":"double"},"upperLimitAmsl":{"type":"number","format":"double"}}},"FaGeoZoneDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"coordinates":{"type":"array","items":{"$ref":"#/components/schemas/FaGeoZoneCoordinateDTO"}},"lowerLimitAmsl":{"type":"number","format":"double"},"upperLimitAmsl":{"type":"number","format":"double"},"lowerLimitHae":{"type":"number","format":"double"},"upperLimitHae":{"type":"number","format":"double"},"createdAt":{"type":"string","format":"date-time"},"createdBy":{"type":"integer","format":"int64"}}},"FeatureTypeDTO":{"type":"object","properties":{"id":{"type":"string","description":"Feature type ID","example":"restriction:airspace"},"name":{"type":"string","description":"Feature type name","example":"Airspace Restriction"}},"description":"Feature type information"},"FeatureTypeVisualisationDTO":{"required":["featureType"],"type":"object","properties":{"featureType":{"$ref":"#/components/schemas/FeatureTypeDTO"},"properties":{"$ref":"#/components/schemas/FeatureTypeVisualisationPropertiesDTO"}},"description":"Feature type visualisation configuration"},"FeatureTypeVisualisationPropertiesDTO":{"type":"object","properties":{"fillColor":{"type":"string","description":"Fill color in hex format (with or without alpha)","example":"#FF0000FF"}},"description":"Feature type visualisation properties"},"UpdateMapVisualisationRequestDTO":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","description":"Map visualisation ID","format":"int64"},"name":{"type":"string","description":"Map visualisation name","example":"Default Visualization"},"defaultProperties":{"$ref":"#/components/schemas/FeatureTypeVisualisationPropertiesDTO"},"featureTypeVisualisations":{"type":"array","description":"Feature type specific visualisations","items":{"$ref":"#/components/schemas/FeatureTypeVisualisationDTO"}}},"description":"Update map visualisation request"},"MapVisualisationDTO":{"type":"object","properties":{"id":{"type":"integer","description":"Map visualisation ID","format":"int64"},"name":{"type":"string","description":"Map visualisation name","example":"Default Visualization"},"defaultProperties":{"$ref":"#/components/schemas/FeatureTypeVisualisationPropertiesDTO"},"featureTypeVisualisations":{"type":"array","description":"Feature type specific visualisations","items":{"$ref":"#/components/schemas/FeatureTypeVisualisationDTO"}}},"description":"Map visualisation configuration"},"RemoteDataSourceDTO":{"required":["converterBeanName","type"],"type":"object","properties":{"type":{"type":"string","description":"Type of remote data source","example":"ARCGIS_FEATURE_SERVICE","enum":["ARCGIS_FEATURE_SERVICE","OVERPASS_API","LFV_DAIM","OPENAIP","STATIC"]},"converterBeanName":{"type":"string","description":"Name of the converter bean to use","example":"arcgisFeatureServiceConverter"},"contentType":{"type":"string","description":"Content type of the data","example":"application/json"},"urlGeneratorParameters":{"type":"object","additionalProperties":{"type":"string","description":"URL generator parameters"},"description":"URL generator parameters"}},"description":"Remote data source configuration"},"UpdateDatasetDefinitionRequestDTO":{"required":["id"],"type":"object","properties":{"id":{"type":"integer","description":"Dataset definition ID","format":"int64"},"version":{"type":"integer","description":"Version for optimistic locking","format":"int64"},"name":{"type":"string","description":"Dataset definition name","example":"Norwegian Airspace Restrictions"},"geographicalCoverage":{"type":"string","description":"Geographical coverage identifier","example":"NO"},"dataSource":{"$ref":"#/components/schemas/RemoteDataSourceDTO"},"updateInterval":{"type":"string","description":"Update interval as ISO-8601 duration","example":"PT24H"},"authorativeLevel":{"type":"string","description":"Authoritative level","enum":["AUTHORATIVE","NON_AUTHORATIVE"]},"featuresIncluded":{"uniqueItems":true,"type":"array","description":"Set of feature type IDs included in this dataset","items":{"type":"string","description":"Set of feature type IDs included in this dataset"}}},"description":"Update dataset definition request"},"DatasetDefinitionDTO":{"type":"object","properties":{"id":{"type":"integer","description":"Dataset definition ID","format":"int64"},"version":{"type":"integer","description":"Version for optimistic locking","format":"int64"},"name":{"type":"string","description":"Dataset definition name","example":"Norwegian Airspace Restrictions"},"geographicalCoverage":{"type":"string","description":"Geographical coverage identifier","example":"NO"},"dataSource":{"$ref":"#/components/schemas/RemoteDataSourceDTO"},"updateInterval":{"type":"string","description":"Update interval as ISO-8601 duration","example":"PT24H"},"authorativeLevel":{"type":"string","description":"Authoritative level","enum":["AUTHORATIVE","NON_AUTHORATIVE"]},"active":{"type":"boolean","description":"Whether the dataset definition is active"},"featuresIncluded":{"uniqueItems":true,"type":"array","description":"Set of feature type IDs included in this dataset","items":{"type":"string","description":"Set of feature type IDs included in this dataset"}}},"description":"Dataset definition"},"TerrainElevationPointRequestDTO":{"required":["latitude","longitude"],"type":"object","properties":{"longitude":{"type":"number","format":"double"},"latitude":{"type":"number","format":"double"}}},"TerrainElevationPointResponseDTO":{"type":"object","properties":{"elevationM":{"type":"number","format":"double"}}},"CreateUserDTO":{"required":["address","email","name","phone"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string"},"phone":{"pattern":"^\\+\\d{1,3}\\d{4,14}(?:x.+)?$","type":"string"},"email":{"maxLength":190,"minLength":6,"type":"string"},"address":{"$ref":"#/components/schemas/AddressDTO"},"description":{"maxLength":500,"minLength":0,"type":"string"}},"description":"Data for creating a Super Admin"},"UserDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"$ref":"#/components/schemas/BaseAddressDTO"},"description":{"type":"string"},"status":{"type":"string"},"rejectionReason":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"roles":{"uniqueItems":true,"type":"array","items":{"type":"string"}}}},"AssignPilotRoleDTO":{"required":["airdodgeUserId","pilotEligibilityConfirmed","pilotRegistrationNumber"],"type":"object","properties":{"airdodgeUserId":{"type":"integer","format":"int64"},"pilotRegistrationNumber":{"type":"string"},"pilotEligibilityConfirmed":{"type":"boolean"}},"description":"Data for assigning pilot role"},"CreateRidTagDTO":{"required":["manufacturer","model","name","serialNumber"],"type":"object","properties":{"organizationId":{"type":"integer","format":"int64"},"name":{"maxLength":100,"minLength":3,"type":"string"},"manufacturer":{"type":"string","enum":["DRONETAG"]},"model":{"type":"string","enum":["DRONETAG_MINI"]},"serialNumber":{"maxLength":100,"minLength":1,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"}},"description":"RID Tag create payload"},"BindRidTagDTO":{"required":["droneId"],"type":"object","properties":{"droneId":{"type":"integer","format":"int64"}},"description":"Bind payload with drone ID"},"CreatePilotDTO":{"required":["address","email","name","phone","pilotEligibilityConfirmed","pilotRegistrationNumber"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string"},"phone":{"pattern":"^\\+\\d{1,3}\\d{4,14}(?:x.+)?$","type":"string"},"email":{"maxLength":190,"minLength":6,"type":"string"},"address":{"$ref":"#/components/schemas/AddressDTO"},"description":{"maxLength":500,"minLength":0,"type":"string"},"organizationId":{"type":"integer","format":"int64"},"pilotRegistrationNumber":{"maxLength":100,"minLength":1,"type":"string"},"pilotEligibilityConfirmed":{"type":"boolean"}},"description":"Pilot data"},"CreateOrganizationDTO":{"required":["description","name","operatorRegistrationNumber"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"pattern":"^(?!\\d+$).+","type":"string"},"operatorRegistrationNumber":{"maxLength":50,"minLength":7,"pattern":"^[A-Z]{3}[A-Za-z0-9]+-[A-Za-z0-9]{3}$","type":"string"},"description":{"maxLength":500,"minLength":10,"pattern":"^(?!\\d+$)[\\s\\S]+$","type":"string"},"blockSms":{"type":"boolean"},"blockEmail":{"type":"boolean"}},"description":"Organization information"},"CreateInvitationDTO":{"required":["email","roles"],"type":"object","properties":{"email":{"maxLength":254,"minLength":0,"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"organizationId":{"type":"integer","format":"int64"}}},"InvitationDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"organizationId":{"type":"integer","format":"int64"},"inviterUserId":{"type":"integer","format":"int64"},"email":{"type":"string"},"roles":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["PENDING","ACCEPTED","CANCELLED","EXPIRED","REJECTED"]},"expiresAt":{"type":"string","format":"date-time"},"acceptedUserId":{"type":"integer","format":"int64"},"createdAt":{"type":"string","format":"date-time"}}},"CreateIdpUserDTO":{"required":["email","roleName"],"type":"object","properties":{"email":{"maxLength":190,"minLength":6,"type":"string"},"roleName":{"type":"string"}}},"ResetPasswordRequestDTO":{"required":["email"],"type":"object","properties":{"email":{"maxLength":190,"minLength":0,"type":"string"}}},"CreateFlightManagerDTO":{"required":["address","email","name","organizationId","phone"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string"},"phone":{"pattern":"^\\+\\d{1,3}\\d{4,14}(?:x.+)?$","type":"string"},"email":{"maxLength":190,"minLength":6,"type":"string"},"address":{"$ref":"#/components/schemas/AddressDTO"},"description":{"maxLength":500,"minLength":0,"type":"string"},"organizationId":{"type":"integer","format":"int64"}},"description":"Flight manager data"},"FlightManagerDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"$ref":"#/components/schemas/BaseAddressDTO"},"description":{"type":"string"},"status":{"type":"string"},"rejectionReason":{"type":"string"},"organization":{"$ref":"#/components/schemas/OrganizationDTO"}},"description":"List of items"},"GenerateFlightHubServiceAccountRequestDTO":{"type":"object","properties":{"organizationId":{"type":"integer","description":"Organization ID. Required when generating for any organization, ignored for self-org.","format":"int64"}},"description":"Service account generation request"},"FlightHubServiceAccountCreatedDTO":{"type":"object","properties":{"id":{"type":"integer","description":"Service account ID","format":"int64"},"username":{"type":"string","description":"Auto-generated username (fh_sa_<id>)"},"password":{"type":"string","description":"Generated password. This is the only time the password is returned."},"createdAt":{"type":"string","description":"Timestamp when the service account was created","format":"date-time"},"organizationId":{"type":"integer","description":"Organization ID the service account belongs to","format":"int64"}}},"CreateDroneDTO":{"required":["cClassMarking","height","length","manufacturer","model","name","type","weight","width"],"type":"object","properties":{"organizationId":{"type":"integer","format":"int64"},"name":{"maxLength":100,"minLength":3,"type":"string"},"manufacturer":{"type":"string","enum":["DJI","CUSTOM"]},"aircraftSerialNumber":{"type":"string"},"remoteControllerSerialNumber":{"maxLength":100,"minLength":0,"type":"string"},"dockSerialNumber":{"maxLength":100,"minLength":0,"type":"string"},"type":{"type":"string","enum":["NotDeclared","Aeroplane","Helicopter","Gyroplane","HybridLift","Ornithopter","Glider","Kite","FreeBalloon","CaptiveBalloon","Airship","FreeFallOrParachute","Rocket","TetheredPoweredAircraft","GroundObstacle","Other"]},"model":{"maxLength":100,"minLength":3,"type":"string"},"weight":{"maximum":2147483647,"minimum":1,"type":"integer","format":"int32"},"height":{"maximum":2147483647,"minimum":1,"type":"integer","format":"int32"},"length":{"maximum":2147483647,"minimum":1,"type":"integer","format":"int32"},"width":{"maximum":2147483647,"minimum":1,"type":"integer","format":"int32"},"description":{"maxLength":500,"minLength":0,"type":"string"},"dockModelId":{"type":"integer","format":"int64"},"cClassMarking":{"type":"string","enum":["C0","C1","C2","C3","C4","C5","C6"]}},"description":"Drone create payload"},"CheckDroneRegistrationDTO":{"required":["remoteControllerSerialNumber"],"type":"object","properties":{"remoteControllerSerialNumber":{"type":"string","description":"Remote controller serial number"},"aircraftSerialNumber":{"type":"string","description":"Aircraft serial number"}},"description":"Drone registration check request"},"DroneRegistrationStatusDTO":{"type":"object","properties":{"rcRegistered":{"type":"boolean","description":"Whether the remote controller is registered"},"aircraftRegistered":{"type":"boolean","description":"Whether the aircraft is registered"},"inTheSameDrone":{"type":"boolean","description":"Whether the remote controller and aircraft are registered to the same drone"}},"description":"Drone registration status response"},"CreateDroneModelDTO":{"required":["name"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string"}},"description":"New drone model data"},"DroneModelDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"}}},"RejectOnboardingDTO":{"required":["reason"],"type":"object","properties":{"reason":{"maxLength":500,"minLength":0,"type":"string"}}},"SubmitOnboardingResponseDTO":{"type":"object","properties":{"userId":{"type":"integer","format":"int64"},"organizationId":{"type":"integer","format":"int64"},"status":{"type":"string","enum":["PENDING_VERIFICATION","PENDING_APPROVAL","ACTIVE","BLOCKED","REJECTED","RETIRED"]},"message":{"type":"string"}}},"VerifyPhoneCodeDTO":{"required":["code"],"type":"object","properties":{"code":{"pattern":"^\\d{6}$","type":"string"}}},"SendPhoneVerificationDTO":{"required":["phone"],"type":"object","properties":{"phone":{"pattern":"^\\+\\d{8,15}$","type":"string"}}},"VerifyEmailCodeDTO":{"required":["code","email"],"type":"object","properties":{"email":{"type":"string"},"code":{"pattern":"^\\d{6}$","type":"string"}}},"ConfirmEmailVerificationResponseDTO":{"type":"object","properties":{"continuationToken":{"type":"string"},"email":{"type":"string"},"userId":{"type":"integer","format":"int64"}}},"ResendEmailVerificationDTO":{"required":["email"],"type":"object","properties":{"email":{"type":"string"},"clientPlatform":{"type":"string","enum":["WEB","MOBILE"]}}},"ConfirmEmailVerificationDTO":{"required":["token"],"type":"object","properties":{"token":{"type":"string"}}},"CreateOnboardingAccountDTO":{"required":["confirmPassword","email","password"],"type":"object","properties":{"email":{"maxLength":254,"minLength":0,"type":"string"},"password":{"maxLength":128,"minLength":8,"pattern":"^(?=.*[a-z])(?=.*[A-Z])(?=.*\\d).{8,128}$","type":"string"},"confirmPassword":{"maxLength":128,"minLength":8,"type":"string"},"captchaToken":{"type":"string"},"invitationToken":{"maxLength":64,"minLength":0,"type":"string"},"clientPlatform":{"type":"string","enum":["WEB","MOBILE"]}}},"CreateOnboardingAccountResponseDTO":{"type":"object","properties":{"userId":{"type":"integer","format":"int64"},"email":{"type":"string"},"status":{"type":"string","enum":["PENDING_VERIFICATION","PENDING_APPROVAL","ACTIVE","BLOCKED","REJECTED","RETIRED"]},"currentStep":{"type":"string","enum":["ACCOUNT_CREATED","EMAIL_VERIFICATION","TERMS_ACCEPTANCE","USER_INFORMATION","PHONE_VERIFICATION","ORGANIZATION_INFORMATION","SUBMITTED"]},"idpUserId":{"type":"string"}}},"RegisterPushDeviceRequestDTO":{"required":["fcmToken","platform"],"type":"object","properties":{"fcmToken":{"maxLength":512,"minLength":0,"type":"string","description":"Firebase Cloud Messaging registration token"},"platform":{"type":"string","description":"Mobile platform","enum":["IOS","ANDROID"]}},"description":"Register or refresh an FCM device token for the authenticated user"},"MarkNotificationsAsReadRequestDTO":{"required":["notificationIds"],"type":"object","properties":{"notificationIds":{"maxItems":500,"minItems":0,"type":"array","description":"List of notification IDs to mark as read (max 500)","example":["123e4567-e89b-12d3-a456-426614174000","987fcdeb-51a2-43d7-8f9e-123456789abc"],"items":{"type":"string","description":"List of notification IDs to mark as read (max 500)","format":"uuid"}}},"description":"Request to mark notifications as read"},"ConfirmNotificationByCodeRequestDTO":{"required":["confirmationCode"],"type":"object","properties":{"confirmationCode":{"type":"string","description":"Confirmation code for the notification","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"}},"description":"Request to confirm notification by confirmation code"},"CreateRidSensorDTO":{"required":["ssn"],"type":"object","properties":{"ssn":{"maxLength":100,"minLength":1,"type":"string"},"description":{"maxLength":500,"minLength":0,"type":"string"}},"description":"RID Sensor create payload"},"RidSensorServiceAccountCreatedDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"ridSensorId":{"type":"integer","format":"int64"},"username":{"type":"string"},"password":{"type":"string"},"apiKeyHeaderValue":{"type":"string","description":"Base64(login:password) payload used with Authorization: Basic"},"createdAt":{"type":"string","format":"date-time"}},"description":"Newly generated RID Sensor service account. Password (and apiKeyHeaderValue = Base64(login:password) for Basic) are returned only once."},"UnlinkUserFromDeviceDTO":{"required":["remoteControllerSerialNumber"],"type":"object","properties":{"aircraftSerialNumber":{"type":"string"},"remoteControllerSerialNumber":{"maxLength":100,"minLength":3,"type":"string"}},"description":"Unlink user request"},"GeoWindowDTO":{"required":["maxLat","maxLng","minLat","minLng"],"type":"object","properties":{"minLat":{"maximum":90.0,"exclusiveMaximum":false,"minimum":-90.0,"exclusiveMinimum":false,"type":"number","description":"Minimum latitude of the bounding box","format":"double","example":50.0},"maxLat":{"maximum":90.0,"exclusiveMaximum":false,"minimum":-90.0,"exclusiveMinimum":false,"type":"number","description":"Maximum latitude of the bounding box","format":"double","example":51.0},"minLng":{"type":"number","description":"Minimum longitude of the bounding box (may be outside ±180° from map libs; normalized server-side)","format":"double","example":10.0},"maxLng":{"type":"number","description":"Maximum longitude of the bounding box (may be outside ±180° from map libs; normalized server-side)","format":"double","example":11.0}},"description":"Geographic bounding box coordinates"},"CurrentPositionDTO":{"type":"object","properties":{"lat":{"type":"number","format":"double"},"lng":{"type":"number","format":"double"},"altitude":{"type":"number","format":"float"},"timestamp":{"type":"string"}}},"CurrentSpeedDTO":{"type":"object","properties":{"horizontal":{"type":"number","format":"float"},"vertical":{"type":"number","format":"float"}}},"DroneResponseDTO":{"type":"object","properties":{"droneRemoteId":{"type":"string"},"operatorRegistrationNumber":{"type":"string"},"droneSn":{"type":"string"},"droneType":{"type":"string"},"droneName":{"type":"string"},"droneModel":{"type":"string"},"currentPosition":{"$ref":"#/components/schemas/CurrentPositionDTO"},"currentSpeed":{"$ref":"#/components/schemas/CurrentSpeedDTO"},"organizationId":{"type":"integer","format":"int64"},"track":{"type":"number","format":"float"},"status":{"type":"string"},"contingent":{"type":"boolean"},"unregistered":{"type":"boolean"},"operationalStatus":{"type":"string"},"timestamp":{"type":"string"}}},"DroneTelemetryResponseDTO":{"type":"object","properties":{"realtime":{"$ref":"#/components/schemas/RealtimeMapSubscriptions"},"drones":{"type":"array","items":{"$ref":"#/components/schemas/DroneResponseDTO"}}}},"RealtimeMapSubscriptions":{"type":"object","properties":{"gridMaxLevel":{"type":"integer","description":"Grid detail level used for topic planning (1=coarse … 3=leaf)","format":"int32","example":3},"mqttTopics":{"type":"array","description":"MQTT subscribe filters for this map stream (may end with /# for segment wildcards)","items":{"type":"string","description":"MQTT subscribe filters for this map stream (may end with /# for segment wildcards)"}}},"description":"MQTT topic filters for hierarchical realtime map grid subscriptions"},"PostRemoteIdRecordResponse":{"required":["id"],"type":"object","properties":{"id":{"type":"string","description":"Identifier of created RemoteID Record","example":"e58ed763-928c-4155-bee9-fdbaaadc15f3"}},"description":"Parameters for a response of RemoteID Record creation."},"ErrorResponse":{"type":"object","properties":{"message":{"type":"string","description":"Human-readable message indicating what error occurred and/or why."}},"description":"Data provided when an off-nominal condition was encountered."},"PostRemoteIdRecordParameters":{"required":["aircraft_type","eu_classification","operational_status","position","speed","speed_accuracy","timestamp","timestamp_accuracy","track","uas_id","vertical_speed"],"type":"object","properties":{"uas_id":{"$ref":"#/components/schemas/UASID"},"gcs_id":{"type":"string","description":"Unique identifier of the Ground Control Station, typically the GCS serial number.","example":"GCS-SN-998877"},"aircraft_type":{"type":"string","enum":["NotDeclared","Aeroplane","Helicopter","Gyroplane","HybridLift","Ornithopter","Glider","Kite","FreeBalloon","CaptiveBalloon","Airship","FreeFallOrParachute","Rocket","TetheredPoweredAircraft","GroundObstacle","Other"]},"eu_classification":{"$ref":"#/components/schemas/UAClassificationEU"},"timestamp":{"$ref":"#/components/schemas/Time"},"timestamp_accuracy":{"maximum":1.5,"exclusiveMaximum":false,"minimum":0,"exclusiveMinimum":false,"type":"number","description":"Declaration of timestamp accuracy, which is the largest difference between Timestamp and true time of applicability for any of the following fields: Latitude, Longitude, Geodetic Altitude, Pressure Altitude of Position, Height. to determine time of applicability of the location data provided.  Expressed in seconds, precise to 1/10ths of seconds. The accuracy reflects the 95% uncertainty bound value for the timestamp.","format":"float"},"operational_status":{"type":"string","enum":["Undeclared","Ground","Airborne","Emergency","RemoteIDSystemFailure"]},"position":{"$ref":"#/components/schemas/RIDPosition"},"track":{"maximum":361,"exclusiveMaximum":false,"minimum":0,"exclusiveMinimum":false,"type":"number","description":"Direction of flight expressed as a \"True North-based\" ground track angle.  This value is provided in clockwise degrees with a minimum resolution of 1 degree.  If aircraft is not moving horizontally, use the \"Unknown\" value.  A value of 361 indicates invalid, no value, or unknown.","format":"float"},"speed_accuracy":{"type":"string","enum":["SAUnknown","SA10mpsPlus","SA10mps","SA3mps","SA1mps","SA03mps"]},"speed":{"maximum":255,"exclusiveMaximum":false,"minimum":0,"exclusiveMinimum":false,"type":"number","description":"Ground speed of flight in meters per second.  Invalid, No Value, or Unknown is 255 m/s, if speed is >254.25 m/s then report 254.25 m/s.","format":"float","example":1.9},"vertical_speed":{"maximum":62,"exclusiveMaximum":false,"minimum":0,"exclusiveMinimum":false,"type":"number","description":"Speed up (vertically) WGS84-HAE, m/s.  Invalid, No Value, or Unknown is 63 m/s, if speed is >62 m/s then report 62 m/s.","format":"float","example":0.2}},"description":"Parameters for a request to create a RemoteID Record."},"RIDHeight":{"required":["distance"],"type":"object","properties":{"distance":{"type":"number","description":"Distance above reference datum.  This value is provided in meters and must have a minimum resolution of 1 meter.  Invalid, No Value or Unknown is -1000 m.","format":"float"}},"description":"A relative altitude for the purposes of remote ID."},"RIDPosition":{"required":["accuracy_h","accuracy_v","alt","lat","lng"],"type":"object","properties":{"lat":{"maximum":90,"exclusiveMaximum":false,"minimum":-90,"exclusiveMinimum":false,"type":"number","description":"Degrees of latitude north of the equator, with reference to the WGS84 ellipsoid.  Invalid, No Value, or Unknown is 0 degrees (both Lat/Lon).","format":"double","example":34.123},"lng":{"maximum":180,"exclusiveMaximum":false,"minimum":-180,"exclusiveMinimum":false,"type":"number","description":"Degrees of longitude east of the Prime Meridian, with reference to the WGS84 ellipsoid.  Invalid, No Value, or Unknown is 0 degrees (both Lat/Lon).","format":"double","example":-118.456},"alt":{"maximum":20000,"exclusiveMaximum":false,"minimum":-1000,"exclusiveMinimum":false,"type":"number","description":"Geodetic altitude (NOT altitude above launch, altitude above ground, or EGM96): aircraft distance above the WGS84 ellipsoid as measured along a line that passes through the aircraft and is normal to the surface of the WGS84 ellipsoid.  This value is provided in meters and must have a minimum resolution of 1 meter.  Invalid, No Value or Unknown is -1000 m.","format":"float","example":1321.0},"accuracy_h":{"type":"string","enum":["HAUnknown","HA10NMPlus","HA10NM","HA4NM","HA2NM","HA1NM","HA05NM","HA03NM","HA01NM","HA005NM","HA30m","HA10m","HA3m","HA1m"]},"accuracy_v":{"type":"string","enum":["VAUnknown","VA150mPlus","VA150m","VA45m","VA25m","VA10m","VA3m","VA1m"]},"pressure_altitude":{"type":"number","description":"The uncorrected altitude (based on reference standard 29.92 inHg, 1013.25 mb) provides a reference for algorithms that utilize \"altitude deltas\" between aircraft.  This value is provided in meters and must have a minimum resolution of 1 meter.  Invalid, No Value or Unknown is -1000 m.","format":"float"},"height_above_takeoff":{"$ref":"#/components/schemas/RIDHeight"},"height_above_ground_level":{"$ref":"#/components/schemas/RIDHeight"}},"description":"Position of an aircraft as reported for remote ID purposes."},"Time":{"required":["format","value"],"type":"object","properties":{"value":{"type":"string","description":"RFC3339-formatted time/date string.  The time zone must be 'Z'.","example":"1985-04-12T23:20:50.52Z"},"format":{"type":"string","enum":["RFC3339"]}},"description":"Timestamp of the last message received"},"UAClassificationEU":{"required":["category","class"],"type":"object","properties":{"category":{"type":"string","enum":["EUCategoryUndefined","Open","Specific","Certified"]},"class":{"type":"string","enum":["EUClassUndefined","Class0","Class1","Class2","Class3","Class4","Class5","Class6"]}},"description":"EU classification of the unmanned aircraft"},"UASID":{"type":"object","properties":{"serial_number":{"type":"string","description":"This is expressed in the CTA-2063-A Serial Number format.","example":"INTCJ123-4567-890"},"operator_reg_num":{"type":"string","description":"Operator registration number.","example":"OP123456"}},"description":"Unmanned aircraft system identification"},"PostGcsPositionResponse":{"required":["id"],"type":"object","properties":{"id":{"type":"string","description":"Identifier of created GCS position record","format":"uuid","example":"e58ed763-928c-4155-bee9-fdbaaadc15f3"}},"description":"Response for GCS position record creation"},"GcsPositionRecordParameters":{"required":["gcs_id","pilot_id","position","timestamp","timestamp_accuracy"],"type":"object","properties":{"gcs_id":{"type":"string","description":"Unique identifier of the Ground Control Station, typically the GCS serial number.","example":"GCS-SN-998877"},"position":{"$ref":"#/components/schemas/RIDPosition"},"timestamp":{"$ref":"#/components/schemas/Time"},"timestamp_accuracy":{"minimum":0,"exclusiveMinimum":false,"type":"number","description":"Declaration of timestamp accuracy, which is the largest difference between Timestamp and true time of applicability for any of the following fields: Latitude, Longitude, Geodetic Altitude, Pressure Altitude of Position, Height. to determine time of applicability of the location data provided.  Expressed in seconds, precise to 1/10ths of seconds. The accuracy reflects the 95% uncertainty bound value for the timestamp.","format":"float"},"pilot_id":{"$ref":"#/components/schemas/PilotId"},"battery_level":{"maximum":100,"exclusiveMaximum":false,"minimum":0,"exclusiveMinimum":false,"type":"number","description":"Battery level of the Ground Control Station (0-100)","format":"float","example":85.5}}},"PilotId":{"type":"object","properties":{"username":{"type":"string","description":"Email address of the remote pilot (login identifier).","example":"pilot@example.com"},"registration_number":{"type":"string","description":"Registration or license number issued by the CAA.","example":"CAA-PLT-4982"}},"description":"Optional pilot identity information, at least one field must be provided."},"PublishLegalDocumentRequestDTO":{"required":["content","documentType","documentVersion"],"type":"object","properties":{"documentType":{"type":"string","enum":["TERMS_AND_CONDITIONS","PRIVACY_POLICY"]},"documentVersion":{"maxLength":32,"minLength":0,"type":"string"},"content":{"maxLength":500000,"minLength":0,"type":"string"}}},"LegalDocumentVersionDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"documentType":{"type":"string","enum":["TERMS_AND_CONDITIONS","PRIVACY_POLICY"]},"documentVersion":{"type":"string"},"documentHash":{"type":"string"},"content":{"type":"string"},"publishedAt":{"type":"string","format":"date-time"},"publishedByUserId":{"type":"integer","format":"int64"},"publishedByDisplayName":{"type":"string"}}},"RecordDataProcessingConsentRequestDTO":{"required":["consentType","granted"],"type":"object","properties":{"consentType":{"type":"string","enum":["MARKETING","ANALYTICS","OTHER"]},"granted":{"type":"boolean"},"consentVersion":{"maxLength":32,"minLength":0,"type":"string"},"locale":{"maxLength":16,"minLength":0,"type":"string"},"acceptanceMethod":{"type":"string","enum":["CHECKBOX_DURING_SIGNUP","CHECKBOX_IN_APP","REACCEPT_NEW_VERSION","API"]}}},"DataProcessingConsentDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"userId":{"type":"integer","format":"int64"},"consentType":{"type":"string","enum":["MARKETING","ANALYTICS","OTHER"]},"granted":{"type":"boolean"},"consentVersion":{"type":"string"},"decidedAt":{"type":"string","format":"date-time"},"acceptanceMethod":{"type":"string","enum":["CHECKBOX_DURING_SIGNUP","CHECKBOX_IN_APP","REACCEPT_NEW_VERSION","API"]},"locale":{"type":"string"},"requestId":{"type":"string"}}},"AcceptTermsRequestDTO":{"required":["documentVersion"],"type":"object","properties":{"documentVersion":{"maxLength":32,"minLength":0,"type":"string"},"locale":{"maxLength":16,"minLength":0,"type":"string"},"privacyNoticePresentedAt":{"type":"string","format":"date-time"},"acceptanceMethod":{"type":"string","enum":["CHECKBOX_DURING_SIGNUP","CHECKBOX_IN_APP","REACCEPT_NEW_VERSION","API"]}}},"DocumentAcceptanceDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"userId":{"type":"integer","format":"int64"},"documentType":{"type":"string","enum":["TERMS_AND_CONDITIONS","PRIVACY_POLICY"]},"documentVersion":{"type":"string"},"documentHash":{"type":"string"},"acceptedAt":{"type":"string","format":"date-time"},"acceptanceMethod":{"type":"string","enum":["CHECKBOX_DURING_SIGNUP","CHECKBOX_IN_APP","REACCEPT_NEW_VERSION","API"]},"locale":{"type":"string"},"requestId":{"type":"string"},"privacyPolicyVersion":{"type":"string"},"privacyPolicyHash":{"type":"string"},"privacyNoticePresentedAt":{"type":"string","format":"date-time"},"email":{"type":"string"}}},"CreateFlightAuthorizationRequestDTO":{"required":["category","client","droneId","droneWeight","missionDescription","pilotId","shortName","timeEnd","timeStart"],"type":"object","properties":{"shortName":{"maxLength":100,"minLength":3,"type":"string","description":"Short name for the flight authorization","example":"Test Flight"},"timeStart":{"type":"string","description":"Flight start time in ISO-8601 format","format":"date-time","example":"2024-01-15T10:00:00Z"},"timeEnd":{"type":"string","description":"Flight end time in ISO-8601 format","format":"date-time","example":"2024-01-15T12:00:00Z"},"category":{"type":"string","description":"Category of the flight authorization","example":"SPECIFIC_CATEGORY","enum":["OPEN_CATEGORY_A1","OPEN_CATEGORY_A2","OPEN_CATEGORY_A3","SPECIFIC_CATEGORY","CERTIFIED_CATEGORY"]},"pilotId":{"type":"integer","description":"ID of the pilot","format":"int64","example":123},"client":{"maxLength":100,"minLength":3,"type":"string","description":"Client name","example":"Test Client"},"droneId":{"type":"integer","description":"ID of the drone","format":"int64","example":456},"organizationId":{"type":"integer","description":"Organization ID. Required for Super Admin; ignored for users creating within their own organization","format":"int64","example":1},"droneWeight":{"type":"number","description":"Drone weight in kg","format":"double","example":2.5},"droneSpeed":{"type":"number","description":"Drone speed in m/s","format":"double","example":15.0},"missionDescription":{"maxLength":500,"minLength":10,"type":"string","description":"Mission description","example":"Test mission"},"processingType":{"type":"string","description":"Processing type for the flight","example":"SEGMENTS","enum":["SEGMENTS","CIRCLE","CUSTOM_CIRCLE","CUSTOM_POLYGON"]}},"description":"Flight authorization data as JSON string"},"CreateFlightAuthResponseDTO":{"type":"object","properties":{"id":{"type":"string"}}},"CenterDTO":{"type":"object","properties":{"lng":{"type":"number","format":"double"},"lat":{"type":"number","format":"double"}}},"ConflictDetailDTO":{"type":"object","properties":{"overlapPercentage":{"type":"number","format":"double"},"conflictStartTime":{"type":"string","format":"date-time"},"conflictEndTime":{"type":"string","format":"date-time"},"newVolumeId":{"type":"integer","format":"int32"},"conflictingVolumeId":{"type":"integer","format":"int32"},"newVolumeStartTime":{"type":"string","format":"date-time"},"newVolumeEndTime":{"type":"string","format":"date-time"},"conflictingVolumeStartTime":{"type":"string","format":"date-time"},"conflictingVolumeEndTime":{"type":"string","format":"date-time"},"newVolumeAltitudeLowerAmsl":{"type":"number","format":"double"},"newVolumeAltitudeLowerHae":{"type":"number","format":"double"},"newVolumeAltitudeUpperAmsl":{"type":"number","format":"double"},"newVolumeAltitudeUpperHae":{"type":"number","format":"double"},"conflictingVolumeAltitudeLowerAmsl":{"type":"number","format":"double"},"conflictingVolumeAltitudeLowerHae":{"type":"number","format":"double"},"conflictingVolumeAltitudeUpperAmsl":{"type":"number","format":"double"},"conflictingVolumeAltitudeUpperHae":{"type":"number","format":"double"}}},"ConflictingFlightAuthorizationDTO":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"shortName":{"type":"string"},"timeStart":{"type":"string","format":"date-time"},"timeEnd":{"type":"string","format":"date-time"},"pilotId":{"type":"integer","format":"int64"},"pilotName":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"client":{"type":"string"},"droneId":{"type":"integer","format":"int64"},"droneName":{"type":"string"},"missionDescription":{"type":"string"},"processingType":{"type":"string","enum":["SEGMENTS","CIRCLE","CUSTOM_CIRCLE","CUSTOM_POLYGON"]},"waypoints":{"type":"array","items":{"$ref":"#/components/schemas/ResponseWaypointDTO"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/ResponseVolumeDTO"}},"conflictDetails":{"type":"array","items":{"$ref":"#/components/schemas/ConflictDetailDTO"}}}},"FlightAuthorizationConflictResponse":{"type":"object","properties":{"status":{"type":"integer","format":"int32"},"message":{"type":"string"},"type":{"type":"string"},"conflictingAuthorizations":{"type":"array","items":{"$ref":"#/components/schemas/ConflictingFlightAuthorizationDTO"}}}},"ResponsePointDTO":{"type":"object","properties":{"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"}}},"ResponseVolumeDTO":{"type":"object","properties":{"id":{"type":"string"},"timeStart":{"type":"string","format":"date-time"},"timeEnd":{"type":"string","format":"date-time"},"altitudeLowerAmsl":{"type":"number","format":"double"},"altitudeUpperAmsl":{"type":"number","format":"double"},"altitudeLowerHae":{"type":"number","format":"double"},"altitudeUpperHae":{"type":"number","format":"double"},"altitudeLowerAgl":{"type":"number","format":"double"},"altitudeUpperAgl":{"type":"number","format":"double"},"points":{"type":"array","items":{"$ref":"#/components/schemas/ResponsePointDTO"}},"averageSpeed":{"type":"number","format":"double"},"distance":{"type":"number","format":"double"},"radius":{"type":"number","format":"double"},"center":{"$ref":"#/components/schemas/CenterDTO"}}},"ResponseWaypointDTO":{"type":"object","properties":{"id":{"type":"string"},"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"},"altitudeAmsl":{"type":"number","format":"double"},"altitudeHae":{"type":"number","format":"double"},"altitudeAgl":{"type":"number","format":"double"},"command":{"type":"string"},"timestamp":{"type":"string","format":"date-time"}}},"WithdrawFlightAuthRequestDTO":{"required":["reasonCode","reasonDescription"],"type":"object","properties":{"reasonCode":{"type":"string","description":"Reason code for withdrawal","example":"DAR","enum":["DYNAMIC_AIRSPACE_RECONFIGURATION","MANNED_AIRCRAFT_EMERGENCY_TRAFFIC","ATC_OR_ANSP_DIRECTIVE","PRIORITY_OPERATION_PREEMPTION","WEATHER_BELOW_MINIMA","GEOZONE_CONDITION_NOT_MET","NO_ACTIVATION_WITHIN_TIME_WINDOW","CONFLICT_UNRESOLVABLE_AFTER_ACCEPTANCE","REQUIRED_SERVICE_UNAVAILABLE","DATA_INTEGRITY_OR_SECURITY_RISK","LAW_ENFORCEMENT_OR_EMERGENCY_CLEARANCE","SUPERSEDED_BY_NEW_AUTHORIZATION","LOCAL_AREA_EMERGENCY"]},"reasonDescription":{"maxLength":1000,"minLength":5,"type":"string","description":"Detailed description of the withdrawal reason","example":"New DAR restrictions require immediate withdrawal of this flight authorization"}},"description":"Withdrawal request data"},"WithdrawFlightAuthResponseDTO":{"type":"object","properties":{"id":{"type":"string"},"withdrawnBy":{"type":"integer","format":"int64"},"withdrawalDate":{"type":"string"},"reasonDescription":{"type":"string"},"reasonCode":{"type":"string","enum":["DYNAMIC_AIRSPACE_RECONFIGURATION","MANNED_AIRCRAFT_EMERGENCY_TRAFFIC","ATC_OR_ANSP_DIRECTIVE","PRIORITY_OPERATION_PREEMPTION","WEATHER_BELOW_MINIMA","GEOZONE_CONDITION_NOT_MET","NO_ACTIVATION_WITHIN_TIME_WINDOW","CONFLICT_UNRESOLVABLE_AFTER_ACCEPTANCE","REQUIRED_SERVICE_UNAVAILABLE","DATA_INTEGRITY_OR_SECURITY_RISK","LAW_ENFORCEMENT_OR_EMERGENCY_CLEARANCE","SUPERSEDED_BY_NEW_AUTHORIZATION","LOCAL_AREA_EMERGENCY"]}}},"RejectFlightAuthRequestDTO":{"required":["rejectionReason"],"type":"object","properties":{"rejectionReason":{"maxLength":1000,"minLength":5,"type":"string"}},"description":"Rejection request data"},"RejectFlightAuthResponseDTO":{"type":"object","properties":{"id":{"type":"string"},"rejectedBy":{"type":"integer","format":"int64"},"rejectionDate":{"type":"string"},"rejectionReason":{"type":"string"},"rejectionCode":{"type":"string","enum":["ADMIN_DECISION","EXPIRED","CONFLICT","PREEMPTED_BY_HIGHER_PRIORITY_OPERATION","INTERSECTS_PROHIBITED_GEO_ZONE","AIRSPACE_RESTRICTION_CONFLICT"]}}},"EndFlightAuthResponseDTO":{"type":"object","properties":{"id":{"type":"string"},"endedBy":{"type":"integer","format":"int64"},"endDate":{"type":"string"}}},"ContingencyFlightAuthResponseDTO":{"type":"object","properties":{"flightAuthorizationId":{"type":"string"},"initiatedBy":{"type":"integer","format":"int64"},"timestamp":{"type":"string"}}},"CancelFlightAuthRequestDTO":{"type":"object","properties":{"reasonDescription":{"maxLength":1000,"minLength":5,"type":"string","description":"Optional detailed description of the cancellation reason","example":"Flight authorization cancelled due to weather conditions"}},"description":"Cancellation request data"},"CancelFlightAuthResponseDTO":{"type":"object","properties":{"id":{"type":"string"},"cancelledBy":{"type":"integer","format":"int64"},"cancellationDate":{"type":"string"},"reasonDescription":{"type":"string"}}},"ActivateFlightAuthResponseDTO":{"type":"object","properties":{"id":{"type":"string"},"activatedBy":{"type":"integer","format":"int64"},"activationDate":{"type":"string"}}},"AcceptFlightAuthResponseDTO":{"type":"object","properties":{"id":{"type":"string"},"acceptedBy":{"type":"integer","format":"int64"},"acceptanceDate":{"type":"string"}}},"DenyGeoZoneAllowanceRequestDTO":{"required":["reason"],"type":"object","properties":{"reason":{"type":"string"}}},"CreateAirdodgeUSpaceDTO":{"required":["code","coordinates","maxAltitudeAgl","minAltitudeAgl","name"],"type":"object","properties":{"name":{"maxLength":100,"minLength":3,"type":"string","description":"USpace name","example":"Central Park USpace"},"code":{"maxLength":50,"minLength":3,"type":"string","description":"USpace code","example":"CP001"},"coordinates":{"maxItems":2147483647,"minItems":4,"type":"array","description":"List of coordinates defining the USpace polygon boundary","items":{"$ref":"#/components/schemas/CoordinateDTO"}},"description":{"maxLength":500,"minLength":0,"type":"string","description":"USpace description","example":"Central Park unmanned aircraft space"},"maxAltitudeAgl":{"type":"number","description":"Maximum altitude AGL in meters","format":"double","example":150.0},"minAltitudeAgl":{"type":"number","description":"Minimum altitude AGL in meters","format":"double","example":30.0},"workingDayStart":{"$ref":"#/components/schemas/LocalTime"},"workingDayEnd":{"$ref":"#/components/schemas/LocalTime"},"workingDays":{"type":"array","description":"Service schedule: working days (e.g. MONDAY, TUESDAY)","items":{"type":"string","description":"Service schedule: working days (e.g. MONDAY, TUESDAY)","enum":["MONDAY","TUESDAY","WEDNESDAY","THURSDAY","FRIDAY","SATURDAY","SUNDAY"]}},"bufferWindowStart":{"$ref":"#/components/schemas/LocalTime"},"bufferWindowEnd":{"$ref":"#/components/schemas/LocalTime"},"minLeadTimeHours":{"type":"integer","description":"Service schedule: min hours before flight start to create FA (e.g. 1)","format":"int32","example":1},"timeZone":{"maxLength":64,"minLength":0,"type":"string","description":"IANA time zone for schedule (e.g. Europe/Oslo)","example":"Europe/Oslo"},"scheduleEnabled":{"type":"boolean","description":"When true, schedule validation is enabled and working day/hours, working days and min lead time are required; buffer is optional","example":false}},"description":"AirdodgeUSpace creation data"},"ShutdownUSpaceRequestDTO":{"required":["uspaceId"],"type":"object","properties":{"uspaceId":{"type":"integer","description":"USpace ID to shutdown","format":"int64","example":1}},"description":"Shutdown request data"},"USpaceActionDTO":{"type":"object","properties":{"id":{"type":"integer","description":"Unique identifier","format":"int64","example":1},"uspaceId":{"type":"integer","description":"USpace ID","format":"int64","example":1},"uspaceName":{"type":"string","description":"USpace name","example":"Test USpace"},"command":{"type":"string","description":"Command name","example":"USPACE_SHUTDOWN"},"actionDate":{"type":"string","description":"Action date and time","format":"date-time"},"initiatorId":{"type":"integer","description":"ID of the user who initiated the action","format":"int64","example":123},"flightAuthorizationIds":{"type":"array","description":"List of affected flight authorization IDs","items":{"type":"string","description":"List of affected flight authorization IDs","format":"uuid"}},"status":{"type":"string","description":"Action status","example":"FINISHED","enum":["NEW","INPROGRESS","FINISHED","ERROR"]}},"description":"USpaceAction response DTO"},"ActivateUSpaceRequestDTO":{"required":["uspaceId"],"type":"object","properties":{"uspaceId":{"type":"integer","description":"USpace ID to activate","format":"int64","example":1}},"description":"Activation request data"},"Center":{"type":"object","properties":{"lat":{"type":"number","format":"double"},"lng":{"type":"number","format":"double"}}},"FlightPlan":{"type":"object","properties":{"waypoints":{"type":"array","items":{"$ref":"#/components/schemas/Waypoint"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/Volume"}},"vehicleDetails":{"$ref":"#/components/schemas/VehicleDetails"},"processingType":{"type":"string","enum":["SEGMENTS","CIRCLE","CUSTOM_CIRCLE","CUSTOM_POLYGON"]}}},"FlightPlanResponseDTO":{"type":"object","properties":{"flightPlan":{"$ref":"#/components/schemas/FlightPlan"},"conflictFlightAuthorizations":{"type":"array","items":{"$ref":"#/components/schemas/ConflictingFlightAuthorizationDTO"}},"nearbyFlightAuthorization":{"type":"array","items":{"$ref":"#/components/schemas/NearbyFlightAuthorizationDTO"}},"volumesOutsideUspace":{"type":"array","items":{"$ref":"#/components/schemas/VolumeOutsideUSpaceDTO"}},"volumeUspaceIntersections":{"type":"array","items":{"$ref":"#/components/schemas/VolumeUspaceIntersectionDTO"}},"intersectsUspace":{"type":"boolean"},"volumesIntersectingGeoZones":{"type":"array","items":{"$ref":"#/components/schemas/VolumeIntersectingGeoZonesDTO"}},"validationIssues":{"type":"array","items":{"$ref":"#/components/schemas/FlightPlanValidationIssueDTO"}}}},"FlightPlanValidationIssueDTO":{"type":"object","properties":{"type":{"type":"string","enum":["VOLUME_DURATION","TIME_OVERLAP","ALTITUDE_OVERLAP","USPACE_ALTITUDE_RANGE","SPATIAL_OVERLAP","VOLUME_OUTSIDE_USPACE_WORKING_HOURS","SCHEDULE_SUBMISSION_DEADLINE_PASSED"]},"code":{"type":"integer","format":"int32"},"message":{"type":"string"},"volumeIndex":{"type":"integer","format":"int32"},"nextVolumeIndex":{"type":"integer","format":"int32"},"details":{"$ref":"#/components/schemas/FlightPlanValidationIssueDetails"}}},"FlightPlanValidationIssueDetails":{"type":"object","properties":{"actualDurationHours":{"type":"number","format":"double"},"maxDurationHours":{"type":"integer","format":"int32"},"actualOverlapPercent":{"type":"number","format":"double"},"requiredOverlapPercent":{"type":"number","format":"double"},"uspaceMinAltitudeAgl":{"type":"number","format":"double"},"uspaceMaxAltitudeAgl":{"type":"number","format":"double"},"volumeLowerAmsl":{"type":"number","format":"double"},"volumeUpperAmsl":{"type":"number","format":"double"},"actualAltitudeOverlapMeters":{"type":"number","format":"double"},"requiredAltitudeOverlapMeters":{"type":"number","format":"double"},"actualSpatialOverlapMeters":{"type":"number","format":"double"},"requiredSpatialOverlapMeters":{"type":"number","format":"double"}}},"IntersectingGeoZoneDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"featureTypeId":{"type":"string"},"featureTypeName":{"type":"string"},"requiresControllerDecision":{"type":"boolean"}}},"IntersectingGeoZoneStatisticDTO":{"type":"object","properties":{"featureTypeId":{"type":"string"},"featureTypeName":{"type":"string"},"count":{"type":"integer","format":"int32"}}},"NearbyFlightAuthorizationDTO":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"shortName":{"type":"string"},"timeStart":{"type":"string","format":"date-time"},"timeEnd":{"type":"string","format":"date-time"},"pilotId":{"type":"integer","format":"int64"},"pilotName":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"client":{"type":"string"},"droneId":{"type":"integer","format":"int64"},"droneName":{"type":"string"},"missionDescription":{"type":"string"},"processingType":{"type":"string","enum":["SEGMENTS","CIRCLE","CUSTOM_CIRCLE","CUSTOM_POLYGON"]},"waypoints":{"type":"array","items":{"$ref":"#/components/schemas/ResponseWaypointDTO"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/ResponseVolumeDTO"}}}},"VehicleDetails":{"type":"object","properties":{"type":{"type":"string"},"maxAltitude":{"type":"number","format":"double"},"averageSpeed":{"type":"number","format":"double"}}},"Volume":{"type":"object","properties":{"id":{"type":"string"},"points":{"type":"array","items":{"$ref":"#/components/schemas/VolumePoint"}},"timeStart":{"type":"string","format":"date-time"},"timeEnd":{"type":"string","format":"date-time"},"altitudeLowerAmsl":{"type":"number","format":"double"},"altitudeUpperAmsl":{"type":"number","format":"double"},"altitudeLowerHae":{"type":"number","format":"double"},"altitudeUpperHae":{"type":"number","format":"double"},"altitudeLowerAgl":{"type":"number","format":"double"},"altitudeUpperAgl":{"type":"number","format":"double"},"groundMinHae":{"type":"number","format":"double"},"groundMaxHae":{"type":"number","format":"double"},"averageSpeed":{"type":"number","format":"double"},"distance":{"type":"number","format":"double"},"radius":{"type":"number","format":"double"},"center":{"$ref":"#/components/schemas/Center"},"altitudeLimitReference":{"type":"string","enum":["AMSL","AGL"]},"altitudeInputLower":{"type":"number","format":"double"},"altitudeInputUpper":{"type":"number","format":"double"}}},"VolumeIntersectingGeoZonesDTO":{"type":"object","properties":{"id":{"type":"string"},"geoZones":{"type":"array","items":{"$ref":"#/components/schemas/IntersectingGeoZoneDTO"}},"obstacleStatistics":{"type":"array","items":{"$ref":"#/components/schemas/IntersectingGeoZoneStatisticDTO"}}}},"VolumeOutsideUSpaceDTO":{"type":"object","properties":{"id":{"type":"string"},"timeStart":{"type":"string","format":"date-time"},"timeEnd":{"type":"string","format":"date-time"},"altitudeLowerAmsl":{"type":"number","format":"double"},"altitudeUpperAmsl":{"type":"number","format":"double"},"altitudeLowerHae":{"type":"number","format":"double"},"altitudeUpperHae":{"type":"number","format":"double"},"altitudeLowerAgl":{"type":"number","format":"double"},"altitudeUpperAgl":{"type":"number","format":"double"},"reason":{"type":"string","enum":["PLANAR","ALTITUDE","BOTH"]},"uspaceMinAltitudeAgl":{"type":"number","format":"double"},"uspaceMaxAltitudeAgl":{"type":"number","format":"double"},"uspaceId":{"type":"integer","format":"int64"}}},"VolumePoint":{"type":"object","properties":{"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"}}},"VolumeUspaceIntersectionDTO":{"type":"object","properties":{"volumeId":{"type":"string"},"uspaceId":{"type":"integer","format":"int64"},"uspaceCode":{"type":"string"},"uspaceName":{"type":"string"},"planarIntersects":{"type":"boolean"},"altitudeReason":{"type":"string","enum":["PLANAR","ALTITUDE","BOTH"]},"scheduleViolation":{"type":"boolean"},"uspaceMinAltitudeAgl":{"type":"number","format":"double"},"uspaceMaxAltitudeAgl":{"type":"number","format":"double"}}},"Waypoint":{"type":"object","properties":{"latitude":{"type":"number","format":"double"},"longitude":{"type":"number","format":"double"},"altitudeAmsl":{"type":"number","format":"double"},"altitudeHae":{"type":"number","format":"double"},"altitudeAgl":{"type":"number","format":"double"},"droneSpeed":{"type":"number","format":"double"},"command":{"type":"string","enum":["MISSION_START","TAKEOFF","LOITER","WAYPOINT","VTOL_TRANSITION","SPECIAL_COMMAND","VTOL_LAND","LAND","VTOL_TAKEOFF","DO_WINCH","UNRECOGNIZED_COMMAND","NAV_RALLY_POINT","RETURN_TO_LAUNCH","RALLY_LAND"]},"radius":{"type":"number","format":"double"},"loiterTime":{"type":"integer","format":"int32"}}},"FlightAuthGeoWindowPayloadDTO":{"type":"object","properties":{"flights":{"type":"array","description":"Flight authorizations with plans in the requested geographic window","items":{"$ref":"#/components/schemas/FlightAuthorizationWithPlanDTO"}},"realtime":{"$ref":"#/components/schemas/RealtimeMapSubscriptions"}},"description":"Flight authorizations in a map viewport with MQTT subscription plan for realtime updates"},"FlightAuthorizationWithPlanDTO":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["DRAFT","PROPOSED","REJECTED","CANCELLED","ACCEPTED","ACTIVATED","NON_CONFIRMING","WITHDRAWN","ENDED","CONTINGENT","TIMED_OUT"]},"shortName":{"type":"string"},"timeStart":{"type":"string","format":"date-time"},"timeEnd":{"type":"string","format":"date-time"},"category":{"type":"string","enum":["OPEN_CATEGORY_A1","OPEN_CATEGORY_A2","OPEN_CATEGORY_A3","SPECIFIC_CATEGORY","CERTIFIED_CATEGORY"]},"pilotId":{"type":"integer","format":"int64"},"pilotName":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"organizationName":{"type":"string"},"client":{"type":"string"},"droneId":{"type":"integer","format":"int64"},"droneModel":{"type":"string"},"droneType":{"type":"string"},"droneName":{"type":"string"},"droneWeight":{"type":"number","format":"double"},"missionDescription":{"type":"string"},"processingType":{"type":"string","enum":["SEGMENTS","CIRCLE","CUSTOM_CIRCLE","CUSTOM_POLYGON"]},"creationDate":{"type":"string","format":"date-time"},"uspaceId":{"type":"integer","format":"int64"},"uspaceName":{"type":"string"},"uspaceCode":{"type":"string"},"intersectingUspaceIds":{"type":"array","items":{"type":"integer","format":"int64"}},"waypoints":{"type":"array","items":{"$ref":"#/components/schemas/ResponseWaypointDTO"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/ResponseVolumeDTO"}},"volumesOutsideUspace":{"type":"array","items":{"$ref":"#/components/schemas/VolumeOutsideUSpaceDTO"}},"volumesIntersectingGeoZones":{"type":"array","items":{"$ref":"#/components/schemas/VolumeIntersectingGeoZonesDTO"}},"volumeUspaceIntersections":{"type":"array","items":{"$ref":"#/components/schemas/VolumeUspaceIntersectionDTO"}}}},"CreateFaGeoZoneRequestDTO":{"required":["code","lowerLimitAmsl","name"],"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"coordinates":{"maxItems":2147483647,"minItems":3,"type":"array","items":{"$ref":"#/components/schemas/FaGeoZoneCoordinateDTO"}},"lowerLimitAmsl":{"type":"number","format":"double"},"upperLimitAmsl":{"type":"number","format":"double"}}},"AddFaGeoZoneControllerRequestDTO":{"required":["organizationId","userId"],"type":"object","properties":{"organizationId":{"type":"integer","format":"int64"},"userId":{"type":"integer","format":"int64"}}},"CreateMapVisualisationRequestDTO":{"required":["name"],"type":"object","properties":{"name":{"type":"string","description":"Map visualisation name","example":"Default Visualization"},"defaultProperties":{"$ref":"#/components/schemas/FeatureTypeVisualisationPropertiesDTO"},"featureTypeVisualisations":{"type":"array","description":"Feature type specific visualisations","items":{"$ref":"#/components/schemas/FeatureTypeVisualisationDTO"}}},"description":"Create map visualisation request"},"BoundingBoxDTO":{"required":["coordinates"],"type":"object","properties":{"coordinates":{"type":"array","description":"List of coordinates forming the bounding box polygon. Must have at least 4 coordinates.","example":[[10.0,50.0],[11.0,50.0],[11.0,51.0],[10.0,51.0],[10.0,50.0]],"items":{"type":"array","description":"List of coordinates forming the bounding box polygon. Must have at least 4 coordinates.","example":[[10.0,50.0],[11.0,50.0],[11.0,51.0],[10.0,51.0],[10.0,50.0]],"items":{"type":"number","description":"List of coordinates forming the bounding box polygon. Must have at least 4 coordinates.","format":"double"}}}},"description":"Bounding box defined by a list of coordinates forming a polygon"},"GetGeoZonesRequestDTO":{"required":["boundingBox"],"type":"object","properties":{"boundingBox":{"$ref":"#/components/schemas/BoundingBoxDTO"},"featureTypes":{"type":"array","description":"List of feature type IDs to filter by. If empty, all feature types are included.","items":{"type":"string","description":"List of feature type IDs to filter by. If empty, all feature types are included."}}},"description":"Get geo zones request"},"FetchDatasetRequestDTO":{"required":["datasetDefinitionIds"],"type":"object","properties":{"datasetDefinitionIds":{"type":"array","description":"List of dataset definition IDs to fetch","example":[1,2,3],"items":{"type":"integer","description":"List of dataset definition IDs to fetch","format":"int64"}}},"description":"Fetch dataset request"},"CreateDatasetDefinitionRequestDTO":{"required":["dataSource","geographicalCoverage","name"],"type":"object","properties":{"name":{"type":"string","description":"Dataset definition name","example":"Norwegian Airspace Restrictions"},"geographicalCoverage":{"type":"string","description":"Geographical coverage identifier","example":"NO"},"dataSource":{"$ref":"#/components/schemas/RemoteDataSourceDTO"},"updateInterval":{"type":"string","description":"Update interval as ISO-8601 duration","example":"PT24H"},"authorativeLevel":{"type":"string","description":"Authoritative level","enum":["AUTHORATIVE","NON_AUTHORATIVE"]},"featuresIncluded":{"uniqueItems":true,"type":"array","description":"Set of feature type IDs included in this dataset","items":{"type":"string","description":"Set of feature type IDs included in this dataset"}}},"description":"Create dataset definition request"},"HrefImportResult":{"type":"object","properties":{"rasterId":{"type":"integer","format":"int64"},"gridRows":{"type":"integer","format":"int32"},"gridColumns":{"type":"integer","format":"int32"},"spatialReferenceId":{"type":"integer","format":"int32"},"upperLeftLongitude":{"type":"number","format":"double"},"upperLeftLatitude":{"type":"number","format":"double"},"pixelWidthInDegrees":{"type":"number","format":"double"},"pixelHeightInDegrees":{"type":"number","format":"double"}}},"CheckAuthRequestDto":{"required":["action","topic","username"],"type":"object","properties":{"username":{"type":"string"},"topic":{"type":"string"},"action":{"pattern":"publish|subscribe","type":"string"}},"description":"Authorization check request"},"CheckAuthResultDto":{"type":"object","properties":{"result":{"type":"string"}}},"AuthRequestDto":{"required":["password","username"],"type":"object","properties":{"username":{"type":"string"},"password":{"type":"string"}}},"AirdodgeUserResponseDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"name":{"type":"string"},"phone":{"type":"string"},"email":{"type":"string"},"address":{"$ref":"#/components/schemas/BaseAddressDTO"},"description":{"type":"string"},"status":{"type":"string"},"rejectionReason":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"roles":{"uniqueItems":true,"type":"array","items":{"type":"string"}}}},"RidTagPageDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/RidTagDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response containing RID tags"},"AuditLogRidTag":{"type":"object","properties":{"logRecordId":{"type":"string","format":"uuid"},"timestamp":{"type":"string","format":"date-time"},"eventType":{"type":"string","enum":["CREATED","UPDATED","DELETED","BOUND_TO_DRONE","UNBOUND_FROM_DRONE"]},"severity":{"type":"string","enum":["INFO","TRACE","WARNING"]},"ridTagId":{"type":"integer","format":"int64"},"droneId":{"type":"integer","format":"int64"},"actorId":{"type":"integer","format":"int64"},"actorType":{"type":"string","enum":["FLIGHT_MANAGER","SUPER_ADMIN"]},"actorDisplayName":{"type":"string"},"correlationId":{"type":"string"},"orgId":{"type":"integer","format":"int64"},"details":{"type":"string"}}},"RidTagLinkedDTO":{"type":"object","properties":{"linked":{"type":"boolean"}}},"PilotPageDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/PilotDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response containing pilots"},"OrganizationPageDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/OrganizationDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response containing organizations"},"OrganizationRegistrationDTO":{"type":"object","properties":{"operatorRegistrationNumber":{"type":"string"},"organizationName":{"type":"string"}}},"PageDTOInvitationDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/InvitationDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response"},"RoleWithPermissionsDTO":{"type":"object","properties":{"roleId":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"permissions":{"type":"array","items":{"type":"string"}}}},"GcsPositionDTO":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude of the GCS position","format":"double"},"lng":{"type":"number","description":"Longitude of the GCS position","format":"double"},"alt":{"type":"number","description":"Altitude of the GCS position","format":"float"},"accuracyH":{"type":"string","description":"Horizontal accuracy of the position"},"accuracyV":{"type":"string","description":"Vertical accuracy of the position"},"pressureAltitude":{"type":"number","description":"Pressure altitude","format":"float"},"heightAboveTakeoff":{"type":"number","description":"Height above takeoff point","format":"float"},"heightAboveGroundLevel":{"type":"number","description":"Height above ground level","format":"float"},"timestamp":{"type":"string","description":"Timestamp of the position"},"timestampAccuracy":{"type":"number","description":"Accuracy of the timestamp","format":"float"},"status":{"type":"string","enum":["ONLINE","OFFLINE"]},"pilotDetails":{"$ref":"#/components/schemas/IdNameTupleDTO"}},"description":"Ground Control Station position data"},"FlightManagerPageDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/FlightManagerDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response containing flight managers"},"PageDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"type":"object","description":"List of items"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response"},"FlightHubConnectionStatusDTO":{"type":"object","properties":{"flightHubConnected":{"type":"boolean","description":"True if any Flight Hub service account has an active MQTT connection"},"serviceAccounts":{"type":"array","description":"Per–service-account connection status","items":{"$ref":"#/components/schemas/ServiceAccountConnectionDTO"}}}},"ServiceAccountConnectionDTO":{"type":"object","properties":{"id":{"type":"integer","description":"Service account ID","format":"int64"},"username":{"type":"string","description":"MQTT username (fh_sa_<id>)"},"connected":{"type":"boolean","description":"Whether at least one MQTT client is connected for this username"}},"description":"Per–service-account connection status"},"DronePageDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/DroneDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response containing drones"},"OnboardingApprovalBlockerDTO":{"type":"object","properties":{"code":{"type":"string"},"field":{"type":"string"},"value":{"type":"string"},"message":{"type":"string"}}},"PendingOnboardingRegistrationDTO":{"type":"object","properties":{"userId":{"type":"integer","format":"int64"},"registrationId":{"type":"integer","format":"int64"},"email":{"type":"string"},"name":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"phone":{"type":"string"},"status":{"type":"string","enum":["PENDING_VERIFICATION","PENDING_APPROVAL","ACTIVE","BLOCKED","REJECTED","RETIRED"]},"currentStep":{"type":"string","enum":["ACCOUNT_CREATED","EMAIL_VERIFICATION","TERMS_ACCEPTANCE","USER_INFORMATION","PHONE_VERIFICATION","ORGANIZATION_INFORMATION","SUBMITTED"]},"intendedRoles":{"type":"string"},"organizationName":{"type":"string"},"organizationCountry":{"type":"string"},"organizationAddress":{"type":"string"},"operatorRegistrationNumber":{"type":"string"},"legalEntity":{"type":"boolean"},"vatNumber":{"type":"string"},"organizationZipCode":{"type":"string"},"organizationCity":{"type":"string"},"organizationStreetAddress":{"type":"string"},"zipCode":{"type":"string"},"city":{"type":"string"},"streetAddress":{"type":"string"},"country":{"type":"string"},"pilotRegistrationNumber":{"type":"string"},"pilotEligibilityConfirmed":{"type":"boolean"},"pilotEligibilityConfirmedAt":{"type":"string","format":"date-time"},"organizationId":{"type":"integer","format":"int64"},"invitationId":{"type":"integer","format":"int64"},"joinExistingOrganization":{"type":"boolean"},"targetOrgAdminEmail":{"type":"string"},"submittedAt":{"type":"string","format":"date-time"},"emailVerifiedAt":{"type":"string","format":"date-time"},"phoneVerifiedAt":{"type":"string","format":"date-time"},"approvalTarget":{"type":"string"},"canApprove":{"type":"boolean"},"approvalBlockers":{"type":"array","items":{"$ref":"#/components/schemas/OnboardingApprovalBlockerDTO"}}}},"NotificationDTO":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"type":{"type":"string"},"category":{"type":"string","enum":["TRAFFIC","FLIGHT_AUTHORIZATION","GEO_ZONE","ONBOARDING","SYSTEM"]},"severity":{"type":"string","enum":["S5_CATASTROPHIC","S4_HAZARDOUS","S3_MAJOR","S2_MINOR","S1_NEGLIGIBLE"]},"priority":{"type":"string","enum":["P0_IMMEDIATE","P1_HIGH","P2_MEDIUM","P3_LOW","P4_INFO"]},"confidence":{"type":"string","enum":["CONFIRMED","LIKELY","POSSIBLE"]},"title":{"type":"string"},"message":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"organizationName":{"type":"string"},"recipientId":{"type":"integer","format":"int64"},"recipientName":{"type":"string"},"recipientPhone":{"type":"string"},"recipientRoleName":{"type":"string"},"flightAuthorizationId":{"type":"string","format":"uuid"},"flightAuthorizationName":{"type":"string"},"status":{"type":"string","enum":["PENDING","SENT","DELIVERED","READ","CONFIRMED","EXPIRED","FAILED"]},"requiresConfirmation":{"type":"boolean"},"confirmationCode":{"type":"string","format":"uuid"},"timeToHazardMinutes":{"type":"integer","format":"int32"},"createdAt":{"type":"string","format":"date-time"},"sentAt":{"type":"string","format":"date-time"},"readAt":{"type":"string","format":"date-time"},"confirmedAt":{"type":"string","format":"date-time"},"confirmedBy":{"type":"integer","format":"int64"},"expiresAt":{"type":"string","format":"date-time"},"metadata":{"type":"string"},"channels":{"uniqueItems":true,"type":"array","items":{"type":"string","enum":["IN_APP","EMAIL","SMS","PUSH_NOTIFICATION","WEBHOOK","SLACK"]}},"deliveries":{"uniqueItems":true,"type":"array","items":{"$ref":"#/components/schemas/NotificationDeliveryDTO"}}}},"NotificationDeliveryDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"channel":{"type":"string","enum":["IN_APP","EMAIL","SMS","PUSH_NOTIFICATION","WEBHOOK","SLACK"]},"status":{"type":"string","enum":["DRAFT","PENDING","SENT","DELIVERED","FAILED","BOUNCED"]},"sentAt":{"type":"string","format":"date-time"},"deliveredAt":{"type":"string","format":"date-time"},"failedAt":{"type":"string","format":"date-time"},"failureReason":{"type":"string"},"externalId":{"type":"string"}}},"NotificationListResponseDTO":{"type":"object","properties":{"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationDTO"}},"statistics":{"$ref":"#/components/schemas/NotificationStatisticsDTO"},"page":{"type":"integer","format":"int32"},"size":{"type":"integer","format":"int32"},"totalElements":{"type":"integer","format":"int64"},"totalPages":{"type":"integer","format":"int32"},"first":{"type":"boolean"},"last":{"type":"boolean"}}},"NotificationStatisticsDTO":{"type":"object","properties":{"unreadCount":{"type":"integer","format":"int64"},"unconfirmedCount":{"type":"integer","format":"int64"}}},"PageDTORidSensorDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/RidSensorDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response"},"RidSensorServiceAccountDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"ridSensorId":{"type":"integer","format":"int64"},"username":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"description":"RID Sensor service account metadata. Password is never returned."},"DownsampledTelemetryDTO":{"type":"object","properties":{"timestamp":{"type":"string","format":"date-time"},"lat":{"type":"number","format":"double"},"lng":{"type":"number","format":"double"},"alt":{"type":"number","format":"float"},"speed":{"type":"number","format":"float"},"verticalSpeed":{"type":"number","format":"float"},"operationalStatus":{"type":"string"}}},"CurrentLegalDocumentsDTO":{"type":"object","properties":{"termsAndConditions":{"$ref":"#/components/schemas/LegalDocumentVersionDTO"},"privacyPolicy":{"$ref":"#/components/schemas/LegalDocumentVersionDTO"}}},"AltitudeDefinition":{"type":"object","properties":{"value":{"type":"number","format":"double"},"unit":{"type":"string","enum":["METER","FEET","FLIGHT_LEVEL"]},"type":{"type":"string","enum":["MSL","AGL","STANDARD_PRESSURE","UNLIMITED"]}},"description":"Upper altitude limit"},"GeoZoneDetailDTO":{"type":"object","properties":{"id":{"type":"integer","description":"Geo zone ID","format":"int64"},"name":{"type":"string","description":"Geo zone name"},"description":{"type":"string","description":"Geo zone description"},"featureType":{"$ref":"#/components/schemas/FeatureTypeDTO"},"datasetDefinitionName":{"type":"string","description":"Dataset definition name"},"lowerLimit":{"$ref":"#/components/schemas/AltitudeDefinition"},"upperLimit":{"$ref":"#/components/schemas/AltitudeDefinition"},"lowerLimitMeters":{"type":"number","description":"Lower altitude limit in metres","format":"double"},"upperLimitMeters":{"type":"number","description":"Upper altitude limit in metres","format":"double"},"baseMetersAboveMeanSeaLevel":{"type":"number","description":"Base metres above mean sea level","format":"double"},"altitudePrecision":{"type":"string","description":"Altitude precision","enum":["UNKNOWN","LESS_THAN_1_METER","LESS_THAN_5_METERS","LESS_THAN_10_METERS","LESS_THAN_50_METERS","LESS_THAN_100_METERS","DEFAULT_FOR_FEATURE_TYPE"]},"flightRestrictions":{"type":"array","description":"Flight restrictions","items":{"type":"string","description":"Flight restrictions"}}},"description":"Detailed geo zone information for map and flight planning UI"},"FlightAuthorizationBasicDTO":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["DRAFT","PROPOSED","REJECTED","CANCELLED","ACCEPTED","ACTIVATED","NON_CONFIRMING","WITHDRAWN","ENDED","CONTINGENT","TIMED_OUT"]},"shortName":{"type":"string"},"timeStart":{"type":"string","format":"date-time"},"timeEnd":{"type":"string","format":"date-time"},"category":{"type":"string","enum":["OPEN_CATEGORY_A1","OPEN_CATEGORY_A2","OPEN_CATEGORY_A3","SPECIFIC_CATEGORY","CERTIFIED_CATEGORY"]},"pilotId":{"type":"integer","format":"int64"},"pilotName":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"organizationName":{"type":"string"},"client":{"type":"string"},"droneId":{"type":"integer","format":"int64"},"droneModel":{"type":"string"},"droneType":{"type":"string"},"droneName":{"type":"string"},"droneWeight":{"type":"number","format":"double"},"missionDescription":{"type":"string"},"processingType":{"type":"string","enum":["SEGMENTS","CIRCLE","CUSTOM_CIRCLE","CUSTOM_POLYGON"]},"creationDate":{"type":"string","format":"date-time"},"uspaceId":{"type":"integer","format":"int64"},"uspaceName":{"type":"string"},"uspaceCode":{"type":"string"},"intersectingUspaceIds":{"type":"array","items":{"type":"integer","format":"int64"}},"volumes":{"type":"array","items":{"$ref":"#/components/schemas/ResponseVolumeDTO"}},"waypoints":{"type":"array","items":{"$ref":"#/components/schemas/ResponseWaypointDTO"}},"volumesOutsideUspace":{"type":"array","items":{"$ref":"#/components/schemas/VolumeOutsideUSpaceDTO"}},"volumesIntersectingGeoZones":{"type":"array","items":{"$ref":"#/components/schemas/VolumeIntersectingGeoZonesDTO"}},"volumeUspaceIntersections":{"type":"array","items":{"$ref":"#/components/schemas/VolumeUspaceIntersectionDTO"}},"geoZoneAllowances":{"type":"array","items":{"$ref":"#/components/schemas/GeoZoneAllowanceDTO"}}}},"GeoZoneAllowanceDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"geoZoneId":{"type":"integer","format":"int64"},"geoZoneCode":{"type":"string"},"geoZoneName":{"type":"string"},"status":{"type":"string","enum":["PENDING","ALLOWED","DENIED","CANCELLED","NOT_REQUIRED"]},"decisionReason":{"type":"string"},"decidedBy":{"type":"integer","format":"int64"},"decidedByUserName":{"type":"string"},"decidedByOrganizationName":{"type":"string"},"decidedAt":{"type":"string","format":"date-time"},"canDecide":{"type":"boolean"}}},"FlightAuthorizationWithNearbyDTO":{"type":"object","properties":{"currentFlightAuthorization":{"$ref":"#/components/schemas/FlightAuthorizationWithPlanDTO"},"nearbyFlightAuthorizations":{"type":"array","items":{"$ref":"#/components/schemas/NearbyFlightAuthorizationDTO"}}}},"AuditLogFlightAuthorization":{"type":"object","properties":{"logRecordId":{"type":"string","format":"uuid"},"timestamp":{"type":"string","format":"date-time"},"eventType":{"type":"string","enum":["FLIGHT_AUTHORISATION_PROPOSED","FLIGHT_AUTHORISATION_ACCEPTED","FLIGHT_AUTHORISATION_REJECTED","FLIGHT_AUTHORISATION_ACTIVATED","FLIGHT_AUTHORISATION_ENDED","FLIGHT_AUTHORISATION_WITHDRAWN","FLIGHT_AUTHORISATION_CANCELLED","FLIGHT_AUTHORISATION_CONTINGENT","GEO_ZONE_ALLOWANCE_REQUIRED","GEO_ZONE_ALLOWED","GEO_ZONE_DENIED"]},"severity":{"type":"string","enum":["INFO","TRACE","WARNING"]},"flightAuthorizationId":{"type":"string","format":"uuid"},"previousStatus":{"type":"string","enum":["DRAFT","PROPOSED","REJECTED","CANCELLED","ACCEPTED","ACTIVATED","NON_CONFIRMING","WITHDRAWN","ENDED","CONTINGENT","TIMED_OUT"]},"newStatus":{"type":"string","enum":["DRAFT","PROPOSED","REJECTED","CANCELLED","ACCEPTED","ACTIVATED","NON_CONFIRMING","WITHDRAWN","ENDED","CONTINGENT","TIMED_OUT"]},"reasonDescr":{"type":"string"},"reasonCode":{"type":"string"},"actorId":{"type":"integer","format":"int64"},"actorType":{"type":"string","enum":["PILOT","FLIGHT_MANAGER","SUPER_ADMIN","SYSTEM"]},"actorDisplayName":{"type":"string"},"correlationId":{"type":"string"},"orgId":{"type":"integer","format":"int64"},"faGeoZoneId":{"type":"integer","format":"int64"},"geoZoneAllowanceId":{"type":"integer","format":"int64"}}},"AuditLogDroneTelemetry":{"type":"object","properties":{"logRecordId":{"type":"string","format":"uuid"},"timestamp":{"type":"string","format":"date-time"},"droneId":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"operatorRegistrationNumber":{"type":"string"},"manufacturer":{"type":"string"},"eventType":{"type":"string","enum":["AIRCRAFT_CONNECTED","AIRCRAFT_DISCONNECTED","AIRCRAFT_TAKEN_OFF","AIRCRAFT_LANDED","AIRCRAFT_TELEMETRY_RECEIVE","GCS_TELEMETRY_RECEIVE"]},"gcsId":{"type":"string"},"remoteIdRecordId":{"type":"string","format":"uuid"},"aircraftType":{"type":"string","enum":["NOT_DECLARED","AEROPLANE","HELICOPTER","GYROPLANE","HYBRID_LIFT","ORNITHOPTER","GLIDER","KITE","FREE_BALLOON","CAPTIVE_BALLOON","AIRSHIP","FREE_FALL_OR_PARACHUTE","ROCKET","TETHERED_POWERED_AIRCRAFT","GROUND_OBSTACLE","OTHER"]},"euClassification":{"type":"string","enum":["EU_CLASS_UNDEFINED","CLASS0","CLASS1","CLASS2","CLASS3","CLASS4","CLASS5","CLASS6"]},"recordTimestamp":{"type":"string","format":"date-time"},"timestampAccuracy":{"type":"number","format":"float"},"operationalStatus":{"type":"string","enum":["UNDECLARED","GROUND","AIRBORNE","EMERGENCY","REMOTE_ID_SYSTEM_FAILURE"]},"lat":{"type":"number","format":"double"},"lng":{"type":"number","format":"double"},"alt":{"type":"number","format":"float"},"accuracyH":{"type":"string","enum":["HA_UNKNOWN","HA10_NM_PLUS","HA10_NM","HA4_NM","HA2_NM","HA1_NM","HA05_NM","HA03_NM","HA01_NM","HA005_NM","HA30M","HA10M","HA3M","HA1M"]},"accuracyV":{"type":"string","enum":["VA_UNKNOWN","VA150M_PLUS","VA150M","VA45M","VA25M","VA10M","VA3M","VA1M"]},"pressureAltitude":{"type":"number","format":"float"},"heightAboveTakeoff":{"type":"number","format":"float"},"heightAboveGroundLevel":{"type":"number","format":"float"},"track":{"type":"number","format":"float"},"speed":{"type":"number","format":"float"},"verticalSpeed":{"type":"number","format":"float"}}},"AirdodgeUSpacePageDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/AirdodgeUSpaceDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response containing USpaces"},"FlightAuthListDTO":{"type":"object","properties":{"id":{"type":"string","description":"Flight authorization ID","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"status":{"type":"string","description":"Status of the flight authorization","example":"ACTIVATED","enum":["DRAFT","PROPOSED","REJECTED","CANCELLED","ACCEPTED","ACTIVATED","NON_CONFIRMING","WITHDRAWN","ENDED","CONTINGENT","TIMED_OUT"]},"shortName":{"type":"string","description":"Short name of the flight authorization","example":"Test Flight"},"timeStart":{"type":"string","description":"Flight start time","format":"date-time","example":"2024-01-15T10:00:00Z"},"timeEnd":{"type":"string","description":"Flight end time","format":"date-time","example":"2024-01-15T11:00:00Z"},"category":{"type":"string","description":"Flight category","example":"SPECIFIC_CATEGORY","enum":["OPEN_CATEGORY_A1","OPEN_CATEGORY_A2","OPEN_CATEGORY_A3","SPECIFIC_CATEGORY","CERTIFIED_CATEGORY"]},"pilotId":{"type":"integer","description":"Pilot ID","format":"int64","example":1},"pilotName":{"type":"string","description":"Pilot name","example":"John Doe"},"organizationId":{"type":"integer","description":"Organization ID","format":"int64","example":1},"organizationName":{"type":"string","description":"Organization name","example":"Test Organization"},"client":{"type":"string","description":"Client name","example":"Test Client"},"droneId":{"type":"integer","description":"Drone ID","format":"int64","example":1},"droneModel":{"type":"string","description":"Drone model","example":"DJI Mavic"},"droneType":{"type":"string","description":"Drone type","example":"Multirotor"},"droneName":{"type":"string","description":"Drone name","example":"Drone-001"},"droneWeight":{"type":"number","description":"Drone weight in kg","format":"double","example":2.5},"missionDescription":{"type":"string","description":"Mission description","example":"Survey mission"},"processingType":{"type":"string","description":"Processing type","example":"SEGMENTS","enum":["SEGMENTS","CIRCLE","CUSTOM_CIRCLE","CUSTOM_POLYGON"]},"creationDate":{"type":"string","description":"Creation date","format":"date-time","example":"2024-01-15T09:00:00Z"},"uspaceId":{"type":"integer","description":"USpace ID","format":"int64","example":1},"uspaceName":{"type":"string","description":"USpace name","example":"Central Park USpace"},"uspaceCode":{"type":"string","description":"USpace code","example":"CP001"},"intersectingUspaceIds":{"type":"array","description":"USpace ids whose boundaries the flight plan intersects (G-Space)","items":{"type":"integer","description":"USpace ids whose boundaries the flight plan intersects (G-Space)","format":"int64"}}},"description":"Flight authorization list item"},"FlightAuthListResponseDTO":{"type":"object","properties":{"flightAuthorizations":{"$ref":"#/components/schemas/PageDTOFlightAuthListDTO"},"statusStatistics":{"type":"object","additionalProperties":{"type":"integer","description":"Statistics of flight authorizations per status","format":"int64"},"description":"Statistics of flight authorizations per status"}},"description":"Flight authorization list response with statistics"},"PageDTOFlightAuthListDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/FlightAuthListDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response"},"ActiveFlightAuthorizationResponseDTO":{"type":"object","properties":{"flightAuthorizationId":{"type":"string","format":"uuid"},"status":{"type":"string"}}},"PageDTOFaGeoZoneDTO":{"type":"object","properties":{"content":{"type":"array","description":"List of items","items":{"$ref":"#/components/schemas/FaGeoZoneDTO"}},"page":{"type":"integer","description":"Current page number (0-based)","format":"int32","example":0},"size":{"type":"integer","description":"Number of items per page","format":"int32","example":10},"totalElements":{"type":"integer","description":"Total number of elements across all pages","format":"int64","example":25},"totalPages":{"type":"integer","description":"Total number of pages","format":"int32","example":3},"first":{"type":"boolean","description":"Whether this is the first page","example":true},"last":{"type":"boolean","description":"Whether this is the last page","example":false},"empty":{"type":"boolean","description":"Whether the page is empty","example":false}},"description":"Paginated response"},"FaGeoZoneControllerDTO":{"type":"object","properties":{"userId":{"type":"integer","format":"int64"},"userName":{"type":"string"},"userEmail":{"type":"string"},"organizationId":{"type":"integer","format":"int64"},"organizationName":{"type":"string"}}},"Height":{"required":["distance"],"type":"object","properties":{"distance":{"type":"number","description":"Distance above reference datum.  This value is provided in meters and must have a minimum resolution of 1 meter.  Invalid, No Value or Unknown is -1000 m.","format":"float"}}},"Position":{"required":["accuracy_h","accuracy_v","altitude_hae","lat","lng"],"type":"object","properties":{"lat":{"maximum":90,"exclusiveMaximum":false,"minimum":-90,"exclusiveMinimum":false,"type":"number","description":"Degrees of latitude north of the equator, with reference to the WGS84 ellipsoid.  Invalid, No Value, or Unknown is 0 degrees (both Lat/Lon).","format":"double","example":34.123},"lng":{"maximum":180,"exclusiveMaximum":false,"minimum":-180,"exclusiveMinimum":false,"type":"number","description":"Degrees of longitude east of the Prime Meridian, with reference to the WGS84 ellipsoid.  Invalid, No Value, or Unknown is 0 degrees (both Lat/Lon).","format":"double","example":-118.456},"altitude_hae":{"maximum":20000,"exclusiveMaximum":false,"minimum":-1000,"exclusiveMinimum":false,"type":"number","description":"Geodetic altitude (HAE - Height Above Ellipsoid): aircraft distance above the WGS84 ellipsoid as measured along a line that passes through the aircraft and is normal to the surface of the WGS84 ellipsoid.  This value is provided in meters and must have a minimum resolution of 1 meter.  Invalid, No Value or Unknown is -1000 m.","format":"float","example":1321.0},"accuracy_h":{"type":"string","enum":["HAUnknown","HA10NMPlus","HA10NM","HA4NM","HA2NM","HA1NM","HA05NM","HA03NM","HA01NM","HA005NM","HA30m","HA10m","HA3m","HA1m"]},"accuracy_v":{"type":"string","enum":["VAUnknown","VA150mPlus","VA150m","VA45m","VA25m","VA10m","VA3m","VA1m"]},"pressure_altitude":{"type":"number","description":"The uncorrected altitude (based on reference standard 29.92 inHg, 1013.25 mb) provides a reference for algorithms that utilize \"altitude deltas\" between aircraft.  This value is provided in meters and must have a minimum resolution of 1 meter.  Omitted or null when not reported; legacy invalid/unknown marker -1000 m may still appear.","format":"float"},"altitude_amsl":{"type":"number","description":"Altitude Above Mean Sea Level (AMSL) in meters. This value is calculated from HAE (Height Above Ellipsoid) by subtracting geoid undulation. This value is provided in meters and must have a minimum resolution of 1 meter. Invalid, No Value or Unknown is null.","format":"float"},"height_above_takeoff":{"$ref":"#/components/schemas/Height"},"height_above_ground_level":{"$ref":"#/components/schemas/Height"}},"description":"Position information of the aircraft"},"TrafficGeoWindowResponse":{"type":"object","properties":{"records":{"type":"array","description":"Traffic records in the requested geographic window","items":{"$ref":"#/components/schemas/TrafficRecord"}},"realtime":{"$ref":"#/components/schemas/RealtimeMapSubscriptions"}},"description":"Traffic snapshot for a map viewport with MQTT subscription plan for realtime updates"},"TrafficRecord":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the traffic record","format":"uuid","example":"123e4567-e89b-12d3-a456-426614174000"},"uas":{"$ref":"#/components/schemas/UAS"},"ts":{"$ref":"#/components/schemas/Time"},"ts_accuracy":{"type":"number","description":"Timestamp accuracy in seconds","format":"float"},"status":{"type":"string","description":"Status of the aircraft","enum":["Undeclared","Ground","Airborne","Emergency","RemoteIDSystemFailure"]},"position":{"$ref":"#/components/schemas/Position"},"track":{"type":"number","description":"Track angle in degrees","format":"float","example":180.5},"speed_acc":{"type":"string","description":"Speed accuracy classification","enum":["SAUnknown","SA10mpsPlus","SA10mps","SA3mps","SA1mps","SA03mps"]},"speed_ms":{"type":"number","description":"Speed in meters per second","format":"float","example":25.5},"vertical_speed":{"type":"number","description":"Vertical speed in meters per second","format":"float","example":2.1},"ts_last_msg":{"$ref":"#/components/schemas/Time"},"icao_hex":{"type":"string","description":"ICAO 24-bit address in hexadecimal format","example":"ABCD12"},"callsign":{"type":"string","description":"Aircraft callsign","example":"ABC123"},"source":{"type":"string","description":"Source of the traffic data","example":"ADS-B"},"speed_knots":{"type":"number","description":"Speed in knots","format":"float","example":50.2},"category":{"type":"string","description":"Aircraft category classification","enum":["A0","A1","A2","A3","A4","A5","A6","A7","B0","B1","B2","B3","B4","B5","B6","B7","C0","C1","C2","C3","C4","C5","C6","C7"]},"alt_diff_geo_baro_ft":{"type":"number","description":"Altitude difference between geometric and barometric in feet","format":"float","example":100.5},"heading":{"type":"number","description":"Heading in degrees","format":"float","example":270.0},"squawk":{"type":"integer","description":"Squawk code","format":"int32","example":7500},"dist_from_receiver":{"type":"number","description":"Distance from receiver in meters","format":"float","example":1500.0},"record_age_s":{"type":"integer","description":"Age of the record in seconds","format":"int64","example":5},"beacon_type":{"type":"string","description":"Original type from source (e.g. SafeSky: UAV, HELICOPTER, JET, STATIC_OBJECT). Used for icon and label."},"volume_geometry":{"type":"object","description":"Optional GeoJSON Polygon/MultiPolygon for STATIC_OBJECT. Map draws this shape instead of a circle."},"remarks":{"type":"string","description":"Free text note (e.g. operation area purpose). From SafeSky remarks."},"upper_limit_agl":{"type":"number","description":"Upper altitude limit for operation volume (m AGL). From SafeSky max_altitude when present.","format":"float"},"lower_limit_agl":{"type":"number","description":"Lower altitude limit for operation volume (m AGL). From SafeSky min_altitude when present.","format":"float"}},"description":"Traffic records in the requested geographic window"},"UAS":{"type":"object","properties":{"ua_type":{"type":"string","description":"Type of unmanned aircraft","enum":["NotDeclared","Aeroplane","Helicopter","Gyroplane","HybridLift","Ornithopter","Glider","Kite","FreeBalloon","CaptiveBalloon","Airship","FreeFallOrParachute","Rocket","TetheredPoweredAircraft","GroundObstacle","Other"]},"uas_id":{"$ref":"#/components/schemas/UASID"},"eu_classification":{"$ref":"#/components/schemas/UAClassificationEU"}},"description":"Unmanned aircraft system information"},"DeletePilotsDTO":{"required":["pilotIds"],"type":"object","properties":{"pilotIds":{"type":"array","items":{"type":"integer","format":"int64"}}}},"DeleteOrganizationsDTO":{"required":["organizationIds"],"type":"object","properties":{"organizationIds":{"type":"array","items":{"type":"integer","format":"int64"}}}},"DeleteFlightManagersDTO":{"required":["flightManagerIds"],"type":"object","properties":{"flightManagerIds":{"type":"array","items":{"type":"integer","format":"int64"}}}},"DeleteFlightManagersByEmailDTO":{"required":["emails"],"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"}}}}},"securitySchemes":{"default":{"type":"apiKey","name":"x-auth-token","in":"header"}}}}