From 985c2b76e8e39593e20a5240defdb6949307c407 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Thu, 12 Sep 2024 13:16:48 +0100 Subject: [PATCH 01/19] Add support for multi location requests Add support for passing multiple location ids in a single locations request --- .../abstract_tests/queries/ATS_locations.adoc | 10 ++++++++ ...ogcapi-environmental-data-retrieval-1.yaml | 4 ++-- .../parameters/queries/locationId.yaml | 4 ++-- .../edr/REQ_rc-locationid-definition.adoc | 23 +++++++++++++++++++ .../edr/REQ_rc-locationid-response.adoc | 13 +++++++++++ .../standard/sections/annex_requirements.adoc | 5 ++++ 6 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 core/standard/requirements/edr/REQ_rc-locationid-definition.adoc create mode 100644 core/standard/requirements/edr/REQ_rc-locationid-response.adoc diff --git a/core/standard/abstract_tests/queries/ATS_locations.adoc b/core/standard/abstract_tests/queries/ATS_locations.adoc index 1625a05eb..054403ce4 100644 --- a/core/standard/abstract_tests/queries/ATS_locations.adoc +++ b/core/standard/abstract_tests/queries/ATS_locations.adoc @@ -21,6 +21,16 @@ step::: Check that invalid `locationId` values return an error message step::: Validate that a document was returned with a status code 404. ==== +[abstract_test] +==== +[%metadata] +identifier:: /conf/locations/locations-nodata +target:: /req/edr/rc-locations +test-purpose:: Validate that an HTTP 204 message is returned by a `Locations` query when there is no data available for the requested locations. +test-method:: +step::: Check that an HTTP 204 message is returned when no data for the requested location identifier(s) is available +step::: Validate that a document was returned with a status code 204. +==== [abstract_test] ==== diff --git a/core/standard/openapi/ogcapi-environmental-data-retrieval-1.yaml b/core/standard/openapi/ogcapi-environmental-data-retrieval-1.yaml index 24387c509..e54bcb952 100644 --- a/core/standard/openapi/ogcapi-environmental-data-retrieval-1.yaml +++ b/core/standard/openapi/ogcapi-environmental-data-retrieval-1.yaml @@ -64,9 +64,9 @@ paths: $ref: paths/queries/instance-corridor.yaml /collections/{collectionId}/locations: $ref: paths/queries/locations.yaml - /collections/{collectionId}/locations/{locId}: + /collections/{collectionId}/locations/{locationId}: $ref: paths/queries/location.yaml /collections/{collectionId}/instances/{instanceId}/locations: $ref: paths/queries/instance-locations.yaml - /collections/{collectionId}/instances/{instanceId}/locations/{locId}: + /collections/{collectionId}/instances/{instanceId}/locations/{locationId}: $ref: paths/queries/instance-location.yaml diff --git a/core/standard/openapi/parameters/queries/locationId.yaml b/core/standard/openapi/parameters/queries/locationId.yaml index 3b2bb27e6..ce68183e2 100644 --- a/core/standard/openapi/parameters/queries/locationId.yaml +++ b/core/standard/openapi/parameters/queries/locationId.yaml @@ -1,6 +1,6 @@ -name: locId +name: locationId in: path required: true -description: Retreive data for the location defined by locId (i.e. London_Heathrow, EGLL, 03772 etc) +description: Comma delimited list of location identifiers (i.e. EGLL or EGLL,YBBN,CYOW or London,Brisbane) schema: type: string \ No newline at end of file diff --git a/core/standard/requirements/edr/REQ_rc-locationid-definition.adoc b/core/standard/requirements/edr/REQ_rc-locationid-definition.adoc new file mode 100644 index 000000000..e662fc86e --- /dev/null +++ b/core/standard/requirements/edr/REQ_rc-locationid-definition.adoc @@ -0,0 +1,23 @@ +[[req_edr_locationid-definition]] +==== *Requirement /req/edr/REQ_rc-locationid-definition* Parameter locationId definition + +[requirement] +==== +[%metadata] +identifier:: /req/edr/REQ_rc-locationid-definition +*A:* +The `locationId` value SHALL be a comma delimited string list of locations that data is being requested for. +--- +*B:* +Each resource locations operation SHALL support a parameter `locationId` with the following characteristics (using an OpenAPI Specification 3.0 fragment): +[source,YAML] +---- +name: locationId +in: path +required: false +schema: + type: string +style: form +explode: false +---- +==== diff --git a/core/standard/requirements/edr/REQ_rc-locationid-response.adoc b/core/standard/requirements/edr/REQ_rc-locationid-response.adoc new file mode 100644 index 000000000..a528aa4a7 --- /dev/null +++ b/core/standard/requirements/edr/REQ_rc-locationid-response.adoc @@ -0,0 +1,13 @@ +[[req_edr_locationid-response]] +==== *Requirement /req/edr/REQ_rc-locationid-response* Parameter locationid response + +[requirement] +==== +[%metadata] +identifier:: /req/edr/REQ_rc-locationid-response +*A:* +If the `locationId` parameter is provided only data for locations matching the requested identifers should be returned. +--- +*B:* +If there is no data available for the requested location identifiers a HTTP 204 response should be returned +==== diff --git a/core/standard/sections/annex_requirements.adoc b/core/standard/sections/annex_requirements.adoc index 06643ba1f..9f43fcb15 100644 --- a/core/standard/sections/annex_requirements.adoc +++ b/core/standard/sections/annex_requirements.adoc @@ -272,6 +272,11 @@ include::../requirements/edr/REQ_rc-custom-dimension-definition.adoc[] include::../requirements/edr/REQ_rc-custom-dimension-response.adoc[] + +include::../requirements/edr/REQ_rc-locationid-definition.adoc[] + +include::../requirements/edr/REQ_rc-locationid-response.adoc[] + :sectnums: From 08212da490294a46ae81100a3bf78709444818ad Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 09:57:08 +0100 Subject: [PATCH 02/19] Add support for optional limit parameter --- .../openapi/parameters/core/limit.yaml | 7 +++ core/standard/openapi/paths/queries/area.yaml | 4 +- .../openapi/paths/queries/instance-area.yaml | 3 +- .../paths/queries/instance-location.yaml | 1 + .../paths/queries/instance-locations.yaml | 1 + .../paths/queries/instance-position.yaml | 1 + .../paths/queries/instance-radius.yaml | 1 + .../standard/openapi/paths/queries/items.yaml | 1 + .../openapi/paths/queries/location.yaml | 1 + .../openapi/paths/queries/locations.yaml | 1 + .../openapi/paths/queries/position.yaml | 1 + .../openapi/paths/queries/radius.yaml | 1 + .../standard/openapi/request-bodies/area.yaml | 2 + .../openapi/request-bodies/location.yaml | 3 + .../openapi/request-bodies/locations.yaml | 2 + .../openapi/request-bodies/position.yaml | 2 + .../openapi/request-bodies/radius.yaml | 3 +- .../core/PER_rc-limit-response-2.adoc | 6 ++ .../recommendations/core/PER_rc-prev.adoc | 6 ++ .../recommendations/core/REC_rc-extent.adoc | 6 ++ .../recommendations/core/REC_rc-next-1.adoc | 6 ++ .../recommendations/core/REC_rc-next-2.adoc | 6 ++ .../recommendations/core/REC_rc-next-3.adoc | 6 ++ .../recommendations/core/REQ_rc-rel-type.adoc | 6 ++ .../core/REQ_rc-limit-definition.adoc | 20 +++++++ .../core/REQ_rc-limit-response-1.adoc | 11 ++++ .../core/REQ_rc-numberMatched.adoc | 7 +++ .../core/REQ_rc-numberReturned.adoc | 7 +++ .../requirements/edr/query_type/area.adoc | 5 ++ .../requirements/edr/query_type/item.adoc | 6 +- .../edr/query_type/locations.adoc | 5 ++ .../requirements/edr/query_type/point.adoc | 5 ++ .../requirements/edr/query_type/radius.adoc | 5 ++ core/standard/sections/clause_9_general.adoc | 58 +++++++++++++++++++ 34 files changed, 200 insertions(+), 6 deletions(-) create mode 100644 core/standard/openapi/parameters/core/limit.yaml create mode 100644 core/standard/recommendations/core/PER_rc-limit-response-2.adoc create mode 100644 core/standard/recommendations/core/PER_rc-prev.adoc create mode 100644 core/standard/recommendations/core/REC_rc-extent.adoc create mode 100644 core/standard/recommendations/core/REC_rc-next-1.adoc create mode 100644 core/standard/recommendations/core/REC_rc-next-2.adoc create mode 100644 core/standard/recommendations/core/REC_rc-next-3.adoc create mode 100644 core/standard/recommendations/core/REQ_rc-rel-type.adoc create mode 100644 core/standard/requirements/core/REQ_rc-limit-definition.adoc create mode 100644 core/standard/requirements/core/REQ_rc-limit-response-1.adoc create mode 100644 core/standard/requirements/core/REQ_rc-numberMatched.adoc create mode 100644 core/standard/requirements/core/REQ_rc-numberReturned.adoc diff --git a/core/standard/openapi/parameters/core/limit.yaml b/core/standard/openapi/parameters/core/limit.yaml new file mode 100644 index 000000000..633cff926 --- /dev/null +++ b/core/standard/openapi/parameters/core/limit.yaml @@ -0,0 +1,7 @@ +name: limit +in: query +description: Defines the maximum number of features to return in a request +required: false +example: 10 +schema: + type: number diff --git a/core/standard/openapi/paths/queries/area.yaml b/core/standard/openapi/paths/queries/area.yaml index 5198bb57d..1c2941667 100644 --- a/core/standard/openapi/paths/queries/area.yaml +++ b/core/standard/openapi/paths/queries/area.yaml @@ -15,6 +15,7 @@ get: - $ref: ../../parameters/core/resolution-x.yaml - $ref: ../../parameters/core/resolution-y.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml @@ -54,4 +55,5 @@ post: 413: $ref: ../../responses/queries/413.yaml default: - $ref: ../../responses/core/exception.yaml + $ref: ../../responses/core/exception.yaml + diff --git a/core/standard/openapi/paths/queries/instance-area.yaml b/core/standard/openapi/paths/queries/instance-area.yaml index 4746bf79c..1b9f38848 100644 --- a/core/standard/openapi/paths/queries/instance-area.yaml +++ b/core/standard/openapi/paths/queries/instance-area.yaml @@ -16,6 +16,7 @@ get: - $ref: ../../parameters/core/resolution-y.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml @@ -56,5 +57,5 @@ post: 413: $ref: ../../responses/queries/413.yaml default: - $ref: ../../responses/core/exception.yaml + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/paths/queries/instance-location.yaml b/core/standard/openapi/paths/queries/instance-location.yaml index 81f0a3248..08d378007 100644 --- a/core/standard/openapi/paths/queries/instance-location.yaml +++ b/core/standard/openapi/paths/queries/instance-location.yaml @@ -12,6 +12,7 @@ get: - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml diff --git a/core/standard/openapi/paths/queries/instance-locations.yaml b/core/standard/openapi/paths/queries/instance-locations.yaml index 81efbe35a..e5537879b 100644 --- a/core/standard/openapi/paths/queries/instance-locations.yaml +++ b/core/standard/openapi/paths/queries/instance-locations.yaml @@ -10,6 +10,7 @@ get: - $ref: ../../parameters/queries/instanceId.yaml - $ref: ../../parameters/core/bbox.yaml - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/items.yaml diff --git a/core/standard/openapi/paths/queries/instance-position.yaml b/core/standard/openapi/paths/queries/instance-position.yaml index 0357184e8..79c9679cd 100644 --- a/core/standard/openapi/paths/queries/instance-position.yaml +++ b/core/standard/openapi/paths/queries/instance-position.yaml @@ -14,6 +14,7 @@ get: - $ref: ../../parameters/core/parameter-name.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml diff --git a/core/standard/openapi/paths/queries/instance-radius.yaml b/core/standard/openapi/paths/queries/instance-radius.yaml index 649592b7c..ec1d9fa26 100644 --- a/core/standard/openapi/paths/queries/instance-radius.yaml +++ b/core/standard/openapi/paths/queries/instance-radius.yaml @@ -16,6 +16,7 @@ get: - $ref: ../../parameters/core/parameter-name.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml diff --git a/core/standard/openapi/paths/queries/items.yaml b/core/standard/openapi/paths/queries/items.yaml index baaa5dc56..83b91dbe1 100644 --- a/core/standard/openapi/paths/queries/items.yaml +++ b/core/standard/openapi/paths/queries/items.yaml @@ -9,6 +9,7 @@ get: - $ref: ../../parameters/collections/collectionId.yaml - $ref: ../../parameters/core/bbox.yaml - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/items.yaml diff --git a/core/standard/openapi/paths/queries/location.yaml b/core/standard/openapi/paths/queries/location.yaml index 014fdaee5..a7dd577b4 100644 --- a/core/standard/openapi/paths/queries/location.yaml +++ b/core/standard/openapi/paths/queries/location.yaml @@ -12,6 +12,7 @@ get: - $ref: ../../parameters/core/parameter-name.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml diff --git a/core/standard/openapi/paths/queries/locations.yaml b/core/standard/openapi/paths/queries/locations.yaml index aa9c35a5c..d7e3de458 100644 --- a/core/standard/openapi/paths/queries/locations.yaml +++ b/core/standard/openapi/paths/queries/locations.yaml @@ -9,6 +9,7 @@ get: - $ref: ../../parameters/collections/collectionId.yaml - $ref: ../../parameters/core/bbox.yaml - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/items.yaml diff --git a/core/standard/openapi/paths/queries/position.yaml b/core/standard/openapi/paths/queries/position.yaml index 1f1cbe2a1..9e0d1d1c6 100644 --- a/core/standard/openapi/paths/queries/position.yaml +++ b/core/standard/openapi/paths/queries/position.yaml @@ -13,6 +13,7 @@ get: - $ref: ../../parameters/core/parameter-name.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml diff --git a/core/standard/openapi/paths/queries/radius.yaml b/core/standard/openapi/paths/queries/radius.yaml index 8595020fd..d482d8ea2 100644 --- a/core/standard/openapi/paths/queries/radius.yaml +++ b/core/standard/openapi/paths/queries/radius.yaml @@ -15,6 +15,7 @@ get: - $ref: ../../parameters/core/parameter-name.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml responses: 200: $ref: ../../responses/queries/200.yaml diff --git a/core/standard/openapi/request-bodies/area.yaml b/core/standard/openapi/request-bodies/area.yaml index 3de78b27e..d12b15de5 100644 --- a/core/standard/openapi/request-bodies/area.yaml +++ b/core/standard/openapi/request-bodies/area.yaml @@ -24,4 +24,6 @@ content: type: string f: type: string + limit: + type: number diff --git a/core/standard/openapi/request-bodies/location.yaml b/core/standard/openapi/request-bodies/location.yaml index 3e2fbacb0..9c1aa86ca 100644 --- a/core/standard/openapi/request-bodies/location.yaml +++ b/core/standard/openapi/request-bodies/location.yaml @@ -13,4 +13,7 @@ content: type: string f: type: string + limit: + type: number + diff --git a/core/standard/openapi/request-bodies/locations.yaml b/core/standard/openapi/request-bodies/locations.yaml index 408ccca60..0ca17adde 100644 --- a/core/standard/openapi/request-bodies/locations.yaml +++ b/core/standard/openapi/request-bodies/locations.yaml @@ -7,4 +7,6 @@ content: type: string datetime: type: string + limit: + type: number diff --git a/core/standard/openapi/request-bodies/position.yaml b/core/standard/openapi/request-bodies/position.yaml index e011bbbd4..60b6439de 100644 --- a/core/standard/openapi/request-bodies/position.yaml +++ b/core/standard/openapi/request-bodies/position.yaml @@ -20,4 +20,6 @@ content: type: string f: type: string + limit: + type: number diff --git a/core/standard/openapi/request-bodies/radius.yaml b/core/standard/openapi/request-bodies/radius.yaml index 39ecb5ff2..e10aae92b 100644 --- a/core/standard/openapi/request-bodies/radius.yaml +++ b/core/standard/openapi/request-bodies/radius.yaml @@ -26,4 +26,5 @@ content: type: string f: type: string - + limit: + type: number diff --git a/core/standard/recommendations/core/PER_rc-limit-response-2.adoc b/core/standard/recommendations/core/PER_rc-limit-response-2.adoc new file mode 100644 index 000000000..7f418eff3 --- /dev/null +++ b/core/standard/recommendations/core/PER_rc-limit-response-2.adoc @@ -0,0 +1,6 @@ +[[per_core_rc-limit-response-2]] +[width="90%",cols="2,6a"] +|=== +^|*Permission {counter:per-id}* |*/per/core/rc-limit-response-2* +^|A |The server MAY return less features than requested (but not more). +|=== diff --git a/core/standard/recommendations/core/PER_rc-prev.adoc b/core/standard/recommendations/core/PER_rc-prev.adoc new file mode 100644 index 000000000..91f7ff292 --- /dev/null +++ b/core/standard/recommendations/core/PER_rc-prev.adoc @@ -0,0 +1,6 @@ +[[per_core_rc-prev]] +[width="90%",cols="2,6a"] +|=== +^|*Permission {counter:per-id}* |*/per/core/rc-prev* +^|A |A response to a `next` link MAY include a `prev` link to the resource that included the `next` link. +|=== diff --git a/core/standard/recommendations/core/REC_rc-extent.adoc b/core/standard/recommendations/core/REC_rc-extent.adoc new file mode 100644 index 000000000..f7b25604c --- /dev/null +++ b/core/standard/recommendations/core/REC_rc-extent.adoc @@ -0,0 +1,6 @@ +[[rec_core_rc-extent]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/core/rc-extent* +^|A |If the response is a partial, paged response (i.e., the number of features in the response is less than the number of features that match the selection parameters) and the response includes information about the extent of the response (e.g. the member `bbox` in a GeoJSON feature collection), the extent SHOULD be the extent of the complete result set, not the extent of the features in the response / page. +|=== \ No newline at end of file diff --git a/core/standard/recommendations/core/REC_rc-next-1.adoc b/core/standard/recommendations/core/REC_rc-next-1.adoc new file mode 100644 index 000000000..14fa5929c --- /dev/null +++ b/core/standard/recommendations/core/REC_rc-next-1.adoc @@ -0,0 +1,6 @@ +[[rec_core_rc-next-1]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/core/rc-next-1* +^|A |A `200`-response SHOULD include a link to the next "page" (relation: `next`), if more features have been selected than returned in the response. +|=== diff --git a/core/standard/recommendations/core/REC_rc-next-2.adoc b/core/standard/recommendations/core/REC_rc-next-2.adoc new file mode 100644 index 000000000..7cefe777d --- /dev/null +++ b/core/standard/recommendations/core/REC_rc-next-2.adoc @@ -0,0 +1,6 @@ +[[rec_core_rc-next-2]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/core/rc-next-2* +^|A |Dereferencing a `next` link SHOULD return additional features from the set of selected features that have not yet been returned. +|=== diff --git a/core/standard/recommendations/core/REC_rc-next-3.adoc b/core/standard/recommendations/core/REC_rc-next-3.adoc new file mode 100644 index 000000000..c5463981f --- /dev/null +++ b/core/standard/recommendations/core/REC_rc-next-3.adoc @@ -0,0 +1,6 @@ +[[rec_core_rc-next-3]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/core/rc-next-3* +^|A |The number of features in a response to a `next` link SHOULD follow the same rules as for the response to the original query and again include a `next` link, if there are more features in the selection that have not yet been returned. +|=== diff --git a/core/standard/recommendations/core/REQ_rc-rel-type.adoc b/core/standard/recommendations/core/REQ_rc-rel-type.adoc new file mode 100644 index 000000000..5ffb2b904 --- /dev/null +++ b/core/standard/recommendations/core/REQ_rc-rel-type.adoc @@ -0,0 +1,6 @@ +[[req_core_rc-rel-type]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/core/rc-rel-type* +^|A |All links in a `200`-response where `rel` is `self`, `alternate`, `next`, or `prev` SHALL include the `type` link parameter. +|=== diff --git a/core/standard/requirements/core/REQ_rc-limit-definition.adoc b/core/standard/requirements/core/REQ_rc-limit-definition.adoc new file mode 100644 index 000000000..ae24977e8 --- /dev/null +++ b/core/standard/requirements/core/REQ_rc-limit-definition.adoc @@ -0,0 +1,20 @@ +[[req_core_rc-limit-definition]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/core/rc-limit-definition* +^|A |The operation SHALL support a parameter `limit` based upon the following OpenAPI 3.0 fragment: + +[source,YAML] +---- +name: limit +in: query +required: false +schema: + type: integer + minimum: 1 + maximum: 10000 + default: 100 +style: form +explode: false +---- +|=== \ No newline at end of file diff --git a/core/standard/requirements/core/REQ_rc-limit-response-1.adoc b/core/standard/requirements/core/REQ_rc-limit-response-1.adoc new file mode 100644 index 000000000..bfb0616c4 --- /dev/null +++ b/core/standard/requirements/core/REQ_rc-limit-response-1.adoc @@ -0,0 +1,11 @@ +[[req_core_rc-limit-response-1]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/core/rc-limit-response-1* +^|A |The response SHALL not contain more features than specified by the optional `limit` parameter. +^|B |If the API definition specifies a maximum value for `limit` parameter, the response SHALL not contain more features than this maximum value. +^|C |If the value of the `limit` parameter is larger than the maximum value, this SHALL NOT result in an error (instead use the maximum as the parameter value). +^|D |Only items are counted that are on the first level of the collection. Any nested objects contained within the explicitly requested items SHALL not be counted. +|=== + +See <> for more discussion about the `limit` parameter. \ No newline at end of file diff --git a/core/standard/requirements/core/REQ_rc-numberMatched.adoc b/core/standard/requirements/core/REQ_rc-numberMatched.adoc new file mode 100644 index 000000000..901976fdf --- /dev/null +++ b/core/standard/requirements/core/REQ_rc-numberMatched.adoc @@ -0,0 +1,7 @@ +[[req_core_rc-numberMatched]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/core/rc-numberMatched* +^|A |If a property `numberMatched` is included in the response, the value SHALL be identical to the number of features in the feature collections that match the selection parameters like `bbox`, `datetime` or additional filter parameters. +^|B |A server MAY omit this information in a response, if the information about the number of matching features is not known or difficult to compute. +|=== \ No newline at end of file diff --git a/core/standard/requirements/core/REQ_rc-numberReturned.adoc b/core/standard/requirements/core/REQ_rc-numberReturned.adoc new file mode 100644 index 000000000..090db5847 --- /dev/null +++ b/core/standard/requirements/core/REQ_rc-numberReturned.adoc @@ -0,0 +1,7 @@ +[[req_core_rc-numberReturned]] +[width="90%",cols="2,6a"] +|=== +^|*Requirement {counter:req-id}* |*/req/core/rc-numberReturned* +^|A |If a property `numberReturned` is included in the response, the value SHALL be identical to the number of features in the response. +^|B |A server MAY omit this information in a response, if the information about the number of features in the response is not known or difficult to compute. +|=== \ No newline at end of file diff --git a/core/standard/requirements/edr/query_type/area.adoc b/core/standard/requirements/edr/query_type/area.adoc index c67074260..92a706afa 100644 --- a/core/standard/requirements/edr/query_type/area.adoc +++ b/core/standard/requirements/edr/query_type/area.adoc @@ -44,6 +44,11 @@ a| **f** * `f=netCDF4` * `f=CoverageJSON` * `f=CSV` +a| **limit** +* <> +* <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. +Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). +**This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` |==== #If a client request has a *coords* value which includes a height value and defines a *z* query parameter the *z* query parameter will be the requested height value.# diff --git a/core/standard/requirements/edr/query_type/item.adoc b/core/standard/requirements/edr/query_type/item.adoc index 571137a1c..8dbffb86e 100644 --- a/core/standard/requirements/edr/query_type/item.adoc +++ b/core/standard/requirements/edr/query_type/item.adoc @@ -47,9 +47,9 @@ a| **datetime** * `datetime=2018-02-12T00:00Z,2018-02-12T01:00Z,2018-02-14T12:00Z` a| **limit** -* <> - -* <> |String |No| Maximum number of items to return a| * `limit=10` +* <> |String |No| The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. +Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). +**This value will be ignored if the requested format or the server does not support paging** a| * `limit=10` |==== diff --git a/core/standard/requirements/edr/query_type/locations.adoc b/core/standard/requirements/edr/query_type/locations.adoc index d110c23a4..998619128 100644 --- a/core/standard/requirements/edr/query_type/locations.adoc +++ b/core/standard/requirements/edr/query_type/locations.adoc @@ -36,6 +36,11 @@ a| **f** * `f=netCDF4` * `f=CoverageJSON` * `f=CSV` +a| **limit** +* <> +* <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. +Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). +**This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` |==== diff --git a/core/standard/requirements/edr/query_type/point.adoc b/core/standard/requirements/edr/query_type/point.adoc index 775a922da..f9f5d8cbe 100644 --- a/core/standard/requirements/edr/query_type/point.adoc +++ b/core/standard/requirements/edr/query_type/point.adoc @@ -44,6 +44,11 @@ a| **f** * `f=netCDF4` * `f=CoverageJSON` * `f=CSV` +a| **limit** +* <> +* <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. +Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). +**This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` |==== #If a client request has a *coords* value which includes a height value and defines a *z* query parameter, the *z* query parameter will be the requested height value.# diff --git a/core/standard/requirements/edr/query_type/radius.adoc b/core/standard/requirements/edr/query_type/radius.adoc index 6d7571789..acb2a4c93 100644 --- a/core/standard/requirements/edr/query_type/radius.adoc +++ b/core/standard/requirements/edr/query_type/radius.adoc @@ -55,6 +55,11 @@ a| **f** * `f=netCDF4` * `f=CoverageJSON` * `f=CSV` +a| **limit** +* <> +* <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. +Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). +**This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` |==== #If a client request has a *coords* value which includes a height value and defines a *z* query parameter the *z* query parameter will be the requested height value.# diff --git a/core/standard/sections/clause_9_general.adoc b/core/standard/sections/clause_9_general.adoc index 5c360cca2..1fa9a99d2 100644 --- a/core/standard/sections/clause_9_general.adoc +++ b/core/standard/sections/clause_9_general.adoc @@ -105,6 +105,64 @@ Two common approaches are: * An additional query parameter (for example, `accept` or `f`) that overrides the Accept header of the HTTP request. ========================================================= +[[limit-parameter]] +=== Support for limit query parameter + +An EDR server MAY provide support for a `limit` query parameter when the requested output format can support data paging. +**Note**: If either the server or the requested data format do not support paging responses the `limit` query parameter value will be ignored. + +If the `limit` query parameter is supported the following applies: + +The number of features returned depends on the server and the parameter `limit.` + +* The client can request a limit it is interested in. + +* The server likely has a default value for the limit, and a maximum limit. + +* If the server has any more results available than it returns (the number it returns is less than or equal to the requested/default/maximum limit) then the server will include a link to the next set of results. + +So (using the default/maximum values of 10/10000 from the OpenAPI fragment in requirement `/req/core/fc-limit-definition`): + +* Asking for 10 will return 0 to 10 (as requested) and if there are more, a `next` link; + +* Asking without a limit will return 0 to 10 (default) and if there are more, a `next` link; + +* Asking for 50000 will return up to 10000 (server-limited) and if there are more, a `next` link; + +* Following the next link from the previous response will return up to 10000 additional features and if there are more, a `next` link. + +include::../recomendations/core/REC_rc-next-1.adoc[] + +include::../recomendations/core/REC_rc-next-2.adoc[] + +include::../recomendations/core/REC_rc-next-3.adoc[] + +This document does not mandate any specific implementation approach for the `next` links. + +An implementation could use opaque links that are managed by the server. It is up to the server to determine how long these links can be de-referenced. Clients have to be prepared to receive a 404 response. + +Another implementation approach is to use an implementation-specific parameter that specifies the index within the result set from which the server begins presenting results in the response, like the `startIndex` parameter that was used in <> (and which could be added again in additional parts of the OGC API Features series). + +The API will return no `next` link, if it has returned all selected features, and the server knows that. However, the server can not be aware that it has already returned all selected features. For example, if the request states `limit=10` and the query to the backend datastore returns 10 features, the server may not know, if there are more features or not (in most cases there will be more features), unless the total number of matches is also computed, which can be too costly. The server will then add the next link, and if there are no more features, dereferencing the next link will return an empty feature collection and no next link. This behavior is consistent with the statements above. + +Clients cannot assume that paging is safe against changes to dataset while a client iterates through `next` links. If a server provides opaque links these could be safe and maintain the dataset state during the original request. Using a parameter for the start index, however, will not be safe. + +Additional requirements classes for safe paging or an index parameter can be added in extensions to this specification. + +include::../recomendations/core/PER_rc-prev.adoc[] + +Providing `prev` links supports navigating back and forth between pages, but depending on the implementation approach it can be too complex to implement. + +include::../requirements/core/REQ_rc-rel-type.adoc[] + +include::../requirements/core/REQ_rc-numberMatched.adoc[] + +include::../requirements/core/REQ_rc-numberReturned.adoc[] + +include::../recomendations/core/REC_rc-extent.adoc[] + +NOTE: The representation of the links and the other properties in the payload depends on the encoding of the feature collection + === Link Headers include::../recommendations/core/REC_link-header.adoc[] From e44d0ebfaa7ecc3b2fa4efd6ce7465dffe41ac58 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 10:36:52 +0100 Subject: [PATCH 03/19] Add an annex recommending aggregation methods for measurementType --- core/standard/document.adoc | 2 + .../annex_measurement_type_methods.adoc | 92 +++++++++++++++++++ 2 files changed, 94 insertions(+) create mode 100644 core/standard/sections/annex_measurement_type_methods.adoc diff --git a/core/standard/document.adoc b/core/standard/document.adoc index e78696713..54e5b3556 100644 --- a/core/standard/document.adoc +++ b/core/standard/document.adoc @@ -61,6 +61,8 @@ include::sections/annex_ats.adoc[] include::sections/annex_collection_response.adoc[] +include::sections/annex_measurement_type_methods.adoc[] + include::sections/annex_examples.adoc[] include::sections/annex_relationship.adoc[] diff --git a/core/standard/sections/annex_measurement_type_methods.adoc b/core/standard/sections/annex_measurement_type_methods.adoc new file mode 100644 index 000000000..c0865e9c8 --- /dev/null +++ b/core/standard/sections/annex_measurement_type_methods.adoc @@ -0,0 +1,92 @@ +[appendix,obligation="informative"] + +[[measurementType_methods_desc]] +== Parameter measurementType Methods (Informative) + +The parameter-names object provides information about the data parameters supported by the collection, each `parameter-names`` object has an optional `measurementType` attribute which provides basic information about how the parameter is calculated and over what time period. The table below provides a list of recommended definitions for the `method` property of the `measurementType` attribute. + +[width="100%",cols="22%,22%,14%,42%",frame="topbot",options="header"] +.Recommended method values +|========================== +|Method | Description +|instantaneous | The data values are representative of points in space or time +|sum | The data values are representative of a sum or accumulation +|maximum | Maximum +|median | Median +|mid_range | Average of maximum and minimum +|minimum | Minimum +|mean | Mean (average value) +|mode | Mode (most common value) +|range | Absolute difference between maximum and minimum +|root_mean_square | Root mean square (RMS) +|standard_deviation | Standard deviation +|========================== + + +In the example below the data in the collection consists of: + +Air temperature values which represent an instantaneous value for the validity time +Wind Speed and Wind direction values which represent a average value over the 10 minute period upto the validity time. + +[source,json] +---- +"parameter_names": { + "air_temperature": { + "type": "Parameter", + "description": "Air temperature measured at screen level", + "unit": { + "label": "K", + "symbol": { + "value": "K", + "type": "http://qudt.org/vocab/unit/K" + } + }, + "observedProperty": { + "id": "http://codes.wmo.int/bufr4/b/12/004", + "label": "Air Temperature" + }, + "measurementType": { + "method": "instantaneous", + "period": "PT0S" + } + }, + "wind_speed": { + "type": "Parameter", + "description": "10m wind speed value", + "unit": { + "label": "m/s", + "symbol": { + "value": "m%20s", + "type": "http://qudt.org/vocab/unit/M-PER-SEC.html" + } + }, + "observedProperty": { + "id": "http://codes.wmo.int/bufr4/b/11/012", + "label": "10m Wind Speed" + }, + "measurementType": { + "method": "mean", + "period": "-PT10M/PT0M" + } + }, + "wind_direction": { + "type": "Parameter", + "description": "10m wind direction value", + "unit": { + "label": "", + "symbol": { + "value": "deg", + "type": "https://qudt.org/vocab/unit/DEG.html" + } + }, + "observedProperty": { + "id": "http://codes.wmo.int/bufr4/b/11/011", + "label": "10m wind direction" + }, + "measurementType": { + "method": "mean", + "period": "-PT10M/PT0M" + } + } +} +---- \ No newline at end of file From 591fd659e65c253c10cf9bc27c145afa6347bc29 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 10:39:00 +0100 Subject: [PATCH 04/19] Add link to limit definition requirement --- core/standard/sections/annex_requirements.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/standard/sections/annex_requirements.adoc b/core/standard/sections/annex_requirements.adoc index 9f43fcb15..b2fb9fb3c 100644 --- a/core/standard/sections/annex_requirements.adoc +++ b/core/standard/sections/annex_requirements.adoc @@ -277,6 +277,9 @@ include::../requirements/edr/REQ_rc-locationid-definition.adoc[] include::../requirements/edr/REQ_rc-locationid-response.adoc[] +include::../requirements/core/REQ_rc-limit-definition.adoc[] + + :sectnums: From 44fddddfa1f7aa4234ce9d5339daaa1b60d0d2c2 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 10:41:27 +0100 Subject: [PATCH 05/19] Update reference to CoverageJSON Community Standard --- core/standard/sections/clause_3_references.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/standard/sections/clause_3_references.adoc b/core/standard/sections/clause_3_references.adoc index 8e652d5a1..a9a0b7079 100644 --- a/core/standard/sections/clause_3_references.adoc +++ b/core/standard/sections/clause_3_references.adoc @@ -14,7 +14,7 @@ The following normative documents contain provisions that, through reference in * [[[post,HTTP POST]]] Fielding, R., Reschke, J.: IETF RFC 7231, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.3[https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.3] * [[[html5,html5]]] W3C: HTML5, W3C Recommendation, https://www.w3.org/TR/html5/[https://www.w3.org/TR/html5/] * [[[schema_org,schema_org]]]Schema.org: https://schema.org/docs/schemas.html[https://schema.org/docs/schemas.html] -* [[[covjson,covjson]]] Blower, J., Riechert, M., Roberts, B.: Overview of the CoverageJSON format, https://www.w3.org/TR/covjson-overview/[https://www.w3.org/TR/covjson-overview/] +* [[[OGC21-069r2,OGC 21-069r2]]] Little, C., Blower, J., Riechert, M., Kralidis, T., Davies, E., Olson, S., McGibbney, L.: OGC CoverageJSON Community Standard, https://docs.ogc.org/cs/21-069r2/21-069r2.html[https://docs.ogc.org/cs/21-069r2/21-069r2.html] * [[[rfc2413,rfc2413]]] Weibel, S., Kunze, J., Lagoze, C., Wolf, M.: IETF RFC 2413, Dublin Core Metadata for Resource Discovery, https://tools.ietf.org/rfc/rfc2413.txt[https://tools.ietf.org/rfc/rfc2413.txt] * [[[OGC06-103r4,OGC 06-103r4]]] Herring, J.: Simple Feature Access - Part 1: Common Architecture, http://portal.opengeospatial.org/files/?artifact_id=25355[http://portal.opengeospatial.org/files/?artifact_id=25355] * [[[OGC18-010r7,OGC 18-010r7]]] Lott, R.: Well-Known Text representation of Coordinate Reference Systems, http://docs.opengeospatial.org/is/18-010r7/18-010r7.html[http://docs.opengeospatial.org/is/18-010r7/18-010r7.html] From 780f18f3a007e4b578ac4c36a44b06b0b01dfa23 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 10:44:19 +0100 Subject: [PATCH 06/19] Add query parameter definition message --- core/standard/sections/clause_8_queries.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/standard/sections/clause_8_queries.adoc b/core/standard/sections/clause_8_queries.adoc index fce766883..5cf879577 100644 --- a/core/standard/sections/clause_8_queries.adoc +++ b/core/standard/sections/clause_8_queries.adoc @@ -48,6 +48,9 @@ The OGC API — Common standard does not define any information resource typ [[query-resources-section]] === Query Resources +**The following tables define the query parameters for each of the EDR query types, the query types support a mix of optional and required query parameters. Where necessary an EDR implementation can use its OpenAPI document response (i.e. `/api`) to override the default for query parameters from optional to required or only advertise the query parameters that are supported by the API (ALL EDR implementations MUST implement query parameters that are required by the EDR standard). The OpenAPI document for an EDR service SHALL be the definitive reference of whether a query parameter is required in any request to the EDR server.** + + [#query-resource-table,reftext='{table-caption} {counter:table-num}'] .Query Types [width="90%",cols=",,",options="header"] From d7741fe68231860dc462be412f4cdcd763e65e31 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 10:47:06 +0100 Subject: [PATCH 07/19] Fix time response requirement --- core/standard/requirements/core/REQ_rc-time-response.adoc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/standard/requirements/core/REQ_rc-time-response.adoc b/core/standard/requirements/core/REQ_rc-time-response.adoc index 0cca71f27..29b427968 100644 --- a/core/standard/requirements/core/REQ_rc-time-response.adoc +++ b/core/standard/requirements/core/REQ_rc-time-response.adoc @@ -31,8 +31,9 @@ The temporal information is either a date-time or a time interval. The parameter interval-closed = date-time "/" date-time interval-open-start = "../" date-time interval-open-end = date-time "/.." -interval = interval-closed / interval-open-start / interval-open-end -datetime = date-time / interval +repeating interval = R[number of repetitions] / date-time / interval +datetime = date-time +list of datetimes = date-time, date-time, date-time ---- --- *E:* From 449ec57e7a3d655bd4b2f704545adaa965ecfafe Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 10:50:26 +0100 Subject: [PATCH 08/19] Replace duplicate operationIds --- core/standard/openapi/paths/queries/instance-locations.yaml | 4 ++-- core/standard/openapi/paths/queries/instance-radius.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/standard/openapi/paths/queries/instance-locations.yaml b/core/standard/openapi/paths/queries/instance-locations.yaml index e5537879b..62b59cace 100644 --- a/core/standard/openapi/paths/queries/instance-locations.yaml +++ b/core/standard/openapi/paths/queries/instance-locations.yaml @@ -4,7 +4,7 @@ get: - Instance data queries summary: List available location identifers for the instance description: List the locations available for the instance of the collection - operationId: ListDataInstanceLocations + operationId: GetListDataInstanceLocations parameters: - $ref: ../../parameters/collections/collectionId.yaml - $ref: ../../parameters/queries/instanceId.yaml @@ -31,7 +31,7 @@ post: - Instance data queries summary: List available location identifers for the instance description: List the locations available for the instance of the collection - operationId: ListDataInstanceLocations + operationId: PostListDataInstanceLocations parameters: - $ref: ../../parameters/collections/collectionId.yaml - $ref: ../../parameters/queries/instanceId.yaml diff --git a/core/standard/openapi/paths/queries/instance-radius.yaml b/core/standard/openapi/paths/queries/instance-radius.yaml index ec1d9fa26..539d3c1a9 100644 --- a/core/standard/openapi/paths/queries/instance-radius.yaml +++ b/core/standard/openapi/paths/queries/instance-radius.yaml @@ -4,7 +4,7 @@ get: - 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: PostInstanceDataForRadius + operationId: GetInstanceDataForRadius parameters: - $ref: ../../parameters/collections/collectionId.yaml - $ref: ../../parameters/queries/instanceId.yaml From f6a96d314ad313072042bd49c62bfba5446a0fef Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Fri, 13 Sep 2024 11:47:19 +0100 Subject: [PATCH 09/19] Add support for requesting specific resolution in /cube endpoint --- .../ATS_rc-resolution-x-definition.adoc | 22 ++++--- .../ATS_rc-resolution-x-response.adoc | 23 ++++--- .../ATS_rc-resolution-y-definition.adoc | 22 ++++--- .../ATS_rc-resolution-y-response.adoc | 23 ++++--- .../ATS_rc-resolution-z-definition.adoc | 22 ++++--- .../ATS_rc-resolution-z-response.adoc | 23 ++++--- .../abstract_tests/queries/ATS_corridor.adoc | 10 ++- .../abstract_tests/queries/ATS_cube.adoc | 20 ++++-- core/standard/openapi/paths/queries/cube.yaml | 3 + .../openapi/paths/queries/instance-cube.yaml | 3 + .../requirements/edr/REQ_rc-cube.adoc | 66 ++++++------------- .../edr/REQ_rc-resolution-x-response.adoc | 12 ++-- .../edr/REQ_rc-resolution-y-response.adoc | 9 ++- .../edr/REQ_rc-resolution-z-response.adoc | 7 +- .../requirements/edr/query_type/cube.adoc | 20 +++++- 15 files changed, 166 insertions(+), 119 deletions(-) diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-resolution-x-definition.adoc index bd17f2e3c..517cd746f 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-resolution-x-definition.adoc @@ -1,11 +1,14 @@ -[[ats_collections_rc-resolution-x-definition]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-resolution-x-definition* -^|Test Purpose |Validate that the `resolution-x` query parameters are constructed correctly. -^|Requirement |<> -^|Test Method |Verify that the `resolution-x` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +[[ats_collections_rc-resolution-x-definition]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-x-definition +target:: /req/edr/resolution-x-definition +test-purpose:: Validate that the `resolution-x` query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `resolution-x` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). [source,YAML] ---- @@ -17,4 +20,5 @@ schema: style: form explode: false ---- -|=== +-- +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-resolution-x-response.adoc index 231811caa..a29ad753b 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-response.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-resolution-x-response.adoc @@ -1,10 +1,13 @@ -[[ats_collections_rc-resolution-x-response]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-resolution-x-response* -^|Test Purpose |Validate that the resolution-x query parameters are processed correctly. -^|Requirement |<> -^|Test Method |. Verify that the data returned by the query contains the same number of values on the x axis as that requested in the `resolution-x` parameter -. Validate that the `resolution-x` parameter complies with the syntax described in <>. -|=== +[[ats_collections_rc-resolution-x-response]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-x-response +target:: /req/edr/resolution-x-response +test-purpose:: Validate that the resolution-x query parameters are processed correctly. +test-method:: +step::: Validate that the `resolution-x` parameter complies with the syntax described in <>. +step::: Verify that the data returned by the query contains the same number of values on the x axis as +that requested in the `resolution-x` parameter. +step::: Verify that a HTTP 400 error is returned when an invalid `resolution-x` parameter is requested. +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-resolution-y-definition.adoc index 18dbbb329..7def35f92 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-resolution-y-definition.adoc @@ -1,11 +1,14 @@ -[[ats_collections_rc-resolution-y-definition]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-resolution-y-definition* -^|Test Purpose |Validate that the `resolution-y` query parameters are constructed correctly. -^|Requirement |<> -^|Test Method |Verify that the `resolution-y` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +[[ats_collections_rc-resolution-y-definition]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-y-definition +target:: /req/edr/resolution-y-definition +test-purpose:: Validate that the `resolution-y` query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `resolution-y` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). [source,YAML] ---- @@ -17,4 +20,5 @@ schema: style: form explode: false ---- -|=== +-- +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-resolution-y-response.adoc index 57628c778..341d2ccf7 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-response.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-resolution-y-response.adoc @@ -1,10 +1,13 @@ -[[ats_collections_rc-resolution-y-response]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-resolution-y-response* -^|Test Purpose |Validate that the `resolution-y` query parameters are processed correctly. -^|Requirement |<> -^|Test Method |. Verify that the data returned by the query contains the same number of values on the y axis as that requested in the `resolution-y` parameter -. Validate that the `resolution-y` parameter complies with the syntax described in <>. -|=== +[[ats_collections_rc-resolution-y-response]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-y-response +target:: /req/edr/resolution-y-response +test-purpose:: Validate that the resolution-y query parameters are processed correctly. +test-method:: +step::: Validate that the `resolution-y` parameter complies with the syntax described in <>. +step::: Verify that the data returned by the query contains the same number of values on the y axis as +that requested in the `resolution-y` parameter. +step::: Verify that a HTTP 400 error is returned when an invalid `resolution-y` parameter is requested. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-resolution-z-definition.adoc index 99c97e0ef..a876ff91d 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-resolution-z-definition.adoc @@ -1,11 +1,14 @@ -[[ats_collections_rc-resolution-z-definition]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-resolution-z-definition* -^|Test Purpose |Validate that the resolution-z query parameters are constructed correctly. -^|Requirement |<> -^|Test Method |Verify that the `resolution-z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +[[ats_collections_rc-resolution-z-definition]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-z-definition +target:: /req/edr/resolution-z-definition +test-purpose:: Validate that the `resolution-z` query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `resolution-z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). [source,YAML] ---- @@ -17,4 +20,5 @@ schema: style: form explode: false ---- -|=== +-- +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-resolution-z-response.adoc index 3cc0479a1..bc190d4d1 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-response.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-resolution-z-response.adoc @@ -1,10 +1,13 @@ -[[ats_collections_rc-resolution-z-response]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-resolution-z-response* -^|Test Purpose |Validate that the `resolution-z` query parameters are processed correctly. -^|Requirement |<> -^|Test Method |. Verify that the data returned by the query contains the same number of values on the z axis as that requested in the `resolution-z` parameter -. Validate that the `resolution-z` parameter complies with the syntax described in <>. -|=== +[[ats_collections_rc-resolution-z-response]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-z-response +target:: /req/edr/resolution-z-response +test-purpose:: Validate that the resolution-z query parameters are processed correctly. +test-method:: +step::: Validate that the `resolution-z` parameter complies with the syntax described in <>. +step::: Verify that the data returned by the query contains the same number of values on the z axis as +that requested in the `resolution-z` parameter. +step::: Verify that a HTTP 400 error is returned when an invalid `resolution-z` parameter is requested. +==== diff --git a/core/standard/abstract_tests/queries/ATS_corridor.adoc b/core/standard/abstract_tests/queries/ATS_corridor.adoc index 307d33c77..71dcfe97f 100644 --- a/core/standard/abstract_tests/queries/ATS_corridor.adoc +++ b/core/standard/abstract_tests/queries/ATS_corridor.adoc @@ -235,6 +235,14 @@ include::../collections/ATS_rc-height-units-definition.adoc[] include::../collections/ATS_rc-height-units-response.adoc[] +include::../collections/ATS_rc-resolution-x-definition.adoc[] + +include::../collections/ATS_rc-resolution-x-response.adoc[] + +include::../collections/ATS_rc-resolution-y-definition.adoc[] + +include::../collections/ATS_rc-resolution-y-response.adoc[] + include::../collections/corridor/ATS_rc-parameter-name-definition.adoc[] include::../collections/corridor/ATS_rc-parameter-name-response.adoc[] @@ -245,4 +253,4 @@ include::../collections/corridor/ATS_rc-crs-response.adoc[] include::../collections/corridor/ATS_rc-f-definition.adoc[] -include::../collections/corridor/ATS_rc-f-response.adoc[] +include::../collections/corridor/ATS_rc-f-response.adoc[] \ No newline at end of file diff --git a/core/standard/abstract_tests/queries/ATS_cube.adoc b/core/standard/abstract_tests/queries/ATS_cube.adoc index 442194350..5355a906b 100644 --- a/core/standard/abstract_tests/queries/ATS_cube.adoc +++ b/core/standard/abstract_tests/queries/ATS_cube.adoc @@ -73,12 +73,6 @@ and verify that only information that matches the selection criteria is returned -- ==== -// The coords param tests have been commented out because they are not supported by the Cube query. -// See https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/423#issuecomment-1553144063 - -//include::../collections/cube/ATS_rc-coords-definition.adoc[] - -//include::../collections/cube/ATS_rc-coords-response.adoc[] include::../collections/cube/ATS_rc-z-definition.adoc[] @@ -96,10 +90,22 @@ include::../collections/cube/ATS_rc-parameter-name-definition.adoc[] include::../collections/cube/ATS_rc-parameter-name-response.adoc[] +include::../collections/ATS_rc-resolution-x-definition.adoc[] + +include::../collections/ATS_rc-resolution-x-response.adoc[] + +include::../collections/ATS_rc-resolution-y-definition.adoc[] + +include::../collections/ATS_rc-resolution-y-response.adoc[] + +include::../collections/ATS_rc-resolution-z-definition.adoc[] + +include::../collections/ATS_rc-resolution-z-response.adoc[] + include::../collections/cube/ATS_rc-crs-definition.adoc[] include::../collections/cube/ATS_rc-crs-response.adoc[] include::../collections/cube/ATS_rc-f-definition.adoc[] -include::../collections/cube/ATS_rc-f-response.adoc[] +include::../collections/cube/ATS_rc-f-response.adoc[] \ No newline at end of file diff --git a/core/standard/openapi/paths/queries/cube.yaml b/core/standard/openapi/paths/queries/cube.yaml index 887f787f3..16be87c62 100644 --- a/core/standard/openapi/paths/queries/cube.yaml +++ b/core/standard/openapi/paths/queries/cube.yaml @@ -11,6 +11,9 @@ get: - $ref: ../../parameters/core/cube-z.yaml - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml - $ref: ../../parameters/core/parameter-name.yaml + - $ref: ../../parameters/core/resolution-x.yaml + - $ref: ../../parameters/core/resolution-y.yaml + - $ref: ../../parameters/core/resolution-z.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml responses: diff --git a/core/standard/openapi/paths/queries/instance-cube.yaml b/core/standard/openapi/paths/queries/instance-cube.yaml index 73ab9e21f..854a84f63 100644 --- a/core/standard/openapi/paths/queries/instance-cube.yaml +++ b/core/standard/openapi/paths/queries/instance-cube.yaml @@ -12,6 +12,9 @@ get: - $ref: ../../parameters/core/cube-z.yaml - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml - $ref: ../../parameters/core/parameter-name.yaml + - $ref: ../../parameters/core/resolution-x.yaml + - $ref: ../../parameters/core/resolution-y.yaml + - $ref: ../../parameters/core/resolution-z.yaml - $ref: ../../parameters/core/crs.yaml - $ref: ../../parameters/core/f.yaml responses: diff --git a/core/standard/requirements/edr/REQ_rc-cube.adoc b/core/standard/requirements/edr/REQ_rc-cube.adoc index 42346ca41..633438c1d 100644 --- a/core/standard/requirements/edr/REQ_rc-cube.adoc +++ b/core/standard/requirements/edr/REQ_rc-cube.adoc @@ -1,67 +1,39 @@ -[[req_edr_rc-cube]] +[[req_edr_resolution-z-response]] +==== *Requirement /req/edr/resolution-z-response* Parameter resolution-z response [requirement] ==== [%metadata] -identifier:: /req/edr/rc-cube +identifier:: /req/edr/resolution-z-response *A:* -For every collection identified in the collections response (path `/collections`), the server MAY support the HTTP GET operation at the path `/collections/{collectionId}/cube`. +If the `resolution-z` parameter is provided, it denotes the number of positions to retrieve data for, over the depth of the corridor path including its minimum and maximum width coordinates. ---- -*B:* - -For every collection identified in the collections response (path `/collections`), the server MAY support the HTTP POST operation at the path `/collections/{collectionId}/cube`. - ---- -*C:* - -The parameter `collectionId` is each `id` property in the collections response (JSONPath: `$.collections[*].id`). - ---- -*D:* - -A `cube` GET or POST operation SHALL include a `bbox` query parameter - ---- -*E:* - -A `bbox` query parameter SHOULD only consist of four values, any vertical values defined by `bbox` will be overridden by the values assigned to the `z` query parameter +.interpolated corridor example +image::images/REQ_rc-resolution-z-a.png[interpolated corridor example] --- -*F:* - -If the `bbox` query parameter is not specified a HTTP `400` error should be generated - ---- -*G:* - -A `cube` GET or POST operation SHALL include a `z` query parameter +*B:* ---- -*H:* +A `resolution-z` value of 0 SHALL return all available data at the stored vertical resolution between (and including) the minimum and maximum coordinates of the defined corridor. -If the `z` query parameter is not specified a HTTP `400` error should be generated +.native resolution corridor example +image::images/REQ_rc-resolution-z-b.png[native resolution corridor example] --- -*I:* - -A `cube` GET or POST operation SHOULD include a `parameter-name` query parameter +*C:* ---- -*J:* +If `resolution-z` is not specified the API SHOULD return all available data at a resolution determined by the server, including the minimum and maximum coordinates of the defined corridor. -A `cube` GET or POST operation MAY include a `datetime` query parameter ---- -*K:* +[source,txt] +---- +resolution-z = number of intervals + 1 +---- +*D:* -A `cube` GET or POST operation SHOULD include a `crs` query parameter +If the specified `resolution-z` value is invalid the API SHALL return a HTTP 400 error code with a message body which describes the range of valid `resolution-z` values. --- -*L:* - -A `cube` GET or POST operation SHOULD include an `f` query parameter - -==== +==== \ No newline at end of file diff --git a/core/standard/requirements/edr/REQ_rc-resolution-x-response.adoc b/core/standard/requirements/edr/REQ_rc-resolution-x-response.adoc index 9abd18050..cca2cde29 100644 --- a/core/standard/requirements/edr/REQ_rc-resolution-x-response.adoc +++ b/core/standard/requirements/edr/REQ_rc-resolution-x-response.adoc @@ -8,7 +8,7 @@ identifier:: /req/edr/resolution-x-response *A:* -If the `resolution-x` parameter is provided, it denotes the number of positions to retrieve data for, across the width of the corridor path, including its minimum and maximum width coordinates. +If the `resolution-x` parameter is provided, it denotes the number of positions to retrieve data for, along the path between (and including) the minimum and maximum x coordinates, width coordinates. .interpolated corridor example @@ -17,7 +17,7 @@ image::images/REQ_rc-resolution-x-a.png[interpolated corridor example] --- *B:* -A `resolution-x` value of 0 SHALL return all available data at the stored resolution between (and including) the minimum and maximum coordinates of the defined corridor. +A `resolution-x` value of 0 SHALL return all available data at the stored resolution between (and including) the minimum and maximum x coordinates. .native resolution corridor example image::images/REQ_rc-resolution-x-b.png[native resolution corridor example] @@ -25,11 +25,15 @@ image::images/REQ_rc-resolution-x-b.png[native resolution corridor example] --- *C:* -If `resolution-x` is not specified, the API SHOULD return all available data at a resolution determined by the server, including the minimum and maximum coordinates of the defined corridor. +If `resolution-x` is not specified, the API SHOULD return all available data at a resolution determined by the server, including the minimum and maximum coordinates. [source,txt] ---- resolution-x = number of intervals + 1 ---- +*D:* -==== +If the specified `resolution-x` value is invalid the API SHALL return a HTTP 400 error code with a message body which describes the range of valid `resolution-x` values. + +--- +==== \ No newline at end of file diff --git a/core/standard/requirements/edr/REQ_rc-resolution-y-response.adoc b/core/standard/requirements/edr/REQ_rc-resolution-y-response.adoc index f007521f5..0ec8350b4 100644 --- a/core/standard/requirements/edr/REQ_rc-resolution-y-response.adoc +++ b/core/standard/requirements/edr/REQ_rc-resolution-y-response.adoc @@ -30,4 +30,11 @@ IF `resolution-y` is not specified, data should be returned for just the locatio ---- resolution-y = number of intervals ---- -==== + +*E:* + +If the specified `resolution-y` value is invalid the API SHALL return a HTTP 400 error code with a message body which describes the range of valid `resolution-y` values. + +--- + +==== \ No newline at end of file diff --git a/core/standard/requirements/edr/REQ_rc-resolution-z-response.adoc b/core/standard/requirements/edr/REQ_rc-resolution-z-response.adoc index 3412a3026..633438c1d 100644 --- a/core/standard/requirements/edr/REQ_rc-resolution-z-response.adoc +++ b/core/standard/requirements/edr/REQ_rc-resolution-z-response.adoc @@ -31,4 +31,9 @@ If `resolution-z` is not specified the API SHOULD return all available data at a ---- resolution-z = number of intervals + 1 ---- -==== +*D:* + +If the specified `resolution-z` value is invalid the API SHALL return a HTTP 400 error code with a message body which describes the range of valid `resolution-z` values. + +--- +==== \ No newline at end of file diff --git a/core/standard/requirements/edr/query_type/cube.adoc b/core/standard/requirements/edr/query_type/cube.adoc index 72276081a..966b3fbca 100644 --- a/core/standard/requirements/edr/query_type/cube.adoc +++ b/core/standard/requirements/edr/query_type/cube.adoc @@ -42,6 +42,24 @@ a| **parameter-name** * <> * <> |String |No| Comma delimited list of parameter names (available options are listed in the **parameter_names** section of the <> metadata response) a| * `parameter-name=Visibility,Air%20Temperature` +a| **resolution-x** + +* <> + +* <> |String |No| Defined if the user requires data at a different resolution from the native resolution of the data along the x-axis, it denotes the number of intervals to retrieve data for along the x-axis + a| * `resolution-x=10` +a| **resolution-y** + +* <> + +* <> |String |No| Defined if the user requires data at a different resolution from the native resolution of the data along the y-axis, it denotes the number of intervals to retrieve data for along the y-axis + a| * `resolution-y=5` +a| **resolution-z** + +* <> + +* <> |String |No| Defined if the user requires data at a different resolution from the native resolution of the data along the z-axis, it denotes the number of intervals to retrieve data for along the z-axis + a| * `resolution-z=100` a| **crs** * <> @@ -58,4 +76,4 @@ a| **f** * `f=CSV` |==== -#If a client request has a *bbox* value which includes height values and defines a *z* query parameter the *z* query parameter will be the definition of the requested height value.# +#If a client request has a *bbox* value which includes height values and defines a *z* query parameter the *z* query parameter will be the definition of the requested height value.# \ No newline at end of file From 11ca2a4f17f8b578f94aaaeeb509c4d792c4cec3 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Mon, 16 Sep 2024 08:33:49 +0100 Subject: [PATCH 10/19] Clarification for locations endpoint --- core/standard/requirements/edr/query_type/item.adoc | 8 ++++++-- .../requirements/edr/query_type/locations.adoc | 10 ++++++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/standard/requirements/edr/query_type/item.adoc b/core/standard/requirements/edr/query_type/item.adoc index 8dbffb86e..0deb24c07 100644 --- a/core/standard/requirements/edr/query_type/item.adoc +++ b/core/standard/requirements/edr/query_type/item.adoc @@ -8,13 +8,17 @@ A service can define a custom GeoJSON schema in the OpenAPI definition for the s include::../../../recommendations/core/REC_edr-geojson.adoc[] -===== Parameter itemId - If an itemId is not specified, the query will return a list of the available itemId's. This behavior is specified in <>. All other parameters for use with the Items query are defined by OGC API - Features. +[cols="2,1,1,2,3"] +|==== +|Path Parameter| Type | Required|Description|Examples +a| **itemId**| String|No| Identifier for the required item. a| * +|==== + The filter constraints are defined by the following query parameters: [#item-def-table,reftext='{table-caption} {counter:table-num}'] diff --git a/core/standard/requirements/edr/query_type/locations.adoc b/core/standard/requirements/edr/query_type/locations.adoc index 998619128..f530e4f38 100644 --- a/core/standard/requirements/edr/query_type/locations.adoc +++ b/core/standard/requirements/edr/query_type/locations.adoc @@ -5,11 +5,17 @@ The filter constraints are defined by the following query parameters: .locations query structure [cols="2,1,1,2,3"] |==== -|Query Parameter| Type | Required|Description|Examples -a| **locationId**| String|No| A unique identifier for the required location, such as a http://en.wikipedia.org/wiki/Geohash[GeoHash], a World Meteorological Organization (WMO) station identifier or place name. a| * `EGLL` +|Path Parameter| Type | Required|Description|Examples +a| **locationId**| String|No| Unique identifier(s) for the required location(s), such as a http://en.wikipedia.org/wiki/Geohash[GeoHash], a World Meteorological Organization (WMO) station identifier or place name. a| * `EGLL` * `Ottawa` * `limit.broom.flip` * `gbsvn` +* `London,Paris,Washington` +|==== + +[cols="2,1,1,2,3"] +|==== +|Query Parameter| Type | Required|Description|Examples a| **datetime** * <> From 51f9c4924a1192c4c3a5a184293ef24ab219445a Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Mon, 16 Sep 2024 09:05:39 +0100 Subject: [PATCH 11/19] Make data_query query_type attribute optional --- .../examples/collections_metadata_JSON_1.adoc | 7 ------- .../examples/instance_metadata_JSON.adoc | 16 ---------------- core/standard/openapi/examples/collection.json | 4 ---- core/standard/openapi/examples/instance.json | 16 ---------------- .../schemas/collections/areaDataQuery.yaml | 2 -- .../schemas/collections/corridorDataQuery.yaml | 3 ++- .../schemas/collections/cubeDataQuery.yaml | 2 +- .../schemas/collections/locationsDataQuery.yaml | 2 -- 8 files changed, 3 insertions(+), 49 deletions(-) diff --git a/core/standard/examples/collections_metadata_JSON_1.adoc b/core/standard/examples/collections_metadata_JSON_1.adoc index ce38911d9..aeebe9bfd 100755 --- a/core/standard/examples/collections_metadata_JSON_1.adoc +++ b/core/standard/examples/collections_metadata_JSON_1.adoc @@ -101,7 +101,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords" :{ "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -129,7 +128,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords" :{ "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -161,7 +159,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords" :{ "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -190,7 +187,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Location query", "description": "Location query", - "query_type": "locations", "output_formats": [ "CoverageJSON", "GeoJSON", @@ -480,7 +476,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords" :{ "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -507,7 +502,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords" :{ "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -538,7 +532,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords" :{ "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, diff --git a/core/standard/examples/instance_metadata_JSON.adoc b/core/standard/examples/instance_metadata_JSON.adoc index 84ecd856e..3c098e54f 100644 --- a/core/standard/examples/instance_metadata_JSON.adoc +++ b/core/standard/examples/instance_metadata_JSON.adoc @@ -125,7 +125,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -152,7 +151,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -184,7 +182,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -212,7 +209,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" @@ -495,7 +491,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -522,7 +517,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -555,7 +549,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -583,7 +576,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" @@ -866,7 +858,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -893,7 +884,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -926,7 +916,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -954,7 +943,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" @@ -1237,7 +1225,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -1264,7 +1251,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -1296,7 +1282,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -1324,7 +1309,6 @@ There are also links to the license information for the observation and forecast "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" diff --git a/core/standard/openapi/examples/collection.json b/core/standard/openapi/examples/collection.json index 2050758ce..28b6807a5 100644 --- a/core/standard/openapi/examples/collection.json +++ b/core/standard/openapi/examples/collection.json @@ -104,7 +104,6 @@ "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords" :{ "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -132,7 +131,6 @@ "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords" :{ "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -164,7 +162,6 @@ "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords" :{ "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -193,7 +190,6 @@ "variables": { "title": "Location query", "description": "Location query", - "query_type": "locations", "output_formats": [ "CoverageJSON", "GeoJSON", diff --git a/core/standard/openapi/examples/instance.json b/core/standard/openapi/examples/instance.json index 5547cd7b0..1ad5ac274 100644 --- a/core/standard/openapi/examples/instance.json +++ b/core/standard/openapi/examples/instance.json @@ -102,7 +102,6 @@ "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -129,7 +128,6 @@ "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -161,7 +159,6 @@ "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -189,7 +186,6 @@ "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" @@ -466,7 +462,6 @@ "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -493,7 +488,6 @@ "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -526,7 +520,6 @@ "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -554,7 +547,6 @@ "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" @@ -831,7 +823,6 @@ "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -858,7 +849,6 @@ "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -891,7 +881,6 @@ "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -919,7 +908,6 @@ "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" @@ -1196,7 +1184,6 @@ "variables": { "title": "Position query", "description": "Position query", - "query_type": "position", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -1223,7 +1210,6 @@ "variables": { "title": "Radius query", "description": "Radius query", - "query_type": "radius", "coords": { "description": "Well Known Text POINT value i.e. POINT(-120, 55)" }, @@ -1255,7 +1241,6 @@ "variables": { "title": "Area query", "description": "Area query", - "query_type": "area", "coords": { "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" }, @@ -1283,7 +1268,6 @@ "variables": { "title": "Locations query", "description": "Locations query", - "query_type": "location", "output_formats": [ "CoverageJSON", "GeoJSON" diff --git a/core/standard/openapi/schemas/collections/areaDataQuery.yaml b/core/standard/openapi/schemas/collections/areaDataQuery.yaml index 646f6dab7..26eb3bdba 100644 --- a/core/standard/openapi/schemas/collections/areaDataQuery.yaml +++ b/core/standard/openapi/schemas/collections/areaDataQuery.yaml @@ -1,7 +1,5 @@ allOf: - $ref: DataQuery.yaml -required: - - query_type properties: query_type: description: Type of EDR query diff --git a/core/standard/openapi/schemas/collections/corridorDataQuery.yaml b/core/standard/openapi/schemas/collections/corridorDataQuery.yaml index dd3f8886c..58362bb6d 100644 --- a/core/standard/openapi/schemas/collections/corridorDataQuery.yaml +++ b/core/standard/openapi/schemas/collections/corridorDataQuery.yaml @@ -1,7 +1,8 @@ allOf: - $ref: DataQuery.yaml required: - - query_type + - width_units + - height_units properties: query_type: description: Type of EDR query diff --git a/core/standard/openapi/schemas/collections/cubeDataQuery.yaml b/core/standard/openapi/schemas/collections/cubeDataQuery.yaml index 83d2f3eca..2ef039662 100644 --- a/core/standard/openapi/schemas/collections/cubeDataQuery.yaml +++ b/core/standard/openapi/schemas/collections/cubeDataQuery.yaml @@ -1,7 +1,7 @@ allOf: - $ref: DataQuery.yaml required: - - query_type + - height_units properties: query_type: description: Type of EDR query diff --git a/core/standard/openapi/schemas/collections/locationsDataQuery.yaml b/core/standard/openapi/schemas/collections/locationsDataQuery.yaml index 5b5087d55..6c501374d 100644 --- a/core/standard/openapi/schemas/collections/locationsDataQuery.yaml +++ b/core/standard/openapi/schemas/collections/locationsDataQuery.yaml @@ -1,7 +1,5 @@ allOf: - $ref: DataQuery.yaml -required: - - query_type properties: query_type: description: Type of EDR query From 4e82424c1f8c0901222fdb89a4bb6f471ef16b8f Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Mon, 16 Sep 2024 09:38:56 +0100 Subject: [PATCH 12/19] Fix measurementType examples --- .../examples/collections_metadata_JSON_1.adoc | 40 +++++----- .../examples/instance_metadata_JSON.adoc | 80 +++++++++---------- .../standard/openapi/examples/collection.json | 40 +++++----- core/standard/openapi/examples/instance.json | 80 +++++++++---------- .../sections/annex_collection_response.adoc | 7 +- .../annex_measurement_type_methods.adoc | 6 +- 6 files changed, 126 insertions(+), 127 deletions(-) diff --git a/core/standard/examples/collections_metadata_JSON_1.adoc b/core/standard/examples/collections_metadata_JSON_1.adoc index aeebe9bfd..727361fda 100755 --- a/core/standard/examples/collections_metadata_JSON_1.adoc +++ b/core/standard/examples/collections_metadata_JSON_1.adoc @@ -229,7 +229,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -248,7 +248,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -267,7 +267,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -286,7 +286,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -305,7 +305,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -324,7 +324,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Dew point": { @@ -343,7 +343,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Pressure": { @@ -362,7 +362,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Pressure Tendancy": { @@ -381,7 +381,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -400,7 +400,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -587,7 +587,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -606,7 +606,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -625,7 +625,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -644,7 +644,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -663,7 +663,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -682,7 +682,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -701,7 +701,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -720,7 +720,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probability of precipitation": { @@ -739,7 +739,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -758,7 +758,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } diff --git a/core/standard/examples/instance_metadata_JSON.adoc b/core/standard/examples/instance_metadata_JSON.adoc index 3c098e54f..81e704713 100644 --- a/core/standard/examples/instance_metadata_JSON.adoc +++ b/core/standard/examples/instance_metadata_JSON.adoc @@ -249,7 +249,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -268,7 +268,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -287,7 +287,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -306,7 +306,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -325,7 +325,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -344,7 +344,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -363,7 +363,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -382,7 +382,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -401,7 +401,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -420,7 +420,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -616,7 +616,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -635,7 +635,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -654,7 +654,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -673,7 +673,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -692,7 +692,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -711,7 +711,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -730,7 +730,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -749,7 +749,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -768,7 +768,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -787,7 +787,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -983,7 +983,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -1002,7 +1002,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -1021,7 +1021,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -1040,7 +1040,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -1059,7 +1059,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -1078,7 +1078,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -1097,7 +1097,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -1116,7 +1116,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -1135,7 +1135,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -1154,7 +1154,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -1349,7 +1349,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -1368,7 +1368,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -1387,7 +1387,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -1406,7 +1406,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -1425,7 +1425,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -1444,7 +1444,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -1463,7 +1463,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -1482,7 +1482,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -1501,7 +1501,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -1520,7 +1520,7 @@ There are also links to the license information for the observation and forecast }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } diff --git a/core/standard/openapi/examples/collection.json b/core/standard/openapi/examples/collection.json index 28b6807a5..5dab2cebb 100644 --- a/core/standard/openapi/examples/collection.json +++ b/core/standard/openapi/examples/collection.json @@ -232,7 +232,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -251,7 +251,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -270,7 +270,7 @@ }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -289,7 +289,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -308,7 +308,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -327,7 +327,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Dew point": { @@ -346,7 +346,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Pressure": { @@ -365,7 +365,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Pressure Tendancy": { @@ -384,7 +384,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -403,7 +403,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -511,7 +511,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -530,7 +530,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -549,7 +549,7 @@ }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -568,7 +568,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -587,7 +587,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -606,7 +606,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -625,7 +625,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -644,7 +644,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -663,7 +663,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -682,7 +682,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } diff --git a/core/standard/openapi/examples/instance.json b/core/standard/openapi/examples/instance.json index 1ad5ac274..6821087f6 100644 --- a/core/standard/openapi/examples/instance.json +++ b/core/standard/openapi/examples/instance.json @@ -226,7 +226,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -245,7 +245,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -264,7 +264,7 @@ }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -283,7 +283,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -302,7 +302,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -321,7 +321,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -340,7 +340,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -359,7 +359,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -378,7 +378,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -397,7 +397,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -587,7 +587,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -606,7 +606,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -625,7 +625,7 @@ }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -644,7 +644,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -663,7 +663,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -682,7 +682,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -701,7 +701,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -720,7 +720,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -739,7 +739,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -758,7 +758,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -948,7 +948,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -967,7 +967,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -986,7 +986,7 @@ }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -1005,7 +1005,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -1024,7 +1024,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -1043,7 +1043,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -1062,7 +1062,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -1081,7 +1081,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -1100,7 +1100,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -1119,7 +1119,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } @@ -1308,7 +1308,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Speed": { @@ -1327,7 +1327,7 @@ }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Wind Gust": { @@ -1346,7 +1346,7 @@ }, "measurementType": { "method": "maximum", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "Air Temperature": { @@ -1365,7 +1365,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Weather": { @@ -1384,7 +1384,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Relative Humidity": { @@ -1403,7 +1403,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Feels like temperature": { @@ -1422,7 +1422,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "UV index": { @@ -1441,7 +1441,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Probabilty of precipitation": { @@ -1460,7 +1460,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } }, "Visibility": { @@ -1479,7 +1479,7 @@ }, "measurementType": { "method": "instantaneous", - "period": "PT0M" + "duration": "PT0M" } } } diff --git a/core/standard/sections/annex_collection_response.adoc b/core/standard/sections/annex_collection_response.adoc index eb2fa96aa..163da3115 100644 --- a/core/standard/sections/annex_collection_response.adoc +++ b/core/standard/sections/annex_collection_response.adoc @@ -440,7 +440,7 @@ A Parameter names example is shown below. }, "measurementType": { "method": "instantaneous", - "period": "PT0S" + "duration": "PT0S" } }, "u-component_of_wind_altitude_above_msl": { @@ -459,7 +459,7 @@ A Parameter names example is shown below. }, "measurementType": { "method": "instantaneous", - "period": "PT0S" + "duration": "PT0S" } }, "v-component_of_wind_altitude_above_msl": { @@ -478,10 +478,9 @@ A Parameter names example is shown below. }, "measurementType": { "method": "instantaneous", - "period": "PT0S" + "duration": "PT0S" } } - } } ---- diff --git a/core/standard/sections/annex_measurement_type_methods.adoc b/core/standard/sections/annex_measurement_type_methods.adoc index c0865e9c8..937ede444 100644 --- a/core/standard/sections/annex_measurement_type_methods.adoc +++ b/core/standard/sections/annex_measurement_type_methods.adoc @@ -47,7 +47,7 @@ Wind Speed and Wind direction values which represent a average value over the 10 }, "measurementType": { "method": "instantaneous", - "period": "PT0S" + "duration": "PT0S" } }, "wind_speed": { @@ -66,7 +66,7 @@ Wind Speed and Wind direction values which represent a average value over the 10 }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } }, "wind_direction": { @@ -85,7 +85,7 @@ Wind Speed and Wind direction values which represent a average value over the 10 }, "measurementType": { "method": "mean", - "period": "-PT10M/PT0M" + "duration": "-PT10M" } } } From 40243afe2bbb8fda3379f7a918817a69e542dae9 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Mon, 16 Sep 2024 09:43:04 +0100 Subject: [PATCH 13/19] Change Annex A and B to be Normative --- core/standard/sections/annex_ats.adoc | 2 +- core/standard/sections/annex_requirements.adoc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/standard/sections/annex_ats.adoc b/core/standard/sections/annex_ats.adoc index 93e1b3dce..5439b5dbd 100644 --- a/core/standard/sections/annex_ats.adoc +++ b/core/standard/sections/annex_ats.adoc @@ -1,4 +1,4 @@ -[appendix] +[appendix,obligation="normative"] [[ATS]] == Abstract Test Suite (Normative) diff --git a/core/standard/sections/annex_requirements.adoc b/core/standard/sections/annex_requirements.adoc index b2fb9fb3c..c9502fedd 100644 --- a/core/standard/sections/annex_requirements.adoc +++ b/core/standard/sections/annex_requirements.adoc @@ -1,4 +1,4 @@ -[appendix] +[appendix,obligation="normative"] [[requirements]] == Requirements Detail From 78a16f1c54bd9e5016ae759bfbba12034bd4c646 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Mon, 16 Sep 2024 09:57:11 +0100 Subject: [PATCH 14/19] Include support for Z query parameter open ranges --- core/standard/requirements/edr/REQ_rc-z-response.adoc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/standard/requirements/edr/REQ_rc-z-response.adoc b/core/standard/requirements/edr/REQ_rc-z-response.adoc index 2bfd5e6c8..fe860339b 100644 --- a/core/standard/requirements/edr/REQ_rc-z-response.adoc +++ b/core/standard/requirements/edr/REQ_rc-z-response.adoc @@ -37,6 +37,8 @@ If the `z` parameter is not provided, the server SHOULD return data at all avail ---- single-level = level interval-closed = min-level "/" max-level +interval-open-start = "../" level +interval-open-end = level "/.." level-list = level1 "," level2 "," level3 repeating-interval = "R"number of intervals "/" min-level "/" height to increment by @@ -51,6 +53,12 @@ z=850 All data between levels 100 and 550 z=100/550 +All data between the minimum level and 850 +z=../850 + +All data between the 500 and the maximum level +z=500/.. + Data at levels 10,80,100 z=10,80,200 From 257ef3ff162231b13f59319fea003ffb71ac3130 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Tue, 1 Oct 2024 09:39:26 +0100 Subject: [PATCH 15/19] Update release history --- core/standard/sections/annex_history.adoc | 1 + 1 file changed, 1 insertion(+) diff --git a/core/standard/sections/annex_history.adoc b/core/standard/sections/annex_history.adoc index e258386cc..beb4db41d 100644 --- a/core/standard/sections/annex_history.adoc +++ b/core/standard/sections/annex_history.adoc @@ -25,4 +25,5 @@ |2022-05-12 |Master branch|Mark Burgoyne | all | Add missing requirements and tests for data_queries metadata |2022-06-01 |1.0.1|G.Hobona | all | Final OGC Staff review |2023-06-30 |1.1|G.Hobona | all | Final OGC Staff review +|2024-09-19 |1.2|Mark Burgoyne| all | Changes for v1.2 ([#321](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/321) [#398](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/398) [#414](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/414) [#455](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/455) [#479](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/479) [#527](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/527) [#529](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/529) [#560](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/560) [#565](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/565) [#568](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/321)) |=== From 65d4398ceb76a9b9b43e84ff5ffccfa9d72c6f93 Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Tue, 1 Oct 2024 09:50:46 +0100 Subject: [PATCH 16/19] Remove duplicate link --- core/standard/sections/annex_history.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/standard/sections/annex_history.adoc b/core/standard/sections/annex_history.adoc index beb4db41d..cb4344e02 100644 --- a/core/standard/sections/annex_history.adoc +++ b/core/standard/sections/annex_history.adoc @@ -25,5 +25,5 @@ |2022-05-12 |Master branch|Mark Burgoyne | all | Add missing requirements and tests for data_queries metadata |2022-06-01 |1.0.1|G.Hobona | all | Final OGC Staff review |2023-06-30 |1.1|G.Hobona | all | Final OGC Staff review -|2024-09-19 |1.2|Mark Burgoyne| all | Changes for v1.2 ([#321](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/321) [#398](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/398) [#414](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/414) [#455](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/455) [#479](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/479) [#527](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/527) [#529](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/529) [#560](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/560) [#565](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/565) [#568](https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/321)) +|2024-09-19 |1.2|Mark Burgoyne| all | Changes for v1.2 (link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/321[#321], link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/398[#398], link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/414[#414], link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/455[#455], link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/479[#479] link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/527[#527], link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/529[#529], link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/560[#560], link:https://github.com/opengeospatial/ogcapi-environmental-data-retrieval/issues/565[#565]) |=== From edadcd048d58766360f3ef8b72c302ffb0bbbbab Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Mon, 14 Oct 2024 09:04:58 +0100 Subject: [PATCH 17/19] Fix errors identified by Metanorma build --- .../abstract_tests/ATS_class_collections.adoc | 3 + .../abstract_tests/ATS_class_queries.adoc | 87 ++++++++++++++++++- .../ATS_rc-custom-dimension-definition.adoc | 22 +++-- .../ATS_rc-custom-dimension-response.adoc | 25 +++--- .../collections/ATS_rc-limit-definition.adoc | 25 ++++++ .../collections/ATS_rc-limit-response.adoc | 14 +++ .../collections/ATS_rc-within-definition.adoc | 20 ----- .../collections/ATS_rc-within-response.adoc | 10 --- .../ATS_rc-within-units-definition.adoc | 20 ----- .../ATS_rc-within-units-response.adoc | 10 --- .../ATS_rc-custom-dimension-definition.adoc | 23 +++++ .../ATS_rc-custom-dimension-response.adoc | 14 +++ .../area/ATS_rc-limit-definition.adoc | 25 ++++++ .../area/ATS_rc-limit-response.adoc | 14 +++ .../ATS_rc-custom-dimension-definition.adoc | 23 +++++ .../ATS_rc-custom-dimension-response.adoc | 14 +++ .../ATS_rc-custom-dimension-definition.adoc | 23 +++++ .../ATS_rc-custom-dimension-response.adoc | 14 +++ .../collections/cube/ATS_rc-z-definition.adoc | 4 +- .../collections/cube/ATS_rc-z-response.adoc | 6 +- .../ATS_rc-custom-dimension-definition.adoc | 23 +++++ .../ATS_rc-custom-dimension-response.adoc | 14 +++ .../locations/ATS_rc-limit-definition.adoc | 25 ++++++ .../locations/ATS_rc-limit-response.adoc | 14 +++ .../ATS_rc-locationid-definition.adoc | 25 ++++++ .../locations/ATS_rc-locationid-response.adoc | 12 +++ .../ATS_rc-custom-dimension-definition.adoc | 23 +++++ .../ATS_rc-custom-dimension-response.adoc | 14 +++ .../position/ATS_rc-limit-definition.adoc | 25 ++++++ .../position/ATS_rc-limit-response.adoc | 14 +++ .../ATS_rc-custom-dimension-definition.adoc | 23 +++++ .../ATS_rc-custom-dimension-response.adoc | 14 +++ .../radius/ATS_rc-limit-definition.adoc | 25 ++++++ .../radius/ATS_rc-limit-response.adoc | 14 +++ .../ATS_rc-custom-dimension-definition.adoc | 23 +++++ .../ATS_rc-custom-dimension-response.adoc | 14 +++ .../abstract_tests/core/ATS_http.adoc | 2 +- .../abstract_tests/core/ATS_items.adoc | 25 ------ .../core/ATS_rc-bbox-definition.adoc | 23 ++--- .../core/ATS_rc-bbox-response.adoc | 27 +++--- .../core/ATS_rc-numberMatched.adoc | 10 +++ .../core/ATS_rc-numberReturned.adoc | 11 +++ .../ATS_rc-resolution-x-definition.adoc | 24 +++++ .../ATS_rc-resolution-x-response.adoc | 13 +++ .../ATS_rc-resolution-y-definition.adoc | 24 +++++ .../ATS_rc-resolution-y-response.adoc | 13 +++ .../core/corridor/ATS_rc-time-definition.adoc | 25 ++++++ .../core/corridor/ATS_rc-time-response.adoc | 13 +++ .../core/cube/ATS_rc-bbox-definition.adoc | 27 ++++++ .../core/cube/ATS_rc-bbox-response.adoc | 14 +++ .../cube}/ATS_rc-resolution-x-definition.adoc | 4 +- .../cube}/ATS_rc-resolution-x-response.adoc | 6 +- .../cube}/ATS_rc-resolution-y-definition.adoc | 4 +- .../cube}/ATS_rc-resolution-y-response.adoc | 6 +- .../cube}/ATS_rc-resolution-z-definition.adoc | 4 +- .../cube}/ATS_rc-resolution-z-response.adoc | 6 +- .../core/items/ATS_rc-time-definition.adoc | 25 ++++++ .../core/items/ATS_rc-time-response.adoc | 13 +++ .../core/radius/ATS_rc-within-definition.adoc | 25 ++++++ .../core/radius/ATS_rc-within-response.adoc | 14 +++ .../ATS_rc-within-units-definition.adoc | 25 ++++++ .../radius/ATS_rc-within-units-response.adoc | 14 +++ .../abstract_tests/queries/ATS_area.adoc | 11 +++ .../abstract_tests/queries/ATS_corridor.adoc | 17 +++- .../abstract_tests/queries/ATS_cube.adoc | 32 ++++--- .../abstract_tests/queries/ATS_items.adoc | 37 ++++++++ .../abstract_tests/queries/ATS_locations.adoc | 16 ++++ .../abstract_tests/queries/ATS_position.adoc | 4 + .../abstract_tests/queries/ATS_radius.adoc | 20 +++++ .../queries/ATS_trajectory.adoc | 7 ++ core/standard/code/generate_query_tests.py | 27 +++++- .../recommendations/core/REC_link-header.adoc | 2 +- .../recommendations/core/REC_rc-extent.adoc | 11 +-- .../recommendations/core/REC_rc-next-1.adoc | 11 +-- .../recommendations/core/REC_rc-next-2.adoc | 11 +-- .../recommendations/core/REC_rc-next-3.adoc | 11 +-- .../recommendations/core/REQ_rc-rel-type.adoc | 6 -- core/standard/relaton/cache/ogc/06-103r4.xml | 5 +- core/standard/relaton/cache/ogc/17-069r3.xml | 5 +- core/standard/relaton/cache/ogc/18-010r7.xml | 5 +- core/standard/relaton/cache/ogc/19-072.xml | 5 +- .../relaton/cache/ogc/ogc_20-024.notfound | 2 +- core/standard/relaton/cache/ogc/version | 2 +- core/standard/requirements/core/REQ_http.adoc | 4 +- .../core/REQ_rc-limit-definition.adoc | 16 ++-- .../core/REQ_rc-limit-response-1.adoc | 37 +++++--- .../core/REQ_rc-numberMatched.adoc | 22 +++-- .../core/REQ_rc-numberReturned.adoc | 21 +++-- .../edr/REQ_rc-bbox-definition-cube.adoc | 27 ++++++ .../edr/REQ_rc-bbox-response-cube.adoc | 56 ++++++++++++ .../edr/REQ_rc-coords-response.adoc | 20 ----- .../requirements/edr/REQ_rc-cube.adoc | 64 ++++++++++---- .../REQ_rc-custom-dimension-definition.adoc | 4 +- .../edr/REQ_rc-limit-definition.adoc | 16 ++-- .../edr/REQ_rc-limit-response.adoc | 32 +++++-- .../edr/REQ_rc-locationid-definition.adoc | 11 ++- .../edr/REQ_rc-locationid-response.adoc | 3 + .../requirements/edr/query_type/area.adoc | 2 + .../requirements/edr/query_type/item.adoc | 2 + .../edr/query_type/locations.adoc | 2 + .../requirements/edr/query_type/point.adoc | 2 + .../requirements/edr/query_type/radius.adoc | 2 + .../requirements_class_query_parameters.adoc | 4 +- .../sections/annex_collection_response.adoc | 2 +- .../standard/sections/annex_requirements.adoc | 7 +- .../sections/clause_3_references.adoc | 16 ++-- .../sections/clause_5_conventions.adoc | 8 +- core/standard/sections/clause_7_core.adoc | 3 +- core/standard/sections/clause_8_queries.adoc | 8 +- core/standard/sections/clause_9_general.adoc | 16 ++-- 110 files changed, 1429 insertions(+), 320 deletions(-) create mode 100644 core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc create mode 100644 core/standard/abstract_tests/collections/ATS_rc-limit-response.adoc delete mode 100644 core/standard/abstract_tests/collections/ATS_rc-within-definition.adoc delete mode 100644 core/standard/abstract_tests/collections/ATS_rc-within-response.adoc delete mode 100644 core/standard/abstract_tests/collections/ATS_rc-within-units-definition.adoc delete mode 100644 core/standard/abstract_tests/collections/ATS_rc-within-units-response.adoc create mode 100644 core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc create mode 100644 core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc create mode 100644 core/standard/abstract_tests/collections/area/ATS_rc-limit-definition.adoc create mode 100644 core/standard/abstract_tests/collections/area/ATS_rc-limit-response.adoc create mode 100644 core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-definition.adoc create mode 100644 core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-response.adoc create mode 100644 core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-definition.adoc create mode 100644 core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-response.adoc create mode 100644 core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-definition.adoc create mode 100644 core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-response.adoc create mode 100644 core/standard/abstract_tests/collections/locations/ATS_rc-limit-definition.adoc create mode 100644 core/standard/abstract_tests/collections/locations/ATS_rc-limit-response.adoc create mode 100644 core/standard/abstract_tests/collections/locations/ATS_rc-locationid-definition.adoc create mode 100644 core/standard/abstract_tests/collections/locations/ATS_rc-locationid-response.adoc create mode 100644 core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-definition.adoc create mode 100644 core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-response.adoc create mode 100644 core/standard/abstract_tests/collections/position/ATS_rc-limit-definition.adoc create mode 100644 core/standard/abstract_tests/collections/position/ATS_rc-limit-response.adoc create mode 100644 core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-definition.adoc create mode 100644 core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-response.adoc create mode 100644 core/standard/abstract_tests/collections/radius/ATS_rc-limit-definition.adoc create mode 100644 core/standard/abstract_tests/collections/radius/ATS_rc-limit-response.adoc create mode 100644 core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-definition.adoc create mode 100644 core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-response.adoc mode change 100644 => 100755 core/standard/abstract_tests/core/ATS_http.adoc delete mode 100644 core/standard/abstract_tests/core/ATS_items.adoc mode change 100644 => 100755 core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc mode change 100644 => 100755 core/standard/abstract_tests/core/ATS_rc-bbox-response.adoc create mode 100644 core/standard/abstract_tests/core/ATS_rc-numberMatched.adoc create mode 100644 core/standard/abstract_tests/core/ATS_rc-numberReturned.adoc create mode 100644 core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-definition.adoc create mode 100644 core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-response.adoc create mode 100644 core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-definition.adoc create mode 100644 core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-response.adoc create mode 100644 core/standard/abstract_tests/core/corridor/ATS_rc-time-definition.adoc create mode 100644 core/standard/abstract_tests/core/corridor/ATS_rc-time-response.adoc create mode 100755 core/standard/abstract_tests/core/cube/ATS_rc-bbox-definition.adoc create mode 100755 core/standard/abstract_tests/core/cube/ATS_rc-bbox-response.adoc rename core/standard/abstract_tests/{collections => core/cube}/ATS_rc-resolution-x-definition.adoc (81%) rename core/standard/abstract_tests/{collections => core/cube}/ATS_rc-resolution-x-response.adoc (72%) rename core/standard/abstract_tests/{collections => core/cube}/ATS_rc-resolution-y-definition.adoc (81%) rename core/standard/abstract_tests/{collections => core/cube}/ATS_rc-resolution-y-response.adoc (71%) rename core/standard/abstract_tests/{collections => core/cube}/ATS_rc-resolution-z-definition.adoc (81%) rename core/standard/abstract_tests/{collections => core/cube}/ATS_rc-resolution-z-response.adoc (72%) create mode 100644 core/standard/abstract_tests/core/items/ATS_rc-time-definition.adoc create mode 100644 core/standard/abstract_tests/core/items/ATS_rc-time-response.adoc create mode 100755 core/standard/abstract_tests/core/radius/ATS_rc-within-definition.adoc create mode 100755 core/standard/abstract_tests/core/radius/ATS_rc-within-response.adoc create mode 100755 core/standard/abstract_tests/core/radius/ATS_rc-within-units-definition.adoc create mode 100755 core/standard/abstract_tests/core/radius/ATS_rc-within-units-response.adoc create mode 100644 core/standard/abstract_tests/queries/ATS_items.adoc delete mode 100644 core/standard/recommendations/core/REQ_rc-rel-type.adoc mode change 100644 => 100755 core/standard/requirements/core/REQ_rc-limit-definition.adoc mode change 100644 => 100755 core/standard/requirements/core/REQ_rc-limit-response-1.adoc mode change 100644 => 100755 core/standard/requirements/core/REQ_rc-numberMatched.adoc mode change 100644 => 100755 core/standard/requirements/core/REQ_rc-numberReturned.adoc create mode 100755 core/standard/requirements/edr/REQ_rc-bbox-definition-cube.adoc create mode 100755 core/standard/requirements/edr/REQ_rc-bbox-response-cube.adoc mode change 100644 => 100755 core/standard/requirements/edr/REQ_rc-cube.adoc mode change 100644 => 100755 core/standard/sections/annex_collection_response.adoc mode change 100644 => 100755 core/standard/sections/annex_requirements.adoc mode change 100644 => 100755 core/standard/sections/clause_3_references.adoc mode change 100644 => 100755 core/standard/sections/clause_5_conventions.adoc mode change 100644 => 100755 core/standard/sections/clause_7_core.adoc mode change 100644 => 100755 core/standard/sections/clause_8_queries.adoc mode change 100644 => 100755 core/standard/sections/clause_9_general.adoc diff --git a/core/standard/abstract_tests/ATS_class_collections.adoc b/core/standard/abstract_tests/ATS_class_collections.adoc index d27080ff4..35b618924 100644 --- a/core/standard/abstract_tests/ATS_class_collections.adoc +++ b/core/standard/abstract_tests/ATS_class_collections.adoc @@ -24,6 +24,7 @@ conformance-test:: /conf/edr/rc-items-variables conformance-test:: /conf/edr/rc-md-query-links conformance-test:: /conf/core/rc-collection-info-links conformance-test:: /conf/edr/rc-parameters +conformance-test:: /conf/edr/rc-crs ==== @@ -87,6 +88,8 @@ include::collections/ATS_rc-items-variables.adoc[] include::collections/ATS_rc-md-query-links.adoc[] +include::collections/ATS_rc-crs.adoc[] + ===== Collection Links include::collections/ATS_rc-md-links.adoc[] diff --git a/core/standard/abstract_tests/ATS_class_queries.adoc b/core/standard/abstract_tests/ATS_class_queries.adoc index ff5b02d11..49457e0f6 100644 --- a/core/standard/abstract_tests/ATS_class_queries.adoc +++ b/core/standard/abstract_tests/ATS_class_queries.adoc @@ -16,6 +16,8 @@ conformance-test:: /conf/edr/rc-coords-definition-position conformance-test:: /conf/edr/rc-coords-response-position conformance-test:: /conf/edr/rc-z-definition-position conformance-test:: /conf/edr/rc-z-response-position +conformance-test:: /conf/edr/rc-custom-dimension-definition-position +conformance-test:: /conf/edr/rc-custom-dimension-response-position conformance-test:: /conf/core/datetime-definition-position conformance-test:: /conf/core/datetime-response-position conformance-test:: /conf/collections/REQ_rc-parameter-name-definition-position @@ -24,6 +26,36 @@ conformance-test:: /conf/edr/REQ_rc-crs-definition-position conformance-test:: /conf/edr/REQ_rc-crs-response-position conformance-test:: /conf/edr/rc-f-definition-position conformance-test:: /conf/collections/rc-f-response-position +conformance-test:: /conf/core/rc-limit-definition-position +conformance-test:: /conf/core/rc-limit-response-position + +conformance-test:: /conf/radius/no-query-params +conformance-test:: /conf/radius/no-coords-param +conformance-test:: /conf/radius/no-within-param +conformance-test:: /conf/radius/no-within_units-param +conformance-test:: /conf/radius/coords-param-invalid +conformance-test:: /conf/radius/valid-query-params +conformance-test:: /conf/edr/rc-coords-definition-radius +conformance-test:: /conf/edr/rc-coords-response-radius +conformance-test:: /conf/edr/rc-z-definition-radius +conformance-test:: /conf/edr/rc-z-response-radius +conformance-test:: /conf/edr/rc-custom-dimension-definition-radius +conformance-test:: /conf/edr/rc-custom-dimension-response-radius +conformance-test:: /conf/core/datetime-definition-radius +conformance-test:: /conf/core/datetime-response-radius +conformance-test:: /conf/edr/REQ_rc-within-definition +conformance-test:: /conf/collections/REQ_rc-within-response +conformance-test:: /conf/edr/REQ_rc-within-units-definition +conformance-test:: /conf/collections/REQ_rc-within-units-response +conformance-test:: /conf/collections/REQ_rc-parameter-name-definition-radius +conformance-test:: /conf/edr/rc-parameter-name-response-radius +conformance-test:: /conf/edr/REQ_rc-crs-definition-radius +conformance-test:: /conf/edr/REQ_rc-crs-response-radius +conformance-test:: /conf/edr/rc-f-definition-radius +conformance-test:: /conf/collections/rc-f-response-radius +conformance-test:: /conf/core/rc-limit-definition-radius +conformance-test:: /conf/core/rc-limit-response-radius + conformance-test:: /conf/area/no-query-params conformance-test:: /conf/area/no-coords-param conformance-test:: /conf/area/coords-param-invalid @@ -32,6 +64,8 @@ conformance-test:: /conf/edr/rc-coords-definition-area conformance-test:: /conf/edr/rc-coords-response-area conformance-test:: /conf/edr/rc-z-definition-area conformance-test:: /conf/edr/rc-z-response-area +conformance-test:: /conf/edr/rc-custom-dimension-definition-area +conformance-test:: /conf/edr/rc-custom-dimension-response-area conformance-test:: /conf/core/datetime-definition-area conformance-test:: /conf/core/datetime-response-area conformance-test:: /conf/collections/REQ_rc-parameter-name-definition-area @@ -40,20 +74,34 @@ conformance-test:: /conf/edr/REQ_rc-crs-definition-area conformance-test:: /conf/edr/REQ_rc-crs-response-area conformance-test:: /conf/edr/rc-f-definition-area conformance-test:: /conf/collections/rc-f-response-area +conformance-test:: /conf/core/rc-limit-definition-area +conformance-test:: /conf/core/rc-limit-response-area + conformance-test:: /conf/cube/no-query-params conformance-test:: /conf/cube/no-bbox-param conformance-test:: /conf/cube/bbox-param-invalid conformance-test:: /conf/cube/valid-query-params -conformance-test:: /conf/edr/rc-z-definition-cube -conformance-test:: /conf/edr/rc-z-response-cube +conformance-test:: /conf/core/rc-bbox-definition-cube +conformance-test:: /conf/core/rc-bbox-response-cube +conformance-test:: /conf/core/rc-z-definition-cube +conformance-test:: /conf/core/rc-z-response-cube +conformance-test:: /conf/edr/rc-custom-dimension-definition-cube +conformance-test:: /conf/edr/rc-custom-dimension-response-cube conformance-test:: /conf/core/datetime-definition-cube conformance-test:: /conf/core/datetime-response-cube conformance-test:: /conf/collections/REQ_rc-parameter-name-definition-cube conformance-test:: /conf/edr/rc-parameter-name-response-cube +conformance-test:: /conf/core/rc-resolution-x-definition-cube +conformance-test:: /conf/core/rc-resolution-x-response-cube +conformance-test:: /conf/core/rc-resolution-y-definition-cube +conformance-test:: /conf/core/rc-resolution-y-response-cube +conformance-test:: /conf/core/rc-resolution-z-definition-cube +conformance-test:: /conf/core/rc-resolution-z-response-cube conformance-test:: /conf/edr/REQ_rc-crs-definition-cube conformance-test:: /conf/edr/REQ_rc-crs-response-cube conformance-test:: /conf/edr/rc-f-definition-cube conformance-test:: /conf/collections/rc-f-response-cube + conformance-test:: /conf/trajectory/no-query-params conformance-test:: /conf/trajectory/no-coords-param conformance-test:: /conf/trajectory/coords-param-invalid-linestring @@ -63,6 +111,8 @@ conformance-test:: /conf/trajectory/coords-param-separate-z-linestringzm conformance-test:: /conf/trajectory/coords-param-invalid-linestringzm conformance-test:: /conf/trajectory/coords-param-invalid-linestringz conformance-test:: /conf/trajectory/coords-param-invalid-time +conformance-test:: /conf/edr/rc-custom-dimension-definition-trajectory +conformance-test:: /conf/edr/rc-custom-dimension-response-trajectory conformance-test:: /conf/trajectory/valid-query-params conformance-test:: /conf/edr/rc-coords-definition-trajectory conformance-test:: /conf/edr/rc-coords-response-trajectory @@ -72,6 +122,7 @@ conformance-test:: /conf/edr/REQ_rc-crs-definition-trajectory conformance-test:: /conf/edr/REQ_rc-crs-response-trajectory conformance-test:: /conf/edr/rc-f-definition-trajectory conformance-test:: /conf/collections/rc-f-response-trajectory + conformance-test:: /conf/corridor/no-query-params conformance-test:: /conf/corridor/no-coords-param conformance-test:: /conf/corridor/corridor-width-param-missing @@ -87,6 +138,12 @@ conformance-test:: /conf/corridor/coords-param-invalid-linestringz conformance-test:: /conf/corridor/coords-param-invalid-time conformance-test:: /conf/corridor/width-units-param-invalid conformance-test:: /conf/corridor/height-units-param-invalid +conformance-test:: /conf/edr/rc-resolution-x-definition-corridor +conformance-test:: /conf/edr/rc-resolution-x-response-corridor +conformance-test:: /conf/edr/rc-resolution-y-definition-corridor +conformance-test:: /conf/edr/rc-resolution-y-response-corridor +conformance-test:: /conf/edr/rc-custom-dimension-definition-corridor +conformance-test:: /conf/edr/rc-custom-dimension-response-corridor conformance-test:: /conf/corridor/valid-query-params conformance-test:: /conf/edr/rc-coords-definition-corridor conformance-test:: /conf/edr/rc-coords-response-corridor @@ -109,6 +166,7 @@ conformance-test:: /conf/instances/rc-md-success conformance-test:: /conf/instances/src-md-op conformance-test:: /conf/instances/src-md-success conformance-test:: /conf/locations/no-query-params +conformance-test:: /conf/locations/locations-nodata conformance-test:: /conf/locations/location-identifier-invalid conformance-test:: /conf/locations/valid-query-params conformance-test:: /conf/core/datetime-definition-locations @@ -119,6 +177,20 @@ conformance-test:: /conf/edr/REQ_rc-crs-definition-locations conformance-test:: /conf/edr/REQ_rc-crs-response-locations conformance-test:: /conf/edr/rc-f-definition-locations conformance-test:: /conf/collections/rc-f-response-locations +conformance-test:: /conf/core/rc-limit-definition-locations +conformance-test:: /conf/core/rc-limit-response-locations + +conformance-test:: /conf/core/rc-bbox-definition +conformance-test:: /conf/core/rc-bbox-response +conformance-test:: /conf/core/datetime-definition-items +conformance-test:: /conf/core/datetime-response-items +conformance-test:: /conf/edr/rc-custom-dimension-definition-locations +conformance-test:: /conf/edr/rc-custom-dimension-response-locations +conformance-test:: /conf/edr/rc-locationid-definition +conformance-test:: /conf/edr/rc-locationid-response +conformance-test:: /conf/core/rc-items +conformance-test:: /conf/core/rc-numberReturned +conformance-test:: /conf/core/rc-numberMatched ==== @@ -149,6 +221,10 @@ include::queries/ATS_trajectory.adoc[] include::queries/ATS_corridor.adoc[] +===== Items + +include::queries/ATS_items.adoc[] + ===== Instances {root}/collections/{collectionId}/instances @@ -167,7 +243,12 @@ include::instances/ATS_src-md-op.adoc[] include::instances/ATS_src-md-success.adoc[] - ===== Locations include::queries/ATS_locations.adoc[] + +===== Response + +include::core/ATS_rc-numberMatched.adoc[] + +include::core/ATS_rc-numberReturned.adoc[] diff --git a/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc index 9b752094d..57072d4bc 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc @@ -1,11 +1,14 @@ -[[ats_collections_rc-custom-dimension-definition]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-custom-dimension-definition* -^|Test Purpose |Validate that any custom query parameters are constructed correctly. -^|Requirement |<> -^|Test Method |Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +[[ats_collections_rc-custom-dimension-definition-asciidochandle]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-asciidochandle +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): [source,YAML] ---- @@ -16,4 +19,5 @@ schema: style: form explode: false ---- -|=== +-- +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-response.adoc index 8d9f2083d..7b2f0f895 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-response.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-custom-dimension-response.adoc @@ -1,11 +1,14 @@ -[[ats_collections_rc-custom-dimension-response]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/rc-custom-dimension-response* -^|Test Purpose |Validate that the <> parameters query parameters are processed correctly. -^|Requirement |<> -^|Test Method |. Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set -. Validate that the values specified comply with the syntax described in <>. -. Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. -|=== +[[ats_collections_rc-custom-dimension-response-asciidochandle]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-asciidochandle +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc new file mode 100644 index 000000000..e9c1e5933 --- /dev/null +++ b/core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc @@ -0,0 +1,25 @@ +[[ats_core_rc-limit-definition-asciidochandle]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-definition-asciidochandle +target:: /req/edr/rc-limit-definition +test-purpose:: Validate that the limit query parameters are defined correctly. +test-method:: ++ +-- +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: limit +in: query +required: false +schema: + type: integer +style: form +explode: false +---- +Note that the API can define values for "minimum", "maximum" and "default". +-- +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-limit-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-limit-response.adoc new file mode 100644 index 000000000..937eebda5 --- /dev/null +++ b/core/standard/abstract_tests/collections/ATS_rc-limit-response.adoc @@ -0,0 +1,14 @@ +[[ats_core_rc-limit-response-asciidochandle]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-response-asciidochandle +target:: /req/edr/REQ_rc-limit-response +test-purpose:: Validate that the limit query parameters are evaluated correctly. +test-method:: +step::: Request Features with the `limit` parameter. +step::: Count the Features which are on the first level of the collection. Any nested objects contained within the explicitly requested items are not counted. +step::: Verify that this count is not greater than the value specified by the `limit` parameter. +step::: If the API definition specifies a maximum value for `limit` parameter, verify that the count does not exceed this maximum value. +step::: If the API definition specifies a maximum value for `limit` parameter, submit another request with a `limit` value that is greater than the maximum and verify that the response is not an error and that the count does not exceed this maximum value. +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-within-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-within-definition.adoc deleted file mode 100644 index f1af8f4d9..000000000 --- a/core/standard/abstract_tests/collections/ATS_rc-within-definition.adoc +++ /dev/null @@ -1,20 +0,0 @@ -[[ats_collections_rc-within-definition]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/REQ_rc-within-definition* -^|Test Purpose |Validate that the `within` query parameter is constructed correctly. -^|Requirement |<> -^|Test Method |Verify that the `within` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): - -[source,YAML] ----- -name: within -in: query -required: true -schema: - type: string -style: form -explode: false ----- -|=== diff --git a/core/standard/abstract_tests/collections/ATS_rc-within-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-within-response.adoc deleted file mode 100644 index 91db759b0..000000000 --- a/core/standard/abstract_tests/collections/ATS_rc-within-response.adoc +++ /dev/null @@ -1,10 +0,0 @@ -[[ats_collections_rc-within-response]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/collections/REQ_rc-within-response* -^|Test Purpose |Validate that the `within` query parameters are processed correctly. -^|Requirement |<> -^|Test Method |. Verify that if the `within-units` is not specified with the `within` parameter a `400` error message will be generated -. Validate that the `within` parameter complies with the syntax described in <>. -|=== diff --git a/core/standard/abstract_tests/collections/ATS_rc-within-units-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-within-units-definition.adoc deleted file mode 100644 index 2c9c8a1ec..000000000 --- a/core/standard/abstract_tests/collections/ATS_rc-within-units-definition.adoc +++ /dev/null @@ -1,20 +0,0 @@ -[[ats_collections_rc-within-units-definition]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/edr/REQ_rc-within-units-definition* -^|Test Purpose |Validate that the `within-units` query parameter is constructed correctly. -^|Requirement |<> -^|Test Method |Verify that the `within-units` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): - -[source,YAML] ----- -name: within-units -in: query -required: true -schema: - type: string -style: form -explode: false ----- -|=== diff --git a/core/standard/abstract_tests/collections/ATS_rc-within-units-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-within-units-response.adoc deleted file mode 100644 index 365b48100..000000000 --- a/core/standard/abstract_tests/collections/ATS_rc-within-units-response.adoc +++ /dev/null @@ -1,10 +0,0 @@ -[[ats_collections_rc-within-units-response]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/collections/REQ_rc-within-units-response* -^|Test Purpose |Validate that the `within-units` query parameters are processed correctly. -^|Requirement |<> -^|Test Method |. Verify that within units not listed in the metadata will generate an error message -. Validate that the `within-units` parameter complies with the syntax described in <>. -|=== diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc new file mode 100644 index 000000000..3afc240eb --- /dev/null +++ b/core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc @@ -0,0 +1,23 @@ +[[ats_collections_rc-custom-dimension-definition-area]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-area +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc new file mode 100644 index 000000000..cbf45756a --- /dev/null +++ b/core/standard/abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-custom-dimension-response-area]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-area +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-limit-definition.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-limit-definition.adoc new file mode 100644 index 000000000..5203502be --- /dev/null +++ b/core/standard/abstract_tests/collections/area/ATS_rc-limit-definition.adoc @@ -0,0 +1,25 @@ +[[ats_core_rc-limit-definition-area]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-definition-area +target:: /req/edr/rc-limit-definition +test-purpose:: Validate that the limit query parameters are defined correctly. +test-method:: ++ +-- +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: limit +in: query +required: false +schema: + type: integer +style: form +explode: false +---- +Note that the API can define values for "minimum", "maximum" and "default". +-- +==== diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-limit-response.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-limit-response.adoc new file mode 100644 index 000000000..1c52fccfe --- /dev/null +++ b/core/standard/abstract_tests/collections/area/ATS_rc-limit-response.adoc @@ -0,0 +1,14 @@ +[[ats_core_rc-limit-response-area]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-response-area +target:: /req/edr/REQ_rc-limit-response +test-purpose:: Validate that the limit query parameters are evaluated correctly. +test-method:: +step::: Request Features with the `limit` parameter. +step::: Count the Features which are on the first level of the collection. Any nested objects contained within the explicitly requested items are not counted. +step::: Verify that this count is not greater than the value specified by the `limit` parameter. +step::: If the API definition specifies a maximum value for `limit` parameter, verify that the count does not exceed this maximum value. +step::: If the API definition specifies a maximum value for `limit` parameter, submit another request with a `limit` value that is greater than the maximum and verify that the response is not an error and that the count does not exceed this maximum value. +==== diff --git a/core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-definition.adoc new file mode 100644 index 000000000..1356ab0bb --- /dev/null +++ b/core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-definition.adoc @@ -0,0 +1,23 @@ +[[ats_collections_rc-custom-dimension-definition-corridor]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-corridor +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-response.adoc new file mode 100644 index 000000000..6c5ec8dba --- /dev/null +++ b/core/standard/abstract_tests/collections/corridor/ATS_rc-custom-dimension-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-custom-dimension-response-corridor]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-corridor +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-definition.adoc new file mode 100644 index 000000000..472fafc0b --- /dev/null +++ b/core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-definition.adoc @@ -0,0 +1,23 @@ +[[ats_collections_rc-custom-dimension-definition-cube]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-cube +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-response.adoc new file mode 100644 index 000000000..7c043abd6 --- /dev/null +++ b/core/standard/abstract_tests/collections/cube/ATS_rc-custom-dimension-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-custom-dimension-response-cube]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-cube +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/collections/cube/ATS_rc-z-definition.adoc b/core/standard/abstract_tests/collections/cube/ATS_rc-z-definition.adoc index cff558075..fae1df794 100644 --- a/core/standard/abstract_tests/collections/cube/ATS_rc-z-definition.adoc +++ b/core/standard/abstract_tests/collections/cube/ATS_rc-z-definition.adoc @@ -1,9 +1,9 @@ //Autogenerated file - DO NOT EDIT -[[ats_collections_rc-z-definition-cube]] +[[ats_core_rc-z-definition-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-z-definition-cube +identifier:: /conf/core/rc-z-definition-cube target:: /req/edr/z-definition test-purpose:: Validate that the vertical level query parameters are constructed correctly. test-method:: diff --git a/core/standard/abstract_tests/collections/cube/ATS_rc-z-response.adoc b/core/standard/abstract_tests/collections/cube/ATS_rc-z-response.adoc index df4a092d6..9e2f29679 100644 --- a/core/standard/abstract_tests/collections/cube/ATS_rc-z-response.adoc +++ b/core/standard/abstract_tests/collections/cube/ATS_rc-z-response.adoc @@ -1,10 +1,10 @@ //Autogenerated file - DO NOT EDIT -[[ats_collections_rc-z-response-cube]] +[[ats_core_rc-z-response-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-z-response-cube -target:: /req/edr/z-response +identifier:: /conf/core/rc-z-response-cube +target:: /req/edr/cube-z-response test-purpose:: Validate that the vertical level query parameters are processed correctly. test-method:: step::: Verify that only resources that have a vertical geometry that intersects the vertical information in the `z` parameter were included in the result set diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-definition.adoc new file mode 100644 index 000000000..a4bd07121 --- /dev/null +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-definition.adoc @@ -0,0 +1,23 @@ +[[ats_collections_rc-custom-dimension-definition-locations]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-locations +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-response.adoc new file mode 100644 index 000000000..94f75fdab --- /dev/null +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-custom-dimension-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-custom-dimension-response-locations]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-locations +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-limit-definition.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-limit-definition.adoc new file mode 100644 index 000000000..830d20de0 --- /dev/null +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-limit-definition.adoc @@ -0,0 +1,25 @@ +[[ats_core_rc-limit-definition-locations]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-definition-locations +target:: /req/edr/rc-limit-definition +test-purpose:: Validate that the limit query parameters are defined correctly. +test-method:: ++ +-- +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: limit +in: query +required: false +schema: + type: integer +style: form +explode: false +---- +Note that the API can define values for "minimum", "maximum" and "default". +-- +==== diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-limit-response.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-limit-response.adoc new file mode 100644 index 000000000..c5729f1ce --- /dev/null +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-limit-response.adoc @@ -0,0 +1,14 @@ +[[ats_core_rc-limit-response-locations]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-response-locations +target:: /req/edr/REQ_rc-limit-response +test-purpose:: Validate that the limit query parameters are evaluated correctly. +test-method:: +step::: Request Features with the `limit` parameter. +step::: Count the Features which are on the first level of the collection. Any nested objects contained within the explicitly requested items are not counted. +step::: Verify that this count is not greater than the value specified by the `limit` parameter. +step::: If the API definition specifies a maximum value for `limit` parameter, verify that the count does not exceed this maximum value. +step::: If the API definition specifies a maximum value for `limit` parameter, submit another request with a `limit` value that is greater than the maximum and verify that the response is not an error and that the count does not exceed this maximum value. +==== diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-definition.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-definition.adoc new file mode 100644 index 000000000..88a1804f9 --- /dev/null +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-definition.adoc @@ -0,0 +1,25 @@ +[[ats_collections_rc-locationid-definition]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-locationid-definition +target:: /req/edr/REQ_rc-locationid-definition +test-purpose:: Validate that the locationid parameter is constructed correctly. +test-method:: ++ +-- +Verify that the `locationId` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: locationId +in: path +required: false +description: Comma-delimited list of Location IDs +schema: + type: string + style: simple + explode: false +---- +-- +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-response.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-response.adoc new file mode 100644 index 000000000..4f7f4c4ea --- /dev/null +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-response.adoc @@ -0,0 +1,12 @@ +[[ats_collections_rc-locationid-response]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-locationid-response +target:: /req/edr/REQ_rc-locationid-response +test-purpose:: Validate that the locationid parameter is processed correctly. +test-method:: +step::: Verify that only resources for the requested location identifers are returned +step::: Validate that the locationid complies with the syntax described in <>. +step::: Validate that a HTTP 204 response is returned when there is no data available for the requested identifiers +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-definition.adoc new file mode 100644 index 000000000..fb94a5c60 --- /dev/null +++ b/core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-definition.adoc @@ -0,0 +1,23 @@ +[[ats_collections_rc-custom-dimension-definition-position]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-position +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-response.adoc new file mode 100644 index 000000000..70aea3a81 --- /dev/null +++ b/core/standard/abstract_tests/collections/position/ATS_rc-custom-dimension-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-custom-dimension-response-position]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-position +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-limit-definition.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-limit-definition.adoc new file mode 100644 index 000000000..eea629390 --- /dev/null +++ b/core/standard/abstract_tests/collections/position/ATS_rc-limit-definition.adoc @@ -0,0 +1,25 @@ +[[ats_core_rc-limit-definition-position]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-definition-position +target:: /req/edr/rc-limit-definition +test-purpose:: Validate that the limit query parameters are defined correctly. +test-method:: ++ +-- +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: limit +in: query +required: false +schema: + type: integer +style: form +explode: false +---- +Note that the API can define values for "minimum", "maximum" and "default". +-- +==== diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-limit-response.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-limit-response.adoc new file mode 100644 index 000000000..0255c192c --- /dev/null +++ b/core/standard/abstract_tests/collections/position/ATS_rc-limit-response.adoc @@ -0,0 +1,14 @@ +[[ats_core_rc-limit-response-position]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-response-position +target:: /req/edr/REQ_rc-limit-response +test-purpose:: Validate that the limit query parameters are evaluated correctly. +test-method:: +step::: Request Features with the `limit` parameter. +step::: Count the Features which are on the first level of the collection. Any nested objects contained within the explicitly requested items are not counted. +step::: Verify that this count is not greater than the value specified by the `limit` parameter. +step::: If the API definition specifies a maximum value for `limit` parameter, verify that the count does not exceed this maximum value. +step::: If the API definition specifies a maximum value for `limit` parameter, submit another request with a `limit` value that is greater than the maximum and verify that the response is not an error and that the count does not exceed this maximum value. +==== diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-definition.adoc new file mode 100644 index 000000000..8105171e6 --- /dev/null +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-definition.adoc @@ -0,0 +1,23 @@ +[[ats_collections_rc-custom-dimension-definition-radius]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-radius +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-response.adoc new file mode 100644 index 000000000..c486a4ccd --- /dev/null +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-custom-dimension-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-custom-dimension-response-radius]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-radius +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-limit-definition.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-limit-definition.adoc new file mode 100644 index 000000000..a13121cd7 --- /dev/null +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-limit-definition.adoc @@ -0,0 +1,25 @@ +[[ats_core_rc-limit-definition-radius]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-definition-radius +target:: /req/edr/rc-limit-definition +test-purpose:: Validate that the limit query parameters are defined correctly. +test-method:: ++ +-- +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: limit +in: query +required: false +schema: + type: integer +style: form +explode: false +---- +Note that the API can define values for "minimum", "maximum" and "default". +-- +==== diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-limit-response.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-limit-response.adoc new file mode 100644 index 000000000..3a8b4cd6e --- /dev/null +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-limit-response.adoc @@ -0,0 +1,14 @@ +[[ats_core_rc-limit-response-radius]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-limit-response-radius +target:: /req/edr/REQ_rc-limit-response +test-purpose:: Validate that the limit query parameters are evaluated correctly. +test-method:: +step::: Request Features with the `limit` parameter. +step::: Count the Features which are on the first level of the collection. Any nested objects contained within the explicitly requested items are not counted. +step::: Verify that this count is not greater than the value specified by the `limit` parameter. +step::: If the API definition specifies a maximum value for `limit` parameter, verify that the count does not exceed this maximum value. +step::: If the API definition specifies a maximum value for `limit` parameter, submit another request with a `limit` value that is greater than the maximum and verify that the response is not an error and that the count does not exceed this maximum value. +==== diff --git a/core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-definition.adoc b/core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-definition.adoc new file mode 100644 index 000000000..bc136a8bf --- /dev/null +++ b/core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-definition.adoc @@ -0,0 +1,23 @@ +[[ats_collections_rc-custom-dimension-definition-trajectory]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-definition-trajectory +target:: /req/edr/rc-custom-dimension-definition +test-purpose:: Validate that any custom query parameters are constructed correctly. +test-method:: ++ +-- +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-response.adoc b/core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-response.adoc new file mode 100644 index 000000000..1165315bb --- /dev/null +++ b/core/standard/abstract_tests/collections/trajectory/ATS_rc-custom-dimension-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-custom-dimension-response-trajectory]] + +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-custom-dimension-response-trajectory +target:: /req/edr/custom-dimension-response +test-purpose:: Validate that the <> parameters query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a values that are valid for the range information in any <> parameters are included in the result set. +step:::Validate that the values specified comply with the syntax described in <>. +step::: Validate that if <> are defined in the <> response but no query parameters for the <> are specified in the query all valid values are returned with no subsetting by the <>. +==== + diff --git a/core/standard/abstract_tests/core/ATS_http.adoc b/core/standard/abstract_tests/core/ATS_http.adoc old mode 100644 new mode 100755 index 856bea84f..16b795538 --- a/core/standard/abstract_tests/core/ATS_http.adoc +++ b/core/standard/abstract_tests/core/ATS_http.adoc @@ -7,5 +7,5 @@ target:: /req/core/http test-purpose:: Validate that the resource paths advertised through the API conform with HTTP 1.1 and, where appropriate, TLS. test-method:: step::: All compliance tests shall be configured to use the HTTP 1.1 protocol exclusively. -step::: For APIs which support HTTPS, all compliance tests shall be configured to use <> (RFC 2818) with their HTTP 1.1 protocol. +step::: For APIs which support HTTPS, all compliance tests shall be configured to use <> (RFC 2818) with their HTTP 1.1 protocol. ==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/ATS_items.adoc b/core/standard/abstract_tests/core/ATS_items.adoc deleted file mode 100644 index 46a9159e4..000000000 --- a/core/standard/abstract_tests/core/ATS_items.adoc +++ /dev/null @@ -1,25 +0,0 @@ -[[ats_core_rc-items]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/core/rc-items* -^|Test Purpose |Validate that resources can be identified and extracted from a Collection using query parameters. -^|Requirement |<> -^|Test Method |. For every resource collection identified in Collections, issue an HTTP GET request to the URL `/collections/{collectionId}/items` where `{collectionId}` is the `id` property for a Collection described in the Collections content. -. Validate that a document was returned with a status code 200. - -Execute requests with combinations of the "bbox" and "datetime" query parameters -and verify that only features are returned that match both selection criteria. -|=== - -[[ats_core_rc-bbox-definition]] -include::ATS_rc-bbox-definition.adoc[] - -[[ats_core_rc-bbox-response]] -include::ATS_rc-bbox-response.adoc[] - -[[ats_time-definition]] -include::ATS_rc-time-definition.adoc[] - -[[ats_time-response]] -include::ATS_rc-time-response.adoc[] diff --git a/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc b/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc old mode 100644 new mode 100755 index 302243458..dcb2c4dd8 --- a/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc +++ b/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc @@ -1,11 +1,14 @@ -[[ats_core_bbox-definition]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/core/rc-bbox-definition* -^|Test Purpose |Validate that the bounding box query parameters are constructed correctly. -^|Requirement |<> -^|Test Method |Verify that the `bbox` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +[[ats_core_bbox-definition]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-bbox-definition +target:: /req/core/rc-bbox-definition +test-purpose:: Validate that the bounding box query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `bbox` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). [source,YAML] ---- @@ -34,5 +37,5 @@ Use a bounding box with four numbers in all requests: * Lower left corner, WGS 84 latitude * Upper right corner, WGS 84 longitude * Upper right corner, WGS 84 latitude - -|=== +-- +==== diff --git a/core/standard/abstract_tests/core/ATS_rc-bbox-response.adoc b/core/standard/abstract_tests/core/ATS_rc-bbox-response.adoc old mode 100644 new mode 100755 index 1bf0f511c..6809e8b82 --- a/core/standard/abstract_tests/core/ATS_rc-bbox-response.adoc +++ b/core/standard/abstract_tests/core/ATS_rc-bbox-response.adoc @@ -1,13 +1,14 @@ -[[ats_core_rc-bbox-response]]{counter2:ats-id} -[width="90%",cols="2,6a"] -.Abstract Test {ats-id} -|=== -^|*Abstract Test {ats-id}* |*/conf/core/rc-bbox-response* -^|Test Purpose |Validate that the bounding box query parameters are processed correctly. -^|Requirement |<> -^|Test Method |. Verify that only resources that have a spatial geometry that intersects the bounding box are returned as part of the result set. -. Verify that the `bbox` parameter matched all resources in the collection that were not associated with a spatial geometry (this is only applicable for datasets that include resources without a spatial geometry). -. Verify that the coordinate reference system of the geometries matches the coordinate reference system defined by the `crs` query parameter. -. If no `crs` query parameter is specified in the the request, verify that the coordinate reference system of the geometries matches the default specified for the query. -. If a default `crs` **is not** defined **and** the parameter `crs` **is not** specified in the the request verify that the coordinate reference system of the geometries is in the CRS defined by the spatial element of the extent section in the collection response. -|=== +[[ats_core_rc-bbox-response]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-bbox-response +target:: /req/core/rc-bbox-response +test-purpose:: Validate that the bounding box query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a spatial geometry that intersects the bounding box are returned as part of the result set. +step::: Verify that the `bbox` parameter matched all resources in the collection that were not associated with a spatial geometry (this is only applicable for datasets that include resources without a spatial geometry). +step::: Verify that the coordinate reference system of the geometries matches the coordinate reference system defined by the `crs` query parameter. +step::: If no `crs` query parameter is specified in the the request, verify that the coordinate reference system of the geometries matches the default specified for the query. +step::: If a default `crs` **is not** defined **and** the parameter `crs` **is not** specified in the the request verify that the coordinate reference system of the geometries is in the CRS defined by the spatial element of the extent section in the collection response. +==== diff --git a/core/standard/abstract_tests/core/ATS_rc-numberMatched.adoc b/core/standard/abstract_tests/core/ATS_rc-numberMatched.adoc new file mode 100644 index 000000000..40bbe1bf8 --- /dev/null +++ b/core/standard/abstract_tests/core/ATS_rc-numberMatched.adoc @@ -0,0 +1,10 @@ +[[ats_core_rc-numberMatched]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-numberMatched +target:: /req/core/rc-numberMatched +test-purpose:: Validate the numberMatched parameter returned with a Features response +test-method:: +step::: When a property `numberMatched` is included in the response, validate that the value of the `numberMatched` parameter is identical to the number of features in the feature collections that match the selection parameters like bbox, datetime or additional filter parameters. +==== diff --git a/core/standard/abstract_tests/core/ATS_rc-numberReturned.adoc b/core/standard/abstract_tests/core/ATS_rc-numberReturned.adoc new file mode 100644 index 000000000..ceda62078 --- /dev/null +++ b/core/standard/abstract_tests/core/ATS_rc-numberReturned.adoc @@ -0,0 +1,11 @@ +[[ats_core_rc-numberReturned]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-numberReturned +target:: /req/core/rc-numberMatched +test-purpose:: Validate the numberReturned parameter returned with a Features response +test-method:: +step::: When a property `numberReturned` is included in the response, validate that the `numberReturned` value is identical to the number of features in the +response. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-definition.adoc b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-definition.adoc new file mode 100644 index 000000000..3a77246c7 --- /dev/null +++ b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-definition.adoc @@ -0,0 +1,24 @@ +[[ats_collections_rc-resolution-x-definition-corridor]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-x-definition-corridor +target:: /req/edr/resolution-x-definition +test-purpose:: Validate that the `resolution-x` query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `resolution-x` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). + +[source,YAML] +---- +name: resolution-x +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-response.adoc b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-response.adoc new file mode 100644 index 000000000..45d578070 --- /dev/null +++ b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-x-response.adoc @@ -0,0 +1,13 @@ +[[ats_collections_rc-resolution-x-response-corridor]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-x-response-corridor +target:: /req/edr/resolution-x-response +test-purpose:: Validate that the resolution-x query parameters are processed correctly. +test-method:: +step::: Validate that the `resolution-x` parameter complies with the syntax described in <>. +step::: Verify that the data returned by the query contains the same number of values on the x axis as +that requested in the `resolution-x` parameter. +step::: Verify that a HTTP 400 error is returned when an invalid `resolution-x` parameter is requested. +==== diff --git a/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-definition.adoc b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-definition.adoc new file mode 100644 index 000000000..8b77e52b0 --- /dev/null +++ b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-definition.adoc @@ -0,0 +1,24 @@ +[[ats_collections_rc-resolution-y-definition-corridor]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-y-definition-corridor +target:: /req/edr/resolution-y-definition +test-purpose:: Validate that the `resolution-y` query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `resolution-y` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). + +[source,YAML] +---- +name: resolution-y +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-response.adoc b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-response.adoc new file mode 100644 index 000000000..3072168ab --- /dev/null +++ b/core/standard/abstract_tests/core/corridor/ATS_rc-resolution-y-response.adoc @@ -0,0 +1,13 @@ +[[ats_collections_rc-resolution-y-response-corridor]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/rc-resolution-y-response-corridor +target:: /req/edr/resolution-y-response +test-purpose:: Validate that the resolution-y query parameters are processed correctly. +test-method:: +step::: Validate that the `resolution-y` parameter complies with the syntax described in <>. +step::: Verify that the data returned by the query contains the same number of values on the y axis as +that requested in the `resolution-y` parameter. +step::: Verify that a HTTP 400 error is returned when an invalid `resolution-y` parameter is requested. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/corridor/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/corridor/ATS_rc-time-definition.adoc new file mode 100644 index 000000000..82a0b9753 --- /dev/null +++ b/core/standard/abstract_tests/core/corridor/ATS_rc-time-definition.adoc @@ -0,0 +1,25 @@ +//Autogenerated file - DO NOT EDIT +[[ats_core_rc-time-definition-corridor]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/datetime-definition-corridor +target:: /req/core/datetime-definition +test-purpose:: Validate that the datetime query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: datetime +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/corridor/ATS_rc-time-response.adoc b/core/standard/abstract_tests/core/corridor/ATS_rc-time-response.adoc new file mode 100644 index 000000000..cc1acd38c --- /dev/null +++ b/core/standard/abstract_tests/core/corridor/ATS_rc-time-response.adoc @@ -0,0 +1,13 @@ +//Autogenerated file - DO NOT EDIT +[[ats_core_rc-time-response-corridor]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/datetime-response-corridor +target:: /req/core/datetime-response +test-purpose:: Validate that the `datetime` query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a temporal geometry that intersects the temporal information in the `datetime` parameter were included in the result set. +step::: Verify that all resources in the collection that are not associated with a temporal geometry are included in the result set. +step::: Validate that the `datetime` parameter complies with the syntax described in <>. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/cube/ATS_rc-bbox-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-bbox-definition.adoc new file mode 100755 index 000000000..e7a71ae57 --- /dev/null +++ b/core/standard/abstract_tests/core/cube/ATS_rc-bbox-definition.adoc @@ -0,0 +1,27 @@ +[[ats_core_bbox-definition-cube]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-bbox-definition-cube +target:: /req/edr/rc-bbox-definition-cube +test-purpose:: Validate that the bounding box query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `bbox` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). + +[source,YAML] +---- +name: bbox +in: query +required: false +schema: + type: number + minItems: 4 + maxItems: 4 + +style: form +explode: false +---- +-- +==== diff --git a/core/standard/abstract_tests/core/cube/ATS_rc-bbox-response.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-bbox-response.adoc new file mode 100755 index 000000000..f45d58614 --- /dev/null +++ b/core/standard/abstract_tests/core/cube/ATS_rc-bbox-response.adoc @@ -0,0 +1,14 @@ +[[ats_core_rc-bbox-response-cube]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-bbox-response-cube +target:: /req/edr/rc-bbox-response-cube +test-purpose:: Validate that the bounding box query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a spatial geometry that intersects the bounding box are returned as part of the result set. +step::: Verify that the `bbox` parameter matched all resources in the collection that were not associated with a spatial geometry (this is only applicable for datasets that include resources without a spatial geometry). +step::: Verify that the coordinate reference system of the geometries matches the coordinate reference system defined by the `crs` query parameter. +step::: If no `crs` query parameter is specified in the the request, verify that the coordinate reference system of the geometries matches the default specified for the query. +step::: If a default `crs` **is not** defined **and** the parameter `crs` **is not** specified in the the request verify that the coordinate reference system of the geometries is in the CRS defined by the spatial element of the extent section in the collection response. +==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-definition.adoc similarity index 81% rename from core/standard/abstract_tests/collections/ATS_rc-resolution-x-definition.adoc rename to core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-definition.adoc index 517cd746f..41d0ec0e4 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-definition.adoc @@ -1,8 +1,8 @@ -[[ats_collections_rc-resolution-x-definition]] +[[ats_core_rc-resolution-x-definition-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-resolution-x-definition +identifier:: /conf/core/rc-resolution-x-definition-cube target:: /req/edr/resolution-x-definition test-purpose:: Validate that the `resolution-x` query parameters are constructed correctly. test-method:: diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-response.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-response.adoc similarity index 72% rename from core/standard/abstract_tests/collections/ATS_rc-resolution-x-response.adoc rename to core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-response.adoc index a29ad753b..2d951bd9a 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-x-response.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-response.adoc @@ -1,12 +1,12 @@ -[[ats_collections_rc-resolution-x-response]] +[[ats_core_rc-resolution-x-response-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-resolution-x-response +identifier:: /conf/core/rc-resolution-x-response-cube target:: /req/edr/resolution-x-response test-purpose:: Validate that the resolution-x query parameters are processed correctly. test-method:: -step::: Validate that the `resolution-x` parameter complies with the syntax described in <>. +step::: Validate that the `resolution-x` parameter complies with the syntax described in <>. step::: Verify that the data returned by the query contains the same number of values on the x axis as that requested in the `resolution-x` parameter. step::: Verify that a HTTP 400 error is returned when an invalid `resolution-x` parameter is requested. diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-definition.adoc similarity index 81% rename from core/standard/abstract_tests/collections/ATS_rc-resolution-y-definition.adoc rename to core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-definition.adoc index 7def35f92..a55f8b26a 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-definition.adoc @@ -1,8 +1,8 @@ -[[ats_collections_rc-resolution-y-definition]] +[[ats_core_rc-resolution-y-definition-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-resolution-y-definition +identifier:: /conf/core/rc-resolution-y-definition-cube target:: /req/edr/resolution-y-definition test-purpose:: Validate that the `resolution-y` query parameters are constructed correctly. test-method:: diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-response.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-response.adoc similarity index 71% rename from core/standard/abstract_tests/collections/ATS_rc-resolution-y-response.adoc rename to core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-response.adoc index 341d2ccf7..a1fae04c0 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-y-response.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-response.adoc @@ -1,12 +1,12 @@ -[[ats_collections_rc-resolution-y-response]] +[[ats_core_rc-resolution-y-response-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-resolution-y-response +identifier:: /conf/core/rc-resolution-y-response-cube target:: /req/edr/resolution-y-response test-purpose:: Validate that the resolution-y query parameters are processed correctly. test-method:: -step::: Validate that the `resolution-y` parameter complies with the syntax described in <>. +step::: Validate that the `resolution-y` parameter complies with the syntax described in <>. step::: Verify that the data returned by the query contains the same number of values on the y axis as that requested in the `resolution-y` parameter. step::: Verify that a HTTP 400 error is returned when an invalid `resolution-y` parameter is requested. diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-definition.adoc similarity index 81% rename from core/standard/abstract_tests/collections/ATS_rc-resolution-z-definition.adoc rename to core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-definition.adoc index a876ff91d..478ae5d85 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-definition.adoc @@ -1,8 +1,8 @@ -[[ats_collections_rc-resolution-z-definition]] +[[ats_core_rc-resolution-z-definition-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-resolution-z-definition +identifier:: /conf/core/rc-resolution-z-definition-cube target:: /req/edr/resolution-z-definition test-purpose:: Validate that the `resolution-z` query parameters are constructed correctly. test-method:: diff --git a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-response.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-response.adoc similarity index 72% rename from core/standard/abstract_tests/collections/ATS_rc-resolution-z-response.adoc rename to core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-response.adoc index bc190d4d1..d334f4c6a 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-resolution-z-response.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-response.adoc @@ -1,12 +1,12 @@ -[[ats_collections_rc-resolution-z-response]] +[[ats_core_rc-resolution-z-response-cube]] [abstract_test] ==== [%metadata] -identifier:: /conf/edr/rc-resolution-z-response +identifier:: /conf/core/rc-resolution-z-response-cube target:: /req/edr/resolution-z-response test-purpose:: Validate that the resolution-z query parameters are processed correctly. test-method:: -step::: Validate that the `resolution-z` parameter complies with the syntax described in <>. +step::: Validate that the `resolution-z` parameter complies with the syntax described in <>. step::: Verify that the data returned by the query contains the same number of values on the z axis as that requested in the `resolution-z` parameter. step::: Verify that a HTTP 400 error is returned when an invalid `resolution-z` parameter is requested. diff --git a/core/standard/abstract_tests/core/items/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/items/ATS_rc-time-definition.adoc new file mode 100644 index 000000000..051f98072 --- /dev/null +++ b/core/standard/abstract_tests/core/items/ATS_rc-time-definition.adoc @@ -0,0 +1,25 @@ +//Autogenerated file - DO NOT EDIT +[[ats_core_rc-time-definition-items]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/datetime-definition-items +target:: /req/core/datetime-definition +test-purpose:: Validate that the datetime query parameters are constructed correctly. +test-method:: ++ +-- +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: datetime +in: query +required: false +schema: + type: string +style: form +explode: false +---- +-- +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/items/ATS_rc-time-response.adoc b/core/standard/abstract_tests/core/items/ATS_rc-time-response.adoc new file mode 100644 index 000000000..09491270a --- /dev/null +++ b/core/standard/abstract_tests/core/items/ATS_rc-time-response.adoc @@ -0,0 +1,13 @@ +//Autogenerated file - DO NOT EDIT +[[ats_core_rc-time-response-items]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/datetime-response-items +target:: /req/core/datetime-response +test-purpose:: Validate that the `datetime` query parameters are processed correctly. +test-method:: +step::: Verify that only resources that have a temporal geometry that intersects the temporal information in the `datetime` parameter were included in the result set. +step::: Verify that all resources in the collection that are not associated with a temporal geometry are included in the result set. +step::: Validate that the `datetime` parameter complies with the syntax described in <>. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/radius/ATS_rc-within-definition.adoc b/core/standard/abstract_tests/core/radius/ATS_rc-within-definition.adoc new file mode 100755 index 000000000..bbc6a8999 --- /dev/null +++ b/core/standard/abstract_tests/core/radius/ATS_rc-within-definition.adoc @@ -0,0 +1,25 @@ +[[ats_collections_rc-within-definition]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/REQ_rc-within-definition +target:: /req/edr/within-definition +test-purpose:: Validate that the `within` query parameter is constructed correctly. +test-method:: ++ +-- +Verify that the `within` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: within +in: query +required: true +schema: + type: string +style: form +explode: false +---- +-- +==== + diff --git a/core/standard/abstract_tests/core/radius/ATS_rc-within-response.adoc b/core/standard/abstract_tests/core/radius/ATS_rc-within-response.adoc new file mode 100755 index 000000000..1c678611d --- /dev/null +++ b/core/standard/abstract_tests/core/radius/ATS_rc-within-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-within-response]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/collections/REQ_rc-within-response +target:: /req/edr/REQ_rc-within-response +test-purpose:: Validate that the `within` query parameters are processed correctly. +test-method:: ++ +-- +step::: Verify that if the `within-units` is not specified with the `within` parameter a `400` error message will be generated +step::: Validate that the `within` parameter complies with the syntax described in <>. +-- +==== diff --git a/core/standard/abstract_tests/core/radius/ATS_rc-within-units-definition.adoc b/core/standard/abstract_tests/core/radius/ATS_rc-within-units-definition.adoc new file mode 100755 index 000000000..170d95aa4 --- /dev/null +++ b/core/standard/abstract_tests/core/radius/ATS_rc-within-units-definition.adoc @@ -0,0 +1,25 @@ +[[ats_collections_rc-within-units-definition]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/edr/REQ_rc-within-units-definition +target:: /req/edr/within-units-definition +test-purpose:: Validate that the `within-units` query parameter is constructed correctly. +test-method:: ++ +-- +Verify that the `within-units` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): + +[source,YAML] +---- +name: within-units +in: query +required: true +schema: + type: string +style: form +explode: false +---- +-- +==== + diff --git a/core/standard/abstract_tests/core/radius/ATS_rc-within-units-response.adoc b/core/standard/abstract_tests/core/radius/ATS_rc-within-units-response.adoc new file mode 100755 index 000000000..5a8bf3422 --- /dev/null +++ b/core/standard/abstract_tests/core/radius/ATS_rc-within-units-response.adoc @@ -0,0 +1,14 @@ +[[ats_collections_rc-within-units-response]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/collections/REQ_rc-within-units-response +target:: /req/edr/REQ_rc-within-units-response +test-purpose:: Validate that the `width-units` query parameters are processed correctly +test-method:: ++ +-- +step::: Verify that within units not listed in the metadata will generate an error message +step::: Validate that the `within-units` parameter complies with the syntax described in <>. +-- +==== diff --git a/core/standard/abstract_tests/queries/ATS_area.adoc b/core/standard/abstract_tests/queries/ATS_area.adoc index 7f462f58b..41ed9456c 100644 --- a/core/standard/abstract_tests/queries/ATS_area.adoc +++ b/core/standard/abstract_tests/queries/ATS_area.adoc @@ -59,6 +59,11 @@ Repeat these tests using the following parameter tests: * Parameter <> * Response <> +*Custom dimensions* + +* Parameter <> +* Response <> + *Parameters* * Parameter <> @@ -82,7 +87,9 @@ include::../collections/area/ATS_rc-z-definition.adoc[] include::../collections/area/ATS_rc-z-response.adoc[] +include::../collections/area/ATS_rc-custom-dimension-definition.adoc[] +include::../collections/area/ATS_rc-custom-dimension-response.adoc[] include::../core/area/ATS_rc-time-definition.adoc[] @@ -105,3 +112,7 @@ include::../collections/area/ATS_rc-crs-response.adoc[] include::../collections/area/ATS_rc-f-definition.adoc[] include::../collections/area/ATS_rc-f-response.adoc[] + +include::../collections/area/ATS_rc-limit-definition.adoc[] + +include::../collections/area/ATS_rc-limit-response.adoc[] \ No newline at end of file diff --git a/core/standard/abstract_tests/queries/ATS_corridor.adoc b/core/standard/abstract_tests/queries/ATS_corridor.adoc index 71dcfe97f..d764eba65 100644 --- a/core/standard/abstract_tests/queries/ATS_corridor.adoc +++ b/core/standard/abstract_tests/queries/ATS_corridor.adoc @@ -197,6 +197,11 @@ Repeat these tests using the following parameter tests: * Parameter <> * Response <> +*Custom dimensions* + +* Parameter <> +* Response <> + *Parameters* * Parameter <> @@ -235,13 +240,17 @@ include::../collections/ATS_rc-height-units-definition.adoc[] include::../collections/ATS_rc-height-units-response.adoc[] -include::../collections/ATS_rc-resolution-x-definition.adoc[] +include::../core/corridor/ATS_rc-resolution-x-definition.adoc[] + +include::../core/corridor/ATS_rc-resolution-x-response.adoc[] + +include::../core/corridor/ATS_rc-resolution-y-definition.adoc[] -include::../collections/ATS_rc-resolution-x-response.adoc[] +include::../core/corridor/ATS_rc-resolution-y-response.adoc[] -include::../collections/ATS_rc-resolution-y-definition.adoc[] +include::../collections/corridor/ATS_rc-custom-dimension-definition.adoc[] -include::../collections/ATS_rc-resolution-y-response.adoc[] +include::../collections/corridor/ATS_rc-custom-dimension-response.adoc[] include::../collections/corridor/ATS_rc-parameter-name-definition.adoc[] diff --git a/core/standard/abstract_tests/queries/ATS_cube.adoc b/core/standard/abstract_tests/queries/ATS_cube.adoc index 5355a906b..49135a765 100644 --- a/core/standard/abstract_tests/queries/ATS_cube.adoc +++ b/core/standard/abstract_tests/queries/ATS_cube.adoc @@ -49,14 +49,19 @@ Repeat these tests using the following parameter tests: *bbox* -* Parameter <> -* Response <> +* Parameter <> +* Response <> *VerticalLevel* * Parameter <> * Response <> +*Custom dimensions* + +* Parameter <> +* Response <> + *Parameters* * Parameter <> @@ -76,31 +81,36 @@ and verify that only information that matches the selection criteria is returned include::../collections/cube/ATS_rc-z-definition.adoc[] -// Note that ATS_rc-cube-z-response.adoc is intentionally placed in the collections folder +include::../collections/cube/ATS_rc-z-response.adoc[] + +include::../collections/cube/ATS_rc-custom-dimension-definition.adoc[] + +include::../collections/cube/ATS_rc-custom-dimension-response.adoc[] -include::../collections/ATS_rc-cube-z-response.adoc[] +include::../core/cube/ATS_rc-bbox-definition.adoc[] -// End of note +include::../core/cube/ATS_rc-bbox-response.adoc[] include::../core/cube/ATS_rc-time-definition.adoc[] include::../core/cube/ATS_rc-time-response.adoc[] +ATS_rc-cube-z-response.adoc include::../collections/cube/ATS_rc-parameter-name-definition.adoc[] include::../collections/cube/ATS_rc-parameter-name-response.adoc[] -include::../collections/ATS_rc-resolution-x-definition.adoc[] +include::../core/cube/ATS_rc-resolution-x-definition.adoc[] -include::../collections/ATS_rc-resolution-x-response.adoc[] +include::../core/cube/ATS_rc-resolution-x-response.adoc[] -include::../collections/ATS_rc-resolution-y-definition.adoc[] +include::../core/cube/ATS_rc-resolution-y-definition.adoc[] -include::../collections/ATS_rc-resolution-y-response.adoc[] +include::../core/cube/ATS_rc-resolution-y-response.adoc[] -include::../collections/ATS_rc-resolution-z-definition.adoc[] +include::../core/cube/ATS_rc-resolution-z-definition.adoc[] -include::../collections/ATS_rc-resolution-z-response.adoc[] +include::../core/cube/ATS_rc-resolution-z-response.adoc[] include::../collections/cube/ATS_rc-crs-definition.adoc[] diff --git a/core/standard/abstract_tests/queries/ATS_items.adoc b/core/standard/abstract_tests/queries/ATS_items.adoc new file mode 100644 index 000000000..c002489d1 --- /dev/null +++ b/core/standard/abstract_tests/queries/ATS_items.adoc @@ -0,0 +1,37 @@ +[[ats_core_rc-items]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/core/rc-items +target:: /req/edr/rc-items +test-purpose:: Validate that resources can be identified and extracted from a Collection using query parameters. +test-method:: ++ +-- +For every resource collection identified in Collections, issue an HTTP GET request to the URL `/collections/{collectionId}/items` where `{collectionId}` is the `id` property for a Collection described in the Collections content. +. Validate that a document was returned with a status code 200. + +Repeat these tests using the following parameter tests: + +*bbox* + +* Parameter <> +* Response <> + +*DateTime* + +* Parameter <> +* Response <> + +Execute requests with combinations of the "bbox" and "time" query parameters +and verify that only information that matches the selection criteria is returned. +-- +==== + +include::../core/ATS_rc-bbox-definition.adoc[] + +include::../core/ATS_rc-bbox-response.adoc[] + +include::../core/items/ATS_rc-time-definition.adoc[] + +include::../core/items/ATS_rc-time-response.adoc[] diff --git a/core/standard/abstract_tests/queries/ATS_locations.adoc b/core/standard/abstract_tests/queries/ATS_locations.adoc index 054403ce4..373dce7db 100644 --- a/core/standard/abstract_tests/queries/ATS_locations.adoc +++ b/core/standard/abstract_tests/queries/ATS_locations.adoc @@ -51,6 +51,11 @@ Repeat these tests using the following parameter tests: * Parameter <> * Response <> +*Custom dimensions* + +* Parameter <> +* Response <> + *DateTime* * Parameter <> @@ -61,11 +66,14 @@ and verify that only information that matches the selection criteria is returned -- ==== + include::../core/locations/ATS_rc-time-definition.adoc[] include::../core/locations/ATS_rc-time-response.adoc[] +include::../collections/locations/ATS_rc-custom-dimension-definition.adoc[] +include::../collections/locations/ATS_rc-custom-dimension-response.adoc[] include::../collections/locations/ATS_rc-parameter-name-definition.adoc[] @@ -82,3 +90,11 @@ include::../collections/locations/ATS_rc-crs-response.adoc[] include::../collections/locations/ATS_rc-f-definition.adoc[] include::../collections/locations/ATS_rc-f-response.adoc[] + +include::../collections/locations/ATS_rc-limit-definition.adoc[] + +include::../collections/locations/ATS_rc-limit-response.adoc[] + +include::../collections/locations/ATS_rc-locationid-definition.adoc[] + +include::../collections/locations/ATS_rc-locationid-response.adoc[] diff --git a/core/standard/abstract_tests/queries/ATS_position.adoc b/core/standard/abstract_tests/queries/ATS_position.adoc index 3482d239c..5a827c51d 100644 --- a/core/standard/abstract_tests/queries/ATS_position.adoc +++ b/core/standard/abstract_tests/queries/ATS_position.adoc @@ -108,3 +108,7 @@ include::../collections/position/ATS_rc-crs-response.adoc[] include::../collections/position/ATS_rc-f-definition.adoc[] include::../collections/position/ATS_rc-f-response.adoc[] + +include::../collections/position/ATS_rc-limit-definition.adoc[] + +include::../collections/position/ATS_rc-limit-response.adoc[] diff --git a/core/standard/abstract_tests/queries/ATS_radius.adoc b/core/standard/abstract_tests/queries/ATS_radius.adoc index 1a1e4ac55..ac03e667b 100644 --- a/core/standard/abstract_tests/queries/ATS_radius.adoc +++ b/core/standard/abstract_tests/queries/ATS_radius.adoc @@ -80,6 +80,11 @@ Repeat these tests using the following parameter tests: * Parameter <> * Response <> +*Custom dimensions* + +* Parameter <> +* Response <> + *Parameters* * Parameter <> @@ -105,6 +110,9 @@ include::../collections/radius/ATS_rc-z-definition.adoc[] include::../collections/radius/ATS_rc-z-response.adoc[] +include::../collections/radius/ATS_rc-custom-dimension-definition.adoc[] + +include::../collections/radius/ATS_rc-custom-dimension-response.adoc[] include::../core/radius/ATS_rc-time-definition.adoc[] @@ -116,6 +124,13 @@ include::../collections/radius/ATS_rc-parameter-name-definition.adoc[] include::../collections/radius/ATS_rc-parameter-name-response.adoc[] +include::../core/radius/ATS_rc-within-definition.adoc[] + +include::../core/radius/ATS_rc-within-response.adoc[] + +include::../core/radius/ATS_rc-within-units-definition.adoc[] + +include::../core/radius/ATS_rc-within-units-response.adoc[] include::../collections/radius/ATS_rc-crs-definition.adoc[] @@ -127,3 +142,8 @@ include::../collections/radius/ATS_rc-crs-response.adoc[] include::../collections/radius/ATS_rc-f-definition.adoc[] include::../collections/radius/ATS_rc-f-response.adoc[] + + +include::../collections/radius/ATS_rc-limit-definition.adoc[] + +include::../collections/radius/ATS_rc-limit-response.adoc[] diff --git a/core/standard/abstract_tests/queries/ATS_trajectory.adoc b/core/standard/abstract_tests/queries/ATS_trajectory.adoc index 81db8ba0a..58ad364e5 100644 --- a/core/standard/abstract_tests/queries/ATS_trajectory.adoc +++ b/core/standard/abstract_tests/queries/ATS_trajectory.adoc @@ -127,6 +127,11 @@ Repeat these tests using the following parameter tests: * Parameter <> * Response <> +*Custom dimensions* + +* Parameter <> +* Response <> + *Parameters* * Parameter <> @@ -148,7 +153,9 @@ include::../collections/trajectory/ATS_rc-coords-definition.adoc[] include::../collections/trajectory/ATS_rc-coords-response.adoc[] +include::../collections/trajectory/ATS_rc-custom-dimension-definition.adoc[] +include::../collections/trajectory/ATS_rc-custom-dimension-response.adoc[] include::../collections/trajectory/ATS_rc-parameter-name-definition.adoc[] diff --git a/core/standard/code/generate_query_tests.py b/core/standard/code/generate_query_tests.py index 276b8bda8..492fab394 100644 --- a/core/standard/code/generate_query_tests.py +++ b/core/standard/code/generate_query_tests.py @@ -44,6 +44,8 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/collections/ATS_rc-coords-response.adoc','./abstract_tests/collections/area/ATS_rc-coords-response.adoc','area') generate('./abstract_tests/collections/ATS_rc-z-definition.adoc','./abstract_tests/collections/area/ATS_rc-z-definition.adoc','area') generate('./abstract_tests/collections/ATS_rc-z-response.adoc','./abstract_tests/collections/area/ATS_rc-z-response.adoc','area') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc','area') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-response.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc','area') generate('./abstract_tests/collections/ATS_rc-parameter-name-definition.adoc','./abstract_tests/collections/area/ATS_rc-parameter-name-definition.adoc','area') generate('./abstract_tests/collections/ATS_rc-parameter-name-response.adoc','./abstract_tests/collections/area/ATS_rc-parameter-name-response.adoc','area') generate('./abstract_tests/collections/ATS_rc-crs-definition.adoc','./abstract_tests/collections/area/ATS_rc-crs-definition.adoc','area') @@ -52,7 +54,8 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/core/ATS_rc-time-response.adoc','./abstract_tests/core/area/ATS_rc-time-response.adoc','area') generate('./abstract_tests/collections/ATS_rc-f-definition.adoc','./abstract_tests/collections/area/ATS_rc-f-definition.adoc','area') generate('./abstract_tests/collections/ATS_rc-f-response.adoc','./abstract_tests/collections/area/ATS_rc-f-response.adoc','area') - +generate('./abstract_tests/collections/ATS_rc-limit-definition.adoc','./abstract_tests/collections/cube/ATS_rc-limit-definition.adoc','area') +generate('./abstract_tests/collections/ATS_rc-limit-response.adoc','./abstract_tests/collections/cube/ATS_rc-limit-response.adoc','area') @@ -62,6 +65,8 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/collections/ATS_rc-coords-response.adoc','./abstract_tests/collections/position/ATS_rc-coords-response.adoc','position') generate('./abstract_tests/collections/ATS_rc-z-definition.adoc','./abstract_tests/collections/position/ATS_rc-z-definition.adoc','position') generate('./abstract_tests/collections/ATS_rc-z-response.adoc','./abstract_tests/collections/position/ATS_rc-z-response.adoc','position') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc','position') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-response.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc','position') generate('./abstract_tests/collections/ATS_rc-parameter-name-definition.adoc','./abstract_tests/collections/position/ATS_rc-parameter-name-definition.adoc','position') generate('./abstract_tests/collections/ATS_rc-parameter-name-response.adoc','./abstract_tests/collections/position/ATS_rc-parameter-name-response.adoc','position') generate('./abstract_tests/collections/ATS_rc-crs-definition.adoc','./abstract_tests/collections/position/ATS_rc-crs-definition.adoc','position') @@ -70,13 +75,16 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/core/ATS_rc-time-response.adoc','./abstract_tests/core/position/ATS_rc-time-response.adoc','position') generate('./abstract_tests/collections/ATS_rc-f-definition.adoc','./abstract_tests/collections/position/ATS_rc-f-definition.adoc','position') generate('./abstract_tests/collections/ATS_rc-f-response.adoc','./abstract_tests/collections/position/ATS_rc-f-response.adoc','position') - +generate('./abstract_tests/collections/ATS_rc-limit-definition.adoc','./abstract_tests/collections/cube/ATS_rc-limit-definition.adoc','position') +generate('./abstract_tests/collections/ATS_rc-limit-response.adoc','./abstract_tests/collections/cube/ATS_rc-limit-response.adoc','position') #radius generate('./abstract_tests/collections/ATS_rc-coords-definition.adoc','./abstract_tests/collections/radius/ATS_rc-coords-definition.adoc','radius') generate('./abstract_tests/collections/ATS_rc-coords-response.adoc','./abstract_tests/collections/radius/ATS_rc-coords-response.adoc','radius') generate('./abstract_tests/collections/ATS_rc-z-definition.adoc','./abstract_tests/collections/radius/ATS_rc-z-definition.adoc','radius') generate('./abstract_tests/collections/ATS_rc-z-response.adoc','./abstract_tests/collections/radius/ATS_rc-z-response.adoc','radius') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc','radius') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-response.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc','radius') generate('./abstract_tests/collections/ATS_rc-parameter-name-definition.adoc','./abstract_tests/collections/radius/ATS_rc-parameter-name-definition.adoc','radius') generate('./abstract_tests/collections/ATS_rc-parameter-name-response.adoc','./abstract_tests/collections/radius/ATS_rc-parameter-name-response.adoc','radius') generate('./abstract_tests/collections/ATS_rc-crs-definition.adoc','./abstract_tests/collections/radius/ATS_rc-crs-definition.adoc','radius') @@ -85,7 +93,8 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/core/ATS_rc-time-response.adoc','./abstract_tests/core/radius/ATS_rc-time-response.adoc','radius') generate('./abstract_tests/collections/ATS_rc-f-definition.adoc','./abstract_tests/collections/radius/ATS_rc-f-definition.adoc','radius') generate('./abstract_tests/collections/ATS_rc-f-response.adoc','./abstract_tests/collections/radius/ATS_rc-f-response.adoc','radius') - +generate('./abstract_tests/collections/ATS_rc-limit-definition.adoc','./abstract_tests/collections/cube/ATS_rc-limit-definition.adoc','radius') +generate('./abstract_tests/collections/ATS_rc-limit-response.adoc','./abstract_tests/collections/cube/ATS_rc-limit-response.adoc','radius') #cube @@ -96,7 +105,8 @@ def generate(infile_path,outfile_path,querytype): # See ATS_cube.adoc, we do not modify ATS_rc-cube-z-response.adoc. So there is no call to generate the associated file. generate('./abstract_tests/collections/ATS_rc-z-definition.adoc','./abstract_tests/collections/cube/ATS_rc-z-definition.adoc','cube') - +generate('./abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc','cube') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-response.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc','cube') generate('./abstract_tests/collections/ATS_rc-parameter-name-definition.adoc','./abstract_tests/collections/cube/ATS_rc-parameter-name-definition.adoc','cube') generate('./abstract_tests/collections/ATS_rc-parameter-name-response.adoc','./abstract_tests/collections/cube/ATS_rc-parameter-name-response.adoc','cube') generate('./abstract_tests/collections/ATS_rc-crs-definition.adoc','./abstract_tests/collections/cube/ATS_rc-crs-definition.adoc','cube') @@ -107,10 +117,13 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/collections/ATS_rc-f-response.adoc','./abstract_tests/collections/cube/ATS_rc-f-response.adoc','cube') + #trajectory generate('./abstract_tests/collections/ATS_rc-coords-definition.adoc','./abstract_tests/collections/trajectory/ATS_rc-coords-definition.adoc','trajectory') generate('./abstract_tests/collections/ATS_rc-coords-response.adoc','./abstract_tests/collections/trajectory/ATS_rc-coords-response.adoc','trajectory') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc','trajectory') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-response.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc','trajectory') generate('./abstract_tests/collections/ATS_rc-parameter-name-definition.adoc','./abstract_tests/collections/trajectory/ATS_rc-parameter-name-definition.adoc','trajectory') generate('./abstract_tests/collections/ATS_rc-parameter-name-response.adoc','./abstract_tests/collections/trajectory/ATS_rc-parameter-name-response.adoc','trajectory') generate('./abstract_tests/collections/ATS_rc-crs-definition.adoc','./abstract_tests/collections/trajectory/ATS_rc-crs-definition.adoc','trajectory') @@ -122,6 +135,8 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/collections/ATS_rc-coords-definition.adoc','./abstract_tests/collections/corridor/ATS_rc-coords-definition.adoc','corridor') generate('./abstract_tests/collections/ATS_rc-coords-response.adoc','./abstract_tests/collections/corridor/ATS_rc-coords-response.adoc','corridor') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc','corridor') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-response.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc','corridor') generate('./abstract_tests/collections/ATS_rc-parameter-name-definition.adoc','./abstract_tests/collections/corridor/ATS_rc-parameter-name-definition.adoc','corridor') generate('./abstract_tests/collections/ATS_rc-parameter-name-response.adoc','./abstract_tests/collections/corridor/ATS_rc-parameter-name-response.adoc','corridor') generate('./abstract_tests/collections/ATS_rc-crs-definition.adoc','./abstract_tests/collections/corridor/ATS_rc-crs-definition.adoc','corridor') @@ -133,9 +148,13 @@ def generate(infile_path,outfile_path,querytype): generate('./abstract_tests/core/ATS_rc-time-definition.adoc','./abstract_tests/core/locations/ATS_rc-time-definition.adoc','locations') generate('./abstract_tests/core/ATS_rc-time-response.adoc','./abstract_tests/core/locations/ATS_rc-time-response.adoc','locations') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-definition.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-definition.adoc','locations') +generate('./abstract_tests/collections/ATS_rc-custom-dimension-response.adoc','./abstract_tests/collections/area/ATS_rc-custom-dimension-response.adoc','locations') generate('./abstract_tests/collections/ATS_rc-parameter-name-definition.adoc','./abstract_tests/collections/locations/ATS_rc-parameter-name-definition.adoc','locations') generate('./abstract_tests/collections/ATS_rc-parameter-name-response.adoc','./abstract_tests/collections/locations/ATS_rc-parameter-name-response.adoc','locations') generate('./abstract_tests/collections/ATS_rc-crs-definition.adoc','./abstract_tests/collections/locations/ATS_rc-crs-definition.adoc','locations') generate('./abstract_tests/collections/ATS_rc-crs-response.adoc','./abstract_tests/collections/locations/ATS_rc-crs-response.adoc','locations') generate('./abstract_tests/collections/ATS_rc-f-definition.adoc','./abstract_tests/collections/locations/ATS_rc-f-definition.adoc','locations') generate('./abstract_tests/collections/ATS_rc-f-response.adoc','./abstract_tests/collections/locations/ATS_rc-f-response.adoc','locations') +generate('./abstract_tests/collections/ATS_rc-limit-definition.adoc','./abstract_tests/collections/cube/ATS_rc-limit-definition.adoc','locations') +generate('./abstract_tests/collections/ATS_rc-limit-response.adoc','./abstract_tests/collections/cube/ATS_rc-limit-response.adoc','locations') \ No newline at end of file diff --git a/core/standard/recommendations/core/REC_link-header.adoc b/core/standard/recommendations/core/REC_link-header.adoc index 4221c38db..993c84f86 100644 --- a/core/standard/recommendations/core/REC_link-header.adoc +++ b/core/standard/recommendations/core/REC_link-header.adoc @@ -3,7 +3,7 @@ ==== *A:* -Links included in the payloads of responses SHOULD also be included as `Link` headers in the HTTP response according to <>. +Links included in the payloads of responses SHOULD also be included as `Link` headers in the HTTP response according to <>. --- *B:* diff --git a/core/standard/recommendations/core/REC_rc-extent.adoc b/core/standard/recommendations/core/REC_rc-extent.adoc index f7b25604c..5d275279f 100644 --- a/core/standard/recommendations/core/REC_rc-extent.adoc +++ b/core/standard/recommendations/core/REC_rc-extent.adoc @@ -1,6 +1,7 @@ [[rec_core_rc-extent]] -[width="90%",cols="2,6a"] -|=== -^|*Recommendation {counter:rec-id}* |*/rec/core/rc-extent* -^|A |If the response is a partial, paged response (i.e., the number of features in the response is less than the number of features that match the selection parameters) and the response includes information about the extent of the response (e.g. the member `bbox` in a GeoJSON feature collection), the extent SHOULD be the extent of the complete result set, not the extent of the features in the response / page. -|=== \ No newline at end of file +[recommendation,type="general",id="/rec/core/rc-extent", label="/rec/core/rc-extent"] +==== +*A:* + + If the response is a partial, paged response (i.e., the number of features in the response is less than the number of features that match the selection parameters) and the response includes information about the extent of the response (e.g. the member `bbox` in a GeoJSON feature collection), the extent SHOULD be the extent of the complete result set, not the extent of the features in the response / page. +==== diff --git a/core/standard/recommendations/core/REC_rc-next-1.adoc b/core/standard/recommendations/core/REC_rc-next-1.adoc index 14fa5929c..32fdae66f 100644 --- a/core/standard/recommendations/core/REC_rc-next-1.adoc +++ b/core/standard/recommendations/core/REC_rc-next-1.adoc @@ -1,6 +1,7 @@ [[rec_core_rc-next-1]] -[width="90%",cols="2,6a"] -|=== -^|*Recommendation {counter:rec-id}* |*/rec/core/rc-next-1* -^|A |A `200`-response SHOULD include a link to the next "page" (relation: `next`), if more features have been selected than returned in the response. -|=== +[recommendation,type="general",id="/rec/core/rc-next-1", label="/rec/core/rc-next-1"] +==== +*A:* + + `200`-response SHOULD include a link to the next "page" (relation: `next`), if more features have been selected than returned in the response. +==== diff --git a/core/standard/recommendations/core/REC_rc-next-2.adoc b/core/standard/recommendations/core/REC_rc-next-2.adoc index 7cefe777d..dabab88ed 100644 --- a/core/standard/recommendations/core/REC_rc-next-2.adoc +++ b/core/standard/recommendations/core/REC_rc-next-2.adoc @@ -1,6 +1,7 @@ [[rec_core_rc-next-2]] -[width="90%",cols="2,6a"] -|=== -^|*Recommendation {counter:rec-id}* |*/rec/core/rc-next-2* -^|A |Dereferencing a `next` link SHOULD return additional features from the set of selected features that have not yet been returned. -|=== +[recommendation,type="general",id="/rec/core/rc-next-2", label="/rec/core/rc-next-2"] +==== +*A:* + +Dereferencing a `next` link SHOULD return additional features from the set of selected features that have not yet been returned. +==== diff --git a/core/standard/recommendations/core/REC_rc-next-3.adoc b/core/standard/recommendations/core/REC_rc-next-3.adoc index c5463981f..f28675ab1 100644 --- a/core/standard/recommendations/core/REC_rc-next-3.adoc +++ b/core/standard/recommendations/core/REC_rc-next-3.adoc @@ -1,6 +1,7 @@ [[rec_core_rc-next-3]] -[width="90%",cols="2,6a"] -|=== -^|*Recommendation {counter:rec-id}* |*/rec/core/rc-next-3* -^|A |The number of features in a response to a `next` link SHOULD follow the same rules as for the response to the original query and again include a `next` link, if there are more features in the selection that have not yet been returned. -|=== +[recommendation,type="general",id="/rec/core/rc-next-3", label="/rec/core/rc-next-3"] +==== +*A:* + +The number of features in a response to a `next` link SHOULD follow the same rules as for the response to the original query and again include a `next` link, if there are more features in the selection that have not yet been returned. +==== \ No newline at end of file diff --git a/core/standard/recommendations/core/REQ_rc-rel-type.adoc b/core/standard/recommendations/core/REQ_rc-rel-type.adoc deleted file mode 100644 index 5ffb2b904..000000000 --- a/core/standard/recommendations/core/REQ_rc-rel-type.adoc +++ /dev/null @@ -1,6 +0,0 @@ -[[req_core_rc-rel-type]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/rc-rel-type* -^|A |All links in a `200`-response where `rel` is `self`, `alternate`, `next`, or `prev` SHALL include the `type` link parameter. -|=== diff --git a/core/standard/relaton/cache/ogc/06-103r4.xml b/core/standard/relaton/cache/ogc/06-103r4.xml index bdcd408a3..317fab216 100644 --- a/core/standard/relaton/cache/ogc/06-103r4.xml +++ b/core/standard/relaton/cache/ogc/06-103r4.xml @@ -1,9 +1,10 @@ - - 2023-07-04 + + 2024-10-08 OpenGIS Implementation Specification for Geographic information Simple feature access Part 1: Common architecture OpenGIS Implementation Specification for Geographic information - Simple feature access - Part 1: Common architecture + http://www.opengis.net/doc/is/sfa/1.2.1 https://portal.ogc.org/files/?artifact_id=25355 06-103r4 diff --git a/core/standard/relaton/cache/ogc/17-069r3.xml b/core/standard/relaton/cache/ogc/17-069r3.xml index 3378b6acf..56f807685 100644 --- a/core/standard/relaton/cache/ogc/17-069r3.xml +++ b/core/standard/relaton/cache/ogc/17-069r3.xml @@ -1,9 +1,10 @@ - - 2023-07-04 + + 2024-10-08 OGC API Features Part 1: Core OGC API - Features - Part 1: Core + http://www.opengis.net/doc/IS/ogcapi-features-1/1.0.0 https://docs.ogc.org/is/17-069r3/17-069r3.html 17-069r3 diff --git a/core/standard/relaton/cache/ogc/18-010r7.xml b/core/standard/relaton/cache/ogc/18-010r7.xml index 6e61e832a..2bb8b9851 100644 --- a/core/standard/relaton/cache/ogc/18-010r7.xml +++ b/core/standard/relaton/cache/ogc/18-010r7.xml @@ -1,7 +1,8 @@ - - 2023-07-04 + + 2024-10-08 Geographic information — Well-known text representation of coordinate reference systems Geographic information — Well-known text representation of coordinate reference systems + http://www.opengis.net/doc/is/wkt-crs/2.0.6 https://docs.ogc.org/is/18-010r7/18-010r7.html 18-010r7 diff --git a/core/standard/relaton/cache/ogc/19-072.xml b/core/standard/relaton/cache/ogc/19-072.xml index 6083cf145..888ce381b 100644 --- a/core/standard/relaton/cache/ogc/19-072.xml +++ b/core/standard/relaton/cache/ogc/19-072.xml @@ -1,9 +1,10 @@ - - 2023-07-04 + + 2024-10-08 OGC API Common Part 1: Core OGC API - Common - Part 1: Core + http://www.opengis.net/doc/is/ogcapi-common-1/1.0.0 https://docs.ogc.org/is/19-072/19-072.html 19-072 diff --git a/core/standard/relaton/cache/ogc/ogc_20-024.notfound b/core/standard/relaton/cache/ogc/ogc_20-024.notfound index 9aa151f4c..25fee0dc7 100644 --- a/core/standard/relaton/cache/ogc/ogc_20-024.notfound +++ b/core/standard/relaton/cache/ogc/ogc_20-024.notfound @@ -1 +1 @@ -not_found 2023-07-04 \ No newline at end of file +not_found 2024-10-08 \ No newline at end of file diff --git a/core/standard/relaton/cache/ogc/version b/core/standard/relaton/cache/ogc/version index e93ffd44a..e9cdaf0be 100644 --- a/core/standard/relaton/cache/ogc/version +++ b/core/standard/relaton/cache/ogc/version @@ -1 +1 @@ -a3b89595560f568d899b4cc1dc8a0276 \ No newline at end of file +b4f88dfa16a39dfa412b1cc164a82606 \ No newline at end of file diff --git a/core/standard/requirements/core/REQ_http.adoc b/core/standard/requirements/core/REQ_http.adoc index a7954203e..5a119ff63 100644 --- a/core/standard/requirements/core/REQ_http.adoc +++ b/core/standard/requirements/core/REQ_http.adoc @@ -8,10 +8,10 @@ identifier:: /req/core/http *A:* -The API SHALL conform to <>. +The API SHALL conform to <>. --- *B:* -If the API supports HTTPS, then the API SHALL also conform to <>. +If the API supports HTTPS, then the API SHALL also conform to <>. ==== diff --git a/core/standard/requirements/core/REQ_rc-limit-definition.adoc b/core/standard/requirements/core/REQ_rc-limit-definition.adoc old mode 100644 new mode 100755 index ae24977e8..0baf04a66 --- a/core/standard/requirements/core/REQ_rc-limit-definition.adoc +++ b/core/standard/requirements/core/REQ_rc-limit-definition.adoc @@ -1,8 +1,14 @@ [[req_core_rc-limit-definition]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/rc-limit-definition* -^|A |The operation SHALL support a parameter `limit` based upon the following OpenAPI 3.0 fragment: +==== *Requirement /req/core/rc-limit-definition* limit definition + +[requirement] +==== +[%metadata] +identifier:: /req/core/rc-limit-definition + +*A:* + +The operation SHALL support a parameter `limit` based upon the following OpenAPI 3.0 fragment: [source,YAML] ---- @@ -17,4 +23,4 @@ schema: style: form explode: false ---- -|=== \ No newline at end of file +==== diff --git a/core/standard/requirements/core/REQ_rc-limit-response-1.adoc b/core/standard/requirements/core/REQ_rc-limit-response-1.adoc old mode 100644 new mode 100755 index bfb0616c4..55a735215 --- a/core/standard/requirements/core/REQ_rc-limit-response-1.adoc +++ b/core/standard/requirements/core/REQ_rc-limit-response-1.adoc @@ -1,11 +1,28 @@ [[req_core_rc-limit-response-1]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/rc-limit-response-1* -^|A |The response SHALL not contain more features than specified by the optional `limit` parameter. -^|B |If the API definition specifies a maximum value for `limit` parameter, the response SHALL not contain more features than this maximum value. -^|C |If the value of the `limit` parameter is larger than the maximum value, this SHALL NOT result in an error (instead use the maximum as the parameter value). -^|D |Only items are counted that are on the first level of the collection. Any nested objects contained within the explicitly requested items SHALL not be counted. -|=== - -See <> for more discussion about the `limit` parameter. \ No newline at end of file +==== *Requirement /req/core/rc-limit-response-1* limit response-1 + +[requirement] +==== +[%metadata] +identifier:: /req/core/datetime-response + +*A:* + +The response SHALL not contain more features than specified by the optional `limit` parameter. + +--- +*B:* + +If the API definition specifies a maximum value for `limit` parameter, the response SHALL not contain more features than this maximum value. + +--- +*C:* + +If the value of the `limit` parameter is larger than the maximum value, this SHALL NOT result in an error (instead use the maximum as the parameter value). + +--- +*D:* + +Only items are counted that are on the first level of the collection. Any nested objects contained within the explicitly requested items SHALL not be counted. + +==== \ No newline at end of file diff --git a/core/standard/requirements/core/REQ_rc-numberMatched.adoc b/core/standard/requirements/core/REQ_rc-numberMatched.adoc old mode 100644 new mode 100755 index 901976fdf..0a414bc3d --- a/core/standard/requirements/core/REQ_rc-numberMatched.adoc +++ b/core/standard/requirements/core/REQ_rc-numberMatched.adoc @@ -1,7 +1,17 @@ [[req_core_rc-numberMatched]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/rc-numberMatched* -^|A |If a property `numberMatched` is included in the response, the value SHALL be identical to the number of features in the feature collections that match the selection parameters like `bbox`, `datetime` or additional filter parameters. -^|B |A server MAY omit this information in a response, if the information about the number of matching features is not known or difficult to compute. -|=== \ No newline at end of file +==== *Requirement /req/core/rc-numberMatched* number matched + +[requirement] +==== +[%metadata] +identifier:: /req/core/rc-numberMatched + +*A:* + +If a property `numberMatched` is included in the response, the value SHALL be identical to the number of features in the feature collections that match the selection parameters like `bbox`, `datetime` or additional filter parameters. + +*B:* + +A server MAY omit this information in a response, if the information about the number of matching features is not known or difficult to compute. + +==== diff --git a/core/standard/requirements/core/REQ_rc-numberReturned.adoc b/core/standard/requirements/core/REQ_rc-numberReturned.adoc old mode 100644 new mode 100755 index 090db5847..93bb6cb0d --- a/core/standard/requirements/core/REQ_rc-numberReturned.adoc +++ b/core/standard/requirements/core/REQ_rc-numberReturned.adoc @@ -1,7 +1,16 @@ [[req_core_rc-numberReturned]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/core/rc-numberReturned* -^|A |If a property `numberReturned` is included in the response, the value SHALL be identical to the number of features in the response. -^|B |A server MAY omit this information in a response, if the information about the number of features in the response is not known or difficult to compute. -|=== \ No newline at end of file +==== *Requirement /req/core/rc-numberReturned* number returned + +[requirement] +==== +[%metadata] +identifier:: /req/core/rc-numberReturned + +*A:* + +If a property `numberReturned` is included in the response, the value SHALL be identical to the number of features in the response. + +*A:* + +A server MAY omit this information in a response, if the information about the number of features in the response is not known or difficult to compute. +==== \ No newline at end of file diff --git a/core/standard/requirements/edr/REQ_rc-bbox-definition-cube.adoc b/core/standard/requirements/edr/REQ_rc-bbox-definition-cube.adoc new file mode 100755 index 000000000..15a8f448a --- /dev/null +++ b/core/standard/requirements/edr/REQ_rc-bbox-definition-cube.adoc @@ -0,0 +1,27 @@ +[[req_edr_rc-bbox-definition-cube]] +==== *Requirement /req/edr/rc-bbox-definition-cube* Parameter bbox definition + +[requirement] +==== +[%metadata] +identifier:: /req/edr/rc-bbox-definition-cube + + +*A:* + +The operation SHALL support a parameter `bbox` with the following characteristics (using an OpenAPI Specification 3.0 fragment): + + +[source,YAML] +---- +name: bbox +in: query +required: false +schema: + type: number + minItems: 4 + maxItems: 4 +style: form +explode: false +---- +==== diff --git a/core/standard/requirements/edr/REQ_rc-bbox-response-cube.adoc b/core/standard/requirements/edr/REQ_rc-bbox-response-cube.adoc new file mode 100755 index 000000000..d789642f7 --- /dev/null +++ b/core/standard/requirements/edr/REQ_rc-bbox-response-cube.adoc @@ -0,0 +1,56 @@ +[[req_edr_rc-bbox-response-cube]] +==== *Requirement /req/edr/rc-bbox-response-cube* Parameter bbox response + +[requirement] +==== +[%metadata] +identifier:: /req/edr/rc-bbox-response-cube + +*A:* + +Only features that have a spatial geometry that intersects the bounding box SHALL be part of the result set, if the `bbox` parameter is provided. + +--- +*B:* + +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. + +--- +*C:* + +The `bbox` parameter SHALL match all features in the collection that are not associated with a spatial geometry, too. + +--- +*D:* + +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 +* Upper right corner, coordinate axis 1 +* Upper right corner, coordinate axis 2 + + +--- +*E:* + +The bounding box SHALL consist of four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth) and the coordinate reference system of the values SHALL be interpreted as the coordinate reference system that is specified in a parameter `crs`. + +--- +*F:* + +If the `crs` query parameter **is not** defined, the bounding box SHALL consist of four or six numbers, depending on whether the coordinate reference system includes a vertical axis (height or depth) and the coordinate reference system of the values SHALL be interpreted as the default coordinate reference system specified for the query type. + +--- +*G:* + +If the `crs` query parameter **is not** defined **and** a default `crs` **is not** defined for the query, the bounding box SHALL consist of four numbers and the coordinate reference system of the values SHALL be in the CRS defined by the spatial element of the extent section in the collection response. + + +--- +*H:* + +The coordinate values SHALL be within the extent specified for the coordinate reference system. + +==== diff --git a/core/standard/requirements/edr/REQ_rc-coords-response.adoc b/core/standard/requirements/edr/REQ_rc-coords-response.adoc index e7fcee724..8d76690d9 100644 --- a/core/standard/requirements/edr/REQ_rc-coords-response.adoc +++ b/core/standard/requirements/edr/REQ_rc-coords-response.adoc @@ -18,26 +18,6 @@ The coordinates SHALL consist of a Well Known Text (WKT) geometry string. --- *C:* -[[req_edr_coords-response]] -==== *Requirement /req/edr/coords-response* Parameter coords response - -[requirement] -==== -[%metadata] -identifier:: /req/edr/coords-response - -*A:* - -Only those resources that have a spatial geometry that intersects the area defined by the `coords` parameter SHALL be part of the result set. - ---- -*B:* - -The coordinates SHALL consist of a Well Known Text (WKT) geometry string. - ---- -*C:* - If a coordinate reference system **is not** specified in a parameter `crs`, the crs SHALL be value defined in the spatial element of the extent section in the collection response. diff --git a/core/standard/requirements/edr/REQ_rc-cube.adoc b/core/standard/requirements/edr/REQ_rc-cube.adoc old mode 100644 new mode 100755 index 633438c1d..44c3002c9 --- a/core/standard/requirements/edr/REQ_rc-cube.adoc +++ b/core/standard/requirements/edr/REQ_rc-cube.adoc @@ -1,39 +1,67 @@ -[[req_edr_resolution-z-response]] -==== *Requirement /req/edr/resolution-z-response* Parameter resolution-z response +[[req_edr_rc-cube]] [requirement] ==== [%metadata] -identifier:: /req/edr/resolution-z-response +identifier:: /req/edr/rc-cube *A:* -If the `resolution-z` parameter is provided, it denotes the number of positions to retrieve data for, over the depth of the corridor path including its minimum and maximum width coordinates. - -.interpolated corridor example -image::images/REQ_rc-resolution-z-a.png[interpolated corridor example] +For every collection identified in the collections response (path `/collections`), the server MAY support the HTTP GET operation at the path `/collections/{collectionId}/cube`. --- *B:* -A `resolution-z` value of 0 SHALL return all available data at the stored vertical resolution between (and including) the minimum and maximum coordinates of the defined corridor. - -.native resolution corridor example -image::images/REQ_rc-resolution-z-b.png[native resolution corridor example] +For every collection identified in the collections response (path `/collections`), the server MAY support the HTTP POST operation at the path `/collections/{collectionId}/cube`. --- *C:* -If `resolution-z` is not specified the API SHOULD return all available data at a resolution determined by the server, including the minimum and maximum coordinates of the defined corridor. +The parameter `collectionId` is each `id` property in the collections response (JSONPath: `$.collections[*].id`). - -[source,txt] ----- -resolution-z = number of intervals + 1 ----- +--- *D:* -If the specified `resolution-z` value is invalid the API SHALL return a HTTP 400 error code with a message body which describes the range of valid `resolution-z` values. +A `cube` GET or POST operation SHALL include a `bbox` query parameter + +--- +*E:* + +A `bbox` query parameter SHOULD only consist of four values, any vertical values defined by `bbox` will be overridden by the values assigned to the `z` query parameter --- +*F:* + +If the `bbox` query parameter is not specified a HTTP `400` error should be generated + +--- +*G:* + +A `cube` GET or POST operation SHALL include a `z` query parameter + +--- +*H:* + +If the `z` query parameter is not specified a HTTP `400` error should be generated + +--- +*I:* + +A `cube` GET or POST operation SHOULD include a `parameter-name` query parameter + +--- +*J:* + +A `cube` GET or POST operation MAY include a `datetime` query parameter + +--- +*K:* + +A `cube` GET or POST operation SHOULD include a `crs` query parameter + +--- +*L:* + +A `cube` GET or POST operation SHOULD include an `f` query parameter + ==== \ No newline at end of file diff --git a/core/standard/requirements/edr/REQ_rc-custom-dimension-definition.adoc b/core/standard/requirements/edr/REQ_rc-custom-dimension-definition.adoc index 96e823863..231b2375b 100644 --- a/core/standard/requirements/edr/REQ_rc-custom-dimension-definition.adoc +++ b/core/standard/requirements/edr/REQ_rc-custom-dimension-definition.adoc @@ -1,10 +1,10 @@ [[req_edr_custom-dimension-definition]] -==== *Requirement /req/edr/custom-dimension-definition* Custom Parameter definition +==== *Requirement /req/edr/rc-custom-dimension-definition* Custom Parameter definition [requirement] ==== [%metadata] -identifier:: /req/edr/custom-dimension-definition +identifier:: /req/edr/rc-custom-dimension-definition *A:* diff --git a/core/standard/requirements/edr/REQ_rc-limit-definition.adoc b/core/standard/requirements/edr/REQ_rc-limit-definition.adoc index 82b1852c1..b18bde94e 100644 --- a/core/standard/requirements/edr/REQ_rc-limit-definition.adoc +++ b/core/standard/requirements/edr/REQ_rc-limit-definition.adoc @@ -1,8 +1,13 @@ [[req_edr_rc-limit-definition]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/edr/rc-limit-definition* -^|A |The operation SHALL support a parameter `limit` with the following characteristics (using an OpenAPI Specification 3.0 fragment): +==== *Requirement /req/edr/rc-limit-definition* Parameter limit definition + +[requirement] +==== +[%metadata] +identifier:: /req/edr/rc-limit-definition + +*A:* +The operation SHALL support a parameter `limit` with the following characteristics (using an OpenAPI Specification 3.0 fragment): [source,YAML] ---- @@ -17,4 +22,5 @@ schema: style: form explode: false ---- -|=== + +==== diff --git a/core/standard/requirements/edr/REQ_rc-limit-response.adoc b/core/standard/requirements/edr/REQ_rc-limit-response.adoc index 318fc486d..59f0d1ff8 100644 --- a/core/standard/requirements/edr/REQ_rc-limit-response.adoc +++ b/core/standard/requirements/edr/REQ_rc-limit-response.adoc @@ -1,10 +1,26 @@ [[req_edr_rc-limit-response]] -[width="90%",cols="2,6a"] -|=== -^|*Requirement {counter:req-id}* |*/req/edr/rc-limit-response* -^|A |The response SHALL not contain more features than specified by the optional `limit` parameter. -^|B |If the API definition specifies a maximum value for `limit` parameter, the response SHALL not contain more features than this maximum value. -^|C |If the value of the `limit` parameter is larger than the maximum value, this SHALL NOT result in an error (instead use the maximum as the parameter value). -^|D |Only items are counted that are on the first level of the collection. Any nested objects contained within the explicitly requested items SHALL not be counted. -|=== +==== *Requirement /req/edr/REQ_rc-limit-response* Parameter limit response + +[requirement] +==== +[%metadata] +identifier:: /req/edr/REQ_rc-limit-response + +*A:* +The response SHALL not contain more features than specified by the optional `limit` parameter. + +--- +*B:* +If the API definition specifies a maximum value for `limit` parameter, the response SHALL not contain more features than this maximum value. + +--- +*C:* +If the value of the `limit` parameter is larger than the maximum value, this SHALL NOT result in an error (instead use the maximum as the parameter value). + +--- +*D:* +Only items are counted that are on the first level of the collection. Any nested objects contained within the explicitly requested items SHALL not be counted. + + +==== diff --git a/core/standard/requirements/edr/REQ_rc-locationid-definition.adoc b/core/standard/requirements/edr/REQ_rc-locationid-definition.adoc index e662fc86e..e0b07533c 100644 --- a/core/standard/requirements/edr/REQ_rc-locationid-definition.adoc +++ b/core/standard/requirements/edr/REQ_rc-locationid-definition.adoc @@ -5,19 +5,24 @@ ==== [%metadata] identifier:: /req/edr/REQ_rc-locationid-definition + *A:* + The `locationId` value SHALL be a comma delimited string list of locations that data is being requested for. ---- + *B:* + Each resource locations operation SHALL support a parameter `locationId` with the following characteristics (using an OpenAPI Specification 3.0 fragment): + [source,YAML] ---- name: locationId in: path required: false +description: Comma-delimited list of Location IDs schema: type: string -style: form -explode: false + style: simple + explode: false ---- ==== diff --git a/core/standard/requirements/edr/REQ_rc-locationid-response.adoc b/core/standard/requirements/edr/REQ_rc-locationid-response.adoc index a528aa4a7..7b78eb24f 100644 --- a/core/standard/requirements/edr/REQ_rc-locationid-response.adoc +++ b/core/standard/requirements/edr/REQ_rc-locationid-response.adoc @@ -5,9 +5,12 @@ ==== [%metadata] identifier:: /req/edr/REQ_rc-locationid-response + *A:* If the `locationId` parameter is provided only data for locations matching the requested identifers should be returned. + --- *B:* If there is no data available for the requested location identifiers a HTTP 204 response should be returned + ==== diff --git a/core/standard/requirements/edr/query_type/area.adoc b/core/standard/requirements/edr/query_type/area.adoc index 92a706afa..a81e75ee0 100644 --- a/core/standard/requirements/edr/query_type/area.adoc +++ b/core/standard/requirements/edr/query_type/area.adoc @@ -45,7 +45,9 @@ a| **f** * `f=CoverageJSON` * `f=CSV` a| **limit** + * <> + * <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). **This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` diff --git a/core/standard/requirements/edr/query_type/item.adoc b/core/standard/requirements/edr/query_type/item.adoc index 0deb24c07..87952fb23 100644 --- a/core/standard/requirements/edr/query_type/item.adoc +++ b/core/standard/requirements/edr/query_type/item.adoc @@ -51,6 +51,8 @@ a| **datetime** * `datetime=2018-02-12T00:00Z,2018-02-12T01:00Z,2018-02-14T12:00Z` a| **limit** +* <> + * <> |String |No| The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). **This value will be ignored if the requested format or the server does not support paging** a| * `limit=10` diff --git a/core/standard/requirements/edr/query_type/locations.adoc b/core/standard/requirements/edr/query_type/locations.adoc index f530e4f38..f72183e3e 100644 --- a/core/standard/requirements/edr/query_type/locations.adoc +++ b/core/standard/requirements/edr/query_type/locations.adoc @@ -43,7 +43,9 @@ a| **f** * `f=CoverageJSON` * `f=CSV` a| **limit** + * <> + * <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). **This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` diff --git a/core/standard/requirements/edr/query_type/point.adoc b/core/standard/requirements/edr/query_type/point.adoc index f9f5d8cbe..e81c3148a 100644 --- a/core/standard/requirements/edr/query_type/point.adoc +++ b/core/standard/requirements/edr/query_type/point.adoc @@ -45,7 +45,9 @@ a| **f** * `f=CoverageJSON` * `f=CSV` a| **limit** + * <> + * <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). **This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` diff --git a/core/standard/requirements/edr/query_type/radius.adoc b/core/standard/requirements/edr/query_type/radius.adoc index acb2a4c93..a25fd4d17 100644 --- a/core/standard/requirements/edr/query_type/radius.adoc +++ b/core/standard/requirements/edr/query_type/radius.adoc @@ -56,7 +56,9 @@ a| **f** * `f=CoverageJSON` * `f=CSV` a| **limit** + * <> + * <> |String|No|The limit parameter may be used to control the subset of the selected features that should be returned in the response, the page size. Each page may include information about the number of selected and returned features (numberMatched and numberReturned) as well as links to support paging (link relation next). **This value will be ignored if the requested format or the server does not support paging** a| * `limit=100` diff --git a/core/standard/requirements/requirements_class_query_parameters.adoc b/core/standard/requirements/requirements_class_query_parameters.adoc index 51c0c6ffd..ec495c415 100644 --- a/core/standard/requirements/requirements_class_query_parameters.adoc +++ b/core/standard/requirements/requirements_class_query_parameters.adoc @@ -14,6 +14,8 @@ inherit:: http://www.opengis.net/spec/ogcapi-common-2/1.0/req/collections requirement:: /req/core/rc-bbox-definition requirement:: /req/core/rc-bbox-response +requirement:: /req/edr/rc-bbox-definition-cube +requirement:: /req/edr/rc-bbox-response-cube requirement:: /req/edr/coords-definition requirement:: /req/edr/point-coords-response requirement:: /req/edr/polygon-coords-response @@ -47,7 +49,7 @@ requirement:: /req/edr/corridor-width-definition requirement:: /req/edr/REQ_rc-corridor-width-response requirement:: /req/edr/REQ_rc-width-units-definition requirement:: /req/edr/width-units-response -requirement:: /req/edr/custom-dimension-definition +requirement:: /req/edr/rc-custom-dimension-definition requirement:: /req/edr/custom-dimension-response ==== diff --git a/core/standard/sections/annex_collection_response.adoc b/core/standard/sections/annex_collection_response.adoc old mode 100644 new mode 100755 index 163da3115..f555559d3 --- a/core/standard/sections/annex_collection_response.adoc +++ b/core/standard/sections/annex_collection_response.adoc @@ -30,7 +30,7 @@ Collection objects describe both collections and instances of a collection. [[col-links]] === Link Object -OGC Web API Standards use <> to express relationships between resources. The "link" elements provide a convention for associating resources related to the collection. +OGC Web API Standards use <> to express relationships between resources. The "link" elements provide a convention for associating resources related to the collection. [width="100%",cols="22%,22%,14%,42%",frame="topbot",options="header"] .Link Object diff --git a/core/standard/sections/annex_requirements.adoc b/core/standard/sections/annex_requirements.adoc old mode 100644 new mode 100755 index c9502fedd..82fad7685 --- a/core/standard/sections/annex_requirements.adoc +++ b/core/standard/sections/annex_requirements.adoc @@ -187,6 +187,10 @@ include::../requirements/core/REQ_rc-bbox-definition.adoc[] include::../requirements/core/REQ_rc-bbox-response.adoc[] +include::../requirements/edr/REQ_rc-bbox-definition-cube.adoc[] + +include::../requirements/edr/REQ_rc-bbox-response-cube.adoc[] + include::../requirements/edr/REQ_rc-coords-definition.adoc[] include::../requirements/edr/REQ_rc-point-coords-response.adoc[] @@ -277,8 +281,9 @@ include::../requirements/edr/REQ_rc-locationid-definition.adoc[] include::../requirements/edr/REQ_rc-locationid-response.adoc[] -include::../requirements/core/REQ_rc-limit-definition.adoc[] +include::../requirements/edr/REQ_rc-limit-definition.adoc[] +include::../requirements/edr/REQ_rc-limit-response.adoc[] :sectnums: diff --git a/core/standard/sections/clause_3_references.adoc b/core/standard/sections/clause_3_references.adoc old mode 100644 new mode 100755 index a9a0b7079..c8e80b1a7 --- a/core/standard/sections/clause_3_references.adoc +++ b/core/standard/sections/clause_3_references.adoc @@ -4,18 +4,18 @@ The following normative documents contain provisions that, through reference in this text, constitute provisions of this document. For dated references, subsequent amendments to, or revisions of, any of these publications do not apply. For undated references, the latest edition of the normative document referred to applies. * [[[openapi,openapi]]] Open API Initiative: OpenAPI Specification 3.0.3, https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md[https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.3.md] -* [[[rfc2616,rfc2616]]] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., Berners-Lee, T.: IETF RFC 2616, HTTP/1.1, https://tools.ietf.org/rfc/rfc2616.txt[https://tools.ietf.org/rfc/rfc2616.txt] -* [[[rfc2818,rfc2818]]] Rescorla, E.: IETF RFC 2818, HTTP Over TLS, https://tools.ietf.org/rfc/rfc2818.txt[https://tools.ietf.org/rfc/rfc2818.txt] -* [[[rfc3339,rfc3339]]] Klyne, G., Newman, C.: IETF RFC 3339, Date and Time on the Internet: Timestamps, https://tools.ietf.org/rfc/rfc3339.txt[https://tools.ietf.org/rfc/rfc3339.txt] -* [[[rfc3896,rfc3896]]] Berners-Lee, T., Fielding, R., Masinter, L: IETF RFC 3896, Uniform Resource Identifier (URI): Generic Syntax, https://tools.ietf.org/rfc/rfc3896.txt[https://tools.ietf.org/rfc/rfc3896.txt] -* [[[rfc7946,rfc7946]]] Butler, H., Daly, M., Doyle, A., Gillies, S., Hagen, S., Schaub, T.: IETF RFC 7946, The GeoJSON Format, https://tools.ietf.org/rfc/rfc7946.txt[https://tools.ietf.org/rfc/rfc7946.txt] -* [[[rfc8288,rfc8288]]] Nottingham, M.: IETF RFC 8288, Web Linking, https://tools.ietf.org/rfc/rfc8288.txt[https://tools.ietf.org/rfc/rfc8288.txt] -* [[[rfc6570,rfc6570]]] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M., Orchard, D.: IETF RFC 6570, URI Template, https://datatracker.ietf.org/doc/html/rfc6570[https://datatracker.ietf.org/doc/html/rfc6570] +* [[[RFC2616,RFC 2616]]] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., Berners-Lee, T.: IETF RFC 2616, HTTP/1.1, https://tools.ietf.org/rfc/rfc2616.txt[https://tools.ietf.org/rfc/rfc2616.txt] +* [[[RFC2818,RFC 2818]]] Rescorla, E.: IETF RFC 2818, HTTP Over TLS, https://tools.ietf.org/rfc/rfc2818.txt[https://tools.ietf.org/rfc/rfc2818.txt] +* [[[RFC3339,RFC 3339]]] Klyne, G., Newman, C.: IETF RFC 3339, Date and Time on the Internet: Timestamps, https://tools.ietf.org/rfc/rfc3339.txt[https://tools.ietf.org/rfc/rfc3339.txt] +* [[[RFC3896,RFC 3896]]] Berners-Lee, T., Fielding, R., Masinter, L: IETF RFC 3896, Uniform Resource Identifier (URI): Generic Syntax, https://tools.ietf.org/rfc/rfc3896.txt[https://tools.ietf.org/rfc/rfc3896.txt] +* [[[RFC7946,RFC 7946]]] Butler, H., Daly, M., Doyle, A., Gillies, S., Hagen, S., Schaub, T.: IETF RFC 7946, The GeoJSON Format, https://tools.ietf.org/rfc/rfc7946.txt[https://tools.ietf.org/rfc/rfc7946.txt] +* [[[RFC8288,RFC 8288]]] Nottingham, M.: IETF RFC 8288, Web Linking, https://tools.ietf.org/rfc/rfc8288.txt[https://tools.ietf.org/rfc/rfc8288.txt] +* [[[RFC6570,RFC 6570]]] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M., Orchard, D.: IETF RFC 6570, URI Template, https://datatracker.ietf.org/doc/html/rfc6570[https://datatracker.ietf.org/doc/html/rfc6570] * [[[post,HTTP POST]]] Fielding, R., Reschke, J.: IETF RFC 7231, Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content, https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.3[https://datatracker.ietf.org/doc/html/rfc7231#section-4.3.3] * [[[html5,html5]]] W3C: HTML5, W3C Recommendation, https://www.w3.org/TR/html5/[https://www.w3.org/TR/html5/] * [[[schema_org,schema_org]]]Schema.org: https://schema.org/docs/schemas.html[https://schema.org/docs/schemas.html] * [[[OGC21-069r2,OGC 21-069r2]]] Little, C., Blower, J., Riechert, M., Kralidis, T., Davies, E., Olson, S., McGibbney, L.: OGC CoverageJSON Community Standard, https://docs.ogc.org/cs/21-069r2/21-069r2.html[https://docs.ogc.org/cs/21-069r2/21-069r2.html] -* [[[rfc2413,rfc2413]]] Weibel, S., Kunze, J., Lagoze, C., Wolf, M.: IETF RFC 2413, Dublin Core Metadata for Resource Discovery, https://tools.ietf.org/rfc/rfc2413.txt[https://tools.ietf.org/rfc/rfc2413.txt] +* [[[RFC2413,RFC 2413]]] Weibel, S., Kunze, J., Lagoze, C., Wolf, M.: IETF RFC 2413, Dublin Core Metadata for Resource Discovery, https://tools.ietf.org/rfc/rfc2413.txt[https://tools.ietf.org/rfc/rfc2413.txt] * [[[OGC06-103r4,OGC 06-103r4]]] Herring, J.: Simple Feature Access - Part 1: Common Architecture, http://portal.opengeospatial.org/files/?artifact_id=25355[http://portal.opengeospatial.org/files/?artifact_id=25355] * [[[OGC18-010r7,OGC 18-010r7]]] Lott, R.: Well-Known Text representation of Coordinate Reference Systems, http://docs.opengeospatial.org/is/18-010r7/18-010r7.html[http://docs.opengeospatial.org/is/18-010r7/18-010r7.html] * [[[OGC17-069r3,OGC 17-069r3]]] Portele, C., Vretanos, P., Heazel, C.: OGC API - Features - Part 1: Core, http://www.opengis.net/doc/IS/ogcapi-features-1/1.0[http://www.opengis.net/doc/IS/ogcapi-features-1/1.0] diff --git a/core/standard/sections/clause_5_conventions.adoc b/core/standard/sections/clause_5_conventions.adoc old mode 100644 new mode 100755 index a4d92b74f..83eb3e736 --- a/core/standard/sections/clause_5_conventions.adoc +++ b/core/standard/sections/clause_5_conventions.adoc @@ -3,7 +3,7 @@ === Identifiers -The https://www.w3.org/TR/webarch/[Architecture of the World Wide Web] establishes the Uniform Resource Identifier (URI) as the single global identification system for the Web. Therefore, URIs or <> are used in OGC <> standards to identify key entities in those standards. +The https://www.w3.org/TR/webarch/[Architecture of the World Wide Web] establishes the Uniform Resource Identifier (URI) as the single global identification system for the Web. Therefore, URIs or <> are used in OGC <> standards to identify key entities in those standards. The normative provisions in this standard are denoted by the URI: @@ -11,7 +11,7 @@ http://www.opengis.net/spec/ogcapi-edr-1/1.1 All <> and <> that appear in this document are denoted by partial URIs which are relative to this base. -A key requirement of <> standards is the unambiguous identification of the resources they address. In an implementation of such a standard, URIs would be used to identify those resources. A standard, however, is not an implementation. A standard can identify potential resources, but not the resources themselves. Therefore, OGC Web API standards use <> to identify resource categories. These resource categories are instantiated in the implementation of the standard. +A key requirement of <> standards is the unambiguous identification of the resources they address. In an implementation of such a standard, URIs would be used to identify those resources. A standard, however, is not an implementation. A standard can identify potential resources, but not the resources themselves. Therefore, OGC Web API standards use <> to identify resource categories. These resource categories are instantiated in the implementation of the standard. The scope of each URI Template is specified in the standard. In some cases, API implementations are required to implement the template as a path in their API. In most cases they are optional. @@ -19,7 +19,7 @@ Implementation of the URI Templates is recommended in that they provide a common === Link relations -To express relationships between resources, <> and <> are used wherever possible and denoted below with [IANA]. Additional link relation types are registered with the http://www.opengis.net/def/rel[OGC Link Relation Type Register]. These are denoted below with [OGC]. +To express relationships between resources, <> and <> are used wherever possible and denoted below with [IANA]. Additional link relation types are registered with the http://www.opengis.net/def/rel[OGC Link Relation Type Register]. These are denoted below with [OGC]. The following link-relations are in common use by OGC <> Standards. @@ -87,7 +87,7 @@ JSON Schema is used throughout this standard to define the structure of resource === Use of HTTPS -For simplicity, this Standard generally refers to the HTTP protocol. This is not meant to exclude the use of HTTPS and is simply a shorthand notation for "HTTP or HTTPS". In fact, most servers are expected to use <>, not <>. +For simplicity, this Standard generally refers to the HTTP protocol. This is not meant to exclude the use of HTTPS and is simply a shorthand notation for "HTTP or HTTPS". In fact, most servers are expected to use <>, not <>. [[requirements-class-openapi_3_0-clause]] === API definition diff --git a/core/standard/sections/clause_7_core.adoc b/core/standard/sections/clause_7_core.adoc old mode 100644 new mode 100755 index 553ef77a1..ab9cf76ce --- a/core/standard/sections/clause_7_core.adoc +++ b/core/standard/sections/clause_7_core.adoc @@ -13,12 +13,11 @@ The OGC API — Environmental Data Retrieval Core Requirements Class defines See <> for a detailed specification of the `Core` Requirements Class. -The following five sections explain aspects of the `Core`, `Collections` and `Queries` Requirements Classes: +The following four sections explain aspects of the `Core`, `Collections` and `Queries` Requirements Classes: . <>: a set of common capabilities . <>: operations for accessing <> of spatio-temporal data. . <>: operations for accessing spatio-temporal data resources through queries -. <>: parameters for use in OGC API-EDR operations. . <>: general principles for use with this standard. <> Identifies the OGC API — Common Requirements Classes which are applicable to each section of this Standard. Instructions on when and how to apply these Requirements Classes are provided in each section. diff --git a/core/standard/sections/clause_8_queries.adoc b/core/standard/sections/clause_8_queries.adoc old mode 100644 new mode 100755 index 5cf879577..98857c527 --- a/core/standard/sections/clause_8_queries.adoc +++ b/core/standard/sections/clause_8_queries.adoc @@ -48,7 +48,13 @@ The OGC API — Common standard does not define any information resource typ [[query-resources-section]] === Query Resources -**The following tables define the query parameters for each of the EDR query types, the query types support a mix of optional and required query parameters. Where necessary an EDR implementation can use its OpenAPI document response (i.e. `/api`) to override the default for query parameters from optional to required or only advertise the query parameters that are supported by the API (ALL EDR implementations MUST implement query parameters that are required by the EDR standard). The OpenAPI document for an EDR service SHALL be the definitive reference of whether a query parameter is required in any request to the EDR server.** +_The following tables are the informative definition for the EDR query types, the query types support a mix of optional and required query parameters._ +_Where necessary an EDR implementation can use its OpenAPI document response (i.e. `/api`) to provide a normative definition of the functionality of the service allowing a service to advertise which parameters that are although optional as part of the EDR standard are required for the service or vice versa (i.e. the parameter is optional in the EDR standard but not supported by the service)_ + +`The OpenAPI document for an EDR service *SHALL* be the definitive (NORMATIVE) reference of whether a query parameter is required in any request to the EDR server.` + +`ALL EDR implementations *MUST* implement query parameters that are required by the EDR standard.` + [#query-resource-table,reftext='{table-caption} {counter:table-num}'] diff --git a/core/standard/sections/clause_9_general.adoc b/core/standard/sections/clause_9_general.adoc old mode 100644 new mode 100755 index 1fa9a99d2..a128ce21d --- a/core/standard/sections/clause_9_general.adoc +++ b/core/standard/sections/clause_9_general.adoc @@ -41,7 +41,7 @@ include::../recommendations/core/PER_additional-status-codes.adoc[] [[web-caching]] === Web Caching -Entity tags are a mechanism for web cache validation and for supporting conditional requests to reduce network traffic. Entity tags are specified by <>. +Entity tags are a mechanism for web cache validation and for supporting conditional requests to reduce network traffic. Entity tags are specified by <>. include::../recommendations/core/REC_etag.adoc[] @@ -131,17 +131,17 @@ So (using the default/maximum values of 10/10000 from the OpenAPI fragment in re * Following the next link from the previous response will return up to 10000 additional features and if there are more, a `next` link. -include::../recomendations/core/REC_rc-next-1.adoc[] +include::../recommendations/core/REC_rc-next-1.adoc[] -include::../recomendations/core/REC_rc-next-2.adoc[] +include::../recommendations/core/REC_rc-next-2.adoc[] -include::../recomendations/core/REC_rc-next-3.adoc[] +include::../recommendations/core//REC_rc-next-3.adoc[] This document does not mandate any specific implementation approach for the `next` links. An implementation could use opaque links that are managed by the server. It is up to the server to determine how long these links can be de-referenced. Clients have to be prepared to receive a 404 response. -Another implementation approach is to use an implementation-specific parameter that specifies the index within the result set from which the server begins presenting results in the response, like the `startIndex` parameter that was used in <> (and which could be added again in additional parts of the OGC API Features series). +Another implementation approach is to use an implementation-specific parameter that specifies the index within the result set from which the server begins presenting results in the response. The API will return no `next` link, if it has returned all selected features, and the server knows that. However, the server can not be aware that it has already returned all selected features. For example, if the request states `limit=10` and the query to the backend datastore returns 10 features, the server may not know, if there are more features or not (in most cases there will be more features), unless the total number of matches is also computed, which can be too costly. The server will then add the next link, and if there are no more features, dereferencing the next link will return an empty feature collection and no next link. This behavior is consistent with the statements above. @@ -149,17 +149,15 @@ Clients cannot assume that paging is safe against changes to dataset while a cli Additional requirements classes for safe paging or an index parameter can be added in extensions to this specification. -include::../recomendations/core/PER_rc-prev.adoc[] +include::../recommendations/core/PER_rc-prev.adoc[] Providing `prev` links supports navigating back and forth between pages, but depending on the implementation approach it can be too complex to implement. -include::../requirements/core/REQ_rc-rel-type.adoc[] - include::../requirements/core/REQ_rc-numberMatched.adoc[] include::../requirements/core/REQ_rc-numberReturned.adoc[] -include::../recomendations/core/REC_rc-extent.adoc[] +include::../recommendations/core/REC_rc-extent.adoc[] NOTE: The representation of the links and the other properties in the payload depends on the encoding of the feature collection From b0e6c01e6faa8aa365d13583f4cbbebc2d4751dc Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Tue, 15 Oct 2024 09:15:37 +0100 Subject: [PATCH 18/19] Add missing custom dimension information --- .../openapi/schemas/collections/extent.yaml | 60 +++++++++++++++++-- .../sections/annex_collection_response.adoc | 57 ++++++++++++++++-- 2 files changed, 106 insertions(+), 11 deletions(-) diff --git a/core/standard/openapi/schemas/collections/extent.yaml b/core/standard/openapi/schemas/collections/extent.yaml index b2d944faf..470729ab4 100644 --- a/core/standard/openapi/schemas/collections/extent.yaml +++ b/core/standard/openapi/schemas/collections/extent.yaml @@ -179,11 +179,7 @@ properties: properties: interval: description: >- - In the Core only a single time interval is supported. Extensions may support - - multiple intervals. If multiple intervals are provided, the union of the - - intervals describes the vertical extent. + If multiple intervals are provided, the union of the intervals describes the vertical extent. type: array minItems: 1 items: @@ -228,3 +224,57 @@ properties: name: description: Name of the vertical coordinate reference system type: string + custom: + description: The custom extents available in the collection. + type: array + items: + description: custom dimension defintion + type: object + required: + - id + - interval + - reference + properties: + id: + description: >- + The name of the custom dimension. + type: string + example: + - ["members"] + interval: + description: >- + If multiple intervals are provided, the union of the intervals describes the custom extent. + type: array + minItems: 1 + items: + description: >- + minimum and maximum vakues of the custom interval. + type: array + minItems: 1 + items: + type: string + nullable: true + example: + - ["0","50"] + values: + description: |- + values that data in the collection is available at + these can be defined as follows: + min level / max level (e.g. "2/100") or + as number of repetitions / start level / interval (e.g."R5/100/50") + or a list of custom dimension values (e.g. "25",50,"75"} + The value `null` is supported and indicates an open custom interval. + type: array + minItems: 1 + items: + type: string + nullable: true + example: + - ["25/75"] + - ["R20/0/5"] + - ["25","50","75"] + reference: + description: |- + URI to a definition or description of the custom dimension + type: string + example: https://en.wikipedia.org/wiki/Percentile diff --git a/core/standard/sections/annex_collection_response.adoc b/core/standard/sections/annex_collection_response.adoc index f555559d3..941f2b3d2 100755 --- a/core/standard/sections/annex_collection_response.adoc +++ b/core/standard/sections/annex_collection_response.adoc @@ -130,6 +130,7 @@ The extent object describes the spatio-temporal area covered by the information |**spatial** |<> object|**Yes**| Object defining the spatial extent of the information in the collection |temporal |<> object|No| Object defining the temporal extent of the information in the collection |vertical |<> object|No| Object defining the vertical extent of the information in the collection +|custom |<> Array|No| Array of custom dimension definitions |========================== [[col-spatial]] @@ -140,7 +141,7 @@ The spatial object describes the spatial area covered by the information availab .Spatial Object |========================== |Field Name|Type|Required|Description -|**bbox** |Number Array|**Yes** a| A bounding box is provided as four numbers: +|**bbox** |Array of Number Array|**Yes** a| An Array of bounding box's each bbox is provided as four numbers: * Lower left corner, coordinate axis 1 * Lower left corner, coordinate axis 2 @@ -159,7 +160,7 @@ The temporal object describes the time period covered by the information availab |========================== |Field Name|Type|Required|Description |**interval** | Array of ISO 8601 Date Array|**Yes**| An array of ISO 8601 Date Array, each ISO 8601 Date Array should contain two values first being the minimum date time and second the maximum date time for information in the collection (see https://en.wikipedia.org/wiki/ISO_8601) -|**values** | ISO 8601 Date Array|**Yes**| An array of ISO 8601 datestrings which details the time intervals available in the collection, each member of the array can either be a single time, an ISO 8601 time interval or an ISO 8601 time duration (see https://en.wikipedia.org/wiki/ISO_8601) +|**values** | ISO 8601 Date Array|**No**| An array of ISO 8601 datestrings which details the time intervals available in the collection, each member of the array can either be a single time, an ISO 8601 time interval or an ISO 8601 time duration (see https://en.wikipedia.org/wiki/ISO_8601) |**trs** |String|**Yes**| This defaults to Gregorian, but other temporal systems can be supported following the conventions defined by the http://docs.opengeospatial.org/is/18-010r7/18-010r7.html[Well Known Text] standard. |========================== @@ -173,11 +174,36 @@ The vertical object describes the vertical extent of information available in th |========================== |Field Name|Type|Required|Description |**interval** | String Array|**Yes**| Array of level values array, each Level value Array should contain two values first being the minimum vertical level and second the maximum vertical level for information in the collection -|**values** | String Array|**Yes**| Array of height values supported by the collection. +|**values** | String Array|**No**| Array of height values supported by the collection. |**vrs** |String|**Yes**| Follows the conventions defined by the http://docs.opengeospatial.org/is/18-010r7/18-010r7.html[Well Known Text] standard. |========================== -A simple extent object example for collection with no vertical or temporal dimensions is shown below. + +[[col-custom]] +=== Custom Object +Each custom object describes the extent of the custom dimension for the collection. + +[width="100%",cols="22%,22%,14%,42%",frame="topbot",options="header"] +.Custom Object +|========================== +|Field Name|Type|Required|Description +|**id** |String|**Yes**| Name of the custom dimension. +|**interval** | String Array|**Yes**| Array of data values arrays, each value in the values array should contain two values; the first being the minimum value of the custom dimension and second the maximum value for the custom dimension for information in the collection +|**values** | String Array|**No**| Array of data values for the custom dimension supported by the collection . +|**reference** |String|**Yes**| A uri which links to a definition or description of the custom dimension. +|========================== + + + +*Repeating intervals* + +In the Vertical and Custom dimension objects values can be defined as repeating intervals. They are formed by adding *"R[n]/"* to the beginning of an interval expression, where *R* is used as the letter itself and *[n]* is replaced by the number of repetitions. Leaving out the value for *[n]* or specifying a value of *-1*, means an unbounded number of repetitions. A value of *0* for *[n]* means the interval is not repeated. + +``Rn//`` + +For example ``"R4/100/5"`` would be values start at *100* and increment by *5*, *4 times* which equates to ``[100,105,110,115,120]``. + +*A simple extent object example for collection with no vertical or temporal dimensions is shown below.* [source,json] ---- @@ -201,7 +227,7 @@ A simple extent object example for collection with no vertical or temporal dimen } ---- -Below is a more complex extent object example for a collection with vertical and temporal dimensions. +*Below is a more complex extent object example for a collection with vertical, temporal dimensions and a percentile custom dimension.* [source,json] ---- @@ -230,11 +256,30 @@ Below is a more complex extent object example for a collection with vertical and AUTHORITY['EPSG','5100']], UNIT['metre',1,AUTHORITY['EPSG','9001']], AXIS['Up',UP],AUTHORITY['EPSG','5714']]" - } + }, + "custom": [ + { + "id": "percentile", + "interval": [ + [ + 0, + 100 + ] + ], + "values": [ + "R20/0/5" + ], + "reference": "https://en.wikipedia.org/wiki/Percentile" + } + ] } ---- + + + + [[col-data_queries]] === Data Queries Object The data queries object provides the extra metadata required for the queries supported by the collection. From 498adc9d3f4b210e6d38c7cd8ecfb12322879f5f Mon Sep 17 00:00:00 2001 From: m-burgoyne Date: Thu, 17 Oct 2024 07:28:50 +0100 Subject: [PATCH 19/19] Fix reference to URI RFC --- core/standard/sections/clause_3_references.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/standard/sections/clause_3_references.adoc b/core/standard/sections/clause_3_references.adoc index c8e80b1a7..88d1fee39 100755 --- a/core/standard/sections/clause_3_references.adoc +++ b/core/standard/sections/clause_3_references.adoc @@ -7,7 +7,7 @@ The following normative documents contain provisions that, through reference in * [[[RFC2616,RFC 2616]]] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., Leach, P., Berners-Lee, T.: IETF RFC 2616, HTTP/1.1, https://tools.ietf.org/rfc/rfc2616.txt[https://tools.ietf.org/rfc/rfc2616.txt] * [[[RFC2818,RFC 2818]]] Rescorla, E.: IETF RFC 2818, HTTP Over TLS, https://tools.ietf.org/rfc/rfc2818.txt[https://tools.ietf.org/rfc/rfc2818.txt] * [[[RFC3339,RFC 3339]]] Klyne, G., Newman, C.: IETF RFC 3339, Date and Time on the Internet: Timestamps, https://tools.ietf.org/rfc/rfc3339.txt[https://tools.ietf.org/rfc/rfc3339.txt] -* [[[RFC3896,RFC 3896]]] Berners-Lee, T., Fielding, R., Masinter, L: IETF RFC 3896, Uniform Resource Identifier (URI): Generic Syntax, https://tools.ietf.org/rfc/rfc3896.txt[https://tools.ietf.org/rfc/rfc3896.txt] +* [[[RFC3986,RFC 3986]]] Berners-Lee, T., Fielding, R., Masinter, L: IETF RFC 3986, Uniform Resource Identifier (URI): Generic Syntax, https://tools.ietf.org/rfc/rfc3986.txt[https://tools.ietf.org/rfc/rfc3986.txt] * [[[RFC7946,RFC 7946]]] Butler, H., Daly, M., Doyle, A., Gillies, S., Hagen, S., Schaub, T.: IETF RFC 7946, The GeoJSON Format, https://tools.ietf.org/rfc/rfc7946.txt[https://tools.ietf.org/rfc/rfc7946.txt] * [[[RFC8288,RFC 8288]]] Nottingham, M.: IETF RFC 8288, Web Linking, https://tools.ietf.org/rfc/rfc8288.txt[https://tools.ietf.org/rfc/rfc8288.txt] * [[[RFC6570,RFC 6570]]] Gregorio, J., Fielding, R., Hadley, M., Nottingham, M., Orchard, D.: IETF RFC 6570, URI Template, https://datatracker.ietf.org/doc/html/rfc6570[https://datatracker.ietf.org/doc/html/rfc6570]