{"openapi":"3.1.0","info":{"title":"Maio Open API","version":"1.1.0","description":"Public read-only snapshots of Maio geographic assets and dashboard datasets. No API key. WGS84 longitude/latitude. OSM-derived records retain ODbL obligations; unspecified source rights are not relicensed. Environmental records may include explicitly labeled model estimates; physical sensor registration is currently planned. Source timestamps may be unknown; revision identifies source content, not observation time. V1.1 is additive under /api/v1. New domains without source data explicitly return planned status. Place associations are explicit, not inferred from proximity. Planned datasets have payload:null; available legacy dataset payloads retain their original structure. Collection availability is independent of asset lifecycle."},"servers":[{"url":"/api/v1"}],"security":[],"paths":{"/":{"get":{"operationId":"getApi","summary":"API discovery","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetApiResponse"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/health":{"get":{"operationId":"getHealth","summary":"Snapshot health","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetHealthResponse"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sources":{"get":{"operationId":"listSources","summary":"Source provenance, timestamps, checksums and licensing","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceCatalog"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/collections":{"get":{"operationId":"listCollections","summary":"List available and planned collections","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCollectionsResponse"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/collections/{collectionId}":{"get":{"operationId":"getCollection","summary":"Collection metadata","parameters":[{"name":"collectionId","in":"path","required":true,"description":"Collection ID","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Collection"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/collections/{collectionId}/items":{"get":{"operationId":"getCollectionItems","summary":"Paginated GeoJSON collection","parameters":[{"name":"collectionId","in":"path","required":true,"description":"Collection ID","schema":{"type":"string"}},{"name":"sourceId","in":"query","required":false,"description":"Exact provenance source ID. Follow /sources/{sourceId} for origin, transformations and refresh metadata.","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Case- and accent-insensitive text search over source attributes.","schema":{"type":"string","maxLength":200}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"geometry","in":"query","required":false,"description":"Only mapped or unmapped records.","schema":{"type":"string","enum":["available","missing"]}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/geo+json":{"schema":{"$ref":"#/components/schemas/FeatureCollection"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/features":{"get":{"operationId":"listFeatures","summary":"Search features across collections","parameters":[{"name":"sourceId","in":"query","required":false,"description":"Exact provenance source ID. Follow /sources/{sourceId} for origin, transformations and refresh metadata.","schema":{"type":"string"}},{"name":"collection","in":"query","required":false,"description":"Filter by collection ID.","schema":{"type":"string","enum":["roads","trails","beaches","protected-areas","businesses","public-infrastructure","water-points","sports","tourism","transport","hydrology","natural-features","agriculture","settlements","zoning","observations","sensors","admin-boundaries","localities","schools","health","government","heritage","land-use","waste-infrastructure","connectivity","business-statistics"]}},{"name":"q","in":"query","required":false,"description":"Case- and accent-insensitive text search over source attributes.","schema":{"type":"string","maxLength":200}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"geometry","in":"query","required":false,"description":"Only mapped or unmapped records.","schema":{"type":"string","enum":["available","missing"]}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/geo+json":{"schema":{"$ref":"#/components/schemas/FeatureCollection"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/features/{featureId}":{"get":{"operationId":"getFeature","summary":"Get a stable feature ID","parameters":[{"name":"featureId","in":"path","required":true,"description":"ID from a feature listing; OSM IDs use osm-way-123 format.","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/geo+json":{"schema":{"$ref":"#/components/schemas/Feature"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/datasets":{"get":{"operationId":"listDatasets","summary":"Dashboard dataset metadata","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetCatalog"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/datasets/{datasetId}":{"get":{"operationId":"getDataset","summary":"Full source dataset, including units, scope and caveats","parameters":[{"name":"datasetId","in":"path","required":true,"description":"Dataset ID","schema":{"type":"string","enum":["energy","tourism-2025","tourism-2026","transport-2025","payments","external-sector","population","households","housing","employment","education","health","water","waste","biodiversity","connectivity","business-demography","municipal-finance","municipal-budget","public-procurement","vessel-presence","agriculture-land-use"]}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Dataset"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApi","summary":"This OpenAPI document","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetOpenApiResponse"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/places":{"get":{"operationId":"listPlaces","summary":"Discover stable locality entities","parameters":[{"name":"q","in":"query","required":false,"description":"Case- and accent-insensitive place name/ID search.","schema":{"type":"string","maxLength":200}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlacePage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/places/{placeId}":{"get":{"operationId":"getPlace","summary":"Place identity, source geometry and related-data links","parameters":[{"name":"placeId","in":"path","required":true,"description":"Stable ID returned by /places (for example calheta). IDs are pinned in the source registry; names may change independently.","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Place"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/places/{placeId}/features":{"get":{"operationId":"getPlaceFeatures","summary":"Explicitly associated source features; not a containment query","parameters":[{"name":"placeId","in":"path","required":true,"description":"Stable ID returned by /places (for example calheta). IDs are pinned in the source registry; names may change independently.","schema":{"type":"string"}},{"name":"sourceId","in":"query","required":false,"description":"Exact provenance source ID. Follow /sources/{sourceId} for origin, transformations and refresh metadata.","schema":{"type":"string"}},{"name":"collection","in":"query","required":false,"description":"Filter by collection ID.","schema":{"type":"string","enum":["roads","trails","beaches","protected-areas","businesses","public-infrastructure","water-points","sports","tourism","transport","hydrology","natural-features","agriculture","settlements","zoning","observations","sensors","admin-boundaries","localities","schools","health","government","heritage","land-use","waste-infrastructure","connectivity","business-statistics"]}},{"name":"q","in":"query","required":false,"description":"Case- and accent-insensitive text search over source attributes.","schema":{"type":"string","maxLength":200}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"geometry","in":"query","required":false,"description":"Only mapped or unmapped records.","schema":{"type":"string","enum":["available","missing"]}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/geo+json":{"schema":{"$ref":"#/components/schemas/PlaceFeatureCollection"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/places/{placeId}/infrastructure":{"get":{"operationId":"getPlaceInfrastructure","summary":"Explicitly associated public infrastructure","parameters":[{"name":"placeId","in":"path","required":true,"description":"Stable ID returned by /places (for example calheta). IDs are pinned in the source registry; names may change independently.","schema":{"type":"string"}},{"name":"sourceId","in":"query","required":false,"description":"Exact provenance source ID. Follow /sources/{sourceId} for origin, transformations and refresh metadata.","schema":{"type":"string"}},{"name":"collection","in":"query","required":false,"description":"Filter by collection ID.","schema":{"type":"string","enum":["roads","trails","beaches","protected-areas","businesses","public-infrastructure","water-points","sports","tourism","transport","hydrology","natural-features","agriculture","settlements","zoning","observations","sensors","admin-boundaries","localities","schools","health","government","heritage","land-use","waste-infrastructure","connectivity","business-statistics"]}},{"name":"q","in":"query","required":false,"description":"Case- and accent-insensitive text search over source attributes.","schema":{"type":"string","maxLength":200}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"geometry","in":"query","required":false,"description":"Only mapped or unmapped records.","schema":{"type":"string","enum":["available","missing"]}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/geo+json":{"schema":{"$ref":"#/components/schemas/PlaceFeatureCollection"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/places/{placeId}/datasets":{"get":{"operationId":"getPlaceDatasets","summary":"Datasets with explicit locality links; excludes inferred island totals","parameters":[{"name":"placeId","in":"path","required":true,"description":"Stable ID returned by /places (for example calheta). IDs are pinned in the source registry; names may change independently.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlaceDatasetPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/datasets/{datasetId}/records":{"get":{"operationId":"getDatasetRecords","summary":"Normalized indicators where connected; planned otherwise. Legacy payloads remain at dataset detail.","parameters":[{"name":"datasetId","in":"path","required":true,"description":"ID from /datasets.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"year","in":"query","required":false,"description":"Exact reference year","schema":{"type":"integer","minimum":1,"maximum":9999}},{"name":"geographicScope","in":"query","required":false,"description":"Exact source/registry value; filters combine with AND.","schema":{"type":"string","maxLength":200}},{"name":"locality","in":"query","required":false,"description":"Exact source/registry value; filters combine with AND.","schema":{"type":"string","maxLength":200}},{"name":"placeId","in":"query","required":false,"description":"Exact source/registry value; filters combine with AND.","schema":{"type":"string","maxLength":200}},{"name":"indicator","in":"query","required":false,"description":"Exact source/registry value; filters combine with AND.","schema":{"type":"string","maxLength":200}},{"name":"sourceId","in":"query","required":false,"description":"Exact source/registry value; filters combine with AND.","schema":{"type":"string","maxLength":200}},{"name":"referencePeriod","in":"query","required":false,"description":"Exact source/registry value; filters combine with AND.","schema":{"type":"string","maxLength":200}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatasetRecordPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/transport":{"get":{"operationId":"getTransport","summary":"Transport capabilities; operational feeds currently planned","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransportDomain"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/transport/routes":{"get":{"operationId":"listTransportRoutes","summary":"Planned transport routes; no connected operational feed","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"mode","in":"query","required":false,"description":"Transport mode","schema":{"type":"string","enum":["air","maritime"]}},{"name":"origin","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"destination","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"operatorId","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"date","in":"query","required":false,"description":"Service date YYYY-MM-DD in the schedule's declared timezone; not request time.","schema":{"type":"string","format":"date"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoutesPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/transport/schedules":{"get":{"operationId":"listTransportSchedules","summary":"Planned transport schedules; no connected operational feed","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"mode","in":"query","required":false,"description":"Transport mode","schema":{"type":"string","enum":["air","maritime"]}},{"name":"origin","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"destination","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"operatorId","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"date","in":"query","required":false,"description":"Service date YYYY-MM-DD in the schedule's declared timezone; not request time.","schema":{"type":"string","format":"date"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchedulesPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/transport/arrivals":{"get":{"operationId":"listTransportArrivals","summary":"Planned transport arrivals; no connected operational feed","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"mode","in":"query","required":false,"description":"Transport mode","schema":{"type":"string","enum":["air","maritime"]}},{"name":"origin","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"destination","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"operatorId","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"date","in":"query","required":false,"description":"Service date YYYY-MM-DD in the schedule's declared timezone; not request time.","schema":{"type":"string","format":"date"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ArrivalsPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/transport/departures":{"get":{"operationId":"listTransportDepartures","summary":"Planned transport departures; no connected operational feed","parameters":[{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"mode","in":"query","required":false,"description":"Transport mode","schema":{"type":"string","enum":["air","maritime"]}},{"name":"origin","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"destination","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"operatorId","in":"query","required":false,"description":"Exact endpoint/operator ID when feeds are connected.","schema":{"type":"string","maxLength":200}},{"name":"date","in":"query","required":false,"description":"Service date YYYY-MM-DD in the schedule's declared timezone; not request time.","schema":{"type":"string","format":"date"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeparturesPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/observations":{"get":{"operationId":"listObservations","summary":"Sourced environmental records; model estimates are labeled explicitly","parameters":[{"name":"featureId","in":"query","required":false,"description":"Exact ID. Unknown filters return an empty list; unknown detail IDs return 404.","schema":{"type":"string","maxLength":200}},{"name":"sensorId","in":"query","required":false,"description":"Exact ID. Unknown filters return an empty list; unknown detail IDs return 404.","schema":{"type":"string","maxLength":200}},{"name":"parameter","in":"query","required":false,"description":"Exact ID. Unknown filters return an empty list; unknown detail IDs return 404.","schema":{"type":"string","maxLength":200}},{"name":"from","in":"query","required":false,"description":"Inclusive observedAt boundary; RFC 3339 with timezone. For sensors, requires a matching observation in this interval.","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Inclusive observedAt boundary; RFC 3339 with timezone. For sensors, requires a matching observation in this interval.","schema":{"type":"string","format":"date-time"}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ObservationPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/observations/{observationId}":{"get":{"operationId":"getObservation","summary":"Observation by stable source/parameter/time ID","parameters":[{"name":"observationId","in":"path","required":true,"description":"ID from /observations","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Observation"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sensors":{"get":{"operationId":"listSensors","summary":"Registered physical sensors; currently planned","parameters":[{"name":"featureId","in":"query","required":false,"description":"Exact ID. Unknown filters return an empty list; unknown detail IDs return 404.","schema":{"type":"string","maxLength":200}},{"name":"sensorId","in":"query","required":false,"description":"Exact ID. Unknown filters return an empty list; unknown detail IDs return 404.","schema":{"type":"string","maxLength":200}},{"name":"parameter","in":"query","required":false,"description":"Exact ID. Unknown filters return an empty list; unknown detail IDs return 404.","schema":{"type":"string","maxLength":200}},{"name":"from","in":"query","required":false,"description":"Inclusive observedAt boundary; RFC 3339 with timezone. For sensors, requires a matching observation in this interval.","schema":{"type":"string","format":"date-time"}},{"name":"to","in":"query","required":false,"description":"Inclusive observedAt boundary; RFC 3339 with timezone. For sensors, requires a matching observation in this interval.","schema":{"type":"string","format":"date-time"}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SensorPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sensors/{sensorId}":{"get":{"operationId":"getSensor","summary":"Registered sensor by stable ID","parameters":[{"name":"sensorId","in":"path","required":true,"description":"ID from /sensors","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Sensor"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/observation-parameters":{"get":{"operationId":"listObservationParameters","summary":"Weather, ocean, water, energy and air parameter capabilities","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListObservationParametersResponse"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/catalog":{"get":{"operationId":"getInteroperabilityCatalog","summary":"Discover collections, datasets and source contracts together","parameters":[{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InteroperabilityCatalog"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/sources/{sourceId}":{"get":{"operationId":"getSource","summary":"Source origin, provenance, transformation, refresh and dependent resources","parameters":[{"name":"sourceId","in":"path","required":true,"description":"Stable source ID from records or catalogs","schema":{"type":"string"}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceContract"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/night-sky":{"get":{"operationId":"getNightSky","summary":"Year-round calculated Sun/Moon almanac for Maio; not weather or observed visibility","parameters":[{"name":"year","description":"Calendar year. Defaults to current Cape Verde year, or the supplied date year.","schema":{"type":"integer","minimum":2000,"maximum":2100},"in":"query"},{"name":"date","description":"Optional single local calendar date. Must agree with year if both supplied.","schema":{"type":"string","format":"date"},"in":"query"},{"name":"latitude","description":"Optional latitude; provide with longitude. At most six decimal places. Defaults to 15.25.","schema":{"type":"number","minimum":15.05,"maximum":15.4},"in":"query"},{"name":"longitude","description":"Optional longitude; provide with latitude. At most six decimal places. Defaults to -23.15.","schema":{"type":"number","minimum":-23.3,"maximum":-23.02},"in":"query"},{"name":"limit","description":"Page size; use 500 for the complete year.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"in":"query"},{"name":"offset","description":"Zero-based offset in ascending local date order.","schema":{"type":"integer","minimum":0,"default":0},"in":"query"},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NightSkyPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation revision derived from pinned model/contract, year and observer coordinates; independent of source snapshot revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation revision derived from pinned model/contract, year and observer coordinates; independent of source snapshot revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/night-sky/constellations":{"get":{"operationId":"getConstellations","summary":"Constellation pattern horizon status and reference-point direction for a specified instant","parameters":[{"name":"latitude","description":"Optional latitude; provide with longitude. At most six decimal places. Defaults to 15.25.","schema":{"type":"number","minimum":15.05,"maximum":15.4},"in":"query"},{"name":"longitude","description":"Optional longitude; provide with latitude. At most six decimal places. Defaults to -23.15.","schema":{"type":"number","minimum":-23.3,"maximum":-23.02},"in":"query"},{"name":"limit","description":"Page size, 1–500; default 100 (all 88 fit).","schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"in":"query"},{"name":"offset","description":"Zero-based offset in stable lowercase constellation ID order.","schema":{"type":"integer","minimum":0,"default":0},"in":"query"},{"name":"If-None-Match","in":"header","schema":{"type":"string"}},{"name":"at","in":"query","required":true,"description":"RFC 3339 instant with timezone and seconds, optional 1–3 fractional digits. Local date must be within 2000–2100. Encode + as %2B in query strings.","schema":{"type":"string","format":"date-time"}},{"name":"aboveHorizon","in":"query","description":"true selects constellations with at least one sourced pattern star above the horizon; false selects none above. Omit to return all.","schema":{"type":"boolean"}},{"name":"constellationId","in":"query","description":"Exact lowercase abbreviation (ori, cru, ser). Unknown valid IDs return an empty list.","schema":{"type":"string","pattern":"^[a-z]{3}$"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConstellationPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Pinned catalogue checksum, model/contract version, normalized instant and observer coordinates."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Pinned catalogue checksum, model/contract version, normalized instant and observer coordinates."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy":{"get":{"operationId":"getAstronomy","summary":"Discover available astronomy capabilities and explicitly planned feeds","parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AstronomyDomain"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/sky":{"get":{"operationId":"getAstronomySky","summary":"Sun, Moon and constellation snapshot at a local date and time","parameters":[{"name":"date","in":"query","description":"Local calendar date in Cape Verde (2000–2100).","schema":{"type":"string","format":"date"},"required":true},{"name":"time","in":"query","description":"Local HH:MM in Atlantic/Cape_Verde, UTC−01:00. Defaults to 22:00.","schema":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","default":"22:00"},"required":false},{"name":"latitude","description":"Optional latitude; provide with longitude. At most six decimal places. Defaults to 15.25.","schema":{"type":"number","minimum":15.05,"maximum":15.4},"in":"query"},{"name":"longitude","description":"Optional longitude; provide with latitude. At most six decimal places. Defaults to -23.15.","schema":{"type":"number","minimum":-23.3,"maximum":-23.02},"in":"query"},{"name":"aboveHorizon","in":"query","description":"Default true: at least one sourced pattern star above the horizon. False selects patterns with none above.","schema":{"type":"boolean","default":true}},{"name":"constellationId","in":"query","description":"Exact lowercase abbreviation (ori, cru, ser). Unknown valid IDs return an empty list.","schema":{"type":"string","pattern":"^[a-z]{3}$"}},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AstronomySky"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/moon":{"get":{"operationId":"getAstronomyMoon","summary":"Moon phase and geometric position at the requested time; rise/set for that local date","parameters":[{"name":"date","in":"query","description":"Local calendar date in Cape Verde (2000–2100).","schema":{"type":"string","format":"date"},"required":true},{"name":"time","in":"query","description":"Local HH:MM in Atlantic/Cape_Verde, UTC−01:00. Defaults to 22:00.","schema":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","default":"22:00"},"required":false},{"name":"latitude","description":"Optional latitude; provide with longitude. At most six decimal places. Defaults to 15.25.","schema":{"type":"number","minimum":15.05,"maximum":15.4},"in":"query"},{"name":"longitude","description":"Optional longitude; provide with latitude. At most six decimal places. Defaults to -23.15.","schema":{"type":"number","minimum":-23.3,"maximum":-23.02},"in":"query"},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AstronomyMoonResponse"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/constellations":{"get":{"operationId":"getAstronomyConstellations","summary":"One constellation sample per day for a month or a single date; not whole-month continuous visibility","parameters":[{"name":"date","in":"query","description":"Local calendar date in Cape Verde (2000–2100).","schema":{"type":"string","format":"date"},"required":false},{"name":"month","in":"query","description":"Calendar month, 1–12. For constellations provide month (+ optional year) OR date.","schema":{"type":"integer","minimum":1,"maximum":12},"required":false},{"name":"year","in":"query","description":"Year, 2000–2100. Constellation month queries default to current Cape Verde year.","schema":{"type":"integer","minimum":2000,"maximum":2100},"required":false},{"name":"time","in":"query","description":"Local HH:MM in Atlantic/Cape_Verde, UTC−01:00. Defaults to 22:00.","schema":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","default":"22:00"},"required":false},{"name":"latitude","description":"Optional latitude; provide with longitude. At most six decimal places. Defaults to 15.25.","schema":{"type":"number","minimum":15.05,"maximum":15.4},"in":"query"},{"name":"longitude","description":"Optional longitude; provide with latitude. At most six decimal places. Defaults to -23.15.","schema":{"type":"number","minimum":-23.3,"maximum":-23.02},"in":"query"},{"name":"aboveHorizon","in":"query","description":"Default true: at least one sourced pattern star above the horizon. False selects patterns with none above.","schema":{"type":"boolean","default":true}},{"name":"constellationId","in":"query","description":"Exact lowercase abbreviation (ori, cru, ser). Unknown valid IDs return an empty list.","schema":{"type":"string","pattern":"^[a-z]{3}$"}},{"name":"limit","in":"query","description":"Page size; for constellation queries pagination counts days.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false},{"name":"offset","in":"query","description":"Zero-based offset; constellation days are in ascending local-date order.","schema":{"type":"integer","minimum":0,"default":0},"required":false},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AstronomyConstellationPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/meteor-showers":{"get":{"operationId":"getAstronomyMeteorShowers","summary":"Planned: no reviewed meteor catalogue or year-specific predictions connected","parameters":[{"name":"year","in":"query","description":"Year, 2000–2100. Constellation month queries default to current Cape Verde year.","schema":{"type":"integer","minimum":2000,"maximum":2100},"required":false},{"name":"month","in":"query","description":"Calendar month, 1–12. For constellations provide month (+ optional year) OR date.","schema":{"type":"integer","minimum":1,"maximum":12},"required":false},{"name":"limit","in":"query","description":"Page size; for constellation queries pagination counts days.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false},{"name":"offset","in":"query","description":"Zero-based offset; constellation days are in ascending local-date order.","schema":{"type":"integer","minimum":0,"default":0},"required":false},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlannedAstronomyPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/dark-sky-spots":{"get":{"operationId":"getAstronomyDarkSkySpots","summary":"Planned: no verified stargazing-site inventory connected","parameters":[{"name":"limit","in":"query","description":"Page size; for constellation queries pagination counts days.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"required":false},{"name":"offset","in":"query","description":"Zero-based offset; constellation days are in ascending local-date order.","schema":{"type":"integer","minimum":0,"default":0},"required":false},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PlannedAstronomyPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/stargazing-score":{"get":{"operationId":"getAstronomyStargazingScore","summary":"Planned: null score until methodology and suitable live inputs are connected","parameters":[{"name":"date","in":"query","description":"Local calendar date in Cape Verde (2000–2100).","schema":{"type":"string","format":"date"},"required":false},{"name":"time","in":"query","description":"Local HH:MM in Atlantic/Cape_Verde, UTC−01:00. Defaults to 22:00.","schema":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$","default":"22:00"},"required":false},{"name":"latitude","description":"Optional latitude; provide with longitude. At most six decimal places. Defaults to 15.25.","schema":{"type":"number","minimum":15.05,"maximum":15.4},"in":"query"},{"name":"longitude","description":"Optional longitude; provide with latitude. At most six decimal places. Defaults to -23.15.","schema":{"type":"number","minimum":-23.3,"maximum":-23.02},"in":"query"},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StargazingScore"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/sky-map":{"get":{"operationId":"getAstronomySkyMap","summary":"Worldwide star-pattern geometry for the stargazing app; all 88 constellations","parameters":[{"name":"at","in":"query","description":"RFC 3339 instant with seconds and timezone, UTC years 2000–2100.","schema":{"type":"string","format":"date-time"},"required":true},{"name":"latitude","in":"query","description":"Observer latitude; provide together with longitude; up to six decimal places.","schema":{"type":"number","minimum":-90,"maximum":90,"default":15.25},"required":false},{"name":"longitude","in":"query","description":"Observer longitude; provide together with latitude; up to six decimal places.","schema":{"type":"number","minimum":-180,"maximum":180,"default":-23.15},"required":false},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AstronomySkyMap"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation or capability revision returned in the response body."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/astronomy/almanac":{"get":{"operationId":"getAstronomyAlmanac","summary":"Canonical full-year Sun/Moon almanac; existing /night-sky remains compatible","parameters":[{"name":"year","description":"Calendar year. Defaults to current Cape Verde year, or the supplied date year.","schema":{"type":"integer","minimum":2000,"maximum":2100},"in":"query"},{"name":"date","description":"Optional single local calendar date. Must agree with year if both supplied.","schema":{"type":"string","format":"date"},"in":"query"},{"name":"latitude","description":"Optional latitude; provide with longitude. At most six decimal places. Defaults to 15.25.","schema":{"type":"number","minimum":15.05,"maximum":15.4},"in":"query"},{"name":"longitude","description":"Optional longitude; provide with latitude. At most six decimal places. Defaults to -23.15.","schema":{"type":"number","minimum":-23.3,"maximum":-23.02},"in":"query"},{"name":"limit","description":"Page size; use 500 for the complete year.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100},"in":"query"},{"name":"offset","description":"Zero-based offset in ascending local date order.","schema":{"type":"integer","minimum":0,"default":0},"in":"query"},{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NightSkyPage"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation revision derived from pinned model/contract, year and observer coordinates; independent of source snapshot revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Calculation revision derived from pinned model/contract, year and observer coordinates; independent of source snapshot revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/agriculture":{"get":{"operationId":"getAgricultureOverview","summary":"Agriculture coverage, calculated indicators and limitations","tags":["Agriculture"],"parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Revision":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgricultureOverview"}}}},"304":{"description":"Not modified","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Revision":{"schema":{"type":"string"}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/agriculture/overview":{"get":{"operationId":"getAgricultureOverviewAlias","summary":"Alias of the agriculture overview","tags":["Agriculture"],"parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Revision":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgricultureOverview"}}}},"304":{"description":"Not modified","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Revision":{"schema":{"type":"string"}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/agriculture/land-use":{"get":{"operationId":"getAgricultureLandUse","summary":"Source classifications and unioned geodesic area by class","tags":["Agriculture"],"parameters":[{"name":"If-None-Match","in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Successful response","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Revision":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgricultureLandUse"}}}},"304":{"description":"Not modified","headers":{"ETag":{"schema":{"type":"string"}},"X-Data-Revision":{"schema":{"type":"string"}}}},"400":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/agriculture/areas":{"get":{"operationId":"listAgricultureAreas","summary":"Maio Carta Agrícola polygons as paginated GeoJSON","parameters":[{"name":"sourceId","in":"query","required":false,"description":"Exact provenance source ID. Follow /sources/{sourceId} for origin, transformations and refresh metadata.","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Case- and accent-insensitive text search over source attributes.","schema":{"type":"string","maxLength":200}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"geometry","in":"query","required":false,"description":"Only mapped or unmapped records.","schema":{"type":"string","enum":["available","missing"]}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/geo+json":{"schema":{"$ref":"#/components/schemas/FeatureCollection"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"tags":["Agriculture"]}},"/geo/agriculture":{"get":{"operationId":"listGeoAgriculture","summary":"Geographic alias of /agriculture/areas","parameters":[{"name":"sourceId","in":"query","required":false,"description":"Exact provenance source ID. Follow /sources/{sourceId} for origin, transformations and refresh metadata.","schema":{"type":"string"}},{"name":"q","in":"query","required":false,"description":"Case- and accent-insensitive text search over source attributes.","schema":{"type":"string","maxLength":200}},{"name":"bbox","in":"query","required":false,"description":"Feature-envelope overlap: west,south,east,north (longitude,latitude). Does not perform exact geometry intersection. No antimeridian wrapping.","schema":{"type":"string","example":"-23.25,15.10,-23.10,15.25"}},{"name":"geometry","in":"query","required":false,"description":"Only mapped or unmapped records.","schema":{"type":"string","enum":["available","missing"]}},{"name":"limit","in":"query","required":false,"description":"Page size.","schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"description":"Zero-based offset in stable ID order.","schema":{"type":"integer","minimum":0,"default":0}},{"name":"If-None-Match","in":"header","required":false,"description":"ETag from a previous response.","schema":{"type":"string"}}],"responses":{"200":{"description":"Success","content":{"application/geo+json":{"schema":{"$ref":"#/components/schemas/FeatureCollection"}}},"headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"304":{"description":"Unchanged; ETag matches If-None-Match.","headers":{"ETag":{"schema":{"type":"string"},"description":"Content-derived validator."},"X-Data-Revision":{"schema":{"type":"string"},"description":"Snapshot content revision."},"Access-Control-Allow-Origin":{"schema":{"const":"*"},"description":"Anonymous public reads."}}},"400":{"description":"Invalid query","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"tags":["Agriculture"]}},"/datasets/vessel-presence":{"get":{"operationId":"getVesselPresenceDataset","summary":"AIS vessel presence metadata, areas and weeks","responses":{"200":{"description":"Cached vessel presence response.","headers":{"ETag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVesselPresenceDatasetResponse"}}}},"304":{"description":"Not modified.","headers":{"ETag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Invalid request or empty cache.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object"},"caveats":{"type":"array","items":{"type":"string"}}}}}}}}}},"/datasets/vessel-presence/records":{"get":{"operationId":"getVesselPresenceRecords","summary":"Weekly AIS vessel presence records","parameters":[{"name":"area","in":"query","required":false,"schema":{"type":"string"},"description":"eez or mpa:<id>"},{"name":"from","in":"query","required":false,"schema":{"type":"string"},"description":"First ISO week"},{"name":"to","in":"query","required":false,"schema":{"type":"string"},"description":"Last ISO week"},{"name":"flag","in":"query","required":false,"schema":{"type":"string","pattern":"^[A-Z]{3}$"},"description":"ISO3 flag"},{"name":"local","in":"query","required":false,"schema":{"type":"boolean"},"description":"CPV flag"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500},"description":"Page size"},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0},"description":"Zero-based offset"}],"responses":{"200":{"description":"Cached vessel presence response.","headers":{"ETag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVesselPresenceRecordsResponse"}}}},"304":{"description":"Not modified.","headers":{"ETag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Invalid request or empty cache.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object"},"caveats":{"type":"array","items":{"type":"string"}}}}}}}}}},"/vessel-presence/summary":{"get":{"operationId":"getVesselPresenceSummary","summary":"AIS vessel presence summary","parameters":[{"name":"area","in":"query","required":false,"schema":{"type":"string"},"description":"eez or mpa:<id>"},{"name":"weeks","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":52,"default":8},"description":"Number of ISO weeks"}],"responses":{"200":{"description":"Cached vessel presence response.","headers":{"ETag":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetVesselPresenceDatasetResponse"}}}},"304":{"description":"Not modified.","headers":{"ETag":{"schema":{"type":"string"}}}},"400":{"description":"Invalid request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"405":{"description":"Read-only API. Writes are not accepted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"headers":{"Allow":{"schema":{"type":"string"}}}},"500":{"description":"Unable to read snapshot.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Invalid request or empty cache.","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"object"},"caveats":{"type":"array","items":{"type":"string"}}}}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["status","message"],"properties":{"status":{"type":"integer"},"message":{"type":"string"}}}}},"Collection":{"type":"object","required":["id","title","description","count","status"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"title":{"type":"string"},"description":{"type":"string"},"count":{"type":"integer"},"status":{"type":"string","enum":["available","no-records","planned"]},"links":{"type":"object"},"publicationStatus":{"const":"withdrawn"}}},"Feature":{"type":"object","required":["type","id","geometry","properties"],"properties":{"type":{"const":"Feature"},"id":{"$ref":"#/components/schemas/ResourceId"},"bbox":{"type":"array","items":{"type":"number"},"minItems":4,"maxItems":4},"geometry":{"$ref":"#/components/schemas/Geometry"},"properties":{"type":"object","required":["name","collections","sourceIds","geometryStatus","attributes"],"properties":{"name":{"oneOf":[{"type":"string"},{"type":"object"},{"type":"null"}]},"displayName":{"type":"string","description":"Present on beaches. Source name as a string, preferring Portuguese then English. Unnamed beach records are excluded from publication. Original name remains unchanged."},"nameStatus":{"type":"string","enum":["sourced","missing"]},"collections":{"type":"array","items":{"type":"string"}},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceRecordId":{"type":["string","number","null"]},"geometryStatus":{"type":"string","enum":["available","missing"]},"lifecycleStatus":{"type":"string","enum":["planned"],"description":"Explicit editorial lifecycle status when known. Omission does not imply operational status. Independent of collection data availability."},"recordType":{"type":"string"},"attributes":{"type":"object","additionalProperties":true},"publicationStatus":{"const":"withdrawn","description":"Retained detail record only; excluded from public listings pending review."}}}}},"FeatureCollection":{"type":"object","required":["type","features","numberMatched","numberReturned","links"],"properties":{"type":{"const":"FeatureCollection"},"features":{"type":"array","items":{"$ref":"#/components/schemas/Feature"}},"revision":{"type":"string"},"numberMatched":{"type":"integer"},"numberReturned":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"links":{"$ref":"#/components/schemas/PaginationLinks"},"publicationStatus":{"const":"withdrawn"}}},"Observation":{"description":"Sourced environmental value. Existing required fields are retained. V1.1 records add provenance, retrieval time, geometry and model/measurement distinction. Missing upstream values are omitted, not zeros. No physical sensors are currently connected.","type":"object","required":["id","observedAt","sourceId","parameter","value","unit","featureId"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"observedAt":{"type":"string","format":"date-time"},"sourceId":{"type":"string"},"sensorId":{"type":["string","null"]},"featureId":{"type":["string","null"],"description":"Linked physical feature if known; null for a model grid point without an asset link."},"parameter":{"type":"string"},"value":{"type":"number"},"unit":{"type":"string"},"quality":{"type":"string","enum":["unverified","validated","rejected"]},"observationKind":{"enum":["measured","model-estimate","forecast"],"description":"Never treat modeled output as a physical measurement."},"validAt":{"type":"string","format":"date-time","description":"Model valid time. For model estimates observedAt retains this time for compatibility; it is not a sensor measurement time."},"sourceRecordId":{"type":"string"},"geometry":{"$ref":"#/components/schemas/Point"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"intervalSeconds":{"type":["number","null"],"minimum":0},"caveats":{"type":"array","items":{"type":"string"}},"measurementContext":{"type":"object","required":[],"properties":{"heightMetres":{"type":["number","null"]},"depthMetres":{"type":["number","null"]},"verticalDatum":{"type":["string","null"]},"directionConvention":{"type":["string","null"]},"aggregation":{"type":["string","null"]},"periodStart":{"type":["string","null"],"format":"date-time"},"periodEnd":{"type":["string","null"],"format":"date-time"}}}}},"Geometry":{"description":"RFC 7946 geometry in WGS84 longitude/latitude. Null means geometry is unavailable.","oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Point"},{"$ref":"#/components/schemas/MultiPoint"},{"$ref":"#/components/schemas/LineString"},{"$ref":"#/components/schemas/MultiLineString"},{"$ref":"#/components/schemas/Polygon"},{"$ref":"#/components/schemas/MultiPolygon"}]},"Place":{"type":"object","required":["id","name","type","geometry","geometrySourceFeatureId","sourceIds","sourceFeatureIds","sourceTimestamps","caveats","links"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"name":{"type":"string"},"type":{"type":"string","enum":["locality","locality-group","settlement"]},"geometry":{"$ref":"#/components/schemas/Geometry"},"geometrySourceFeatureId":{"type":"string"},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceFeatureIds":{"type":"array","items":{"type":"string"}},"sourceTimestamps":{"type":"array","items":{"type":"object","required":["sourceId","updatedAt"],"properties":{"sourceId":{"type":"string"},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"}}}},"caveats":{"type":"array","items":{"type":"string"}},"links":{"type":"object","required":["self","features","datasets","infrastructure"],"properties":{"self":{"type":"string"},"features":{"type":"string"},"datasets":{"type":"string"},"infrastructure":{"type":"string"}}}}},"PlacePage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","places"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"places":{"type":"array","items":{"$ref":"#/components/schemas/Place"}}}},"PlaceFeatureCollection":{"allOf":[{"$ref":"#/components/schemas/FeatureCollection"},{"type":"object","required":["placeId","associationPolicy","associations"],"properties":{"placeId":{"type":"string"},"associationPolicy":{"type":"string"},"associations":{"type":"array","items":{"type":"object","required":["featureId","basis"],"properties":{"featureId":{"type":"string"},"basis":{"type":"string"}}}}}}]},"Dataset":{"type":"object","required":["id","title","scope","status","sourceIds","license","recordsStatus","caveats"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"title":{"type":"string"},"scope":{"type":"string"},"status":{"type":"string","enum":["available","planned","no-records"]},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"license":{"type":"string"},"recordsStatus":{"type":"string","enum":["available","planned","no-records"]},"caveats":{"type":"array","items":{"type":"string"}},"payload":{"description":"Original legacy payload, normalized new payload, or null for planned data. Omitted from catalogs."},"links":{"type":"object","required":["self","records","sources"],"properties":{"self":{"type":"string"},"records":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}}}}},"DatasetCatalog":{"type":"object","required":["revision","datasets"],"properties":{"revision":{"type":"string"},"datasets":{"type":"array","items":{"$ref":"#/components/schemas/Dataset"}}}},"PlaceDatasetPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","placeId","status","caveats","datasets"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"placeId":{"type":"string"},"status":{"type":"string","enum":["available","planned","no-records"]},"caveats":{"type":"array","items":{"type":"string"}},"datasets":{"type":"array","items":{"$ref":"#/components/schemas/Dataset"}}}},"DatasetRecord":{"type":"object","required":["id","year","geographicScope","locality","placeId","indicator","value","unit","sourceId","sourceRecordId","referencePeriod","updatedAt","retrievedAt","quality","caveats"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"year":{"type":["integer","null"],"minimum":1,"maximum":9999},"geographicScope":{"type":"string"},"locality":{"type":["string","null"]},"placeId":{"type":["string","null"]},"indicator":{"type":"string"},"value":{"type":["number","string","boolean","null"],"description":"Sourced value; null means missing, not zero."},"unit":{"type":["string","null"]},"sourceId":{"type":"string"},"sourceRecordId":{"type":"string"},"referencePeriod":{"type":"string"},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"quality":{"type":"string"},"caveats":{"type":"array","items":{"type":"string"}},"sourceCell":{"$ref":"#/components/schemas/WorkbookCell"},"displayName":{"type":"string"},"geographicCode":{"type":"string","description":"Original authoritative geographic code; leading zeroes preserved. Linked to Places only through an explicitly reviewed crosswalk."},"valueStatus":{"type":"string","enum":["reported","missing","suppressed","not-applicable"]},"dimensions":{"type":"object","additionalProperties":{"type":"string"},"description":"Source-defined disaggregation codes/labels; do not sum overlapping totals or dimensions."}}},"DatasetRecordPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","datasetId","status","sourceIds","updatedAt","retrievedAt","caveats","records"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"datasetId":{"type":"string"},"status":{"type":"string","enum":["available","planned","no-records"]},"sourceIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"records":{"type":"array","items":{"$ref":"#/components/schemas/DatasetRecord"}}}},"TransportDomain":{"type":"object","required":["revision","status","sourceIds","updatedAt","retrievedAt","caveats","modes","links"],"properties":{"revision":{"type":"string"},"status":{"type":"string","enum":["available","planned","no-records"]},"sourceIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"modes":{"type":"array","items":{"enum":["air","maritime"]}},"links":{"type":"object","required":["routes","schedules","arrivals","departures"],"properties":{"routes":{"type":"string"},"schedules":{"type":"string"},"arrivals":{"type":"string"},"departures":{"type":"string"}}}}},"TransportEndpoint":{"type":"object","required":["id","name"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"name":{"type":"string"},"placeId":{"type":["string","null"]},"featureId":{"type":["string","null"]},"code":{"type":["string","null"]},"codeSystem":{"type":["string","null"]}}},"TransportOperator":{"type":"object","required":["id","name","sourceIds"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"name":{"type":"string"},"sourceIds":{"type":"array","items":{"type":"string"}}}},"TransportRoute":{"type":"object","required":["id","mode","origin","destination","operator","sourceId","sourceRecordId","updatedAt","retrievedAt","caveats"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"mode":{"enum":["air","maritime"]},"origin":{"$ref":"#/components/schemas/TransportEndpoint"},"destination":{"$ref":"#/components/schemas/TransportEndpoint"},"operator":{"$ref":"#/components/schemas/TransportOperator"},"sourceId":{"type":"string"},"sourceRecordId":{"type":"string"},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}}}},"TransportSchedule":{"type":"object","required":["id","routeId","mode","operator","serviceNumber","origin","destination","serviceDate","timezone","scheduledDeparture","scheduledArrival","actualDeparture","actualArrival","status","sourceStatus","sourceId","sourceRecordId","updatedAt","retrievedAt","caveats"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"routeId":{"type":"string"},"mode":{"enum":["air","maritime"]},"operator":{"$ref":"#/components/schemas/TransportOperator"},"serviceNumber":{"type":["string","null"]},"origin":{"$ref":"#/components/schemas/TransportEndpoint"},"destination":{"$ref":"#/components/schemas/TransportEndpoint"},"serviceDate":{"type":"string","format":"date"},"timezone":{"type":"string","description":"IANA timezone supplied by source."},"scheduledDeparture":{"type":["string","null"],"format":"date-time"},"scheduledArrival":{"type":["string","null"],"format":"date-time"},"actualDeparture":{"type":["string","null"],"format":"date-time"},"actualArrival":{"type":["string","null"],"format":"date-time"},"status":{"type":"string","enum":["unknown","scheduled","delayed","cancelled","departed","arrived"]},"sourceStatus":{"type":["string","null"]},"sourceId":{"type":"string"},"sourceRecordId":{"type":"string"},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}}}},"RoutesPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","status","sourceIds","updatedAt","retrievedAt","caveats","routes"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"status":{"type":"string","enum":["available","planned","no-records"]},"sourceIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"routes":{"type":"array","items":{"$ref":"#/components/schemas/TransportRoute"}}}},"SchedulesPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","status","sourceIds","updatedAt","retrievedAt","caveats","schedules"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"status":{"type":"string","enum":["available","planned","no-records"]},"sourceIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"schedules":{"type":"array","items":{"$ref":"#/components/schemas/TransportSchedule"}}}},"ArrivalsPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","status","sourceIds","updatedAt","retrievedAt","caveats","arrivals"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"status":{"type":"string","enum":["available","planned","no-records"]},"sourceIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"arrivals":{"type":"array","items":{"$ref":"#/components/schemas/TransportSchedule"}}}},"DeparturesPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","status","sourceIds","updatedAt","retrievedAt","caveats","departures"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"status":{"type":"string","enum":["available","planned","no-records"]},"sourceIds":{"type":"array","items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"departures":{"type":"array","items":{"$ref":"#/components/schemas/TransportSchedule"}}}},"WorkbookCell":{"type":"object","required":["sheet","cell","numberFormat","rawValue"],"properties":{"sheet":{"type":"string"},"cell":{"type":"string","pattern":"^[A-Z]+[1-9][0-9]*$"},"numberFormat":{"type":"string"},"rawValue":{"type":["number","string","null"],"description":"Original cell value, including missing markers; not a normalized zero."}}},"EnvironmentalParameter":{"type":"object","required":["id","domain","unit","description","status"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"domain":{"enum":["weather","ocean","water","energy","air"]},"unit":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["available","planned","no-records"]}}},"Sensor":{"type":"object","required":["id","name","type","geometry","parameters","sourceIds","status"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"name":{"type":"string"},"type":{"const":"physical-sensor"},"featureId":{"type":["string","null"]},"geometry":{"$ref":"#/components/schemas/Point"},"parameters":{"type":"array","items":{"type":"string"}},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceRecordId":{"type":"string"},"status":{"enum":["active","inactive","unknown","decommissioned"]},"installedAt":{"type":["string","null"],"format":"date-time"},"lastObservedAt":{"type":["string","null"],"format":"date-time"},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"license":{"type":"string"},"caveats":{"type":"array","items":{"type":"string"}},"calibration":{"type":"object","required":[],"properties":{"calibratedAt":{"type":["string","null"],"format":"date-time"},"nextCalibrationAt":{"type":["string","null"],"format":"date-time"},"method":{"type":["string","null"]}}}}},"ObservationPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","status","mode","sourceIds","caveats","observations"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"status":{"type":"string","enum":["available","planned","no-records"]},"mode":{"const":"snapshot"},"sourceIds":{"type":"array","items":{"type":"string"}},"caveats":{"type":"array","items":{"type":"string"}},"observations":{"type":"array","items":{"$ref":"#/components/schemas/Observation"}}}},"SensorPage":{"type":"object","required":["revision","numberMatched","numberReturned","limit","offset","links","status","mode","sourceIds","caveats","sensors"],"properties":{"revision":{"type":"string"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"links":{"$ref":"#/components/schemas/PaginationLinks"},"status":{"type":"string","enum":["available","planned","no-records"]},"mode":{"const":"snapshot"},"sourceIds":{"type":"array","items":{"type":"string"}},"caveats":{"type":"array","items":{"type":"string"}},"sensors":{"type":"array","items":{"$ref":"#/components/schemas/Sensor"}}}},"SourceContract":{"type":"object","required":["id","title","attribution","license","licenseUrl","sourceUpdatedAt","checksum","upstreamUrls","classification","provenanceStatus","delivery","refresh","transformation","links"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"title":{"type":"string"},"attribution":{"type":"string"},"license":{"type":"string"},"licenseUrl":{"type":["string","null"]},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"checksum":{"type":"string"},"upstreamUrls":{"type":"array","items":{"type":"string","format":"uri"}},"classification":{"enum":["reference-catalog","calculation-model","model-provider","community-map","reviewed-official-publication","secondary-extract","editorial"]},"provenanceStatus":{"enum":["reviewed","needs-review","linked-source","publication-link-missing"]},"delivery":{"enum":["materialized-snapshot","on-demand-calculation"]},"refresh":{"type":"object","required":["automatic","method","command","retrievedAt","sourceUpdatedAt","freshnessAssessment","note"],"properties":{"automatic":{"const":false},"method":{"type":"string"},"command":{"type":"string"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"freshnessAssessment":{"const":"not-assessed"},"note":{"type":"string"}}},"transformation":{"type":"object","required":["implementation","description"],"properties":{"implementation":{"type":"string"},"description":{"type":"string"}}},"links":{"type":"object","required":["self","features","collections","datasets"],"properties":{"self":{"type":"string"},"features":{"type":"string"},"collections":{"type":"array","items":{"type":"string"}},"datasets":{"type":"array","items":{"type":"string"}},"nightSky":{"type":"string"},"astronomy":{"type":"string"}}}}},"SourceCatalog":{"type":"object","required":["revision","sources","notice"],"properties":{"revision":{"type":"string"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/SourceContract"}},"notice":{"type":"string"}}},"InteroperabilityCatalog":{"type":"object","required":["revision","role","delivery","principle","limitations","collections","datasets","sources","links"],"properties":{"revision":{"type":"string"},"role":{"const":"public-data-interoperability-layer"},"delivery":{"const":"materialized-snapshot"},"principle":{"type":"string"},"limitations":{"type":"array","items":{"type":"string"}},"collections":{"type":"array","items":{"type":"object"}},"datasets":{"type":"array","items":{"type":"object"}},"sources":{"type":"array","items":{"$ref":"#/components/schemas/SourceContract"}},"links":{"type":"object"},"domains":{"type":"array","items":{"$ref":"#/components/schemas/CalculationDomain"}}}},"NightSkyMoon":{"type":"object","properties":{"evaluatedAt":{"type":"string","format":"date-time"},"phaseAngleDegrees":{"type":"number","minimum":0,"maximum":360,"description":"Geocentric ecliptic phase: 0 new, 90 first quarter, 180 full, 270 last quarter."},"illuminatedFraction":{"type":"number","minimum":0,"maximum":1}},"required":["evaluatedAt","phaseAngleDegrees","illuminatedFraction"]},"AstronomicalNight":{"type":"object","properties":{"start":{"type":["string","null"],"format":"date-time"},"end":{"type":["string","null"],"format":"date-time"},"durationSeconds":{"type":["integer","null"],"minimum":0}},"required":["start","end","durationSeconds"]},"NightSkyDay":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"date":{"type":"string","format":"date"},"sourceId":{"const":"astronomy-engine"},"sourceRecordId":{"type":"null"},"dataKind":{"const":"calculated-ephemeris"},"sunrise":{"type":["string","null"],"format":"date-time"},"sunset":{"type":["string","null"],"format":"date-time"},"civilDawn":{"type":["string","null"],"format":"date-time"},"civilDusk":{"type":["string","null"],"format":"date-time"},"nauticalDawn":{"type":["string","null"],"format":"date-time"},"nauticalDusk":{"type":["string","null"],"format":"date-time"},"astronomicalDawn":{"type":["string","null"],"format":"date-time"},"astronomicalDusk":{"type":["string","null"],"format":"date-time"},"moonrise":{"type":["string","null"],"format":"date-time"},"moonset":{"type":["string","null"],"format":"date-time"},"moon":{"$ref":"#/components/schemas/NightSkyMoon"},"astronomicalNight":{"$ref":"#/components/schemas/AstronomicalNight"}},"required":["id","date","sourceId","sourceRecordId","dataKind","sunrise","sunset","civilDawn","civilDusk","nauticalDawn","nauticalDusk","astronomicalDawn","astronomicalDusk","moonrise","moonset","moon","astronomicalNight"]},"NightSkyModel":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"version":{"type":"string"},"contractVersion":{"type":"string"},"url":{"type":"string","format":"uri"},"attribution":{"type":"string"},"timezone":{"const":"Atlantic/Cape_Verde"},"utcOffset":{"const":"-01:00"}},"required":["id","version","contractVersion","url","attribution","timezone","utcOffset"]},"NightSkyPage":{"type":"object","properties":{"revision":{"type":"string"},"status":{"const":"available"},"dataKind":{"const":"calculated-ephemeris"},"year":{"type":"integer","minimum":2000,"maximum":2100},"timezone":{"const":"Atlantic/Cape_Verde"},"utcOffset":{"const":"-01:00"},"location":{"$ref":"#/components/schemas/Point"},"assumedElevationMetres":{"const":0},"model":{"$ref":"#/components/schemas/NightSkyModel"},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"records":{"type":"array","items":{"$ref":"#/components/schemas/NightSkyDay"}},"links":{"$ref":"#/components/schemas/PaginationLinks"}},"required":["revision","status","dataKind","year","timezone","utcOffset","location","assumedElevationMetres","model","sourceIds","sourceUpdatedAt","retrievedAt","caveats","numberMatched","numberReturned","limit","offset","records","links"]},"CalculationDomain":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"title":{"type":"string"},"status":{"const":"available"},"delivery":{"const":"on-demand-calculation"},"sourceIds":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"self":{"type":"string"},"page":{"type":"string"}},"required":["self","page"]},"aliasOf":{"type":"string"}},"required":["id","title","status","delivery","sourceIds","links"]},"ConstellationReferencePoint":{"type":"object","required":["name","rightAscensionHours","declinationDegrees","coordinateFrame","altitudeDegrees","azimuthDegrees","compassDirection","aboveHorizon"],"properties":{"name":{"type":"string"},"rightAscensionHours":{"type":"number","minimum":0,"exclusiveMaximum":24},"declinationDegrees":{"type":"number","minimum":-90,"maximum":90},"coordinateFrame":{"const":"J2000 equatorial"},"altitudeDegrees":{"type":"number","minimum":-90,"maximum":90},"azimuthDegrees":{"type":["number","null"],"minimum":0,"exclusiveMaximum":360,"description":"Degrees clockwise from north; null at zenith/nadir."},"compassDirection":{"type":["string","null"],"enum":["N","NNE","NE","ENE","E","ESE","SE","SSE","S","SSW","SW","WSW","W","WNW","NW","NNW",null]},"aboveHorizon":{"type":"boolean"}}},"ConstellationPattern":{"type":"object","required":["starCount","starsAboveHorizon","minimumAltitudeDegrees","maximumAltitudeDegrees","horizonStatus"],"properties":{"starCount":{"type":"integer","minimum":1},"starsAboveHorizon":{"type":"integer","minimum":0},"minimumAltitudeDegrees":{"type":"number","minimum":-90,"maximum":90},"maximumAltitudeDegrees":{"type":"number","minimum":-90,"maximum":90},"horizonStatus":{"enum":["below-horizon","some-pattern-stars-above","all-pattern-stars-above"]}}},"ConstellationPosition":{"type":"object","required":["id","abbreviation","name","sourceIds","sourceRecordIds","referencePoints","pattern","aboveHorizon"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"abbreviation":{"type":"string"},"name":{"type":"string"},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceRecordIds":{"type":"array","items":{"type":"string"}},"referencePoints":{"type":"array","items":{"$ref":"#/components/schemas/ConstellationReferencePoint"},"minItems":1},"pattern":{"$ref":"#/components/schemas/ConstellationPattern"},"aboveHorizon":{"type":"boolean","description":"At least one sourced figure-star vertex is above the geometric horizon. Not a full IAU-boundary or naked-eye visibility assertion."}}},"ConstellationPage":{"type":"object","required":["revision","status","dataKind","at","localDate","timezone","utcOffset","location","assumedElevationMetres","sunAltitudeDegrees","isAstronomicalDarkness","positionBasis","horizonBasis","model","sourceIds","sourceUpdatedAt","retrievedAt","catalogCommit","caveats","numberMatched","numberReturned","limit","offset","records","links"],"properties":{"revision":{"type":"string"},"status":{"const":"available"},"dataKind":{"const":"calculated-ephemeris"},"at":{"type":"string","format":"date-time"},"localDate":{"type":"string","format":"date"},"timezone":{"const":"Atlantic/Cape_Verde"},"utcOffset":{"const":"-01:00"},"location":{"$ref":"#/components/schemas/Point"},"assumedElevationMetres":{"const":0},"sunAltitudeDegrees":{"type":"number","minimum":-90,"maximum":90},"isAstronomicalDarkness":{"type":"boolean"},"positionBasis":{"const":"sourced-chart-reference-points"},"horizonBasis":{"const":"sourced-pattern-star-vertices"},"model":{"$ref":"#/components/schemas/NightSkyModel"},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"catalogCommit":{"type":"string"},"caveats":{"type":"array","items":{"type":"string"}},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"records":{"type":"array","items":{"$ref":"#/components/schemas/ConstellationPosition"}},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"AstronomyCapability":{"type":"object","required":["id","status","description","href"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"status":{"enum":["available","planned"]},"description":{"type":"string"},"href":{"type":"string"}}},"AstronomyDomain":{"type":"object","required":["revision","name","status","timezone","utcOffset","supportedYears","defaultLocalTime","capabilities","caveats","links"],"properties":{"revision":{"type":"string"},"name":{"type":"string"},"status":{"const":"available"},"timezone":{"const":"Atlantic/Cape_Verde"},"utcOffset":{"const":"-01:00"},"supportedYears":{"type":"object","required":["from","to"],"properties":{"from":{"const":2000},"to":{"const":2100}}},"defaultLocalTime":{"const":"22:00"},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/AstronomyCapability"}},"caveats":{"type":"array","items":{"type":"string"}},"links":{"type":"object","required":["self","page","legacyAlmanac","legacyConstellations"],"properties":{"self":{"type":"string"},"page":{"type":"string"},"legacyAlmanac":{"type":"string"},"legacyConstellations":{"type":"string"}}}}},"AstronomyBodyPosition":{"type":"object","required":["altitudeDegrees","azimuthDegrees","aboveHorizon"],"properties":{"altitudeDegrees":{"type":"number","minimum":-90,"maximum":90},"azimuthDegrees":{"type":["number","null"],"minimum":0,"exclusiveMaximum":360,"description":"Geometric direction, degrees clockwise from north. Null at zenith/nadir."},"aboveHorizon":{"type":"boolean"}}},"AstronomyMoon":{"type":"object","required":["altitudeDegrees","azimuthDegrees","aboveHorizon","evaluatedAt","phaseAngleDegrees","illuminatedFraction","moonrise","moonset"],"properties":{"altitudeDegrees":{"type":"number","minimum":-90,"maximum":90},"azimuthDegrees":{"type":["number","null"],"minimum":0,"exclusiveMaximum":360,"description":"Geometric direction, degrees clockwise from north. Null at zenith/nadir."},"aboveHorizon":{"type":"boolean"},"evaluatedAt":{"type":"string","format":"date-time"},"phaseAngleDegrees":{"type":"number","minimum":0,"maximum":360,"description":"Geocentric ecliptic phase: 0 new, 90 first quarter, 180 full, 270 last quarter."},"illuminatedFraction":{"type":"number","minimum":0,"maximum":1},"moonrise":{"type":["string","null"],"format":"date-time"},"moonset":{"type":["string","null"],"format":"date-time"}}},"AstronomySolarEvents":{"type":"object","required":["sunrise","sunset","civilDawn","civilDusk","nauticalDawn","nauticalDusk","astronomicalDawn","astronomicalDusk","astronomicalNight"],"properties":{"sunrise":{"type":["string","null"],"format":"date-time"},"sunset":{"type":["string","null"],"format":"date-time"},"civilDawn":{"type":["string","null"],"format":"date-time"},"civilDusk":{"type":["string","null"],"format":"date-time"},"nauticalDawn":{"type":["string","null"],"format":"date-time"},"nauticalDusk":{"type":["string","null"],"format":"date-time"},"astronomicalDawn":{"type":["string","null"],"format":"date-time"},"astronomicalDusk":{"type":["string","null"],"format":"date-time"},"astronomicalNight":{"$ref":"#/components/schemas/AstronomicalNight"}}},"AstronomyResourceLinks":{"type":"object","required":["self","sources"],"properties":{"self":{"type":"string"},"sources":{"type":"array","items":{"type":"string"}}}},"AstronomyMoonResponse":{"type":"object","required":["revision","status","dataKind","date","time","at","timezone","utcOffset","location","assumedElevationMetres","model","sourceIds","sourceUpdatedAt","retrievedAt","caveats","moon","links"],"properties":{"revision":{"type":"string"},"status":{"const":"available"},"dataKind":{"const":"calculated-ephemeris"},"date":{"type":"string","format":"date"},"time":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"at":{"type":"string","format":"date-time"},"timezone":{"const":"Atlantic/Cape_Verde"},"utcOffset":{"const":"-01:00"},"location":{"$ref":"#/components/schemas/Point"},"assumedElevationMetres":{"const":0},"model":{"$ref":"#/components/schemas/NightSkyModel"},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"moon":{"$ref":"#/components/schemas/AstronomyMoon"},"links":{"$ref":"#/components/schemas/AstronomyResourceLinks"}}},"AstronomySky":{"type":"object","required":["revision","status","dataKind","date","time","at","timezone","utcOffset","location","assumedElevationMetres","model","sourceIds","sourceUpdatedAt","retrievedAt","caveats","sun","moon","solarEvents","isAstronomicalDarkness","constellationCount","constellations","links"],"properties":{"revision":{"type":"string"},"status":{"const":"available"},"dataKind":{"const":"calculated-ephemeris"},"date":{"type":"string","format":"date"},"time":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"at":{"type":"string","format":"date-time"},"timezone":{"const":"Atlantic/Cape_Verde"},"utcOffset":{"const":"-01:00"},"location":{"$ref":"#/components/schemas/Point"},"assumedElevationMetres":{"const":0},"model":{"$ref":"#/components/schemas/NightSkyModel"},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"sun":{"$ref":"#/components/schemas/AstronomyBodyPosition"},"moon":{"$ref":"#/components/schemas/AstronomyMoon"},"solarEvents":{"$ref":"#/components/schemas/AstronomySolarEvents"},"isAstronomicalDarkness":{"type":"boolean"},"constellationCount":{"type":"integer","minimum":0},"constellations":{"type":"array","items":{"$ref":"#/components/schemas/ConstellationPosition"}},"links":{"$ref":"#/components/schemas/AstronomyResourceLinks"}}},"AstronomyConstellationDay":{"type":"object","required":["date","at","sunAltitudeDegrees","isAstronomicalDarkness","constellationCount","constellations"],"properties":{"date":{"type":"string","format":"date"},"at":{"type":"string","format":"date-time"},"sunAltitudeDegrees":{"type":"number","minimum":-90,"maximum":90},"isAstronomicalDarkness":{"type":"boolean"},"constellationCount":{"type":"integer","minimum":0},"constellations":{"type":"array","items":{"$ref":"#/components/schemas/ConstellationPosition"}}}},"PlannedAstronomyPage":{"type":"object","required":["revision","status","sourceIds","updatedAt","retrievedAt","caveats","numberMatched","numberReturned","limit","offset","records","links"],"properties":{"revision":{"type":"string"},"status":{"const":"planned"},"sourceIds":{"type":"array","maxItems":0,"items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"numberMatched":{"const":0},"numberReturned":{"const":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"records":{"type":"array","maxItems":0,"items":{}},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"StargazingScore":{"type":"object","required":["revision","status","sourceIds","updatedAt","retrievedAt","caveats","date","time","at","location","score","scale","methodology","requiredInputs","links"],"properties":{"revision":{"type":"string"},"status":{"const":"planned"},"sourceIds":{"type":"array","maxItems":0,"items":{"type":"string"}},"updatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"date":{"type":["string","null"],"format":"date"},"time":{"type":["string","null"]},"at":{"type":["string","null"],"format":"date-time"},"location":{"oneOf":[{"type":"null"},{"$ref":"#/components/schemas/Point"}]},"score":{"type":"null","description":"No scoring methodology or suitable live inputs are connected."},"scale":{"type":"null"},"methodology":{"type":"null"},"requiredInputs":{"type":"array","items":{"type":"string"}},"links":{"type":"object","required":["self"],"properties":{"self":{"type":"string"}}}}},"AstronomyConstellationPage":{"type":"object","required":["revision","status","dataKind","timezone","utcOffset","location","assumedElevationMetres","model","sourceIds","sourceUpdatedAt","retrievedAt","caveats","year","month","time","numberMatched","numberReturned","limit","offset","records","links"],"properties":{"revision":{"type":"string"},"status":{"const":"available"},"dataKind":{"const":"calculated-ephemeris"},"timezone":{"const":"Atlantic/Cape_Verde"},"utcOffset":{"const":"-01:00"},"location":{"$ref":"#/components/schemas/Point"},"assumedElevationMetres":{"const":0},"model":{"$ref":"#/components/schemas/NightSkyModel"},"sourceIds":{"type":"array","items":{"type":"string"}},"sourceUpdatedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"caveats":{"type":"array","items":{"type":"string"}},"year":{"type":"integer","minimum":2000,"maximum":2100},"month":{"type":"integer","minimum":1,"maximum":12},"time":{"type":"string","pattern":"^([01][0-9]|2[0-3]):[0-5][0-9]$"},"numberMatched":{"type":"integer","minimum":0},"numberReturned":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":500},"offset":{"type":"integer","minimum":0},"records":{"type":"array","items":{"$ref":"#/components/schemas/AstronomyConstellationDay"}},"links":{"$ref":"#/components/schemas/PaginationLinks"}}},"SkyMapPoint":{"type":"object","required":["az","alt"],"properties":{"az":{"type":"number","minimum":0,"exclusiveMaximum":360},"alt":{"type":"number","minimum":-90,"maximum":90}}},"SkyMapConstellation":{"type":"object","required":["id","name","abbreviation","paths","center","highest","above","count"],"properties":{"id":{"$ref":"#/components/schemas/ResourceId"},"name":{"type":"string"},"abbreviation":{"type":"string"},"paths":{"type":"array","minItems":1,"items":{"type":"array","minItems":2,"items":{"$ref":"#/components/schemas/SkyMapPoint"}}},"center":{"$ref":"#/components/schemas/SkyMapPoint"},"highest":{"$ref":"#/components/schemas/SkyMapPoint"},"above":{"type":"boolean"},"count":{"type":"integer","minimum":1}}},"AstronomySkyMap":{"type":"object","required":["revision","status","dataKind","at","location","assumedElevationMetres","model","sourceIds","catalogCommit","retrievedAt","coordinateFrame","caveats","sunAltitude","constellations","links"],"properties":{"revision":{"type":"string"},"status":{"const":"available"},"dataKind":{"const":"calculated-ephemeris"},"at":{"type":"string","format":"date-time"},"location":{"$ref":"#/components/schemas/Point"},"assumedElevationMetres":{"const":0},"model":{"$ref":"#/components/schemas/NightSkyModel"},"sourceIds":{"type":"array","items":{"type":"string"}},"catalogCommit":{"type":"string"},"retrievedAt":{"$ref":"#/components/schemas/SourceTimestamp"},"coordinateFrame":{"const":"observer-horizon"},"caveats":{"type":"array","items":{"type":"string"}},"sunAltitude":{"type":"number","minimum":-90,"maximum":90},"constellations":{"type":"array","minItems":88,"maxItems":88,"items":{"$ref":"#/components/schemas/SkyMapConstellation"}},"links":{"$ref":"#/components/schemas/AstronomyResourceLinks"}}},"AgricultureClassification":{"type":"object","required":["classificationId","classification","featureCount","areaHectaresCalculated"],"properties":{"classificationId":{"type":"string"},"classification":{"type":"string"},"featureCount":{"type":"integer","minimum":1},"areaHectaresCalculated":{"type":"number","minimum":0}}},"AgricultureMethodology":{"type":"object","required":["areaFieldAssessment","calculatedAreaMethod","aggregationMethod","overlapCaveat","grossMappedAreaHectaresCalculated","uniqueMappedAreaHectaresCalculated","crossClassificationOverlapHectaresCalculated"],"properties":{"areaFieldAssessment":{"type":"string"},"calculatedAreaMethod":{"type":"string"},"aggregationMethod":{"type":"string"},"overlapCaveat":{"type":"string"},"grossMappedAreaHectaresCalculated":{"type":"number","minimum":0},"uniqueMappedAreaHectaresCalculated":{"type":"number","minimum":0},"crossClassificationOverlapHectaresCalculated":{"type":"number","minimum":0}}},"AgricultureOverview":{"type":"object","required":["revision","status","geographicScope","sourceId","featureCount","classificationCount","cultivatedArea","methodology","caveats","links"],"properties":{"revision":{"type":"string"},"status":{"const":"available"},"geographicScope":{"const":"island:maio"},"sourceId":{"type":"string"},"featureCount":{"type":"integer","minimum":0},"classificationCount":{"type":"integer","minimum":0},"cultivatedArea":{"type":"object","required":["irrigatedHectaresCalculated","rainFedHectaresCalculated"],"properties":{"irrigatedHectaresCalculated":{"type":["number","null"]},"rainFedHectaresCalculated":{"type":["number","null"]}}},"methodology":{"$ref":"#/components/schemas/AgricultureMethodology"},"caveats":{"type":"array","items":{"type":"string"}},"links":{"type":"object","additionalProperties":{"type":"string"}}},"example":{"revision":"example-revision","status":"available","geographicScope":"island:maio","sourceId":"ingt-carta-agricola-maio","featureCount":48,"classificationCount":7,"cultivatedArea":{"irrigatedHectaresCalculated":58.229742,"rainFedHectaresCalculated":382.481277},"methodology":{"areaFieldAssessment":"Source Área_Km2 is not used for totals.","calculatedAreaMethod":"WGS84 ellipsoidal geodesic area, hectares.","aggregationMethod":"Union within classification.","overlapCaveat":"Classes overlap; do not sum as unique coverage.","grossMappedAreaHectaresCalculated":27377.611611,"uniqueMappedAreaHectaresCalculated":27347.896699,"crossClassificationOverlapHectaresCalculated":29.714912},"caveats":["No crop or production statistics in this layer."],"links":{"self":"/api/v1/agriculture"}}},"AgricultureLandUse":{"type":"object","required":["revision","status","sourceId","methodology","classifications","links"],"properties":{"revision":{"type":"string"},"status":{"const":"available"},"sourceId":{"type":"string"},"methodology":{"$ref":"#/components/schemas/AgricultureMethodology"},"classifications":{"type":"array","items":{"$ref":"#/components/schemas/AgricultureClassification"}},"links":{"type":"object","additionalProperties":{"type":"string"}}}},"GfwVesselPresenceRecord":{"type":"object","required":["areaId","week","vessels","presenceHours","byFlag","foreignVessels"],"properties":{"areaId":{"type":"string"},"week":{"type":"string","pattern":"^\\d{4}-W\\d{2}$"},"weekStart":{"type":"string","format":"date"},"weekEnd":{"type":"string","format":"date"},"complete":{"type":"boolean"},"vessels":{"type":"integer"},"presenceHours":{"type":"number"},"localVessels":{"type":"integer"},"foreignVesselsCount":{"type":"integer"},"unknownFlagVessels":{"type":"integer"},"byFlag":{"type":"array","items":{"type":"object"}},"byVesselType":{"type":"array","items":{"type":"object"}},"byFlagAndType":{"type":"array","items":{"type":"object"}},"foreignVessels":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"vesselId":{"type":"string"},"mmsi":{"type":["string","null"]},"flag":{"type":"string"},"vesselType":{"type":"string"},"shipName":{"type":["string","null"]},"hours":{"type":"number"},"entryTimestamp":{"type":["string","null"]},"exitTimestamp":{"type":["string","null"]}}}}}},"SourceTimestamp":{"description":"ISO 8601 calendar date or RFC 3339 instant with timezone; null when the source date is unknown.","anyOf":[{"type":"string","format":"date"},{"type":"string","format":"date-time"},{"type":"null"}]},"ResourceId":{"type":"string","pattern":"^[A-Za-z0-9._~-]+$","description":"Stable URL-safe public identifier. Original source identifiers are preserved separately."},"Position":{"type":"array","minItems":2,"maxItems":3,"prefixItems":[{"type":"number","minimum":-180,"maximum":180},{"type":"number","minimum":-90,"maximum":90},{"type":"number"}],"items":false},"LinearRing":{"type":"array","items":{"$ref":"#/components/schemas/Position"},"minItems":4,"description":"Closed ring: first and last positions must be identical. Longitude, latitude, optional altitude; WGS84."},"Point":{"type":"object","required":["type","coordinates"],"properties":{"type":{"const":"Point"},"coordinates":{"$ref":"#/components/schemas/Position"}}},"MultiPoint":{"type":"object","required":["type","coordinates"],"properties":{"type":{"const":"MultiPoint"},"coordinates":{"type":"array","items":{"$ref":"#/components/schemas/Position"},"minItems":1}}},"LineString":{"type":"object","required":["type","coordinates"],"properties":{"type":{"const":"LineString"},"coordinates":{"type":"array","items":{"$ref":"#/components/schemas/Position"},"minItems":2}}},"MultiLineString":{"type":"object","required":["type","coordinates"],"properties":{"type":{"const":"MultiLineString"},"coordinates":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/Position"},"minItems":2},"minItems":1}}},"Polygon":{"type":"object","required":["type","coordinates"],"properties":{"type":{"const":"Polygon"},"coordinates":{"type":"array","items":{"$ref":"#/components/schemas/LinearRing"},"minItems":1}}},"MultiPolygon":{"type":"object","required":["type","coordinates"],"properties":{"type":{"const":"MultiPolygon"},"coordinates":{"type":"array","items":{"type":"array","items":{"$ref":"#/components/schemas/LinearRing"},"minItems":1},"minItems":1}}},"PaginationLinks":{"type":"object","required":["self","next","previous"],"properties":{"self":{"type":"string"},"next":{"type":["string","null"]},"previous":{"type":["string","null"]}},"description":"Links preserve filters. Null next/previous means no adjacent page. Offsets are stable within a revision; restart paging if X-Data-Revision changes."},"GetApiResponse":{"type":"object"},"GetHealthResponse":{"type":"object"},"ListCollectionsResponse":{"type":"object","properties":{"revision":{"type":"string"},"collections":{"type":"array","items":{"$ref":"#/components/schemas/Collection"}}}},"GetOpenApiResponse":{"type":"object"},"ListObservationParametersResponse":{"type":"object","required":["revision","parameters"],"properties":{"revision":{"type":"string"},"parameters":{"type":"array","items":{"$ref":"#/components/schemas/EnvironmentalParameter"}}}},"GetVesselPresenceDatasetResponse":{"type":"object"},"GetVesselPresenceRecordsResponse":{"type":"object","properties":{"records":{"type":"array","items":{"$ref":"#/components/schemas/GfwVesselPresenceRecord"}}}}}}}