# info.title
OGC API - Environmental Data Retrieval Standard

# info.description
OGC API - Environmental Data Retrieval Standard OpenAPI Reference Implementation document

# tags[].description
Essential characteristics of the information available from the API.

# tags[].description
Query Collections available on the server

# tags[].description
Description of the information available from the instances of a collection

# tags[].description
Query a collection or instance using a Position Query

# tags[].description
Query a collection or instance using a Radius Query

# tags[].description
Query a collection or instance using a Area Query

# tags[].description
Query a collection or instance using a Trajectory Query

# tags[].description
Query a collection or instance using a Cube Query

# tags[].description
Query a collection or instance using a Corridor Query

# tags[].description
Get Locations associated with a collection

# tags[].description
Query collection or instance via a specific location

# tags[].description
Query collection or instance using Items Query. Is similar to the `/collections/{collectionId}/items` endpoints

# tags[].description
Access this document as an OpenAPI document or interact with the server via a console

# tags[].description
Use POST HTTP requests instead of the conventional GET HTTP requests. Useful for parameter values exceeding allowed length

# paths./.get.description
The landing page provides links to the API definition, the Conformance statements and the metadata about the feature data in this dataset.

# paths./conformance.get.summary
Information about standards that this API conforms to

# paths./conformance.get.description
List all requirements classes specified in a standard that the server conforms to

# paths./conformance/.get.summary
Information about standards that this API conforms to

# paths./conformance/.get.description
List all requirements classes specified in a standard that the server conforms to

# paths./collections.get.summary
List the avialable collections from the service

# paths./collections/{collectionId}.get.summary
List query types supported by the collection

# paths./collections/{collectionId}.get.description
This will provide information about the query types that are supported by the chosen collection Use content negotiation to request HTML or JSON

# paths./collections/{collectionId}/locations.get.description
List available location identifiers for the collection

# paths./collections/{collectionId}/corridor.description
A corridor returns data along and around the path defined by the coords param

# paths./collections/{collectionId}/instances/{instanceId}/corridor.description
A corridor returns data along and around the path defined by the coords param

# components.schemas.link.properties.length.description
The size of the resource. Preferrably in bytes

# components.schemas.link.properties.templated.description
Defines if the link href value is a template with values requiring replacement",

# components.schemas.keywords.description
Key identifiers of the resources provided by this API

# components.schemas.contact.properties.address.description
Alphanumeric code for physical address of the service provider. To be used in conjuction with? postalcode/city/province

# components.schemas.extent.description
Spatial-temporal bounds of the collection and their metadata

# components.schemas.extent.properties.vertical.description
The vertical extent of information in the collection

# components.schemas.extent.properties.vertical.properties.interval.description
In the Core only a single time interval is supported. Extensions may support\nmultiple intervals. If multiple intervals are provided, the union of the\nintervals describes the vertical extent.

# components.schemas.extent.properties.vertical.properties.interval.items.description
minimum and maximum heights of the vertical interval. The values are in the\nvertical coordinate reference system specified in `vrs`. By default\nthis is the vertical coordinate reference system of the source information.

# components.schemas.extent.properties.vertical.properties.vrs.description
Coordinate reference system of the coordinates in the vertical extent\n(property `interval`).

# components.schemas.collection.properties.data_queries.description
Detailed information about individual query types

# components.schemas.collection.properties.parameter_names.description
list of the data parameters available in the collection

# components.schemas.parameterNames.properties.id.description
Unique ID of the parameter, this is the value used for querying the data

# components.schemas.parameterNames.properties.measurementType.properties.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.

# components.schemas.units.properties.symbol.oneOf[].description
Information about the symbol used to describe the units

# components.schemas.units.properties.symbol.oneOf[].properties.type.description
uri to detailed description of the unit's

# components.schemas.observedPropertyCollection.properties.id.description
URI linking to an external registry which contains the definitive definition of the observed property

# components.schemas.corridorLink.properties.variables.properties.width-units.description
List of width distance units values that can be used in the query

# components.schemas.corridorLink.properties.variables.properties.height-units.description
List of height distance unit values that can be used in the query

# components.schemas.dataQuery.description
Property to contain any extra metadata information that is specific to an individual data query

# components.schemas.dataQuery.properties.output_formats.description
List of output formats supported by the query_type

# components.schemas.crsObject.properties.crs.description
Name of the coordinate ref system used as the value in the crs query param to define the required output CRS

# components.schemas.crsObject.properties.wkt.description
Well Known Text description of the coordinate ref. system

# components.schemas.bbox.description
`From OGC API- Features Doc` Only features 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 (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 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 the parameter `bbox-crs`.

The query parameter `bbox-crs` is specified in OGC API - Features - Part 2: Coordinate
Reference Systems by Reference.

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.

# components.schemas.GeoJsonObject.description
GeoJSon object
The coordinate reference system for all GeoJSON coordinates is a geographic coordinate reference system, using the World Geodetic System 1984 (WGS 84) datum, with longitude and latitude units of decimal degrees. This is equivalent to the coordinate reference system identified by the Open Geospatial Consortium (OGC) URN An OPTIONAL third-position element SHALL be the height in meters above or below the WGS 84 reference ellipsoid. In the absence of elevation values, applications sensitive to height or depth SHOULD interpret positions as being at local ground or sea level.

# components.schemas.Geometry.description
Abstract type for all GeoJSon object except Feature and FeatureCollection

# components.schemas.GeometryElement.description
Abstract type for all GeoJSon 'Geometry' object the type of which is not 'GeometryCollection'

# components.schemas.Position.description
GeoJSon fundamental geometry construct.
A position is an array of numbers. There MUST be two or more elements. The first two elements are longitude and latitude, or easting and northing, precisely in that order and using decimal numbers. Altitude or elevation MAY be included as an optional third element.
Implementations SHOULD NOT extend positions beyond three elements because the semantics of extra elements are unspecified and ambiguous. Historically, some implementations have used a fourth element to carry a linear referencing measure (sometimes denoted as "M") or a numerical timestamp, but in most situations a parser will not be able to properly interpret these values. The interpretation and meaning of additional elements is beyond the scope of this specification, and additional elements MAY be ignored by parsers.

# components.schemas.LineStringCoordinates.description
GeoJSon fundamental geometry construct, array of two or more positions.

# components.schemas.LinearRing.description
A linear ring is a closed LineString with four or more positions The first and last positions are equivalent, and they MUST contain identical values; their representation SHOULD also be identical.
A linear ring is the boundary of a surface or the boundary of a hole in a surface.
A linear ring MUST follow the right-hand rule with respect to the area it bounds, i.e., exterior rings are counterclockwise, and holes are clockwise.

# components.schemas.GeometryCollection.description
GeoJSon geometry collection
GeometryCollections composed of a single part or a number of parts of a single type SHOULD be avoided when that single part or a single object of multipart type (MultiPoint, MultiLineString, or MultiPolygon) could be used instead.

# components.schemas.parameter.properties.categoryEncoding.description
Map Ids of the categoris in the observedProperty to range values

# components.schemas.edrGeoJsonObservedProperty.description
A definition of the quantity being measured

# components.schemas.i18n.description
Object representing an internationalised string.

# components.schemas.coverageJSON.description
A geospatial coverage interchange format based on the JavaScript Object Notation (JSON)

# components.schemas.domain.description
A domain which defines a set of positions and their extents in one or more referencing systems

# components.schemas.domain.properties.axes.oneOf[].description
Grid domain-> x and y are required, z & t are optional

# components.schemas.domain.properties.axes.oneOf[].description
Trajectory domain -> Mandatory composite axis and optional z axis

# components.schemas.ndArray.description
Object representing a multidimensional (>=0D) array with named axes, encoded as a flat one-dimensional array in row-major order

# components.schemas.numericValuesAxis.description
Axis defined by list of numeric axis values and optional bounds

# components.schemas.polygonValuesAxis.allOf[].properties.values.items.items.items.description
The Inner array -> The coordinates themselves

# components.schemas.primitiveValuesAxis.description
Validates any axis with primitive values

# components.schemas.primitiveValuesAxis.allOf[].description
This redundant branch exists to fail early with succinct errors

# components.schemas.referenceSystemConnection.description
Reference System Connection object: connects coordinates to reference systems

# components.schemas.stringValuesAxis.description
Simple axis with string values (e.g. time strings)

# components.schemas.tupleValuesAxis.allOf[].properties.values.items.description
A tuple of axis values (numbers/strings)

# components.schemas.valuesAxisBase.properties.bounds.description
Optional axis bounds. Shall be twice as long( and same data type as "values")

# components.parameters.crs.description
The default CRS is http://www.opengis.net/def/crs/OGC/1.3/CRS84 which is parsed as http://www.opengis.net/def/crs/EPSG/0/4326. All the coordinate reference systems supported by PostGIS v3.4.0 are supported by this API. They are all listed here and also otherible at the {baseURL}/spatial_ref_sys endpoint.

# components.parameters.bbox.description
Only features 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 (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)
The coordinate reference system of the values is WGS 84 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`.
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.

# components.parameters.cubeBbox.description
Only features 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 (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)
The coordinate reference system of the values is WGS 84 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`.
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.

# components.parameters.datetime.description
`From OGC API-Features` Either a date-time or an interval. Date and time expressions adhere to RFC 3339.
Intervals may be bounded or half-bounded (double-dots at start or end).

Examples:

* A date-time: "2018-02-12T23:20:50Z"
* A bounded interval: "2018-02-12T00:00:00Z/2018-03-18T12:31:12Z"
* Half-bounded 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.

The only currently supported intervals are those provided as an example. If they 
do not `..` for unbounded or / for bounded intervals, `error(500)` `as of now`

# components.parameters.areaCoords.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

# components.parameters.positionCoords.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)

# components.parameters.radiusCoords.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)

# components.parameters.trajectoryCoords.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

# components.parameters.z.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

# components.parameters.cube-z.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

# components.parameters.parameter-name.description
comma delimited list of parameters to retrieve data for.  Valid parameters are listed in the collections metadata

# components.parameters.resolution-x.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). NOTE: this has been altered to `type:number` instead of `type:string` so that exegesis does parameter validation for us

# components.parameters.resolution-y.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) NOTE: this has been altered to `type:number` instead of `type:string` so that exegesis does parameter validation for us

# components.parameters.resolution-z.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). NOTE: this has been altered to `type:number` instead of `type:string` so that exegesis does parameter validation for us

# components.parameters.corridor-width.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

# components.parameters.width-units.description
Distance units for the corridor-width parameter

# components.parameters.corridor-height.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

# components.parameters.height-units.description
Distance units for the corridor-height parameter

# components.parameters.instanceId.description
Identifier (id) of a specific instance of a collection

# servers[].description
production server. Autogenerated depending on host