{"openapi":"3.1.0","info":{"title":"Речная навигационная платформа","description":"Единая платформа данных внутренних водных путей и водной маршрутизации.","version":"0.23.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Health Health Get"}}}}}}},"/api/v1/auth/register":{"post":{"summary":"Register Account","operationId":"register_account_api_v1_auth_register_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountRegistration"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Register Account Api V1 Auth Register Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/login":{"post":{"summary":"Login Account","operationId":"login_account_api_v1_auth_login_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountLogin"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Login Account Api V1 Auth Login Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/auth/logout":{"post":{"summary":"Logout Account","operationId":"logout_account_api_v1_auth_logout_post","responses":{"204":{"description":"Successful Response"}}}},"/api/v1/auth/me":{"get":{"summary":"Current Account","operationId":"current_account_api_v1_auth_me_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Current Account Api V1 Auth Me Get"}}}}}}},"/api/v1/me/workspace-preferences":{"patch":{"summary":"Update Workspace Preferences","description":"Persist only the authenticated user's layout and display choices.","operationId":"update_workspace_preferences_api_v1_me_workspace_preferences_patch","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkspacePreferencesUpdate"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Update Workspace Preferences Api V1 Me Workspace Preferences Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/live-presence":{"post":{"summary":"Publish Live Presence","description":"Publish a current position to Redis only; it expires without a historical record.","operationId":"publish_live_presence_api_v1_me_live_presence_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LivePresencePing"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Publish Live Presence Api V1 Me Live Presence Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Stop Live Presence","description":"Immediately remove the user's current public point and temporary trail.","operationId":"stop_live_presence_api_v1_me_live_presence_delete","responses":{"204":{"description":"Successful Response"}}}},"/api/v1/live-presence/nearby":{"get":{"summary":"Nearby Live Presence","description":"Return only active opted-in platform participants near the requested map position.","operationId":"nearby_live_presence_api_v1_live_presence_nearby_get","parameters":[{"name":"latitude","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Latitude"}},{"name":"longitude","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Longitude"}},{"name":"radius_nm","in":"query","required":false,"schema":{"type":"number","maximum":30,"minimum":0.25,"default":6,"title":"Radius Nm"}},{"name":"tail_nm","in":"query","required":false,"schema":{"type":"number","maximum":3,"minimum":0,"default":1,"title":"Tail Nm"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Nearby Live Presence Api V1 Live Presence Nearby Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/reputation":{"get":{"summary":"Current Reputation","operationId":"current_reputation_api_v1_me_reputation_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Current Reputation Api V1 Me Reputation Get"}}}}}}},"/api/v1/me/vessels":{"post":{"summary":"Create Vessel Profile","operationId":"create_vessel_profile_api_v1_me_vessels_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VesselProfileCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Vessel Profile Api V1 Me Vessels Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/vessels/{vessel_id}":{"patch":{"summary":"Update Vessel Profile","operationId":"update_vessel_profile_api_v1_me_vessels__vessel_id__patch","parameters":[{"name":"vessel_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Vessel Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VesselProfileUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Update Vessel Profile Api V1 Me Vessels  Vessel Id  Patch"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hardware/catalog":{"get":{"summary":"Hardware Catalog","operationId":"hardware_catalog_api_v1_hardware_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Hardware Catalog Api V1 Hardware Catalog Get"}}}}}}},"/api/v1/hardware/packs":{"get":{"summary":"Hardware Configuration Packs","operationId":"hardware_configuration_packs_api_v1_hardware_packs_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Hardware Configuration Packs Api V1 Hardware Packs Get"}}}}}}},"/api/v1/me/devices":{"get":{"summary":"My Hardware Devices","operationId":"my_hardware_devices_api_v1_me_devices_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response My Hardware Devices Api V1 Me Devices Get"}}}}}},"post":{"summary":"Declare Hardware Device","operationId":"declare_hardware_device_api_v1_me_devices_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HardwareDeviceCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Declare Hardware Device Api V1 Me Devices Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/onboard-bridges":{"post":{"summary":"Create Onboard Bridge","operationId":"create_onboard_bridge_api_v1_me_onboard_bridges_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardBridgeCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Onboard Bridge Api V1 Me Onboard Bridges Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bridge/devices/announce":{"post":{"summary":"Announce Bridge Device","operationId":"announce_bridge_device_api_v1_bridge_devices_announce_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeDeviceAnnouncement"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Announce Bridge Device Api V1 Bridge Devices Announce Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bridge/devices/{device_identifier}/telemetry":{"post":{"summary":"Ingest Bridge Telemetry","operationId":"ingest_bridge_telemetry_api_v1_bridge_devices__device_identifier__telemetry_post","parameters":[{"name":"device_identifier","in":"path","required":true,"schema":{"type":"string","title":"Device Identifier"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BridgeTelemetryUpdate"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Ingest Bridge Telemetry Api V1 Bridge Devices  Device Identifier  Telemetry Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/me/hardware/recommendations":{"get":{"summary":"Automatic Hardware Recommendations","operationId":"automatic_hardware_recommendations_api_v1_me_hardware_recommendations_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Automatic Hardware Recommendations Api V1 Me Hardware Recommendations Get"}}}}}}},"/api/v1/product-charter":{"get":{"summary":"Product Charter","description":"Return the stable product direction and implementation gaps.","operationId":"product_charter_api_v1_product_charter_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Product Charter Api V1 Product Charter Get"}}}}}}},"/api/v1/regulations/status":{"get":{"summary":"Regulations Status","description":"Coverage and safety state for the autonomous rule monitor.","operationId":"regulations_status_api_v1_regulations_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Regulations Status Api V1 Regulations Status Get"}}}}}}},"/api/v1/regulations":{"get":{"summary":"Regulations","operationId":"regulations_api_v1_regulations_get","parameters":[{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(active|upcoming|review)$"},{"type":"null"}],"title":"Status"}},{"name":"domain","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Domain"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Regulations Api V1 Regulations Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/vessel-profile/schema":{"get":{"summary":"Vessel Profile Schema","description":"Describe ownership and required vessel data without exposing user records.","operationId":"vessel_profile_schema_api_v1_vessel_profile_schema_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Vessel Profile Schema Api V1 Vessel Profile Schema Get"}}}}}}},"/api/v1/official-layers/catalog":{"get":{"summary":"Official Layers Catalog","description":"Return the required providers, layer types and verification gates.","operationId":"official_layers_catalog_api_v1_official_layers_catalog_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Official Layers Catalog Api V1 Official Layers Catalog Get"}}}}}}},"/api/v1/official-layers/status":{"get":{"summary":"Official Layers Status","operationId":"official_layers_status_api_v1_official_layers_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Official Layers Status Api V1 Official Layers Status Get"}}}}}}},"/api/v1/official-layers/water-registry":{"get":{"summary":"Water Registry Layer","operationId":"water_registry_layer_api_v1_official_layers_water_registry_get","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"region","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Region"}},{"name":"changes_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Changes Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":3000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Water Registry Layer Api V1 Official Layers Water Registry Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/status":{"get":{"summary":"Status","operationId":"status_api_v1_status_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StatusResponse"}}}}}}},"/api/v1/sources":{"get":{"summary":"Sources","operationId":"sources_api_v1_sources_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/SourceOut"},"title":"Response Sources Api V1 Sources Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/source-registry":{"get":{"summary":"Source Registry","operationId":"source_registry_api_v1_source_registry_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Source Registry Api V1 Source Registry Get"}}}}}}},"/api/v1/data-channels":{"get":{"summary":"Data Channels","operationId":"data_channels_api_v1_data_channels_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Data Channels Api V1 Data Channels Get"}}}}}}},"/api/v1/source-endpoints":{"get":{"summary":"Source Endpoints","operationId":"source_endpoints_api_v1_source_endpoints_get","parameters":[{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Id"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"endpoint_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Endpoint Type"}},{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Source Endpoints Api V1 Source Endpoints Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/documents":{"get":{"summary":"Documents","operationId":"documents_api_v1_documents_get","parameters":[{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"}},{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/DocumentOut"},"title":"Response Documents Api V1 Documents Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bulletins":{"get":{"summary":"Bulletins","operationId":"bulletins_api_v1_bulletins_get","parameters":[{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":1000,"minimum":1,"default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Bulletins Api V1 Bulletins Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/water-levels":{"get":{"summary":"Water Levels","operationId":"water_levels_api_v1_water_levels_get","parameters":[{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"}},{"name":"document_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Document Id"}},{"name":"latest_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Latest Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Water Levels Api V1 Water Levels Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/fairway-dimensions":{"get":{"summary":"Fairway Dimensions","operationId":"fairway_dimensions_api_v1_fairway_dimensions_get","parameters":[{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"}},{"name":"document_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Document Id"}},{"name":"latest_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Latest Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Fairway Dimensions Api V1 Fairway Dimensions Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/bridge-clearances":{"get":{"summary":"Bridge Clearances","description":"Officially extracted per-span vertical clearances, with provenance.","operationId":"bridge_clearances_api_v1_bridge_clearances_get","parameters":[{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"}},{"name":"document_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Document Id"}},{"name":"latest_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Latest Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Bridge Clearances Api V1 Bridge Clearances Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/notices":{"get":{"summary":"Notices","operationId":"notices_api_v1_notices_get","parameters":[{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"}},{"name":"document_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Document Id"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Type"}},{"name":"latest_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Latest Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Notices Api V1 Notices Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/documents/{document_id}/content":{"get":{"summary":"Document Content","operationId":"document_content_api_v1_documents__document_id__content_get","parameters":[{"name":"document_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Document Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/open-nautical/viewport":{"post":{"summary":"Collect Open Nautical Viewport","operationId":"collect_open_nautical_viewport_api_v1_open_nautical_viewport_post","parameters":[{"name":"bbox","in":"query","required":true,"schema":{"type":"string","title":"Bbox"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Collect Open Nautical Viewport Api V1 Open Nautical Viewport Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/historical-atlas/sheets":{"get":{"summary":"Historical Atlas Sheets","description":"Return historical chart-sheet coverage without treating it as live navigation data.\n\nThe layer is deliberately separate from active navigation objects.  It is a\nreview/reference overlay: a sheet can be inspected by edition year and\nprovenance, but cannot alter routing or current warnings.","operationId":"historical_atlas_sheets_api_v1_historical_atlas_sheets_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":1900},{"type":"null"}],"title":"Year"}},{"name":"include_undated","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Undated"}},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Historical Atlas Sheets Api V1 Historical Atlas Sheets Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/historical-atlas/features":{"get":{"summary":"Historical Atlas Features","description":"Return geometry extracted directly from supplied Ozi historical files.\n\nThis is deliberately a separate evidence layer.  It lets the map display\nsupplied buoy/waypoint and track geometry without presenting either as a\ncurrent navigational aid or a routing constraint.","operationId":"historical_atlas_features_api_v1_historical_atlas_features_get","parameters":[{"name":"kind","in":"query","required":true,"schema":{"type":"string","pattern":"^(waypoints|tracks)$","title":"Kind"}},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":25000,"minimum":1,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Historical Atlas Features Api V1 Historical Atlas Features Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/historical-atlas/labels":{"get":{"summary":"Historical Atlas Labels","description":"Return OCR labels geographically approximated inside calibrated historical sheets.","operationId":"historical_atlas_labels_api_v1_historical_atlas_labels_get","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Historical Atlas Labels Api V1 Historical Atlas Labels Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/map/objects":{"get":{"summary":"Navigation Objects","operationId":"navigation_objects_api_v1_map_objects_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"object_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"}},{"name":"official_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Official Only"}},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Objects Api V1 Map Objects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/navigation-objects":{"get":{"summary":"Navigation Objects","operationId":"navigation_objects_api_v1_navigation_objects_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"object_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Object Type"}},{"name":"official_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Official Only"}},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":20000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Objects Api V1 Navigation Objects Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/map/objects/{navigation_object_id}":{"get":{"summary":"Navigation Object By Id","description":"Return one active object for a durable, shareable map link.","operationId":"navigation_object_by_id_api_v1_map_objects__navigation_object_id__get","parameters":[{"name":"navigation_object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Navigation Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Object By Id Api V1 Map Objects  Navigation Object Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/navigation-objects/{navigation_object_id}":{"get":{"summary":"Navigation Object By Id","description":"Return one active object for a durable, shareable map link.","operationId":"navigation_object_by_id_api_v1_navigation_objects__navigation_object_id__get","parameters":[{"name":"navigation_object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Navigation Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Object By Id Api V1 Navigation Objects  Navigation Object Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/navigation-aids/coverage":{"get":{"summary":"Navigation Aid Coverage","operationId":"navigation_aid_coverage_api_v1_navigation_aids_coverage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Navigation Aid Coverage Api V1 Navigation Aids Coverage Get"}}}}}}},"/api/v1/navigation-aids/evidence/statistics":{"get":{"summary":"Navigation Aid Evidence Statistics","operationId":"navigation_aid_evidence_statistics_api_v1_navigation_aids_evidence_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Navigation Aid Evidence Statistics Api V1 Navigation Aids Evidence Statistics Get"}}}}}}},"/api/v1/navigation-aids/evidence":{"get":{"summary":"Navigation Aid Evidence","operationId":"navigation_aid_evidence_api_v1_navigation_aids_evidence_get","parameters":[{"name":"navigation_aid_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Navigation Aid Id"}},{"name":"document_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Document Id"}},{"name":"action","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Action"}},{"name":"verification_status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Verification Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Aid Evidence Api V1 Navigation Aids Evidence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/map/navigation-aid-evidence":{"get":{"summary":"Navigation Aid Evidence Map","description":"Map only evidence with a verified position or a controlled linked candidate.","operationId":"navigation_aid_evidence_map_api_v1_map_navigation_aid_evidence_get","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Aid Evidence Map Api V1 Map Navigation Aid Evidence Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/waterway-kilometer/statistics":{"get":{"summary":"Waterway Kilometer Statistics","operationId":"waterway_kilometer_statistics_api_v1_waterway_kilometer_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Waterway Kilometer Statistics Api V1 Waterway Kilometer Statistics Get"}}}}}}},"/api/v1/waterway-kilometer/anchors":{"get":{"summary":"Waterway Kilometer Anchors","operationId":"waterway_kilometer_anchors_api_v1_waterway_kilometer_anchors_get","parameters":[{"name":"waterway_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Waterway Name"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Waterway Kilometer Anchors Api V1 Waterway Kilometer Anchors Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/waterway-kilometer/anchors/export.csv":{"get":{"summary":"Waterway Kilometer Anchors Csv","operationId":"waterway_kilometer_anchors_csv_api_v1_waterway_kilometer_anchors_export_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/navigation-aids/evidence/export.csv":{"get":{"summary":"Navigation Aid Evidence Csv","operationId":"navigation_aid_evidence_csv_api_v1_navigation_aids_evidence_export_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/navigation-aids/export.csv":{"get":{"summary":"Navigation Aids Csv","operationId":"navigation_aids_csv_api_v1_navigation_aids_export_csv_get","parameters":[{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"official_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Official Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/navigation-aids/{navigation_aid_id}":{"get":{"summary":"Navigation Aid Passport","operationId":"navigation_aid_passport_api_v1_navigation_aids__navigation_aid_id__get","parameters":[{"name":"navigation_aid_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Navigation Aid Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Aid Passport Api V1 Navigation Aids  Navigation Aid Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/water-services/export.csv":{"get":{"summary":"Water Services Csv","operationId":"water_services_csv_api_v1_water_services_export_csv_get","parameters":[{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Types"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/water-services":{"get":{"summary":"Water Services","operationId":"water_services_api_v1_water_services_get","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Types"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Water Services Api V1 Water Services Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/harbours/export.csv":{"get":{"summary":"Harbour Facilities Csv","operationId":"harbour_facilities_csv_api_v1_harbours_export_csv_get","parameters":[{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Types"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/harbours/statistics":{"get":{"summary":"Harbour Facility Statistics","operationId":"harbour_facility_statistics_api_v1_harbours_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Harbour Facility Statistics Api V1 Harbours Statistics Get"}}}}}}},"/api/v1/harbours":{"get":{"summary":"Harbour Facilities","operationId":"harbour_facilities_api_v1_harbours_get","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"types","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Types"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":1,"default":5000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Harbour Facilities Api V1 Harbours Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/harbours/navigation-object/{navigation_object_id}":{"get":{"summary":"Harbour By Navigation Object","operationId":"harbour_by_navigation_object_api_v1_harbours_navigation_object__navigation_object_id__get","parameters":[{"name":"navigation_object_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Navigation Object Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Harbour By Navigation Object Api V1 Harbours Navigation Object  Navigation Object Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/harbours/{harbour_id}":{"get":{"summary":"Harbour By Id","operationId":"harbour_by_id_api_v1_harbours__harbour_id__get","parameters":[{"name":"harbour_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Harbour Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Harbour By Id Api V1 Harbours  Harbour Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locks/registry":{"get":{"summary":"Lock Registry","operationId":"lock_registry_api_v1_locks_registry_get","parameters":[{"name":"basin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basin"}},{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2200,"minimum":2000},{"type":"null"}],"title":"Navigation Year"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"geolocated","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Geolocated"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Lock Registry Api V1 Locks Registry Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locks/export.csv":{"get":{"summary":"Lock Registry Csv","operationId":"lock_registry_csv_api_v1_locks_export_csv_get","parameters":[{"name":"basin","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Basin"}},{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2200,"minimum":2000},{"type":"null"}],"title":"Navigation Year"}},{"name":"q","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Q"}},{"name":"geolocated","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Geolocated"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locks/statistics":{"get":{"summary":"Lock Statistics","operationId":"lock_statistics_api_v1_locks_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Lock Statistics Api V1 Locks Statistics Get"}}}}}}},"/api/v1/source-change-statistics":{"get":{"summary":"Source Change Statistics","operationId":"source_change_statistics_api_v1_source_change_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Response Source Change Statistics Api V1 Source Change Statistics Get"}}}}}}},"/api/v1/locks/{lock_id}/comments":{"get":{"summary":"Lock Comments","operationId":"lock_comments_api_v1_locks__lock_id__comments_get","parameters":[{"name":"lock_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lock Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Lock Comments Api V1 Locks  Lock Id  Comments Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"summary":"Create Lock Comment","operationId":"create_lock_comment_api_v1_locks__lock_id__comments_post","parameters":[{"name":"lock_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lock Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LockCommentCreate"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Create Lock Comment Api V1 Locks  Lock Id  Comments Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locks":{"get":{"summary":"Locks","operationId":"locks_api_v1_locks_get","parameters":[{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Locks Api V1 Locks Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locks/nearest":{"get":{"summary":"Nearest Lock","operationId":"nearest_lock_api_v1_locks_nearest_get","parameters":[{"name":"latitude","in":"query","required":true,"schema":{"type":"number","maximum":90,"minimum":-90,"title":"Latitude"}},{"name":"longitude","in":"query","required":true,"schema":{"type":"number","maximum":180,"minimum":-180,"title":"Longitude"}},{"name":"max_distance_m","in":"query","required":false,"schema":{"type":"number","maximum":50000,"minimum":10,"default":3000,"title":"Max Distance M"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Nearest Lock Api V1 Locks Nearest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/locks/{lock_id}":{"get":{"summary":"Lock Detail","operationId":"lock_detail_api_v1_locks__lock_id__get","parameters":[{"name":"lock_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Lock Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Lock Detail Api V1 Locks  Lock Id  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hydrography/years":{"get":{"summary":"Hydrography Years","operationId":"hydrography_years_api_v1_hydrography_years_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Hydrography Years Api V1 Hydrography Years Get"}}}}}}},"/api/v1/map/hydrography":{"get":{"summary":"Hydrography Map","operationId":"hydrography_map_api_v1_map_hydrography_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"}},{"name":"bbox","in":"query","required":true,"schema":{"type":"string","title":"Bbox"}},{"name":"types","in":"query","required":false,"schema":{"type":"string","default":"river,canal","title":"Types"}},{"name":"zoom","in":"query","required":false,"schema":{"type":"integer","maximum":18,"minimum":5,"default":8,"title":"Zoom"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":50000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hydrography Map Api V1 Map Hydrography Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hydrography/tiles/{year}/{z}/{x}/{y}.mvt":{"get":{"summary":"Hydrography Tile","operationId":"hydrography_tile_api_v1_hydrography_tiles__year___z___x___y__mvt_get","parameters":[{"name":"year","in":"path","required":true,"schema":{"type":"integer","title":"Year"}},{"name":"z","in":"path","required":true,"schema":{"type":"integer","title":"Z"}},{"name":"x","in":"path","required":true,"schema":{"type":"integer","title":"X"}},{"name":"y","in":"path","required":true,"schema":{"type":"integer","title":"Y"}},{"name":"types","in":"query","required":false,"schema":{"type":"string","default":"river,canal","title":"Types"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/hydrography/offline-manifest":{"get":{"summary":"Hydrography Offline Manifest","operationId":"hydrography_offline_manifest_api_v1_hydrography_offline_manifest_get","parameters":[{"name":"year","in":"query","required":true,"schema":{"type":"integer","title":"Year"}},{"name":"bbox","in":"query","required":true,"schema":{"type":"string","title":"Bbox"}},{"name":"min_zoom","in":"query","required":false,"schema":{"type":"integer","maximum":16,"minimum":5,"default":5,"title":"Min Zoom"}},{"name":"max_zoom","in":"query","required":false,"schema":{"type":"integer","maximum":16,"minimum":5,"default":12,"title":"Max Zoom"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hydrography Offline Manifest Api V1 Hydrography Offline Manifest Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/map/hydrography/compare":{"get":{"summary":"Hydrography Compare","operationId":"hydrography_compare_api_v1_map_hydrography_compare_get","parameters":[{"name":"from_year","in":"query","required":true,"schema":{"type":"integer","title":"From Year"}},{"name":"to_year","in":"query","required":true,"schema":{"type":"integer","title":"To Year"}},{"name":"bbox","in":"query","required":true,"schema":{"type":"string","title":"Bbox"}},{"name":"types","in":"query","required":false,"schema":{"type":"string","default":"river,stream,canal","title":"Types"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100000,"minimum":1,"default":50000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Hydrography Compare Api V1 Map Hydrography Compare Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/map/waterways":{"get":{"summary":"Waterways","operationId":"waterways_api_v1_map_waterways_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"official_only","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Official Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50000,"minimum":1,"default":10000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Waterways Api V1 Map Waterways Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/review/geolocation-queue":{"get":{"summary":"Geolocation Review Queue","description":"Traceable review list for facts that are real but cannot yet be placed honestly.","operationId":"geolocation_review_queue_api_v1_review_geolocation_queue_get","parameters":[{"name":"source_id","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Source Id"}},{"name":"waterway","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Waterway"}},{"name":"district","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"District"}},{"name":"navigation_year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":2100,"minimum":2000},{"type":"null"}],"default":2026,"title":"Navigation Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Geolocation Review Queue Api V1 Review Geolocation Queue Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/review/missing-navigation-references":{"get":{"summary":"Missing Navigation References","description":"References to charts/atlases found in documents but not linked to our library.","operationId":"missing_navigation_references_api_v1_review_missing_navigation_references_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"type":"integer","maximum":2100,"minimum":2000,"default":2026,"title":"Year"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Missing Navigation References Api V1 Review Missing Navigation References Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/navigation-events":{"get":{"summary":"Navigation Events","operationId":"navigation_events_api_v1_navigation_events_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"active_at","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active At"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Navigation Events Api V1 Navigation Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/map/events":{"get":{"summary":"Navigation Event Map","operationId":"navigation_event_map_api_v1_map_events_get","parameters":[{"name":"year","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Year"}},{"name":"active_at","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active At"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"bbox","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bbox"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Navigation Event Map Api V1 Map Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/changes":{"get":{"summary":"Changes","operationId":"changes_api_v1_changes_get","parameters":[{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Since"}},{"name":"entity_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entity Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":500,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Changes Api V1 Changes Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/weather":{"get":{"summary":"Weather","operationId":"weather_api_v1_weather_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":5000,"minimum":1,"default":200,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"type":"object","additionalProperties":true},"title":"Response Weather Api V1 Weather Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/official-waterways/statistics":{"get":{"summary":"Official Waterway Statistics","operationId":"official_waterway_statistics_api_v1_official_waterways_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Official Waterway Statistics Api V1 Official Waterways Statistics Get"}}}}}}},"/api/v1/official-waterways":{"get":{"summary":"Official Waterways Registry","operationId":"official_waterways_registry_api_v1_official_waterways_get","parameters":[{"name":"significance","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Significance"}},{"name":"active_only","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Active Only"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":1,"default":1000,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Official Waterways Registry Api V1 Official Waterways Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/official-waterways/export.csv":{"get":{"summary":"Export Official Waterways Csv","operationId":"export_official_waterways_csv_api_v1_official_waterways_export_csv_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/api/v1/navigation-graph/statistics":{"get":{"summary":"Navigation Graph Statistics","operationId":"navigation_graph_statistics_api_v1_navigation_graph_statistics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Navigation Graph Statistics Api V1 Navigation Graph Statistics Get"}}}}}}},"/api/v1/routes":{"post":{"summary":"Route","operationId":"route_api_v1_routes_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/routes/{route_id}/briefing":{"get":{"summary":"Active Route Briefing","operationId":"active_route_briefing_api_v1_routes__route_id__briefing_get","parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Route Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RouteBriefing"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/routes/{route_id}/stream":{"get":{"summary":"Active Route Stream","operationId":"active_route_stream_api_v1_routes__route_id__stream_get","parameters":[{"name":"route_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Route Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/api/v1/user-reports":{"post":{"summary":"Create User Report","operationId":"create_user_report_api_v1_user_reports_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserReportCreate"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserReportCreated"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AccountLogin":{"properties":{"login_or_email":{"type":"string","maxLength":254,"minLength":3,"title":"Login Or Email"},"password":{"type":"string","maxLength":200,"minLength":1,"title":"Password"}},"type":"object","required":["login_or_email","password"],"title":"AccountLogin"},"AccountRegistration":{"properties":{"login":{"type":"string","maxLength":64,"minLength":3,"pattern":"^[a-zA-Z0-9_.-]+$","title":"Login"},"full_name":{"type":"string","maxLength":240,"minLength":2,"title":"Full Name"},"phone":{"type":"string","maxLength":32,"minLength":7,"title":"Phone"},"email":{"type":"string","maxLength":254,"minLength":5,"title":"Email"},"password":{"type":"string","maxLength":200,"minLength":12,"title":"Password"}},"type":"object","required":["login","full_name","phone","email","password"],"title":"AccountRegistration"},"BridgeDeviceAnnouncement":{"properties":{"device_identifier":{"type":"string","maxLength":240,"minLength":1,"title":"Device Identifier"},"display_name":{"type":"string","maxLength":160,"minLength":1,"title":"Display Name"},"hardware_type":{"type":"string","maxLength":80,"minLength":2,"title":"Hardware Type"},"connection_type":{"type":"string","maxLength":50,"minLength":2,"title":"Connection Type"},"catalog_external_key":{"anyOf":[{"type":"string","maxLength":180},{"type":"null"}],"title":"Catalog External Key"},"detected_capabilities":{"additionalProperties":true,"type":"object","title":"Detected Capabilities"},"connection_config":{"additionalProperties":true,"type":"object","title":"Connection Config"}},"type":"object","required":["device_identifier","display_name","hardware_type","connection_type"],"title":"BridgeDeviceAnnouncement"},"BridgeTelemetryUpdate":{"properties":{"observed_at":{"type":"string","format":"date-time","title":"Observed At"},"latitude":{"anyOf":[{"type":"number","maximum":90.0,"minimum":-90.0},{"type":"null"}],"title":"Latitude"},"longitude":{"anyOf":[{"type":"number","maximum":180.0,"minimum":-180.0},{"type":"null"}],"title":"Longitude"},"metrics":{"additionalProperties":true,"type":"object","title":"Metrics"}},"type":"object","required":["observed_at"],"title":"BridgeTelemetryUpdate"},"Coordinate":{"properties":{"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude"}},"type":"object","required":["latitude","longitude"],"title":"Coordinate"},"DocumentOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"source_id":{"type":"string","format":"uuid","title":"Source Id"},"url":{"type":"string","title":"Url"},"title":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Title"},"document_number":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Document Number"},"published_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Published At"},"navigation_year":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Navigation Year"},"mime_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Mime Type"},"parsing_status":{"type":"string","title":"Parsing Status"},"created_at":{"type":"string","format":"date-time","title":"Created At"}},"type":"object","required":["id","source_id","url","title","document_number","published_at","navigation_year","mime_type","parsing_status","created_at"],"title":"DocumentOut"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HardwareDeviceCreate":{"properties":{"display_name":{"type":"string","maxLength":160,"minLength":1,"title":"Display Name"},"hardware_type":{"type":"string","maxLength":80,"minLength":2,"title":"Hardware Type"},"connection_type":{"type":"string","maxLength":50,"minLength":2,"title":"Connection Type"},"vessel_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Vessel Id"},"catalog_item_id":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}],"title":"Catalog Item Id"},"connection_config":{"additionalProperties":true,"type":"object","title":"Connection Config"}},"type":"object","required":["display_name","hardware_type","connection_type"],"title":"HardwareDeviceCreate"},"LivePresencePing":{"properties":{"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude"},"accuracy_m":{"anyOf":[{"type":"number","maximum":20000.0,"minimum":0.0},{"type":"null"}],"title":"Accuracy M"},"speed_knots":{"anyOf":[{"type":"number","maximum":120.0,"minimum":0.0},{"type":"null"}],"title":"Speed Knots"},"course_deg":{"anyOf":[{"type":"number","exclusiveMaximum":360.0,"minimum":0.0},{"type":"null"}],"title":"Course Deg"}},"type":"object","required":["latitude","longitude"],"title":"LivePresencePing","description":"Ephemeral client position. It is never written to PostgreSQL."},"LockCommentCreate":{"properties":{"display_name":{"type":"string","maxLength":120,"minLength":2,"title":"Display Name","default":"Анонимный капитан"},"body":{"type":"string","maxLength":4000,"minLength":2,"title":"Body"},"source_title":{"type":"string","maxLength":300,"minLength":2,"title":"Source Title","default":"Карта речной навигационной платформы"},"source_url":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Source Url"}},"type":"object","required":["body"],"title":"LockCommentCreate"},"OnboardBridgeCreate":{"properties":{"vessel_id":{"type":"string","format":"uuid","title":"Vessel Id"},"name":{"type":"string","maxLength":160,"minLength":1,"title":"Name"}},"type":"object","required":["vessel_id","name"],"title":"OnboardBridgeCreate"},"RouteAlert":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"event_type":{"type":"string","title":"Event Type"},"title":{"type":"string","title":"Title"},"severity":{"type":"string","title":"Severity"},"status":{"type":"string","title":"Status"},"starts_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Starts At"},"ends_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Ends At"},"distance_to_route_m":{"type":"number","title":"Distance To Route M"},"route_position":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Route Position"},"blocking":{"type":"boolean","title":"Blocking"},"location_status":{"type":"string","title":"Location Status"},"source_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Source Url"}},"type":"object","required":["id","event_type","title","severity","status","starts_at","ends_at","distance_to_route_m","blocking","location_status","source_url"],"title":"RouteAlert"},"RouteBriefing":{"properties":{"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"revision":{"type":"string","title":"Revision"},"alerts":{"items":{"$ref":"#/components/schemas/RouteAlert"},"type":"array","title":"Alerts"},"locks":{"items":{"$ref":"#/components/schemas/RouteLockNotice"},"type":"array","title":"Locks"},"blocking":{"type":"boolean","title":"Blocking","default":false},"message":{"type":"string","title":"Message"}},"type":"object","required":["generated_at","revision","message"],"title":"RouteBriefing"},"RouteLeg":{"properties":{"index":{"type":"integer","title":"Index"},"start":{"$ref":"#/components/schemas/SnappedPoint"},"end":{"$ref":"#/components/schemas/SnappedPoint"},"distance_m":{"type":"number","title":"Distance M"},"cost":{"type":"number","title":"Cost"},"edge_count":{"type":"integer","title":"Edge Count"}},"type":"object","required":["index","start","end","distance_m","cost","edge_count"],"title":"RouteLeg"},"RouteLockNotice":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"status":{"type":"string","title":"Status"},"status_text":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status Text"},"route_position":{"type":"number","title":"Route Position"},"distance_to_route_m":{"type":"number","title":"Distance To Route M"},"blocking":{"type":"boolean","title":"Blocking"},"operator_name":{"type":"string","title":"Operator Name"},"dispatcher_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dispatcher Name"},"dispatcher_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dispatcher Phone"},"office_phone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Office Phone"},"website_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Website Url"},"radio_call_sign":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Radio Call Sign"},"radio_channel":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Radio Channel"},"radio_frequency_mhz":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Radio Frequency Mhz"},"radio_hours":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Radio Hours"},"operating_hours":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Operating Hours"},"chambers":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Chambers"},"berth_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Berth Count"},"simultaneous_capacity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Simultaneous Capacity"},"useful_length_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Useful Length M"},"useful_width_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Useful Width M"},"max_draft_m":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Max Draft M"},"verification_status":{"type":"string","title":"Verification Status"},"source_urls":{"items":{"additionalProperties":true,"type":"object"},"type":"array","title":"Source Urls"},"unknown_fields":{"items":{"type":"string"},"type":"array","title":"Unknown Fields"}},"type":"object","required":["id","name","status","status_text","route_position","distance_to_route_m","blocking","operator_name","dispatcher_name","dispatcher_phone","office_phone","website_url","radio_call_sign","radio_channel","radio_frequency_mhz","radio_hours","operating_hours","chambers","berth_count","simultaneous_capacity","useful_length_m","useful_width_m","max_draft_m","verification_status"],"title":"RouteLockNotice"},"RouteRequest":{"properties":{"start":{"$ref":"#/components/schemas/Coordinate"},"end":{"$ref":"#/components/schemas/Coordinate"},"waypoints":{"items":{"$ref":"#/components/schemas/Coordinate"},"type":"array","maxItems":20,"title":"Waypoints"},"vessel":{"$ref":"#/components/schemas/VesselProfile"},"navigation_year":{"anyOf":[{"type":"integer","maximum":2200.0,"minimum":2000.0},{"type":"null"}],"title":"Navigation Year"},"official_only":{"type":"boolean","title":"Official Only","default":false},"strict_limits":{"type":"boolean","title":"Strict Limits","default":false},"min_confidence":{"type":"number","maximum":1.0,"minimum":0.0,"title":"Min Confidence","default":0.0},"max_snap_m":{"anyOf":[{"type":"number","maximum":50000.0,"minimum":10.0},{"type":"null"}],"title":"Max Snap M"}},"type":"object","required":["start","end"],"title":"RouteRequest"},"RouteResponse":{"properties":{"status":{"type":"string","const":"ok","title":"Status","default":"ok"},"route_id":{"type":"string","format":"uuid","title":"Route Id"},"distance_m":{"type":"number","title":"Distance M"},"cost":{"type":"number","title":"Cost"},"start":{"$ref":"#/components/schemas/SnappedPoint"},"end":{"$ref":"#/components/schemas/SnappedPoint"},"waypoints":{"items":{"$ref":"#/components/schemas/SnappedPoint"},"type":"array","title":"Waypoints"},"legs":{"items":{"$ref":"#/components/schemas/RouteLeg"},"type":"array","title":"Legs"},"geometry":{"additionalProperties":true,"type":"object","title":"Geometry"},"edge_count":{"type":"integer","title":"Edge Count"},"warnings":{"items":{"type":"string"},"type":"array","title":"Warnings"},"alerts":{"items":{"$ref":"#/components/schemas/RouteAlert"},"type":"array","title":"Alerts"},"briefing":{"$ref":"#/components/schemas/RouteBriefing"}},"type":"object","required":["route_id","distance_m","cost","start","end","geometry","edge_count","warnings","briefing"],"title":"RouteResponse"},"SnappedPoint":{"properties":{"node_id":{"type":"integer","title":"Node Id"},"distance_m":{"type":"number","title":"Distance M"},"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"}},"type":"object","required":["node_id","distance_m","latitude","longitude"],"title":"SnappedPoint"},"SourceOut":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"name":{"type":"string","title":"Name"},"base_url":{"type":"string","title":"Base Url"},"source_type":{"type":"string","title":"Source Type"},"country_code":{"type":"string","title":"Country Code"},"active":{"type":"boolean","title":"Active"},"official":{"type":"boolean","title":"Official"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"updated_at":{"type":"string","format":"date-time","title":"Updated At"}},"type":"object","required":["id","name","base_url","source_type","country_code","active","official","created_at","updated_at"],"title":"SourceOut"},"StatusResponse":{"properties":{"environment":{"type":"string","title":"Environment"},"version":{"type":"string","title":"Version"},"database":{"type":"string","title":"Database"},"storage":{"type":"string","title":"Storage"},"queue":{"type":"string","title":"Queue"},"extensions":{"items":{"type":"string"},"type":"array","title":"Extensions"},"counts":{"additionalProperties":{"type":"integer"},"type":"object","title":"Counts"},"latest_document_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Document At"},"latest_collection_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Latest Collection At"},"route_graph":{"additionalProperties":{"type":"integer"},"type":"object","title":"Route Graph"},"data_warning":{"type":"string","title":"Data Warning"}},"type":"object","required":["environment","version","database","storage","queue","extensions","counts","latest_document_at","latest_collection_at","route_graph","data_warning"],"title":"StatusResponse"},"UserReportCreate":{"properties":{"report_type":{"type":"string","maxLength":80,"minLength":2,"title":"Report Type"},"geometry":{"additionalProperties":true,"type":"object","title":"Geometry"},"payload":{"additionalProperties":true,"type":"object","title":"Payload"}},"type":"object","required":["report_type","geometry"],"title":"UserReportCreate"},"UserReportCreated":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"status":{"type":"string","title":"Status"}},"type":"object","required":["id","status"],"title":"UserReportCreated"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VesselProfile":{"properties":{"draft_m":{"anyOf":[{"type":"number","maximum":30.0,"minimum":0.0},{"type":"null"}],"title":"Draft M"},"height_m":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Height M"},"width_m":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Width M"},"safety_depth_m":{"type":"number","maximum":5.0,"minimum":0.0,"title":"Safety Depth M","default":0.3}},"type":"object","title":"VesselProfile"},"VesselProfileCreate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"vessel_type":{"type":"string","maxLength":40,"minLength":2,"title":"Vessel Type"},"use_type":{"type":"string","maxLength":40,"minLength":2,"title":"Use Type","default":"recreational"},"registration_status":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Registration Status"},"registration_number":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Registration Number"},"home_port":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Home Port"},"owner_name":{"anyOf":[{"type":"string","maxLength":240},{"type":"null"}],"title":"Owner Name"},"crew_count":{"anyOf":[{"type":"integer","maximum":500.0,"minimum":0.0},{"type":"null"}],"title":"Crew Count"},"length_m":{"anyOf":[{"type":"number","maximum":300.0,"minimum":0.0},{"type":"null"}],"title":"Length M"},"beam_m":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Beam M"},"draft_empty_m":{"anyOf":[{"type":"number","maximum":30.0,"minimum":0.0},{"type":"null"}],"title":"Draft Empty M"},"air_draft_m":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Air Draft M"},"safety_depth_m":{"type":"number","maximum":5.0,"minimum":0.0,"title":"Safety Depth M","default":0.3},"documents":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":20,"title":"Documents"}},"type":"object","required":["name","vessel_type"],"title":"VesselProfileCreate"},"VesselProfileUpdate":{"properties":{"name":{"type":"string","maxLength":120,"minLength":1,"title":"Name"},"vessel_type":{"type":"string","maxLength":40,"minLength":2,"title":"Vessel Type"},"use_type":{"type":"string","maxLength":40,"minLength":2,"title":"Use Type","default":"recreational"},"registration_status":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Registration Status"},"registration_number":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Registration Number"},"home_port":{"anyOf":[{"type":"string","maxLength":160},{"type":"null"}],"title":"Home Port"},"owner_name":{"anyOf":[{"type":"string","maxLength":240},{"type":"null"}],"title":"Owner Name"},"crew_count":{"anyOf":[{"type":"integer","maximum":500.0,"minimum":0.0},{"type":"null"}],"title":"Crew Count"},"length_m":{"anyOf":[{"type":"number","maximum":300.0,"minimum":0.0},{"type":"null"}],"title":"Length M"},"beam_m":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Beam M"},"draft_empty_m":{"anyOf":[{"type":"number","maximum":30.0,"minimum":0.0},{"type":"null"}],"title":"Draft Empty M"},"air_draft_m":{"anyOf":[{"type":"number","maximum":100.0,"minimum":0.0},{"type":"null"}],"title":"Air Draft M"},"safety_depth_m":{"type":"number","maximum":5.0,"minimum":0.0,"title":"Safety Depth M","default":0.3},"documents":{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":20,"title":"Documents"},"active":{"type":"boolean","title":"Active","default":true}},"type":"object","required":["name","vessel_type"],"title":"VesselProfileUpdate"},"WorkspacePreferencesUpdate":{"properties":{"theme":{"anyOf":[{"type":"string","enum":["auto","day","night"]},{"type":"null"}],"title":"Theme"},"instrument_grid":{"anyOf":[{"type":"string","enum":["compact","wide"]},{"type":"null"}],"title":"Instrument Grid"},"speed_style":{"anyOf":[{"type":"string","enum":["digital","analog"]},{"type":"null"}],"title":"Speed Style"},"instrument_visible":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Instrument Visible"},"instrument_left_px":{"anyOf":[{"type":"integer","maximum":20000.0,"minimum":0.0},{"type":"null"}],"title":"Instrument Left Px"},"instrument_top_px":{"anyOf":[{"type":"integer","maximum":20000.0,"minimum":0.0},{"type":"null"}],"title":"Instrument Top Px"},"active_screen_id":{"anyOf":[{"type":"string","maxLength":40,"minLength":1},{"type":"null"}],"title":"Active Screen Id"},"dashboard_screens":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array","maxItems":7},{"type":"null"}],"title":"Dashboard Screens"},"floating_layout":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Floating Layout"},"map_windowed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Map Windowed"},"map_left_px":{"anyOf":[{"type":"integer","maximum":20000.0,"minimum":0.0},{"type":"null"}],"title":"Map Left Px"},"map_top_px":{"anyOf":[{"type":"integer","maximum":20000.0,"minimum":0.0},{"type":"null"}],"title":"Map Top Px"},"map_width_px":{"anyOf":[{"type":"integer","maximum":20000.0,"minimum":280.0},{"type":"null"}],"title":"Map Width Px"},"map_height_px":{"anyOf":[{"type":"integer","maximum":20000.0,"minimum":220.0},{"type":"null"}],"title":"Map Height Px"},"live_presence_enabled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Live Presence Enabled"},"live_tail_nm":{"anyOf":[{"type":"string","enum":["0.5","1","3"]},{"type":"null"}],"title":"Live Tail Nm"}},"type":"object","title":"WorkspacePreferencesUpdate","description":"User-owned screen layout; never contains device secrets or telemetry."}}}}