openapi: 3.0.3 info: title: Environmental Data Retrieval API's description: Example of Environmental Data Retrieval API OpenAPI docs version: 1.0.1 servers: - url: "http://localhost:8484" description: "Local development server" paths: /: get: tags: - Capabilities summary: landing page of this API description: "The landing page provides links to the API definition, the Conformance statements and the metadata about the feature data in this dataset." operationId: getLandingPage responses: "200": description: links to the API capabilities content: application/json: schema: $ref: "#/components/schemas/landingPage" text/html: schema: type: string parameters: - $ref: "#/components/parameters/f" /conformance: get: tags: - Capabilities summary: information about standards that this API conforms to description: list all requirements classes specified in a standard that the server conforms to operationId: getRequirementsClasses responses: "200": description: the URIs of all requirements classes supported by the server content: application/json: schema: $ref: "#/components/schemas/confClasses" text/html: schema: type: string parameters: - $ref: "#/components/parameters/f" /collections: get: tags: - Capabilities summary: List the avialable collections from the service operationId: listCollections responses: "200": description: Metdata about the Environmental data collections shared by this API. content: application/json: schema: $ref: "#/components/schemas/collections" text/html: schema: type: string default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string parameters: - $ref: "#/components/parameters/bbox" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/f" /collections/{collectionId}: get: tags: - Collection metadata summary: List query types supported by the collection description: This will provide information about the query types that are supported by the chosen collection Use content negotiation to request HTML or JSON. operationId: getQueries responses: "200": description: "Metadata about the {collectionId} collection shared by this API." content: application/json: schema: $ref: "#/components/schemas/collection" text/html: schema: type: string default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/f" /collections/{collectionId}/position: get: tags: - Collection data queries summary: "Query end point for position queries of collection {collectionId}" description: Query end point for position queries operationId: getDataForPoint parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/positionCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/radius: get: tags: - Collection data queries summary: "Query end point for radius queries of collection {collectionId}" description: Query end point for to return values within a defined radius of a point queries operationId: getDataForRadius parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/radiusCoords" - $ref: "#/components/parameters/within" - $ref: "#/components/parameters/within-units" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/area: get: tags: - Collection data queries summary: "Query end point for area queries of collection {collectionId} defined by a polygon" description: Return the data values for the data area defined by the query parameters operationId: GetDataForArea parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/areaCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/resolution-x" - $ref: "#/components/parameters/resolution-y" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/cube: get: tags: - Collection data queries summary: "Query end point for Cube queries of collection {collectionId} defined by a cube" description: Return the data values for the data Cube defined by the query parameters operationId: GetDataForCube parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/bbox" - $ref: "#/components/parameters/cube-z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/trajectory: get: tags: - Collection data queries summary: "Query end point for trajectory queries of collection {collectionId} defined by a wkt linestring and a iso8601 time period" description: Return the data values for the data Polygon defined by the query parameters operationId: GetDataForTrajectory parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/trajectoryCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/corridor: get: tags: - Collection data queries summary: "Query end point for Corridor queries of collection {collectionId} defined by a polygon" description: Return the data values for the Corridor defined by the query parameters operationId: GetDataForCorridor parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/trajectoryCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/corridor-width" - $ref: "#/components/parameters/width-units" - $ref: "#/components/parameters/corridor-height" - $ref: "#/components/parameters/height-units" - $ref: "#/components/parameters/resolution-x" - $ref: "#/components/parameters/resolution-z" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/items: get: tags: - Collection metadata summary: List available items description: List the items available in the collection accessible via a unique identifier operationId: ListDataItems parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/bbox" - $ref: "#/components/parameters/datetime" responses: "200": description: List of pre-existing items available for retrieval content: application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/json: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/items/{itemId}: get: tags: - Collection data queries summary: Return item {itemId} from collection {collectionId} description: "Query end point to retrieve data from collection {collectionId} using a unique identifier" operationId: GetDataForItem parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/itemId" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/json: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances: get: tags: - Collection metadata summary: "List data instances of {collectionId}" description: This will provide list of the avalable instances of the collection Use content negotiation to request HTML or JSON. operationId: getCollectionInstances responses: "200": description: "Metadata about the instance of {collectionId} collection shared by this API." content: application/json: schema: $ref: "#/components/schemas/instances" text/html: schema: type: string default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/f" /collections/{collectionId}/instances/{instanceId}/position: get: tags: - Instance data queries summary: "Query end point for position queries of instance {instanceId} of collection {collectionId}" description: Query end point for position queries operationId: getInstanceDataForPoint parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/positionCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances/{instanceId}/radius: get: tags: - Instance data queries summary: "Query end point to return data within defined radius of a point for an instance {instanceId} of collection {collectionId}" description: Query end point to return all data within a defined radius of the defined point location queries operationId: getInstanceDataForRadius parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/radiusCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/within" - $ref: "#/components/parameters/within-units" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances/{instanceId}/area: get: tags: - Instance data queries summary: "Query end point for area queries of instance {instanceId} of collection {collectionId} defined by a polygon" description: Return the data values for the data area defined by the query parameters operationId: GetInstanceDataForArea parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/areaCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/resolution-x" - $ref: "#/components/parameters/resolution-y" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances/{instanceId}/cube: get: tags: - Instance data queries summary: "Query end point for Cube queries of instance {instanceId} of collection {collectionId} defined by a cube" description: Return the data values for the data Cube defined by the query parameters operationId: GetInstanceDataForCube parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/bbox" - $ref: "#/components/parameters/cube-z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances/{instanceId}/trajectory: get: tags: - Instance data queries summary: "Query end point for trajectory queries of instance {instanceId} of collection {collectionId} defined by a wkt linestring and a iso8601 time period" description: Return the data values for the data Polygon defined by the query parameters operationId: GetInstanceDataForTrajectory parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/trajectoryCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances/{instanceId}/corridor: get: tags: - Instance data queries summary: "Query end point for Corridor queries of instance {instanceId} of collection {collectionId} defined by a polygon" description: Return the data values for the Corridor defined by the query parameters operationId: GetInstanceDataForCorridor parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/trajectoryCoords" - $ref: "#/components/parameters/z" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/parameter-name" - $ref: "#/components/parameters/corridor-width" - $ref: "#/components/parameters/width-units" - $ref: "#/components/parameters/corridor-height" - $ref: "#/components/parameters/height-units" - $ref: "#/components/parameters/resolution-x" - $ref: "#/components/parameters/resolution-z" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data ranges required to construct valid queries for the choosen data collection content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "400": description: Invalid request. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/locations: get: tags: - Collection metadata summary: List available location identifers for the collection description: List the locations available for the collection operationId: ListCollectionDataLocations parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/bbox" - $ref: "#/components/parameters/datetime" responses: "200": description: List of predefined locations available from the collection content: application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/locations/{locId}: get: tags: - Collection data queries summary: "Query end point for queries of collection {collectionId} defined by a location id" description: Return data the for the location defined by locid operationId: GetCollectionDataForLocation parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/locId" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data returned by querying by location identifier content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances/{instanceId}/locations: get: tags: - Instance data queries summary: List available location identifers for the instance description: List the locations available for the instance of the collection operationId: ListDataInstanceLocations parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/bbox" - $ref: "#/components/parameters/datetime" responses: "200": description: List of predefined locations available from the instance of the collection content: application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" application/x-netcdf: {} text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string /collections/{collectionId}/instances/{instanceId}/locations/{locId}: get: tags: - Instance data queries summary: "Query end point for queries of instance {instanceId} of collection {collectionId} defined by a location id" description: Return data the for the location defined by locid operationId: GetInstanceDataForLocation parameters: - $ref: "#/components/parameters/collectionId" - $ref: "#/components/parameters/instanceId" - $ref: "#/components/parameters/locId" - $ref: "#/components/parameters/datetime" - $ref: "#/components/parameters/crs" - $ref: "#/components/parameters/f" responses: "200": description: Data returned when querying by identifier content: application/prs.coverage+json: schema: $ref: "#/components/schemas/coverageJSON" application/geo+json: schema: $ref: "#/components/schemas/edrFeatureCollectionGeoJSON" application/x-netcdf: {} text/xml: {} "202": description: Data request still being processed "308": description: Request will take a significant time to process "404": description: Requested data not found. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} "413": description: Requested data volume to large to be handled by this service. content: application/json: schema: $ref: "#/components/schemas/exception" text/xml: {} default: description: An error occured. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string tags: - name: Capabilities description: Essential characteristics of the information available from the API. - name: Collection metadata description: Description of the information available from the collections - name: Collection data queries description: Data queries available. - name: Instance data queries description: Data queries available on instances of the collection. components: headers: Content-Crs: description: a URI, in angular brackets, identifying the coordinate reference system used in the content / payload schema: type: string example: "" parameters: areaCoords: name: coords in: query description: |- Only data that has a geometry that intersects the area defined by the polygon are selected. The polygon is defined using a Well Known Text string following coords=POLYGON((x y,x1 y1,x2 y2,...,xn yn x y)) which are values in the coordinate system defined by the crs query parameter (if crs is not defined the values will be assumed to be WGS84 longitude/latitude coordinates). For instance a polygon that roughly describes an area that contains South West England in WGS84 would look like: coords=POLYGON((-6.1 50.3,-4.35 51.4,-2.6 51.6,-2.8 50.6,-5.3 49.9,-6.1,50.3)) see http://portal.opengeospatial.org/files/?artifact_id=25355 and https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry The coords parameter will only support 2D POLYGON definitions required: true schema: type: string bbox: name: bbox in: query description: >- Only resources that have a geometry that intersects the bounding box are selected. The bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (elevation or depth): * Lower left corner, coordinate axis 1 * Lower left corner, coordinate axis 2 * Lower left corner, coordinate axis 3 (optional) * Upper right corner, coordinate axis 1 * Upper right corner, coordinate axis 2 * Upper right corner, coordinate axis 3 (optional) If the value consists of four numbers, the coordinate reference system is WGS84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in the parameter `bbox-crs`. If the value consists of six numbers, the coordinate reference system is WGS 84 longitude/latitude/ellipsoidal height (http://www.opengis.net/def/crs/OGC/0/CRS84h) unless a different coordinate reference system is specified in a parameter `bbox-crs`. For WGS84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge). If the vertical axis is included, the third and the sixth number are the bottom and the top of the 3-dimensional bounding box. If a resource has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries. required: false schema: type: array minItems: 4 maxItems: 6 items: type: number style: form explode: false bbox-crs: name: bbox-crs description: |- Asserts the CRS used for the coordinate values of the bbox parameter. The default is WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) for a value with 4 numbers and WGS 84 longitude/latitude/ellipsoidal height (http://www.opengis.net/def/crs/OGC/0/CRS84h) for a value with 6 numbers. in: query required: false schema: type: string format: uri style: form explode: false collectionId: name: collectionId in: path description: local identifier of a collection required: true schema: type: string corridor-height: name: corridor-height in: query description: |+ height of the corridor The height value represents the whole height of the corridor where the trajectory supplied in the `coords` query parameter is the centre point of the corridor `corridor-height={height}` e.g. corridor-height=100 Would be a request for a corridor 100 units high with the coords parameter values being the centre point of the requested corridor, the request would be for data values 50 units either side of the trajectory coordinates defined in the coords parameter. The height units supported by the collection will be provided in the API metadata responses required: true schema: type: string corridor-width: name: corridor-width in: query description: |+ width of the corridor The width value represents the whole width of the corridor where the trajectory supplied in the `coords` query parameter is the centre point of the corridor `corridor-width={width}` e.g. corridor-width=100 Would be a request for a corridor 100 units wide with the coords parameter values being the centre point of the requested corridor, the request would be for data values 50 units either side of the trajectory coordinates defined in the coords parameter. The width units supported by the collection will be provided in the API metadata responses required: true schema: type: string crs: name: crs description: |- If the parameter is specified, then the coordinates of all geometry-valued properties in the response document are in the requested CRS. Otherwise the coordinates are in the default CRS, that is http://www.opengis.net/def/crs/OGC/1.3/CRS84 for coordinates without height and http://www.opengis.net/def/crs/OGC/0/CRS84h for coordinates with ellipsoidal height. in: query required: false schema: type: string format: uri style: form explode: false cube-z: name: z in: query description: |+ Define the vertical levels to return data from The value will override any vertical values defined in the BBOX query parameter A range to return data for all levels between and including 2 defined levels i.e. z=minimum value/maximum value for instance if all values between and including 10m and 100m z=10/100 A list of height values can be specified i.e. z=value1,value2,value3 for instance if values at 2m, 10m and 80m are required z=2,10,80 An Arithmetic sequence using Recurring height intervals, the difference is the number of recurrences is defined at the start and the amount to increment the height by is defined at the end i.e. z=Rn/min height/height interval so if the request was for 20 height levels 50m apart starting at 100m: z=R20/100/50 When not specified data from all available heights SHOULD be returned required: false schema: type: string datetime: name: datetime in: query description: >- Either a date-time or an interval, open or closed. Date and time expressions adhere to RFC 3339. Open intervals are expressed using double-dots. Examples: * A date-time: "2018-02-12T23:20:50Z" * A closed interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z" * Open intervals: "2018-02-12T00:00:00Z/.." or "../2018-03-18T12:31:12Z" Only features that have a temporal property that intersects the value of `datetime` are selected. If a feature has multiple temporal properties, it is the decision of the server whether only a single temporal property is used to determine the extent or all relevant temporal properties. required: false schema: type: string style: form explode: false f: name: f in: query description: format to return the data response in required: false schema: type: string featureId: name: featureId in: path description: local identifier of a feature required: true schema: type: string height-units: name: height-units in: query description: Distance units for the corridor-height parameter required: true example: KM schema: type: string instanceId: name: instanceId in: path description: Identifier (id) of a specific instance of a collection required: true schema: type: string itemId: name: itemId in: path required: true description: "Retrieve data from the collection using a unique identifier." schema: type: string limit: name: limit in: query description: |- The optional limit parameter limits the number of items that are presented in the response document. Only items are counted that are on the first level of the collection in the response document. Nested objects contained within the explicitly requested items shall not be counted. Minimum = 1. Maximum = 10000. Default = 10. required: false schema: type: integer minimum: 1 maximum: 10000 default: 10 style: form explode: false locId: name: locId in: path required: true description: Retreive data for the location defined by locId (i.e. London_Heathrow, EGLL, 03772 etc) schema: type: string parameter-name: name: parameter-name in: query description: comma delimited list of parameters to retrieve data for. Valid parameters are listed in the collections metadata schema: type: string style: form explode: false required: false positionCoords: name: coords in: query description: |+ location(s) to return data for, the coordinates are defined by a Well Known Text (wkt) string. to retrieve a single location : POINT(x y) i.e. POINT(0 51.48) for Greenwich, London And for a list of locations MULTIPOINT((x y),(x1 y1),(x2 y2),(x3 y3)) i.e. MULTIPOINT((38.9 -77),(48.85 2.35),(39.92 116.38),(-35.29 149.1),(51.5 -0.1)) see http://portal.opengeospatial.org/files/?artifact_id=25355 and https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry the coordinate values will depend on the CRS parameter, if this is not defined the values will be assumed to WGS84 values (i.e x=longitude and y=latitude) required: true schema: type: string radiusCoords: name: coords in: query description: | location(s) to return data for, the coordinates are defined by a Well Known Text (wkt) string. to retrieve a single location : POINT(x y) i.e. POINT(0 51.48) for Greenwich, London see http://portal.opengeospatial.org/files/?artifact_id=25355 and https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry the coordinate values will depend on the CRS parameter, if this is not defined the values will be assumed to WGS84 values (i.e x=longitude and y=latitude) required: true schema: type: string resolution-x: name: resolution-x in: query description: |+ Defined it the user requires data at a different resolution from the native resolution of the data along the x-axis If this is a single value it denotes the number of intervals to retrieve data for along the x-axis i.e. resolution-x=10 would retrieve 10 values along the x-axis from the minimum x coordinate to maximum x coordinate (i.e. a value at both the minimum x and maximum x coordinates and 8 values between). required: false schema: items: type: string resolution-y: name: resolution-y in: query description: |+ Defined it the user requires data at a different resolution from the native resolution of the data along the y-axis If this is a single value it denotes the number of intervals to retrieve data for along the y-axis i.e. resolution-y=10 would retrieve 10 values along the y-axis from the minimum y coordinate to maximum y coordinate (i.e. a value at both the minimum y and maximum y coordinates and 8 values between). required: false schema: items: type: string resolution-z: name: resolution-z in: query description: |+ Defined it the user requires data at a different resolution from the native resolution of the data along the z-axis If this is a single value it denotes the number of intervals to retrieve data for along the z-axis i.e. resolution-z=10 would retrieve 10 values along the z-axis from the minimum z coordinate to maximum z coordinate (i.e. a value at both the minimum z and maximum z coordinates and 8 values between). required: false schema: items: type: string trajectoryCoords: name: coords in: query description: |- Only data that has a geometry that intersects the area defined by the linestring are selected. The trajectory is defined using a Well Known Text string following A 2D trajectory, on the surface of earth with no time or height dimensions: coords=LINESTRING(-2.87 51.14 , -2.98 51.36,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 ) A 2D trajectory, on the surface of earth with all for the same time and no height dimension, time value defined in ISO8601 format by the `datetime` query parameter : coords=LINESTRING(-2.87 51.14 , -2.98 51.36 ,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 )&time=2018-02-12T23:00:00Z A 2D trajectory, on the surface of earth with no time value but at a fixed height level, height defined in the collection height units by the `z` query parameter : coords=LINESTRING(-2.87 51.14 , -2.98 51.36 ,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 )&z=850 A 2D trajectory, on the surface of earth with all for the same time and at a fixed height level, time value defined in ISO8601 format by the `datetime` query parameter and height defined in the collection height units by the `z` query parameter : coords=LINESTRING(-2.87 51.14 , -2.98 51.36 ,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 )&time=2018-02-12T23:00:00Z&z=850 A 3D trajectory, on the surface of the earth but over a time range with no height values: coords=LINESTRINGM(-2.87 51.14 1560507000,-2.98 51.36 1560507600,-3.15 51.03 1560508200,-3.48 50.74 1560508500,-3.36 50.9 1560510240) A 3D trajectory, on the surface of the earth but over a time range with a fixed height value, height defined in the collection height units by the `z` query parameter : coords=LINESTRINGM(-2.87 51.14 1560507000,-2.98 51.36 1560507600,-3.15 51.03 1560508200,-3.48 50.74 1560508500,-3.36 50.9 1560510240)&z=200 A 3D trajectory, through a 3D volume with height or depth, but no defined time: coords=LINESTRINGZ(-2.87 51.14 0.1,-2.98 51.36 0.2,-3.15 51.03 0.3,-3.48 50.74 0.4,-3.36 50.9 0.5) A 3D trajectory, through a 3D volume with height or depth, but a fixed time time value defined in ISO8601 format by the `datetime` query parameter: coords=LINESTRINGZ(-2.87 51.14 0.1,-2.98 51.36 0.2,-3.15 51.03 0.3,-3.48 50.74 0.4,-3.36 50.9 0.5)&time=2018-02-12T23:00:00Z A 4D trajectory, through a 3D volume but over a time range: coords=LINESTRINGZM(-2.87 51.14 0.1 1560507000,-2.98 51.36 0.2 1560507600,-3.15 51.03 0.3 1560508200, -3.48 50.74 0.4 1560508500, -3.36 50.9 0.5 1560510240) (using either the `time` or `z` parameters with a 4D trajectory wil generate an error response) where Z in `LINESTRINGZ` and `LINESTRINGZM` refers to the height value. `If the specified CRS does not define the height units, the heights units will default to metres above mean sea level` and the M in `LINESTRINGM` and `LINESTRINGZM` refers to the number of seconds that have elapsed since the Unix epoch, that is the time 00:00:00 UTC on 1 January 1970. See https://en.wikipedia.org/wiki/Unix_time required: true schema: type: string width-units: name: width-units in: query description: Distance units for the corridor-width parameter required: true example: KM schema: type: string within: name: within in: query description: Defines radius of area around defined coordinates to include in the data selection required: true example: 10 schema: type: number within-units: name: within-units in: query description: Distance units for the within parameter required: true example: KM schema: type: string z: name: z in: query description: |+ Define the vertical level to return data from i.e. z=level for instance if the 850hPa pressure level is being queried z=850 or a range to return data for all levels between and including 2 defined levels i.e. z=minimum value/maximum value for instance if all values between and including 10m and 100m z=10/100 finally a list of height values can be specified i.e. z=value1,value2,value3 for instance if values at 2m, 10m and 80m are required z=2,10,80 An Arithmetic sequence using Recurring height intervals, the difference is the number of recurrences is defined at the start and the amount to increment the height by is defined at the end i.e. z=Rn/min height/height interval so if the request was for 20 height levels 50m apart starting at 100m: z=R20/100/50 When not specified data from all available heights SHOULD be returned required: false schema: type: string style: form explode: false responses: ConformanceDeclaration: description: |- The URIs of all conformance classes supported by the server. To support "generic" clients that want to access multiple OGC API Features implementations - and not "just" a specific API / server, the server declares the conformance classes it implements and conforms to. content: application/json: schema: $ref: "#/components/schemas/confClasses" example: conformsTo: - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core" - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/landingPage" - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/oas30" - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/html" - "http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/json" text/html: schema: type: string FeatureCollection: description: Paginated GeoJSON feature collection headers: Content-Crs: $ref: "#/components/headers/Content-Crs" content: application/geo+json: schema: $ref: "#/components/schemas/featureCollectionGeoJSON" Feature: description: GeoJSON feature of a collection headers: Content-Crs: $ref: "#/components/headers/Content-Crs" content: application/geo+json: schema: $ref: "#/components/schemas/featureGeoJSON" LandingPage: description: |- The landing page provides links to the API definition (link relations `service-desc` and `service-doc`), and the Conformance declaration (path `/conformance`, link relation `conformance`). content: application/json: schema: $ref: "#/components/schemas/landingPage" text/html: schema: type: string exception: description: An error occurred. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string 200: description: |- General Success response. 400: description: |- General HTTP error response. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string 500: description: |- A server error occurred. content: application/json: schema: $ref: "#/components/schemas/exception" text/html: schema: type: string schemas: # anyAxis: # description: Validates any axis # if: # required: # - values # then: # $ref: "#/components/schemas/valuesAxis" # else: # $ref: "#/components/schemas/numericRegularlySpacedAxis" areaDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Area query description: description: description of the query type: string example: Query to return data for a defined area query_type: description: Type of EDR query type: string enum: [area] example: area height_units: description: list of height distance units distance values can be specified in type: array items: type: string example: - m - hPa output_formats: description: list of output formats supported by the Area query type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB default_output_format: description: default output format for the Area query type: string crs_details: description: List of key/value definitions for the CRS's supported by the Area query. The key is the query parameter and the value is the Well Known Text description type: array items: $ref: "#/components/schemas/crsObject" areaLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/area variables: $ref: "#/components/schemas/areaDataQuery" collectionDesc: type: object required: - id - links properties: id: description: identifier of the collection used, for example, in URIs type: string example: address title: description: human readable title of the collection type: string example: address description: description: a description of the features in the collection type: string example: An address attribution: type: string title: attribution for the collection links: type: array items: $ref: "#/components/schemas/link" extent: $ref: "#/components/schemas/extent" itemType: description: An indicator about the type of the items in the collection type: string crs: description: |- the list of coordinate reference systems supported by the API; the first item is the default coordinate reference system type: array items: type: string default: - http://www.opengis.net/def/crs/OGC/1.3/CRS84 example: - http://www.opengis.net/def/crs/OGC/1.3/CRS84 - http://www.opengis.net/def/crs/EPSG/0/4326 storageCrs: description: |- the CRS identifier, from the list of supported CRS identifiers, that may be used to retrieve features from a collection without the need to apply a CRS transformation type: string format: uri storageCrsCoordinateEpoch: description: |- point in time at which coordinates in the spatial feature collection are referenced to the dynamic coordinate reference system in `storageCrs`, that may be used to retrieve features from a collection without the need to apply a change of coordinate epoch. It is expressed as a decimal year in the Gregorian calendar type: number example: "2017-03-25 in the Gregorian calendar is epoch 2017.23" collection: type: object required: - links - id - extent - parameter_names properties: links: type: array items: $ref: "#/components/schemas/link" id: description: id of the collection type: string example: Metar data title: description: title of the collection type: string example: Metar observations description: description: description of the collection type: string example: Last 24 hours Metar observations keywords: description: List of keywords which help to describe the collection type: array items: type: string extent: $ref: "#/components/schemas/extent" data_queries: description: Detailed information relevant to individual query types type: object properties: position: type: object properties: link: $ref: "#/components/schemas/positionLink" radius: type: object properties: link: $ref: "#/components/schemas/radiusLink" area: type: object properties: link: $ref: "#/components/schemas/areaLink" cube: type: object properties: link: $ref: "#/components/schemas/cubeLink" trajectory: type: object properties: link: $ref: "#/components/schemas/trajectoryLink" corridor: type: object properties: link: $ref: "#/components/schemas/corridorLink" locations: type: object properties: link: $ref: "#/components/schemas/locationsLink" items: type: object properties: link: $ref: "#/components/schemas/itemsLink" crs: description: list of the coordinate reference systems the collection results can support type: array items: type: string output_formats: description: list of formats the results can be presented in type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB parameter_names: description: list of the data parameters available in the collection type: object additionalProperties: items: $ref: "#/components/schemas/parameterNames" collections: type: object required: - links - collections properties: links: type: array items: $ref: "#/components/schemas/link" timeStamp: type: string format: date-time numberMatched: type: integer minimum: 0 numberReturned: type: integer minimum: 0 crs: description: |- a global list of CRS identifiers that are supported by spatial feature collections offered by the service type: array items: type: string format: uri collections: type: array items: $ref: "#/components/schemas/collectionDesc" confClasses: type: object required: - conformsTo properties: conformsTo: type: array items: type: string example: http://www.opengis.net/spec/ogcapi-common-1/1.0/conf/core corridorDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Corridor query description: description: description of the query type: string example: Query to return data for a defined corridor query_type: description: Type of EDR query type: string enum: [corridor] example: corridor width_units: description: list of width distance units distance values can be specified in type: array items: type: string example: - km - miles height_units: description: list of height distance units distance values can be specified in type: array items: type: string example: - m - hPa output_formats: description: list of output formats the supported by the Corridor query type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB default_output_format: description: default output format for the Corridor query type: string crs_details: description: List of key/value definitions for the CRS's supported by the Corridor query. The key is the query parameter and the value is the Well Known Text description type: array items: $ref: "#/components/schemas/crsObject" corridorLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/corridor variables: $ref: "#/components/schemas/corridorDataQuery" coverageJSON: type: object title: CoverageJSON description: A geospatial coverage interchange format based on JavaScript Object Notation (JSON) required: - type properties: type: description: Coverage domain type enum: - Coverage - CoverageCollection - Domain domainType: type: string coverages: type: array items: type: object required: - type - domain - ranges properties: type: description: Coverage domain type enum: - Coverage domain: $ref: "#/components/schemas/domain" ranges: additionalProperties: type: object $ref: "#/components/schemas/ndArray" parameters: additionalProperties: type: object $ref: "#/components/schemas/parameter" ranges: type: object additionalProperties: type: object $ref: "#/components/schemas/ndArray" referencing: type: array items: $ref: "#/components/schemas/referenceSystemConnection" minItems: 1 crsObject: type: object required: - crs - wkt properties: crs: description: name of the coordinate reference system, used as the value in the crs query parameter to define the required output CRS type: string example: native wkt: description: Well Known text description of the coordinate reference system type: string example: 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]' cubeDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Cube query description: description: description of the query type: string example: Query to return data for a defined well known text point query_type: description: Type of EDR query type: string enum: [cube] example: cube output_formats: description: list of output formats supported by the Cube query type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB default_output_format: description: default output format of the Cube query type: string crs_details: description: List of key/value definitions for the CRS's supported by the Cube query. The key is the query parameter and the value is the Well Known Text description type: array items: $ref: "#/components/schemas/crsObject" cubeLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/cube variables: $ref: "#/components/schemas/cubeDataQuery" domain: description: A Domain, which defines a set of positions and their extent in one or more referencing systems type: object properties: type: type: string # const: Domain domainType: type: string axes: type: object description: Set of Axis objects, keyed by axis identifier # additionalProperties: # type: # $ref: "#/components/schemas/anyAxis" referencing: type: array items: $ref: "#/components/schemas/referenceSystemConnection" required: - type - axes # dependentSchemas: # domainType: # allOf: # - if: # properties: # domainType: # const: Grid # then: # description: "Grid domain: x and y are required, z and t optional" # properties: # axes: # properties: # x: # $ref: "#/components/schemas/numericAxis" # y: # $ref: "#/components/schemas/numericAxis" # z: # $ref: "#/components/schemas/numericAxis" # t: # $ref: "#/components/schemas/stringValuesAxis" # required: # - x # - y # additionalProperties: false # - if: # properties: # domainType: # const: Trajectory # then: # description: "Trajectory domain: mandatory composite axis and optional z axis" # properties: # axes: # properties: # composite: # $ref: "#/components/schemas/tupleValuesAxis" # z: # $ref: "#/components/schemas/numericAxis" # required: # - composite # additionalProperties: false edrFeatureCollectionGeoJSON: type: object required: - type - features properties: type: type: string enum: - FeatureCollection features: type: array items: $ref: "#/components/schemas/featureGeoJSON" parameters: description: list of the data parameters available in the collection type: array items: $ref: "#/components/schemas/parameter" links: type: array items: $ref: "#/components/schemas/link" timeStamp: description: This property indicates the time and date when the response was generated. type: string format: date-time example: "2017-08-17T08:05:32Z" numberMatched: $ref: "#/components/schemas/numberMatched" numberReturned: $ref: "#/components/schemas/numberReturned" exception: title: Exception Schema description: JSON schema for exceptions based on RFC 7807 type: object required: - type properties: type: type: string title: type: string status: type: integer detail: type: string instance: type: string extent: description: |- The extent of the features in the collection. In the Core only spatial and temporal extents are specified. Extensions may add additional members to represent other extents, for example, thermal or pressure ranges. The first item in the array describes the overall extent of the data. All subsequent items describe more precise extents, e.g., to identify clusters of data. Clients only interested in the overall extent will only need to access the first item in each array. type: object properties: spatial: description: |- The spatial extent of the features in the collection. type: object properties: bbox: description: |- One or more bounding boxes that describe the spatial extent of the dataset. In the Core only a single bounding box is supported. Extensions may support additional areas. The first bounding box describes the overall spatial extent of the data. All subsequent bounding boxes describe more precise bounding boxes, e.g., to identify clusters of data. Clients only interested in the overall spatial extent will only need to access the first item in each array. type: array minItems: 1 items: description: |- Each bounding box is provided as four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth): * Lower left corner, coordinate axis 1 * Lower left corner, coordinate axis 2 * Minimum value, coordinate axis 3 (optional) * Upper right corner, coordinate axis 1 * Upper right corner, coordinate axis 2 * Maximum value, coordinate axis 3 (optional) If the value consists of four numbers, the coordinate reference system is WGS 84 longitude/latitude (http://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate reference system is specified in a parameter `bbox-crs`. If the value consists of six numbers, the coordinate reference system is WGS 84 longitude/latitude/height (http://www.opengis.net/def/crs/OGC/0/CRS84h) unless a different coordinate reference system is specified in a parameter `bbox-crs`. For WGS 84 longitude/latitude the values are in most cases the sequence of minimum longitude, minimum latitude, maximum longitude and maximum latitude. However, in cases where the box spans the antimeridian the first value (west-most box edge) is larger than the third value (east-most box edge). If the vertical axis is included, the third and the sixth number are the bottom and the top of the 3-dimensional bounding box. If a feature has multiple spatial geometry properties, it is the decision of the server whether only a single spatial geometry property is used to determine the extent or all relevant geometries. type: array oneOf: - minItems: 4 maxItems: 4 - minItems: 6 maxItems: 6 items: type: number example: - -180 - -90 - 180 - 90 crs: description: |- Coordinate reference system of the coordinates in the spatial extent (property `bbox`). The default reference system is WGS 84 longitude/latitude. In the Core the only other supported coordinate reference system is WGS 84 longitude/latitude/height for coordinates with height. Extensions may support additional coordinate reference systems and add additional enum values. type: string enum: - "http://www.opengis.net/def/crs/OGC/1.3/CRS84" - "http://www.opengis.net/def/crs/OGC/0/CRS84h" default: "http://www.opengis.net/def/crs/OGC/1.3/CRS84" temporal: description: |- The temporal extent of the features in the collection. type: object properties: interval: description: |- One or more time intervals that describe the temporal extent of the dataset. In the Core only a single time interval is supported. Extensions may support multiple intervals. The first time interval describes the overall temporal extent of the data. All subsequent time intervals describe more precise time intervals, e.g., to identify clusters of data. Clients only interested in the overall extent will only need to access the first item in each array. type: array minItems: 1 items: description: |- Begin and end times of the time interval. The timestamps are in the temporal coordinate reference system specified in `trs`. By default this is the Gregorian calendar. The value `null` is supported and indicates an open time interval. type: array minItems: 2 maxItems: 2 items: type: string format: date-time nullable: true example: - "2011-11-11T12:22:11Z" - null trs: description: |- Coordinate reference system of the coordinates in the temporal extent (property `interval`). The default reference system is the Gregorian calendar. In the Core this is the only supported temporal coordinate reference system. Extensions may support additional temporal coordinate reference systems and add additional enum values. type: string enum: - "http://www.opengis.net/def/uom/ISO-8601/0/Gregorian" default: "http://www.opengis.net/def/uom/ISO-8601/0/Gregorian" featureCollectionGeoJSON: type: object required: - type - features properties: type: type: string enum: - FeatureCollection features: type: array items: $ref: "#/components/schemas/featureGeoJSON" links: type: array items: $ref: "#/components/schemas/link" timeStamp: type: string format: date-time numberMatched: type: integer minimum: 0 numberReturned: type: integer minimum: 0 featureGeoJSON: type: object required: - type - geometry - properties properties: type: type: string enum: - Feature geometry: $ref: "#/components/schemas/geometryGeoJSON" properties: type: object nullable: true id: oneOf: - type: string - type: integer links: type: array items: $ref: "#/components/schemas/link" geometryGeoJSON: oneOf: - $ref: "#/components/schemas/pointGeoJSON" - $ref: "#/components/schemas/multipointGeoJSON" - $ref: "#/components/schemas/linestringGeoJSON" - $ref: "#/components/schemas/multilinestringGeoJSON" - $ref: "#/components/schemas/polygonGeoJSON" - $ref: "#/components/schemas/multipolygonGeoJSON" - $ref: "#/components/schemas/geometrycollectionGeoJSON" geometrycollectionGeoJSON: type: object required: - type - geometries properties: type: type: string enum: - GeometryCollection geometries: type: array items: $ref: "#/components/schemas/geometryGeoJSON" i18n: type: object description: Object representing an internationalised string. TODO test that the keys are valid language identifiers additionalProperties: type: string instances: type: object required: - links - instances properties: links: type: array items: $ref: "#/components/schemas/link" example: - href: http://www.example.org/edr/collections/the_collection_id/instances hreflang: en rel: self type: application/json - href: http://www.example.org/edr/collections/the_collection_id/instances?f=html hreflang: en rel: alternate type: text/html - href: http://www.example.org/edr/collections/the_collection_id/instances?f=xml hreflang: en rel: alternate type: application/xml instances: type: array items: $ref: "#/components/schemas/collection" itemsDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Items query description: description: description of the query type: string example: Query to return data for a defined well known text point query_type: description: Type of EDR query type: string enum: [items] example: items itemsLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/items variables: $ref: "#/components/schemas/itemsDataQuery" landingPage: type: object required: - links properties: title: type: string title: The title of the API. description: While a title is not required, implementers are strongly advised to include one. example: Buildings in Bonn description: type: string example: Access to data about buildings in the city of Bonn via a Web API that conforms to the OGC API Common specification. attribution: type: string title: attribution for the API description: The `attribution` should be short and intended for presentation to a user, for example, in a corner of a map. Parts of the text can be links to other resources if additional information is needed. The string can include HTML markup. links: type: array items: $ref: "#/components/schemas/link" linestringGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - LineString coordinates: type: array minItems: 2 items: type: array minItems: 2 items: type: number link: type: object required: - href - rel properties: href: type: string description: Supplies the URI to a remote resource (or resource fragment). example: http://data.example.com/buildings/123 rel: type: string description: The type or semantics of the relation. example: alternate type: type: string description: A hint indicating what the media type of the result of dereferencing the link should be. example: application/geo+json hreflang: type: string description: A hint indicating what the language of the result of dereferencing the link should be. example: en title: type: string description: Used to label the destination of a link such that it can be used as a human-readable identifier. example: Trierer Strasse 70, 53115 Bonn length: type: integer locationsDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Locations query description: description: description of the query type: string example: Query to return data for a defined well known text point query_type: description: Type of EDR query type: string enum: [locations] example: locations output_formats: description: list of output formats supported by the Locations query type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB default_output_format: description: default output format of the Locations query type: string crs_details: description: List of key/value definitions for the CRS's supported by the Locations query. The key is the query parameter and the value is the Well Known Text description type: array items: $ref: "#/components/schemas/crsObject" locationsLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/locations variables: $ref: "#/components/schemas/locationsDataQuery" multilinestringGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - MultiLineString coordinates: type: array items: type: array minItems: 2 items: type: array minItems: 2 items: type: number multipointGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - MultiPoint coordinates: type: array items: type: array minItems: 2 items: type: number multipolygonGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - MultiPolygon coordinates: type: array items: type: array items: type: array minItems: 4 items: type: array minItems: 2 items: type: number ndArray: type: object description: Object representing a multidimensional (>= 0D) array with named axes, encoded as a flat one-dimensional array in row-major order properties: type: type: string # const: NdArray dataType: enum: - float - integer - string shape: type: array items: type: number axisNames: type: array items: type: string uniqueItems: true values: type: array minItems: 1 # allOf: # - if: # properties: # dataType: # const: float # then: # properties: # values: # items: # type: # - number # - "null" # - if: # properties: # dataType: # const: integer # then: # properties: # values: # items: # type: # - integer # - "null" # - if: # properties: # dataType: # const: string # then: # properties: # values: # items: # type: # - string # - "null" # - if: # anyOf: # - properties: # values: # minItems: 2 # - properties: # shape: # minItems: 1 # required: # - shape # - properties: # axisNames: # minItems: 1 # required: # - axisNames # then: # properties: # shape: # minItems: 1 # axisNames: # minItems: 1 # required: # - shape # - axisNames required: - type - dataType - values numberMatched: description: |- The number of features of the feature type that match the selection parameters like `bbox`. type: integer minimum: 0 example: 127 numberReturned: description: |- The number of features in the feature collection. A server may omit this information in a response, if the information about the number of features is not known or difficult to compute. If the value is provided, the value shall be identical to the number of items in the "features" array. type: integer minimum: 0 example: 10 # numericAxis: # description: Simple axis with numeric values # if: # required: # - values # then: # $ref: "#/components/schemas/numericValuesAxis" # else: # $ref: "#/components/schemas/numericRegularlySpacedAxis" numericRegularlySpacedAxis: description: A regularly-spaced numeric axis properties: start: type: number stop: type: number num: type: integer minimum: 1 required: - start - stop - num additionalProperties: false numericValuesAxis: description: Axis defined by list of numeric axis values and optional bounds allOf: - $ref: "#/components/schemas/valuesAxisBase" - properties: values: items: type: number bounds: items: type: number additionalProperties: false observedProperty: type: object description: A definition of the quantity being measured. properties: id: type: string label: $ref: "#/components/schemas/i18n" description: $ref: "#/components/schemas/i18n" categories: type: array items: type: object properties: id: type: string label: $ref: "#/components/schemas/i18n" description: $ref: "#/components/schemas/i18n" required: - id - label minItems: 1 required: - label observedPropertyCollection: type: object title: name of property description: Description of the property required: - label properties: id: description: >- URI linking to an external registry which contains the definitive definition of the observed property type: string label: oneOf: - type: string - type: object required: - en # patternProperties: # ".+": # type: string description: type: string categories: type: array items: minItems: 1 type: object required: - id - label properties: id: description: >- URI linking to an external registry which contains the definitive definition of the observed property type: string label: oneOf: - type: string - type: object required: - en # patternProperties: # ".+": # type: string description: oneOf: - type: string - type: object required: - en properties: en: type: string example: id: http://vocab.nerc.ac.uk/standard_name/sea_ice_area_fraction/ label: Sea Ice Concentration parameter: type: object description: Represents metadata about the values of the coverage properties: id: type: string type: description: Type of the parameter object, must be "Parameter" type: string # const: Parameter description: $ref: "#/components/schemas/i18n" observedProperty: $ref: "#/components/schemas/observedProperty" unit: $ref: "#/components/schemas/unit" categoryEncoding: type: object description: Maps IDs of categories in the observedProperty to range values additionalProperties: oneOf: - type: integer - type: array items: type: integer minItems: 1 uniqueItems: true required: - type - observedProperty parameterNames: type: object title: Parameter name description: Definition of data parameter required: - type - observedProperty properties: type: description: type enum: - Parameter description: oneOf: - type: string - type: object # patternProperties: # ".+": # type: string label: type: string data-type: description: Data type of returned parameter enum: - integer - float - string unit: $ref: "#/components/schemas/units" observedProperty: $ref: "#/components/schemas/observedPropertyCollection" categoryEncoding: type: object additionalProperties: oneOf: - type: integer - type: array items: type: integer minItems: 1 uniqueItems: true extent: $ref: "#/components/schemas/extent" id: description: Unique ID of the parameter, this is the value used for querying the data type: string measurementType: type: object title: Parameter measurement approach description: Approach to calculating the data values required: - method properties: method: type: string example: mean duration: type: string title: Measurement time duration description: The time duration that the value was calculated for as an RFC3339 duration value. If the method value is instantaneous this value is not required. example: PT10M example: type: Parameter id: sea_ice description: Sea Ice concentration (ice=1;no ice=0) unit: label: Ratio symbol: value: "1" type: http://www.opengis.net/def/uom/UCUM/ observedProperty: id: http://vocab.nerc.ac.uk/standard_name/sea_ice_area_fraction/ label: Sea Ice Concentration pointGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - Point coordinates: type: array minItems: 2 items: type: number polygonGeoJSON: type: object required: - type - coordinates properties: type: type: string enum: - Polygon coordinates: type: array items: type: array minItems: 4 items: type: array minItems: 2 items: type: number polygonValuesAxis: description: Polygon-based axis allOf: - $ref: "#/components/schemas/valuesAxisBase" - properties: dataType: type: string # const: polygon values: items: description: A GeoJSON polygon type: array items: type: array items: description: "The inner array: the coordinates themselves" type: array items: type: number minItems: 2 minItems: 1 minItems: 1 coordinates: {} required: - dataType - values - coordinates additionalProperties: false positionDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Position query description: description: description of the query type: string example: Query to return data for a defined well known text point query_type: description: Type of EDR query type: string enum: [position] example: position output_formats: description: list of output formats supported by the Position query type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB default_output_format: description: default output format for the Position query type: string crs_details: description: List of key/value definitions for the CRS's supported by the Position query. The key is the query parameter and the value is the Well Known Text description type: array items: $ref: "#/components/schemas/crsObject" positionLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/position variables: $ref: "#/components/schemas/positionDataQuery" # primitiveValuesAxis: # description: Validates any axis with primitive values # allOf: # - $ref: "#/components/schemas/valuesAxisBase" # - description: This redundant branch exists to fail early with succinct errors # properties: # values: # items: # oneOf: # - type: number # - type: string # - if: # properties: # values: # items: # type: number # then: # $ref: "#/components/schemas/numericValuesAxis" # else: # $ref: "#/components/schemas/stringValuesAxis" radiusDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Radius query description: description: description of the query type: string example: Query to return data for a defined well known text point query_type: description: Type of EDR query type: string enum: [radius] example: radius within_units: description: list of distance units radius values can be specified in type: array items: type: string example: - km - miles output_formats: description: list of formats supported by the Radius query type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB default_output_format: description: default outputformat for the Radius query type: string crs_details: description: List of key/value definitions for the CRS's supported by the Radius query. The key is the query parameter and the value is the Well Known Text description type: array items: $ref: "#/components/schemas/crsObject" radiusLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/radius variables: $ref: "#/components/schemas/radiusDataQuery" referenceSystem: type: object properties: type: type: string required: - type # allOf: # - if: # properties: # type: # const: TemporalRS # then: # description: Temporal reference system # properties: # calendar: # type: string # timeScale: # type: string # required: # - calendar # - if: # properties: # type: # const: IdentifierRS # then: # description: An identifier-based reference system # properties: # id: # type: string # label: # $ref: "#/components/schemas/i18n" # description: # $ref: "#/components/schemas/i18n" # targetConcept: # type: object # properties: # id: # type: string # label: # $ref: "#/components/schemas/i18n" # description: # $ref: "#/components/schemas/i18n" # required: # - label # identifiers: # type: object # patternProperties: # .+: # type: object # properties: # id: # type: string # label: # $ref: "#/components/schemas/i18n" # description: # $ref: "#/components/schemas/i18n" # required: # - label # required: # - targetConcept referenceSystemConnection: description: "Reference System Connection object: connects coordinates to reference systems" type: object properties: coordinates: type: array items: type: string minItems: 1 system: $ref: "#/components/schemas/referenceSystem" required: - coordinates - system stringValuesAxis: description: Simple axis with string values (e.g. time strings) allOf: - $ref: "#/components/schemas/valuesAxisBase" - properties: values: items: type: string bounds: items: type: string additionalProperties: false timeStamp: description: This property indicates the time and date when the response was generated. type: string format: date-time example: "2017-08-17T08:05:32Z" trajectoryDataQuery: description: Property to contain any extra metadata information that is specific to an individual data queries type: object properties: title: description: title of the query type: string example: Trajectory query description: description: description of the query type: string example: Query to return data for a defined well known text point query_type: description: Type of EDR query type: string enum: [trajectory] example: trajectory output_formats: description: list of ouputformats supported by the Trajectory query type: array items: type: string example: - CoverageJSON - GeoJSON - IWXXM - GRIB default_output_format: description: default outputformat for the Trajectory query type: string crs_details: description: List of key/value definitions for the CRS's supported by a Trajectory query. The key is the query parameter and the value is the Well Known Text description type: array items: $ref: "#/components/schemas/crsObject" trajectoryLink: allOf: - $ref: "#/components/schemas/link" properties: href: type: string example: http://data.example.com/collections/monitoringsites/trajectory variables: $ref: "#/components/schemas/trajectoryDataQuery" tupleValuesAxis: description: Tuple-based axis allOf: - $ref: "#/components/schemas/valuesAxisBase" - properties: dataType: type: string # const: tuple values: items: description: A tuple of axis values (numbers or strings) type: array items: oneOf: - type: number - type: string minItems: 2 coordinates: {} required: - dataType - values - coordinates additionalProperties: false unit: type: object description: The units of measure properties: id: type: string label: $ref: "#/components/schemas/i18n" oneOf: - type: string - type: object properties: type: type: string value: type: string required: - type - value anyOf: - required: - label - required: - symbol units: type: object title: unit name description: definition of data units anyOf: - required: - label - required: - symbol - required: - label - symbol properties: label: oneOf: - type: object additionalProperties: type: string - type: string symbol: title: Describe unit symbol oneOf: - type: object description: Information about the symbol used to describe the units required: - value - type properties: value: description: representation of the units symbol type: string type: description: uri to detailed desxcription of the units type: string - type: string example: value: hPa type: http://www.opengis.net/def/uom/UCUM/ id: type: string example: label: en: Kelvin symbol: value: K type: http://www.opengis.net/def/uom/UCUM/ # valuesAxis: # description: Validates any values-based axis # allOf: # - $ref: "#/components/schemas/valuesAxisBase" # - if: # not: # required: # - dataType # then: # $ref: "#/components/schemas/primitiveValuesAxis" # dependentSchemas: # dataType: # allOf: # - if: # properties: # dataType: # const: tuple # then: # $ref: "#/components/schemas/tupleValuesAxis" # - if: # properties: # dataType: # const: polygon # then: # $ref: "#/components/schemas/polygonValuesAxis" valuesAxisBase: description: Base schema for values-based axis schemas properties: dataType: type: string # not: # const: primitive values: type: array minItems: 1 uniqueItems: true coordinates: type: array items: type: string minItems: 2 bounds: description: Optional axis bounds. Must be twice as long (and same data type) as "values" type: array minItems: 2 required: - values securitySchemes: basicAuth: type: http scheme: basic security: - basicAuth: []