diff --git a/.github/workflows/build-openapi-bundle.yml b/.github/workflows/build-openapi-bundle.yml index 8dbb33e5e..67483d1e9 100644 --- a/.github/workflows/build-openapi-bundle.yml +++ b/.github/workflows/build-openapi-bundle.yml @@ -15,20 +15,25 @@ jobs: - name: Setup npm uses: actions/setup-node@v4 - name: Install dependencies - run: npm install -g @apidevtools/swagger-cli + run: npm install @redocly/cli -g - name: Checkout uses: actions/checkout@master with: fetch-depth: 0 - - name: Generate OpenAPI bundle + - name: Generate OpenAPI 3.0 bundle run: | cd core/standard/openapi - swagger-cli bundle -o /tmp/ogcapi-environmental-data-retrieval-1.bundled.json ogcapi-environmental-data-retrieval-1.yaml + redocly bundle -o /tmp/ogcapi-environmental-data-retrieval-1-oas30.bundled.json ogcapi-environmental-data-retrieval-1-oas30.yaml + - name: Generate OpenAPI 3.1 bundle + run: | + cd core/standard/openapi + redocly bundle -o /tmp/ogcapi-environmental-data-retrieval-1.bundled-oas31.json ogcapi-environmental-data-retrieval-1-oas31.yaml - name: Commit changes and push run: | git config --global user.email "tomkralidis@gmail.com" git config --global user.name "Tom Kralidis" - mv -f /tmp/ogcapi-environmental-data-retrieval-1.bundled.json . + mv -f /tmp/ogcapi-environmental-data-retrieval-1-oas30.bundled.json . + mv -f /tmp/ogcapi-environmental-data-retrieval-1-oas31.bundled.json . if [[ `git status --porcelain` ]]; then git add . git commit -am "Updating OpenAPI build" diff --git a/.github/workflows/test-build-openapi-bundle.yml b/.github/workflows/test-build-openapi-bundle.yml index 6584967b4..dbbaf3c60 100644 --- a/.github/workflows/test-build-openapi-bundle.yml +++ b/.github/workflows/test-build-openapi-bundle.yml @@ -15,7 +15,7 @@ jobs: - name: Setup npm uses: actions/setup-node@v4 - name: Install dependencies - run: npm install -g @apidevtools/swagger-cli + run: npm install @redocly/cli -g - name: Checkout uses: actions/checkout@master with: @@ -23,8 +23,12 @@ jobs: ref: ${{ github.event.pull_request.head.ref }} #with: # fetch-depth: 0 - - name: Generate OpenAPI bundle + - name: Generate OpenAPI 3.0 bundle run: | cd core/standard/openapi - swagger-cli bundle -o ogcapi-environmental-data-retrieval-1.bundled.json ogcapi-environmental-data-retrieval-1.yaml + redocly bundle -o ogcapi-environmental-data-retrieval-1-oas30.bundled.json ogcapi-environmental-data-retrieval-1-oas30.yaml + - name: Generate OpenAPI 3.1 bundle + run: | + cd core/standard/openapi + redocly bundle -o ogcapi-environmental-data-retrieval-1-oas31.bundled.json ogcapi-environmental-data-retrieval-1-oas31.yaml diff --git a/LICENSE b/LICENSE index 698ee6657..9fd40e708 100644 --- a/LICENSE +++ b/LICENSE @@ -8,4 +8,4 @@ THE INTELLECTUAL PROPERTY IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXP This license is effective until terminated. You may terminate it at any time by destroying the Intellectual Property together with all copies in any form. The license will also terminate if you fail to comply with any term or condition of this Agreement. Except as provided in the following sentence, no such termination of this license shall require the termination of any third party end-user sublicense to the Intellectual Property which is in force as of the date of notice of such termination. In addition, should the Intellectual Property, or the operation of the Intellectual Property, infringe, or in LICENSOR’s sole opinion be likely to infringe, any patent, copyright, trademark or other right of a third party, you agree that LICENSOR, in its sole discretion, may terminate this license without any compensation or liability to you, your licensees or any other party. You agree upon termination of any kind to destroy or cause to be destroyed the Intellectual Property together with all copies in any form, whether held by you or by any third party. -Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision shall be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it. +Except as contained in this notice, the name of LICENSOR or of any other holder of a copyright in all or part of the Intellectual Property shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Intellectual Property without prior written authorization of LICENSOR or such copyright holder. LICENSOR is and shall at all times be the sole entity that may authorize you or any third party to use certification marks, trademarks or other special designations to indicate compliance with any LICENSOR standards or specifications. This Agreement is governed by the laws of the Commonwealth of Massachusetts. The application to this Agreement of the United Nations Convention on Contracts for the International Sale of Goods is hereby expressly excluded. In the event any provision of this Agreement shall be deemed unenforceable, void or invalid, such provision SHALL be modified so as to make it valid and enforceable, and as so modified the entire Agreement shall remain in full force and effect. No decision, action or inaction by LICENSOR shall be construed to be a waiver of any rights or remedies available to it. diff --git a/core/standard/abstract_tests/ATS_class_oas30.adoc b/core/standard/abstract_tests/ATS_class_oas30.adoc index e2d62e4e1..aca41d7a8 100644 --- a/core/standard/abstract_tests/ATS_class_oas30.adoc +++ b/core/standard/abstract_tests/ATS_class_oas30.adoc @@ -1,4 +1,4 @@ -[[ats_oas3]] +[[ats_oas30]] [conformance_class] .OpenAPI 3.0 ==== diff --git a/core/standard/abstract_tests/ATS_class_oas31.adoc b/core/standard/abstract_tests/ATS_class_oas31.adoc new file mode 100644 index 000000000..cc3a3ba15 --- /dev/null +++ b/core/standard/abstract_tests/ATS_class_oas31.adoc @@ -0,0 +1,28 @@ +[[ats_oas31]] +[conformance_class] +.OpenAPI 3.1 +==== +[%metadata] +identifier:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/conf/oas31 +subject:: <> +classification:: Target Type:Web API +inherit:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/conf/core +conformance-test:: /conf/oas31/completeness +conformance-test:: /conf/oas31/exceptions-codes +conformance-test:: /conf/oas31/oas-definition-1 +conformance-test:: /conf/oas31/oas-definition-2 +conformance-test:: /conf/oas31/oas-impl +conformance-test:: /conf/oas31/security +==== + +include::oas31/ATS_completeness.adoc[] + +include::oas31/ATS_exception-codes.adoc[] + +include::oas31/ATS_definition-1.adoc[] + +include::oas31/ATS_definition-2.adoc[] + +include::oas31/ATS_oas-impl.adoc[] + +include::oas31/ATS_security.adoc[] diff --git a/core/standard/abstract_tests/README.md b/core/standard/abstract_tests/README.md index 04a935a74..36fb754b8 100644 --- a/core/standard/abstract_tests/README.md +++ b/core/standard/abstract_tests/README.md @@ -24,4 +24,4 @@ The test is expressed according to this pattern: * <> ```` -NOTE: for each test, there shall be one or more requirements in the "requirements" folder. +NOTE: for each test, there SHALL be one or more requirements in the "requirements" folder. diff --git a/core/standard/abstract_tests/collections/ATS_rc-coords-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-coords-definition.adoc index f759822dc..f6c5e1103 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-coords-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-coords-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the coords query parameters are constructed correct test-method:: + -- -Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-coords-response.adoc b/core/standard/abstract_tests/collections/ATS_rc-coords-response.adoc index 0466c34ff..0566ae39c 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-coords-response.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-coords-response.adoc @@ -11,6 +11,6 @@ test-method:: -- . Verify that only resources that have a spatial geometry that intersects the coordinates are returned as part of the result set. . Verify `coords` values are valid for the specified coordinate reference system -. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries shall be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. +. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries SHALL be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. -- ==== diff --git a/core/standard/abstract_tests/collections/ATS_rc-corridor-height-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-corridor-height-definition.adoc index d9959062d..b6e5e006d 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-corridor-height-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-corridor-height-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `corridor-height` query parameter is constructe test-method:: + -- -Verify that the `corridor-height` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `corridor-height` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-corridor-width-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-corridor-width-definition.adoc index e77deff3e..5f9c16350 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-corridor-width-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-corridor-width-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `corridor-width` query parameter is constructed test-method:: + -- -Verify that the `corridor-width` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `corridor-width` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-crs-definition.adoc index 12a5248cf..1bebe8ebd 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 57072d4bc..50bd31d0c 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-f-definition.adoc index 56103996d..cb888e87f 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-height-units-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-height-units-definition.adoc index d59fd0034..d1935cbb3 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-height-units-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-height-units-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `height-units` query parameter is constructed c test-method:: + -- -Verify that the `within-units` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `within-units` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc index e9c1e5933..b3fe06176 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-limit-definition.adoc @@ -8,7 +8,7 @@ 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): +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-max-z-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-max-z-definition.adoc index 303eb33d8..36c42e775 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-max-z-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-max-z-definition.adoc @@ -5,7 +5,7 @@ ^|*Abstract Test {ats-id}* |*/conf/edr/rc-max-z-definition* ^|Test Purpose |Validate that the minimum vertical level query parameters are constructed correctly. ^|Requirement |<> -^|Test Method |Verify that the `max-z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +^|Test Method |Verify that the `max-z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-md-collection-info-table.adoc b/core/standard/abstract_tests/collections/ATS_rc-md-collection-info-table.adoc index b00398681..5a77cd8e2 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-md-collection-info-table.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-md-collection-info-table.adoc @@ -3,6 +3,6 @@ [width="90%",cols="3",options="header"] |=== |Format |Schema Document |Test ID -|HTML |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/collections/collection.yaml[collection.yaml]|<> -|JSON |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/collections/collection.yaml[collection.yaml] |<> +|HTML |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/collections/collection.yaml[collection.yaml]|<> +|JSON |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/collections/collection.yaml[collection.yaml] |<> |=== diff --git a/core/standard/abstract_tests/collections/ATS_rc-md-success-table.adoc b/core/standard/abstract_tests/collections/ATS_rc-md-success-table.adoc index a7dfebc6a..8e76d8b4b 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-md-success-table.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-md-success-table.adoc @@ -3,6 +3,6 @@ [width="90%",cols="3",options="header"] |=== |Format |Schema Document |Test ID -|HTML |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/collections/collections.yaml[collections.yaml]|<> -|JSON |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/collections/collections.yaml[collections.yaml] |<> +|HTML |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/collections/collections.yaml[collections.yaml]|<> +|JSON |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/collections/collections.yaml[collections.yaml] |<> |=== diff --git a/core/standard/abstract_tests/collections/ATS_rc-min-z-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-min-z-definition.adoc index 40d46effb..89ef87115 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-min-z-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-min-z-definition.adoc @@ -5,7 +5,7 @@ ^|*Abstract Test {ats-id}* |*/conf/edr/rc-min-z-definition* ^|Test Purpose |Validate that the minimum vertical level query parameters are constructed correctly. ^|Requirement |<> -^|Test Method |Verify that the `min-z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +^|Test Method |Verify that the `min-z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-parameter-name-definition.adoc index 0f8d8e0be..bf8f7f12c 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-width-units-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-width-units-definition.adoc index 8aac9b1de..33322e522 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-width-units-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-width-units-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `width-units` query parameter is constructed co test-method:: + -- -Verify that the `width-units` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `width-units` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/ATS_rc-z-definition.adoc b/core/standard/abstract_tests/collections/ATS_rc-z-definition.adoc index e45f281ca..71e8522c4 100644 --- a/core/standard/abstract_tests/collections/ATS_rc-z-definition.adoc +++ b/core/standard/abstract_tests/collections/ATS_rc-z-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the vertical level query parameters are constructed test-method:: + -- -Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-coords-definition.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-coords-definition.adoc index 035a691c0..a7dd2d13c 100644 --- a/core/standard/abstract_tests/collections/area/ATS_rc-coords-definition.adoc +++ b/core/standard/abstract_tests/collections/area/ATS_rc-coords-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the coords query parameters are constructed correct test-method:: + -- -Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-coords-response.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-coords-response.adoc index 33dabdb1c..5b2872b9b 100644 --- a/core/standard/abstract_tests/collections/area/ATS_rc-coords-response.adoc +++ b/core/standard/abstract_tests/collections/area/ATS_rc-coords-response.adoc @@ -11,6 +11,6 @@ test-method:: -- . Verify that only resources that have a spatial geometry that intersects the coordinates are returned as part of the result set. . Verify `coords` values are valid for the specified coordinate reference system -. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries shall be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. +. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries SHALL be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. -- ==== diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-crs-definition.adoc index e2e68d323..2f548b1f6 100644 --- a/core/standard/abstract_tests/collections/area/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/area/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 3afc240eb..ed4ed3f05 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-f-definition.adoc index 5435beb4a..3b7cc4dc7 100644 --- a/core/standard/abstract_tests/collections/area/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/area/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 5203502be..28311bffe 100644 --- a/core/standard/abstract_tests/collections/area/ATS_rc-limit-definition.adoc +++ b/core/standard/abstract_tests/collections/area/ATS_rc-limit-definition.adoc @@ -8,7 +8,7 @@ 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): +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-parameter-name-definition.adoc index 6f3eca292..2ef2c8a9f 100644 --- a/core/standard/abstract_tests/collections/area/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/area/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/area/ATS_rc-z-definition.adoc b/core/standard/abstract_tests/collections/area/ATS_rc-z-definition.adoc index 123fa9574..082859ba2 100644 --- a/core/standard/abstract_tests/collections/area/ATS_rc-z-definition.adoc +++ b/core/standard/abstract_tests/collections/area/ATS_rc-z-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the vertical level query parameters are constructed test-method:: + -- -Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-definition.adoc b/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-definition.adoc index 9e628b4dc..e84d6d493 100644 --- a/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-definition.adoc +++ b/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the coords query parameters are constructed correct test-method:: + -- -Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-response.adoc b/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-response.adoc index b2f62d54e..f43482e98 100644 --- a/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-response.adoc +++ b/core/standard/abstract_tests/collections/corridor/ATS_rc-coords-response.adoc @@ -11,6 +11,6 @@ test-method:: -- . Verify that only resources that have a spatial geometry that intersects the coordinates are returned as part of the result set. . Verify `coords` values are valid for the specified coordinate reference system -. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries shall be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. +. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries SHALL be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. -- ==== diff --git a/core/standard/abstract_tests/collections/corridor/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/corridor/ATS_rc-crs-definition.adoc index ccad61529..27016d716 100644 --- a/core/standard/abstract_tests/collections/corridor/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/corridor/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 1356ab0bb..0c0a6cafe 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/corridor/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/corridor/ATS_rc-f-definition.adoc index 3ff4af7f1..1e245538c 100644 --- a/core/standard/abstract_tests/collections/corridor/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/corridor/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/corridor/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/corridor/ATS_rc-parameter-name-definition.adoc index 29d189ddb..ccb87353d 100644 --- a/core/standard/abstract_tests/collections/corridor/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/corridor/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/cube/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/cube/ATS_rc-crs-definition.adoc index 6757bb906..e81bc0932 100644 --- a/core/standard/abstract_tests/collections/cube/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/cube/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 472fafc0b..63072ec58 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/cube/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/cube/ATS_rc-f-definition.adoc index 6b9ca231e..08f2cb160 100644 --- a/core/standard/abstract_tests/collections/cube/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/cube/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/cube/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/cube/ATS_rc-parameter-name-definition.adoc index 8f9e6f0cf..801061c40 100644 --- a/core/standard/abstract_tests/collections/cube/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/cube/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 fae1df794..7b3c2048c 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 @@ -9,7 +9,7 @@ test-purpose:: Validate that the vertical level query parameters are constructed test-method:: + -- -Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-crs-definition.adoc index 6fef02901..10de73a45 100644 --- a/core/standard/abstract_tests/collections/locations/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index a4bd07121..33ce96e7b 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-f-definition.adoc index b5eb63b0f..bc5a3a54b 100644 --- a/core/standard/abstract_tests/collections/locations/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 830d20de0..abc0f820a 100644 --- a/core/standard/abstract_tests/collections/locations/ATS_rc-limit-definition.adoc +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-limit-definition.adoc @@ -8,7 +8,7 @@ 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): +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 88a1804f9..06eea3346 100644 --- a/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-definition.adoc +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-locationid-definition.adoc @@ -8,7 +8,7 @@ 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): +Verify that the `locationId` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/locations/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/locations/ATS_rc-parameter-name-definition.adoc index c89fa7490..e12127354 100644 --- a/core/standard/abstract_tests/collections/locations/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/locations/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-coords-definition.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-coords-definition.adoc index 0c45b1cf7..0a7d098ad 100644 --- a/core/standard/abstract_tests/collections/position/ATS_rc-coords-definition.adoc +++ b/core/standard/abstract_tests/collections/position/ATS_rc-coords-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the coords query parameters are constructed correct test-method:: + -- -Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-coords-response.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-coords-response.adoc index c81223b89..22f51298b 100644 --- a/core/standard/abstract_tests/collections/position/ATS_rc-coords-response.adoc +++ b/core/standard/abstract_tests/collections/position/ATS_rc-coords-response.adoc @@ -11,6 +11,6 @@ test-method:: -- . Verify that only resources that have a spatial geometry that intersects the coordinates are returned as part of the result set. . Verify `coords` values are valid for the specified coordinate reference system -. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries shall be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. +. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries SHALL be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. -- ==== diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-crs-definition.adoc index 9a4482b8e..d2e8c18b9 100644 --- a/core/standard/abstract_tests/collections/position/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/position/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index fb94a5c60..f05dfde42 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-f-definition.adoc index fdce24709..9e0553815 100644 --- a/core/standard/abstract_tests/collections/position/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/position/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index eea629390..a0dc0b3c1 100644 --- a/core/standard/abstract_tests/collections/position/ATS_rc-limit-definition.adoc +++ b/core/standard/abstract_tests/collections/position/ATS_rc-limit-definition.adoc @@ -8,7 +8,7 @@ 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): +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-parameter-name-definition.adoc index edba3e4e5..8e998e85d 100644 --- a/core/standard/abstract_tests/collections/position/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/position/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/position/ATS_rc-z-definition.adoc b/core/standard/abstract_tests/collections/position/ATS_rc-z-definition.adoc index c55cbdf0b..1c07e1cf1 100644 --- a/core/standard/abstract_tests/collections/position/ATS_rc-z-definition.adoc +++ b/core/standard/abstract_tests/collections/position/ATS_rc-z-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the vertical level query parameters are constructed test-method:: + -- -Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-coords-definition.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-coords-definition.adoc index 4dee3240e..2960a9d62 100644 --- a/core/standard/abstract_tests/collections/radius/ATS_rc-coords-definition.adoc +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-coords-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the coords query parameters are constructed correct test-method:: + -- -Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-coords-response.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-coords-response.adoc index 3cfaac987..7702435eb 100644 --- a/core/standard/abstract_tests/collections/radius/ATS_rc-coords-response.adoc +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-coords-response.adoc @@ -11,6 +11,6 @@ test-method:: -- . Verify that only resources that have a spatial geometry that intersects the coordinates are returned as part of the result set. . Verify `coords` values are valid for the specified coordinate reference system -. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries shall be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. +. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries SHALL be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. -- ==== diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-crs-definition.adoc index c106d57f4..2a79e157b 100644 --- a/core/standard/abstract_tests/collections/radius/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 8105171e6..b96d0043f 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-f-definition.adoc index cceed8e6d..eb115f85e 100644 --- a/core/standard/abstract_tests/collections/radius/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index a13121cd7..607596755 100644 --- a/core/standard/abstract_tests/collections/radius/ATS_rc-limit-definition.adoc +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-limit-definition.adoc @@ -8,7 +8,7 @@ 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): +Verify that the `limit` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-parameter-name-definition.adoc index d7a583559..082c5e4eb 100644 --- a/core/standard/abstract_tests/collections/radius/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/radius/ATS_rc-z-definition.adoc b/core/standard/abstract_tests/collections/radius/ATS_rc-z-definition.adoc index 93dd49911..55b857e0c 100644 --- a/core/standard/abstract_tests/collections/radius/ATS_rc-z-definition.adoc +++ b/core/standard/abstract_tests/collections/radius/ATS_rc-z-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the vertical level query parameters are constructed test-method:: + -- -Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-definition.adoc b/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-definition.adoc index 1ee95061c..77e712d53 100644 --- a/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-definition.adoc +++ b/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the coords query parameters are constructed correct test-method:: + -- -Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `coords` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-response.adoc b/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-response.adoc index 11676109f..cf3b74296 100644 --- a/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-response.adoc +++ b/core/standard/abstract_tests/collections/trajectory/ATS_rc-coords-response.adoc @@ -11,6 +11,6 @@ test-method:: -- . Verify that only resources that have a spatial geometry that intersects the coordinates are returned as part of the result set. . Verify `coords` values are valid for the specified coordinate reference system -. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries shall be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. +. Verify that the coordinate reference system of the geometries is valid for the parameter defined by `crs`. If the `crs` parameter is not defined the geometries SHALL be valid for the coordinate reference system defined by the spatial element of the extent section in the collection response. -- ==== diff --git a/core/standard/abstract_tests/collections/trajectory/ATS_rc-crs-definition.adoc b/core/standard/abstract_tests/collections/trajectory/ATS_rc-crs-definition.adoc index de4d47d5a..d2a99e92f 100644 --- a/core/standard/abstract_tests/collections/trajectory/ATS_rc-crs-definition.adoc +++ b/core/standard/abstract_tests/collections/trajectory/ATS_rc-crs-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the crs query parameters are constructed correctly. test-method:: + -- -Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `crs` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index bc136a8bf..530014500 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that any custom query parameters are constructed correct test-method:: + -- -Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that any <> query parameters comply with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/trajectory/ATS_rc-f-definition.adoc b/core/standard/abstract_tests/collections/trajectory/ATS_rc-f-definition.adoc index 1b7112a15..5c30a8439 100644 --- a/core/standard/abstract_tests/collections/trajectory/ATS_rc-f-definition.adoc +++ b/core/standard/abstract_tests/collections/trajectory/ATS_rc-f-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the `f` query parameter is constructed correctly. test-method:: + -- -Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `f` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/collections/trajectory/ATS_rc-parameter-name-definition.adoc b/core/standard/abstract_tests/collections/trajectory/ATS_rc-parameter-name-definition.adoc index 6490a460a..9a62d949e 100644 --- a/core/standard/abstract_tests/collections/trajectory/ATS_rc-parameter-name-definition.adoc +++ b/core/standard/abstract_tests/collections/trajectory/ATS_rc-parameter-name-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the parameter-name query parameters are constructed test-method:: + -- -Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `parameter-name` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/ATS_conformance-success.adoc b/core/standard/abstract_tests/core/ATS_conformance-success.adoc index 937271ab8..fb5c10e8e 100644 --- a/core/standard/abstract_tests/core/ATS_conformance-success.adoc +++ b/core/standard/abstract_tests/core/ATS_conformance-success.adoc @@ -6,7 +6,7 @@ identifier:: /conf/core/conformance-success target:: /req/core/conformance-success test-purpose:: Validate that the Conformance Declaration response complies with the required structure and contents. test-method:: -step::: Validate the response document against OpenAPI 3.0 schema link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/core/confClasses.yaml[confClasses.yaml] +step::: Validate the response document against OpenAPI schema link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/core/confClasses.yaml[confClasses.yaml] step::: Validate that the document includes the conformance class "https://www.opengis.net/spec/ogcapi-edr-1/1.2/conf/core" step::: Validate that the document lists all OGC API conformance classes that the API implements. ==== diff --git a/core/standard/abstract_tests/core/ATS_http.adoc b/core/standard/abstract_tests/core/ATS_http.adoc index 16b795538..76a15dd11 100755 --- a/core/standard/abstract_tests/core/ATS_http.adoc +++ b/core/standard/abstract_tests/core/ATS_http.adoc @@ -6,6 +6,6 @@ identifier:: /conf/core/http 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::: 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. ==== \ No newline at end of file diff --git a/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc b/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc index dcb2c4dd8..8fafee0be 100755 --- a/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc +++ b/core/standard/abstract_tests/core/ATS_rc-bbox-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the bounding box query parameters are constructed c test-method:: + -- -Verify that the `bbox` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). +Verify that the `bbox` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment). [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/ATS_rc-time-definition.adoc index ab3783d7e..abc41d9a4 100644 --- a/core/standard/abstract_tests/core/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/ATS_root-success.adoc b/core/standard/abstract_tests/core/ATS_root-success.adoc index 73ce9cf29..70be0f93a 100644 --- a/core/standard/abstract_tests/core/ATS_root-success.adoc +++ b/core/standard/abstract_tests/core/ATS_root-success.adoc @@ -29,6 +29,6 @@ The landing page may be retrieved in a number of different formats. The followin [width="90%",cols="3",options="header"] |=== |Format |Schema Document |Test ID -|HTML |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/core/landingPage.yaml[landingPage.yaml]|<> -|JSON |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/core/landingPage.yaml[landingPage.yaml] |<> +|HTML |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/core/landingPage.yaml[landingPage.yaml]|<> +|JSON |link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/core/landingPage.yaml[landingPage.yaml] |<> |=== diff --git a/core/standard/abstract_tests/core/area/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/area/ATS_rc-time-definition.adoc index 843df88ae..06633f1ef 100644 --- a/core/standard/abstract_tests/core/area/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/area/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 3a77246c7..1327c6320 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that the `resolution-x` query parameters are constructed test-method:: + -- -Verify that the `resolution-x` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). +Verify that the `resolution-x` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment). [source,YAML] ---- 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 index 8b77e52b0..e9c6016a6 100644 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that the `resolution-y` query parameters are constructed test-method:: + -- -Verify that the `resolution-y` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). +Verify that the `resolution-y` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment). [source,YAML] ---- 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 index 82a0b9753..9c623ce6f 100644 --- a/core/standard/abstract_tests/core/corridor/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/corridor/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index e7a71ae57..55123b59b 100755 --- a/core/standard/abstract_tests/core/cube/ATS_rc-bbox-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-bbox-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the bounding box query parameters are constructed c test-method:: + -- -Verify that the `bbox` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). +Verify that the `bbox` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment). [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-definition.adoc index 41d0ec0e4..187e01c48 100644 --- a/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-x-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `resolution-x` query parameters are constructed test-method:: + -- -Verify that the `resolution-x` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). +Verify that the `resolution-x` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment). [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-definition.adoc index a55f8b26a..860969a3e 100644 --- a/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-y-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `resolution-y` query parameters are constructed test-method:: + -- -Verify that the `resolution-y` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). +Verify that the `resolution-y` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment). [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-definition.adoc index 478ae5d85..02f1085d4 100644 --- a/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-resolution-z-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `resolution-z` query parameters are constructed test-method:: + -- -Verify that the `resolution-z` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment). +Verify that the `resolution-z` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment). [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/cube/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/cube/ATS_rc-time-definition.adoc index 49131b70d..f0d36cd25 100644 --- a/core/standard/abstract_tests/core/cube/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/cube/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 051f98072..32aa154bf 100644 --- a/core/standard/abstract_tests/core/items/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/items/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/locations/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/locations/ATS_rc-time-definition.adoc index 9bd4bce2b..5a5beb3a6 100644 --- a/core/standard/abstract_tests/core/locations/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/locations/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/position/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/position/ATS_rc-time-definition.adoc index 8f5c78fd6..b8a135896 100644 --- a/core/standard/abstract_tests/core/position/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/position/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/core/radius/ATS_rc-time-definition.adoc b/core/standard/abstract_tests/core/radius/ATS_rc-time-definition.adoc index e53778e73..aefe6d5c4 100644 --- a/core/standard/abstract_tests/core/radius/ATS_rc-time-definition.adoc +++ b/core/standard/abstract_tests/core/radius/ATS_rc-time-definition.adoc @@ -9,7 +9,7 @@ test-purpose:: Validate that the datetime query parameters are constructed corre test-method:: + -- -Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `datetime` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index bbc6a8999..2ef099609 100755 --- a/core/standard/abstract_tests/core/radius/ATS_rc-within-definition.adoc +++ b/core/standard/abstract_tests/core/radius/ATS_rc-within-definition.adoc @@ -8,7 +8,7 @@ test-purpose:: Validate that the `within` query parameter is constructed correct test-method:: + -- -Verify that the `within` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `within` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- 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 index 170d95aa4..dde0e63a7 100755 --- 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 @@ -8,7 +8,7 @@ test-purpose:: Validate that the `within-units` query parameter is constructed c test-method:: + -- -Verify that the `within-units` query parameter complies with the following definition (using an OpenAPI Specification 3.0 fragment): +Verify that the `within-units` query parameter complies with the following definition (using an OpenAPI Specification 3.1 fragment): [source,YAML] ---- diff --git a/core/standard/abstract_tests/covjson/ATS_content.adoc b/core/standard/abstract_tests/covjson/ATS_content.adoc index 0b45a911c..8d9360c08 100644 --- a/core/standard/abstract_tests/covjson/ATS_content.adoc +++ b/core/standard/abstract_tests/covjson/ATS_content.adoc @@ -7,5 +7,5 @@ target:: /req/covjson/content test-purpose:: Verify the content of a CoverageJSON document given an input document and schema. test-method:: step::: Validate that the document is a CoverageJSON document. -step::: Validate the document against the link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/covjson/coverageJSON.yaml[coverageJSON.yaml] schema using a JSON Schema validator. +step::: Validate the document against the link:https://covjson.org/schema/dev/coveragejson.json[coveragejson.json] schema using a JSON Schema validator. ==== diff --git a/core/standard/abstract_tests/edr-geojson/ATS_content.adoc b/core/standard/abstract_tests/edr-geojson/ATS_content.adoc index 365831c5c..d1f52eda9 100644 --- a/core/standard/abstract_tests/edr-geojson/ATS_content.adoc +++ b/core/standard/abstract_tests/edr-geojson/ATS_content.adoc @@ -8,7 +8,7 @@ test-purpose:: Verify the content of an EDR GeoJSON document given an input docu test-method:: . Validate that the document is an EDR GeoJSON document. . Validate the document against one of the EDR GeoJSON schemas: - * FeatureCollection: link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml[edrFeatureCollectionGeoJSON.yaml] - * Feature: link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/geojson/featureGeoJSON.yaml[featureGeoJSON.yaml] - * GeometryCollection: link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/geojson/geometrycollectionGeoJSON.yaml[geometrycollectionGeoJSON.yaml] using a JSON Schema validator. + * FeatureCollection: link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml[edrFeatureCollectionGeoJSON.yaml] + * Feature: link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/geojson/featureGeoJSON.yaml[featureGeoJSON.yaml] + * GeometryCollection: link:https://schemas.opengis.net/ogcapi/edr/1.2/openapi/oas31/schemas/geojson/geometrycollectionGeoJSON.yaml[geometrycollectionGeoJSON.yaml] using a JSON Schema validator. ==== diff --git a/core/standard/abstract_tests/oas30/ATS_completeness.adoc b/core/standard/abstract_tests/oas30/ATS_completeness.adoc index d58406441..5543e195e 100644 --- a/core/standard/abstract_tests/oas30/ATS_completeness.adoc +++ b/core/standard/abstract_tests/oas30/ATS_completeness.adoc @@ -3,8 +3,8 @@ ==== [%metadata] identifier:: /conf/oas30/completeness -target:: /req/oas30/completeness +target:: /req/oas/completeness test-purpose:: Verify the completeness of an OpenAPI document. test-method:: -Verify that for each operation, the OpenAPI document describes all link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#httpCodes[HTTP Status Codes] and link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject[Response Objects] that the API uses in responses. +Verify that for each operation, the OpenAPI document describes all link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.4.md#httpCodes[HTTP Status Codes] and link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.4.md#responseObject[Response Objects] that the API uses in responses. ==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas30/ATS_definition-1.adoc b/core/standard/abstract_tests/oas30/ATS_definition-1.adoc index 83e7310f8..d5320c536 100644 --- a/core/standard/abstract_tests/oas30/ATS_definition-1.adoc +++ b/core/standard/abstract_tests/oas30/ATS_definition-1.adoc @@ -3,7 +3,7 @@ ==== [%metadata] identifier:: /conf/oas30/oas-definition-1 -target:: /req/oas30/oas-definition-1 +target:: /req/oas30/oas-definition test-purpose:: Verify that JSON and HTML versions of the OpenAPI document are available. test-method:: step::: Verify that an OpenAPI definition in JSON is available using the media type `application/vnd.oai.openapi+json;version=3.0` and link relation `service-desc` diff --git a/core/standard/abstract_tests/oas30/ATS_definition-2.adoc b/core/standard/abstract_tests/oas30/ATS_definition-2.adoc index eb88c89d1..c94542274 100644 --- a/core/standard/abstract_tests/oas30/ATS_definition-2.adoc +++ b/core/standard/abstract_tests/oas30/ATS_definition-2.adoc @@ -3,7 +3,7 @@ ==== [%metadata] identifier:: /conf/oas30/oas-definition-2 -target:: /req/oas30/oas-definition-2 +target:: /req/oas30/oas-definition test-purpose:: Verify that the OpenAPI document is valid JSON. test-method:: Verify that the JSON representation conforms to the <>. ==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas30/ATS_exception-codes.adoc b/core/standard/abstract_tests/oas30/ATS_exception-codes.adoc index f4341c459..e1e6eac68 100644 --- a/core/standard/abstract_tests/oas30/ATS_exception-codes.adoc +++ b/core/standard/abstract_tests/oas30/ATS_exception-codes.adoc @@ -3,7 +3,7 @@ ==== [%metadata] identifier:: /conf/oas30/exceptions-codes -target:: /req/oas30/exceptions-codes +target:: /req/oas/exceptions-codes test-purpose:: Verify that the OpenAPI document fully describes potential exception codes. -test-method:: Verify that for each operation, the OpenAPI document describes all link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#httpCodes[HTTP Status Codes] that may be generated. +test-method:: Verify that for each operation, the OpenAPI document describes all link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.4.md#httpCodes[HTTP Status Codes] that may be generated. ==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas30/ATS_oas-impl.adoc b/core/standard/abstract_tests/oas30/ATS_oas-impl.adoc index 38ccb0820..1a7017c8f 100644 --- a/core/standard/abstract_tests/oas30/ATS_oas-impl.adoc +++ b/core/standard/abstract_tests/oas30/ATS_oas-impl.adoc @@ -3,9 +3,9 @@ ==== [%metadata] identifier:: /conf/oas30/oas-impl -target:: /req/oas30/oas-impl +target:: /req/oas/oas-impl test-purpose:: Verify that all capabilities specified in the OpenAPI definition are implemented by the API. test-method:: step::: Construct a path from each URL template including all server URL options and all enumerated path parameters. -step::: For each path defined in the OpenAPI document, validate that the path performs in accordance with the API definition and the API-Features standard. +step::: For each path defined in the OpenAPI document, validate that the path performs in accordance with the API definition and the API-EDR standard. ==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas30/ATS_security.adoc b/core/standard/abstract_tests/oas30/ATS_security.adoc index 709a7f8aa..764572d24 100644 --- a/core/standard/abstract_tests/oas30/ATS_security.adoc +++ b/core/standard/abstract_tests/oas30/ATS_security.adoc @@ -3,7 +3,7 @@ ==== [%metadata] identifier:: /conf/oas30/security -target:: /req/oas30/security +target:: /req/oas/security test-purpose:: Verify that any authentication protocols implemented by the API are documented in the OpenAPI document. test-method:: step::: Identify all authentication protocols supported by the API. diff --git a/core/standard/abstract_tests/oas31/ATS_completeness.adoc b/core/standard/abstract_tests/oas31/ATS_completeness.adoc new file mode 100644 index 000000000..f1272e7a6 --- /dev/null +++ b/core/standard/abstract_tests/oas31/ATS_completeness.adoc @@ -0,0 +1,10 @@ +[[ats_oas31_completeness]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/oas31/completeness +target:: /req/oas/completeness +test-purpose:: Verify the completeness of an OpenAPI document. +test-method:: +Verify that for each operation, the OpenAPI document describes all link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.1.md#httpCodes[HTTP Status Codes] and link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.1.md#responseObject[Response Objects] that the API uses in responses. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas31/ATS_definition-1.adoc b/core/standard/abstract_tests/oas31/ATS_definition-1.adoc new file mode 100644 index 000000000..b0eb80eb5 --- /dev/null +++ b/core/standard/abstract_tests/oas31/ATS_definition-1.adoc @@ -0,0 +1,11 @@ +[[ats_oas31_oas-definition-1]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/oas31/oas-definition-1 +target:: /req/oas31/oas-definition +test-purpose:: Verify that JSON and HTML versions of the OpenAPI document are available. +test-method:: +step::: Verify that an OpenAPI definition in JSON is available using the media type `application/vnd.oai.openapi+json;version=3.1` and link relation `service-desc` +step::: Verify that an HTML version of the API definition is available using the media type `text/html` and link relation `service-doc`. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas31/ATS_definition-2.adoc b/core/standard/abstract_tests/oas31/ATS_definition-2.adoc new file mode 100644 index 000000000..a29c63678 --- /dev/null +++ b/core/standard/abstract_tests/oas31/ATS_definition-2.adoc @@ -0,0 +1,9 @@ +[[ats_oas31_oas-definition-2]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/oas31/oas-definition-2 +target:: /req/oas31/oas-definition +test-purpose:: Verify that the OpenAPI document is valid JSON. +test-method:: Verify that the JSON representation conforms to the <>. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas31/ATS_exception-codes.adoc b/core/standard/abstract_tests/oas31/ATS_exception-codes.adoc new file mode 100644 index 000000000..ad0df05ab --- /dev/null +++ b/core/standard/abstract_tests/oas31/ATS_exception-codes.adoc @@ -0,0 +1,9 @@ +[[ats_oas31_exceptions-codes]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/oas31/exceptions-codes +target:: /req/oas/exceptions-codes +test-purpose:: Verify that the OpenAPI document fully describes potential exception codes. +test-method:: Verify that for each operation, the OpenAPI document describes all link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.1.1.md#httpCodes[HTTP Status Codes] that may be generated. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas31/ATS_oas-impl.adoc b/core/standard/abstract_tests/oas31/ATS_oas-impl.adoc new file mode 100644 index 000000000..d82a901c1 --- /dev/null +++ b/core/standard/abstract_tests/oas31/ATS_oas-impl.adoc @@ -0,0 +1,11 @@ +[[ats_oas31_oas-impl]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/oas31/oas-impl +target:: /req/oas/oas-impl +test-purpose:: Verify that all capabilities specified in the OpenAPI definition are implemented by the API. +test-method:: +step::: Construct a path from each URL template including all server URL options and all enumerated path parameters. +step::: For each path defined in the OpenAPI document, validate that the path performs in accordance with the API definition and the API-EDR standard. +==== \ No newline at end of file diff --git a/core/standard/abstract_tests/oas31/ATS_security.adoc b/core/standard/abstract_tests/oas31/ATS_security.adoc new file mode 100644 index 000000000..fc6f0862b --- /dev/null +++ b/core/standard/abstract_tests/oas31/ATS_security.adoc @@ -0,0 +1,11 @@ +[[ats_oas31_security]] +[abstract_test] +==== +[%metadata] +identifier:: /conf/oas31/security +target:: /req/oas/security +test-purpose:: Verify that any authentication protocols implemented by the API are documented in the OpenAPI document. +test-method:: +step::: Identify all authentication protocols supported by the API. +step::: Validate that each authentication protocol is described in the OpenAPI document by a Security Schema Object and its use specified by a Security Requirement Object. +==== \ 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 d764eba65..3ccec1894 100644 --- a/core/standard/abstract_tests/queries/ATS_corridor.adoc +++ b/core/standard/abstract_tests/queries/ATS_corridor.adoc @@ -85,7 +85,7 @@ identifier:: /conf/corridor/coords-param-invalid-linestringm target:: /req/edr/rc-corridor test-purpose:: Validate that an error is returned by a `corridor` query when the coords query parameter does not contain a valid LINESTRINGM or MULTILINESTRINGM Well Known Text value. test-method:: -step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGM or MULTILINESTRINGM value, the `M` coordinate shall be a valid Epoch value (as known as UNIX time) +step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGM or MULTILINESTRINGM value, the `M` coordinate SHALL be a valid Epoch value (as known as UNIX time) step::: Validate that a document was returned with a status code 400. ==== @@ -119,7 +119,7 @@ identifier:: /conf/corridor/coords-param-invalid-linestringzm target:: /req/edr/rc-corridor test-purpose:: Validate that an error is returned by a `corridor` query when the coords query parameter does not contain a valid LINESTRINGZM or MULTILINESTRINGZM Well Known Text value. test-method:: -. Check coords query parameter with time parameter is a valid Well Known Text LLINESTRINGZM or MULTILINESTRINGZM value, the `Z` coordinate shall be within the range of vertical levels advertised in the Collection metadata +. Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGZM or MULTILINESTRINGZM value, the `Z` coordinate SHALL be within the range of vertical levels advertised in the Collection metadata . Validate that a document was returned with a status code 400. ==== @@ -131,7 +131,7 @@ identifier:: /conf/corridor/coords-param-invalid-linestringz target:: /req/edr/rc-corridor test-purpose:: Validate that an error is returned by a `corridor` query when the coords query parameter does not contain a valid LINESTRINGZ or MULTILINESTRINGZ Well Known Text value. test-method:: -step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGZ or MULTILINESTRINGZ value, the `Z` coordinate shall be within the range of vertical levels advertised in the Collection metadata +step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGZ or MULTILINESTRINGZ value, the `Z` coordinate SHALL be within the range of vertical levels advertised in the Collection metadata step::: Validate that a document was returned with a status code 400. ==== diff --git a/core/standard/abstract_tests/queries/ATS_trajectory.adoc b/core/standard/abstract_tests/queries/ATS_trajectory.adoc index 58ad364e5..6ae22d3cb 100644 --- a/core/standard/abstract_tests/queries/ATS_trajectory.adoc +++ b/core/standard/abstract_tests/queries/ATS_trajectory.adoc @@ -39,7 +39,7 @@ identifier:: /conf/trajectory/coords-param-invalid-linestringm target:: /req/edr/rc-trajectory test-purpose:: Validate that an error is returned by a `Trajectory` query when the coords query parameter does not contain a valid LINESTRINGM or MULTILINESTRINGM Well Known Text value. test-method:: -step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGM or MULTILINESTRINGM value, the `M` coordinate shall be a valid Epoch value (as known as UNIX time) +step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGM or MULTILINESTRINGM value, the `M` coordinate SHALL be a valid Epoch value (as known as UNIX time) step::: Validate that a document was returned with a status code 400. ==== @@ -73,7 +73,7 @@ identifier:: /conf/trajectory/coords-param-invalid-linestringzm target:: /req/edr/rc-trajectory test-purpose:: Validate that an error is returned by a `Trajectory` query when the coords query parameter does not contain a valid LINESTRINGZM or MULTILINESTRINGZM Well Known Text value. test-method:: -step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGZM or MULTILINESTRINGZM value, the `Z` coordinate shall be within the range of vertical levels advertised in the Collection metadata +step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGZM or MULTILINESTRINGZM value, the `Z` coordinate SHALL be within the range of vertical levels advertised in the Collection metadata step::: Validate that a document was returned with a status code 400. ==== @@ -85,7 +85,7 @@ identifier:: /conf/trajectory/coords-param-invalid-linestringz target:: /req/edr/rc-trajectory test-purpose:: Validate that an error is returned by a `Trajectory` query when the coords query parameter does not contain a valid LINESTRINGZ or MULTILINESTRINGZ Well Known Text value. test-method:: -step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGZ or MULTILINESTRINGZ value, the `Z` coordinate shall be within the range of vertical levels advertised in the Collection metadata +step::: Check coords query parameter with time parameter is a valid Well Known Text LINESTRINGZ or MULTILINESTRINGZ value, the `Z` coordinate SHALL be within the range of vertical levels advertised in the Collection metadata step::: Validate that a document was returned with a status code 400. ==== diff --git a/core/standard/document.adoc b/core/standard/document.adoc index f69bbfac1..d8ed6ccf1 100644 --- a/core/standard/document.adoc +++ b/core/standard/document.adoc @@ -52,6 +52,8 @@ include::sections/clause_8_queries.adoc[] include::sections/clause_9_general.adoc[] +include::sections/clause_10_oas.adoc[] + //// add or remove annexes after "A" as necessary //// diff --git a/core/standard/openapi/README.md b/core/standard/openapi/README.md index 13e19b455..53f68bd93 100644 --- a/core/standard/openapi/README.md +++ b/core/standard/openapi/README.md @@ -1,21 +1,33 @@ -# OpenAPI definitions +# OpenAPI 3.0 definitions This example API definition can be used to provide an OpenAPI 3.0 definition for an implementation of _OGC API - Environmental Data Retrieval_. -The API definition can be visualized with [SwaggerUI](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/opengeospatial/ogcapi-environmental-data-retrieval/master/core/standard/openapi/ogcapi-environmental-data-retrieval-1.bundled.json). +The API definition can be visualized with [SwaggerUI](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/opengeospatial/ogcapi-environmental-data-retrieval/master/core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas30.bundled.json). The list of supported paths should be adjusted in `ogcapi-environmental-data-retrieval-1.yaml`. -# Building the OpenAPI bundle +# OpenAPI 3.1 definitions -The `ogcapi-environmental-data-retrieval-1.bundled.json` file is a standalone/portable OpenAPI document which includes all dependencies included from the components sub-directories, and is built automatically via GitHub Actions. To test/build the bundle locally: +This example API definition can be used to provide an OpenAPI 3.1 definition for an implementation of _OGC API - Environmental Data Retrieval_. +The API definition can be visualized with [SwaggerUI](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/opengeospatial/ogcapi-environmental-data-retrieval/master/core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas31.bundled.json). + +The list of supported paths should be adjusted in `ogcapi-environmental-data-retrieval-1.yaml`. + + +# Building an OpenAPI bundle + +The `ogcapi-environmental-data-retrieval-1-oas{x}.bundled.json` file is a standalone/portable OpenAPI document which includes all dependencies included from the components sub-directories, and is built automatically via GitHub Actions. To test/build the bundle locally: ```bash # install Swagger CLI via npm npm install -g @apidevtools/swagger-cli -# generate OpenAPI bundle +# generate OpenAPI 3.0 bundle +cd standard/openapi +swagger-cli bundle -r -o ogcapi-environmental-data-retrieval-1-oas30.bundled.json ogcapi-environmental-data-retrieval-1-oas30.yaml + +# generate OpenAPI 3.1 bundle cd standard/openapi -swagger-cli bundle -r -o ogcapi-environmental-data-retrieval-1.bundled.json ogcapi-environmental-data-retrieval-1.yaml +swagger-cli bundle -r -o ogcapi-environmental-data-retrieval-1-oas31.bundled.json ogcapi-environmental-data-retrieval-1-oas31.yaml ``` See also [Swagger CLI](https://apitools.dev/swagger-cli/) and its [GitHub repository](https://github.com/APIDevTools/swagger-cli). diff --git a/core/standard/openapi/examples/LandingPageExample.json b/core/standard/openapi/oas30/examples/LandingPageExample.json similarity index 100% rename from core/standard/openapi/examples/LandingPageExample.json rename to core/standard/openapi/oas30/examples/LandingPageExample.json diff --git a/core/standard/openapi/examples/LandingPageExample2.json b/core/standard/openapi/oas30/examples/LandingPageExample2.json similarity index 100% rename from core/standard/openapi/examples/LandingPageExample2.json rename to core/standard/openapi/oas30/examples/LandingPageExample2.json diff --git a/core/standard/openapi/examples/collection.json b/core/standard/openapi/oas30/examples/collection.json similarity index 100% rename from core/standard/openapi/examples/collection.json rename to core/standard/openapi/oas30/examples/collection.json diff --git a/core/standard/openapi/examples/instance.json b/core/standard/openapi/oas30/examples/instance.json similarity index 100% rename from core/standard/openapi/examples/instance.json rename to core/standard/openapi/oas30/examples/instance.json diff --git a/core/standard/openapi/parameters/collections/collectionId.yaml b/core/standard/openapi/oas30/parameters/collections/collectionId.yaml similarity index 100% rename from core/standard/openapi/parameters/collections/collectionId.yaml rename to core/standard/openapi/oas30/parameters/collections/collectionId.yaml diff --git a/core/standard/openapi/parameters/core/areaCoords.yaml b/core/standard/openapi/oas30/parameters/core/areaCoords.yaml similarity index 100% rename from core/standard/openapi/parameters/core/areaCoords.yaml rename to core/standard/openapi/oas30/parameters/core/areaCoords.yaml diff --git a/core/standard/openapi/parameters/core/bbox.yaml b/core/standard/openapi/oas30/parameters/core/bbox.yaml similarity index 100% rename from core/standard/openapi/parameters/core/bbox.yaml rename to core/standard/openapi/oas30/parameters/core/bbox.yaml diff --git a/core/standard/openapi/parameters/core/corridor-height.yaml b/core/standard/openapi/oas30/parameters/core/corridor-height.yaml similarity index 100% rename from core/standard/openapi/parameters/core/corridor-height.yaml rename to core/standard/openapi/oas30/parameters/core/corridor-height.yaml diff --git a/core/standard/openapi/parameters/core/corridor-width.yaml b/core/standard/openapi/oas30/parameters/core/corridor-width.yaml similarity index 100% rename from core/standard/openapi/parameters/core/corridor-width.yaml rename to core/standard/openapi/oas30/parameters/core/corridor-width.yaml diff --git a/core/standard/openapi/parameters/core/crs.yaml b/core/standard/openapi/oas30/parameters/core/crs.yaml similarity index 100% rename from core/standard/openapi/parameters/core/crs.yaml rename to core/standard/openapi/oas30/parameters/core/crs.yaml diff --git a/core/standard/openapi/parameters/core/cube-bbox.yaml b/core/standard/openapi/oas30/parameters/core/cube-bbox.yaml similarity index 100% rename from core/standard/openapi/parameters/core/cube-bbox.yaml rename to core/standard/openapi/oas30/parameters/core/cube-bbox.yaml diff --git a/core/standard/openapi/parameters/core/cube-z.yaml b/core/standard/openapi/oas30/parameters/core/cube-z.yaml similarity index 100% rename from core/standard/openapi/parameters/core/cube-z.yaml rename to core/standard/openapi/oas30/parameters/core/cube-z.yaml diff --git a/core/standard/openapi/parameters/core/f.yaml b/core/standard/openapi/oas30/parameters/core/f.yaml similarity index 100% rename from core/standard/openapi/parameters/core/f.yaml rename to core/standard/openapi/oas30/parameters/core/f.yaml diff --git a/core/standard/openapi/parameters/core/height-units.yaml b/core/standard/openapi/oas30/parameters/core/height-units.yaml similarity index 100% rename from core/standard/openapi/parameters/core/height-units.yaml rename to core/standard/openapi/oas30/parameters/core/height-units.yaml diff --git a/core/standard/openapi/parameters/core/limit.yaml b/core/standard/openapi/oas30/parameters/core/limit.yaml similarity index 100% rename from core/standard/openapi/parameters/core/limit.yaml rename to core/standard/openapi/oas30/parameters/core/limit.yaml diff --git a/core/standard/openapi/parameters/core/parameter-name.yaml b/core/standard/openapi/oas30/parameters/core/parameter-name.yaml similarity index 100% rename from core/standard/openapi/parameters/core/parameter-name.yaml rename to core/standard/openapi/oas30/parameters/core/parameter-name.yaml diff --git a/core/standard/openapi/parameters/core/positionCoords.yaml b/core/standard/openapi/oas30/parameters/core/positionCoords.yaml similarity index 100% rename from core/standard/openapi/parameters/core/positionCoords.yaml rename to core/standard/openapi/oas30/parameters/core/positionCoords.yaml diff --git a/core/standard/openapi/parameters/core/radiusCoords.yaml b/core/standard/openapi/oas30/parameters/core/radiusCoords.yaml similarity index 100% rename from core/standard/openapi/parameters/core/radiusCoords.yaml rename to core/standard/openapi/oas30/parameters/core/radiusCoords.yaml diff --git a/core/standard/openapi/parameters/core/resolution-x.yaml b/core/standard/openapi/oas30/parameters/core/resolution-x.yaml similarity index 100% rename from core/standard/openapi/parameters/core/resolution-x.yaml rename to core/standard/openapi/oas30/parameters/core/resolution-x.yaml diff --git a/core/standard/openapi/parameters/core/resolution-y.yaml b/core/standard/openapi/oas30/parameters/core/resolution-y.yaml similarity index 100% rename from core/standard/openapi/parameters/core/resolution-y.yaml rename to core/standard/openapi/oas30/parameters/core/resolution-y.yaml diff --git a/core/standard/openapi/parameters/core/resolution-z.yaml b/core/standard/openapi/oas30/parameters/core/resolution-z.yaml similarity index 100% rename from core/standard/openapi/parameters/core/resolution-z.yaml rename to core/standard/openapi/oas30/parameters/core/resolution-z.yaml diff --git a/core/standard/openapi/parameters/core/trajectoryCoords.yaml b/core/standard/openapi/oas30/parameters/core/trajectoryCoords.yaml similarity index 100% rename from core/standard/openapi/parameters/core/trajectoryCoords.yaml rename to core/standard/openapi/oas30/parameters/core/trajectoryCoords.yaml diff --git a/core/standard/openapi/parameters/core/width-units.yaml b/core/standard/openapi/oas30/parameters/core/width-units.yaml similarity index 100% rename from core/standard/openapi/parameters/core/width-units.yaml rename to core/standard/openapi/oas30/parameters/core/width-units.yaml diff --git a/core/standard/openapi/parameters/core/within-units.yaml b/core/standard/openapi/oas30/parameters/core/within-units.yaml similarity index 100% rename from core/standard/openapi/parameters/core/within-units.yaml rename to core/standard/openapi/oas30/parameters/core/within-units.yaml diff --git a/core/standard/openapi/parameters/core/within.yaml b/core/standard/openapi/oas30/parameters/core/within.yaml similarity index 100% rename from core/standard/openapi/parameters/core/within.yaml rename to core/standard/openapi/oas30/parameters/core/within.yaml diff --git a/core/standard/openapi/parameters/core/z.yaml b/core/standard/openapi/oas30/parameters/core/z.yaml similarity index 100% rename from core/standard/openapi/parameters/core/z.yaml rename to core/standard/openapi/oas30/parameters/core/z.yaml diff --git a/core/standard/openapi/parameters/queries/instanceId.yaml b/core/standard/openapi/oas30/parameters/queries/instanceId.yaml similarity index 100% rename from core/standard/openapi/parameters/queries/instanceId.yaml rename to core/standard/openapi/oas30/parameters/queries/instanceId.yaml diff --git a/core/standard/openapi/parameters/queries/itemId.yaml b/core/standard/openapi/oas30/parameters/queries/itemId.yaml similarity index 100% rename from core/standard/openapi/parameters/queries/itemId.yaml rename to core/standard/openapi/oas30/parameters/queries/itemId.yaml diff --git a/core/standard/openapi/parameters/queries/locationId.yaml b/core/standard/openapi/oas30/parameters/queries/locationId.yaml similarity index 100% rename from core/standard/openapi/parameters/queries/locationId.yaml rename to core/standard/openapi/oas30/parameters/queries/locationId.yaml diff --git a/core/standard/openapi/paths/collections/collection.yaml b/core/standard/openapi/oas30/paths/collections/collection.yaml similarity index 100% rename from core/standard/openapi/paths/collections/collection.yaml rename to core/standard/openapi/oas30/paths/collections/collection.yaml diff --git a/core/standard/openapi/paths/collections/collections.yaml b/core/standard/openapi/oas30/paths/collections/collections.yaml similarity index 100% rename from core/standard/openapi/paths/collections/collections.yaml rename to core/standard/openapi/oas30/paths/collections/collections.yaml diff --git a/core/standard/openapi/paths/core/conformance.yaml b/core/standard/openapi/oas30/paths/core/conformance.yaml similarity index 100% rename from core/standard/openapi/paths/core/conformance.yaml rename to core/standard/openapi/oas30/paths/core/conformance.yaml diff --git a/core/standard/openapi/paths/core/landingPage.yaml b/core/standard/openapi/oas30/paths/core/landingPage.yaml similarity index 100% rename from core/standard/openapi/paths/core/landingPage.yaml rename to core/standard/openapi/oas30/paths/core/landingPage.yaml diff --git a/core/standard/openapi/paths/queries/area.yaml b/core/standard/openapi/oas30/paths/queries/area.yaml similarity index 100% rename from core/standard/openapi/paths/queries/area.yaml rename to core/standard/openapi/oas30/paths/queries/area.yaml diff --git a/core/standard/openapi/paths/queries/corridor.yaml b/core/standard/openapi/oas30/paths/queries/corridor.yaml similarity index 100% rename from core/standard/openapi/paths/queries/corridor.yaml rename to core/standard/openapi/oas30/paths/queries/corridor.yaml diff --git a/core/standard/openapi/paths/queries/cube.yaml b/core/standard/openapi/oas30/paths/queries/cube.yaml similarity index 100% rename from core/standard/openapi/paths/queries/cube.yaml rename to core/standard/openapi/oas30/paths/queries/cube.yaml diff --git a/core/standard/openapi/paths/queries/instance-area.yaml b/core/standard/openapi/oas30/paths/queries/instance-area.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-area.yaml rename to core/standard/openapi/oas30/paths/queries/instance-area.yaml diff --git a/core/standard/openapi/paths/queries/instance-corridor.yaml b/core/standard/openapi/oas30/paths/queries/instance-corridor.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-corridor.yaml rename to core/standard/openapi/oas30/paths/queries/instance-corridor.yaml diff --git a/core/standard/openapi/paths/queries/instance-cube.yaml b/core/standard/openapi/oas30/paths/queries/instance-cube.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-cube.yaml rename to core/standard/openapi/oas30/paths/queries/instance-cube.yaml diff --git a/core/standard/openapi/paths/queries/instance-location.yaml b/core/standard/openapi/oas30/paths/queries/instance-location.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-location.yaml rename to core/standard/openapi/oas30/paths/queries/instance-location.yaml diff --git a/core/standard/openapi/paths/queries/instance-locations.yaml b/core/standard/openapi/oas30/paths/queries/instance-locations.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-locations.yaml rename to core/standard/openapi/oas30/paths/queries/instance-locations.yaml diff --git a/core/standard/openapi/paths/queries/instance-position.yaml b/core/standard/openapi/oas30/paths/queries/instance-position.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-position.yaml rename to core/standard/openapi/oas30/paths/queries/instance-position.yaml diff --git a/core/standard/openapi/paths/queries/instance-radius.yaml b/core/standard/openapi/oas30/paths/queries/instance-radius.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-radius.yaml rename to core/standard/openapi/oas30/paths/queries/instance-radius.yaml diff --git a/core/standard/openapi/paths/queries/instance-trajectory.yaml b/core/standard/openapi/oas30/paths/queries/instance-trajectory.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instance-trajectory.yaml rename to core/standard/openapi/oas30/paths/queries/instance-trajectory.yaml diff --git a/core/standard/openapi/paths/queries/instances.yaml b/core/standard/openapi/oas30/paths/queries/instances.yaml similarity index 100% rename from core/standard/openapi/paths/queries/instances.yaml rename to core/standard/openapi/oas30/paths/queries/instances.yaml diff --git a/core/standard/openapi/paths/queries/item.yaml b/core/standard/openapi/oas30/paths/queries/item.yaml similarity index 100% rename from core/standard/openapi/paths/queries/item.yaml rename to core/standard/openapi/oas30/paths/queries/item.yaml diff --git a/core/standard/openapi/paths/queries/items.yaml b/core/standard/openapi/oas30/paths/queries/items.yaml similarity index 100% rename from core/standard/openapi/paths/queries/items.yaml rename to core/standard/openapi/oas30/paths/queries/items.yaml diff --git a/core/standard/openapi/paths/queries/location.yaml b/core/standard/openapi/oas30/paths/queries/location.yaml similarity index 100% rename from core/standard/openapi/paths/queries/location.yaml rename to core/standard/openapi/oas30/paths/queries/location.yaml diff --git a/core/standard/openapi/paths/queries/locations.yaml b/core/standard/openapi/oas30/paths/queries/locations.yaml similarity index 100% rename from core/standard/openapi/paths/queries/locations.yaml rename to core/standard/openapi/oas30/paths/queries/locations.yaml diff --git a/core/standard/openapi/paths/queries/position.yaml b/core/standard/openapi/oas30/paths/queries/position.yaml similarity index 100% rename from core/standard/openapi/paths/queries/position.yaml rename to core/standard/openapi/oas30/paths/queries/position.yaml diff --git a/core/standard/openapi/paths/queries/radius.yaml b/core/standard/openapi/oas30/paths/queries/radius.yaml similarity index 100% rename from core/standard/openapi/paths/queries/radius.yaml rename to core/standard/openapi/oas30/paths/queries/radius.yaml diff --git a/core/standard/openapi/paths/queries/trajectory.yaml b/core/standard/openapi/oas30/paths/queries/trajectory.yaml similarity index 100% rename from core/standard/openapi/paths/queries/trajectory.yaml rename to core/standard/openapi/oas30/paths/queries/trajectory.yaml diff --git a/core/standard/openapi/request-bodies/area.yaml b/core/standard/openapi/oas30/request-bodies/area.yaml similarity index 100% rename from core/standard/openapi/request-bodies/area.yaml rename to core/standard/openapi/oas30/request-bodies/area.yaml diff --git a/core/standard/openapi/request-bodies/corridor.yaml b/core/standard/openapi/oas30/request-bodies/corridor.yaml similarity index 100% rename from core/standard/openapi/request-bodies/corridor.yaml rename to core/standard/openapi/oas30/request-bodies/corridor.yaml diff --git a/core/standard/openapi/request-bodies/cube.yaml b/core/standard/openapi/oas30/request-bodies/cube.yaml similarity index 100% rename from core/standard/openapi/request-bodies/cube.yaml rename to core/standard/openapi/oas30/request-bodies/cube.yaml diff --git a/core/standard/openapi/request-bodies/location.yaml b/core/standard/openapi/oas30/request-bodies/location.yaml similarity index 100% rename from core/standard/openapi/request-bodies/location.yaml rename to core/standard/openapi/oas30/request-bodies/location.yaml diff --git a/core/standard/openapi/request-bodies/locations.yaml b/core/standard/openapi/oas30/request-bodies/locations.yaml similarity index 100% rename from core/standard/openapi/request-bodies/locations.yaml rename to core/standard/openapi/oas30/request-bodies/locations.yaml diff --git a/core/standard/openapi/request-bodies/position.yaml b/core/standard/openapi/oas30/request-bodies/position.yaml similarity index 100% rename from core/standard/openapi/request-bodies/position.yaml rename to core/standard/openapi/oas30/request-bodies/position.yaml diff --git a/core/standard/openapi/request-bodies/radius.yaml b/core/standard/openapi/oas30/request-bodies/radius.yaml similarity index 100% rename from core/standard/openapi/request-bodies/radius.yaml rename to core/standard/openapi/oas30/request-bodies/radius.yaml diff --git a/core/standard/openapi/request-bodies/trajectory.yaml b/core/standard/openapi/oas30/request-bodies/trajectory.yaml similarity index 100% rename from core/standard/openapi/request-bodies/trajectory.yaml rename to core/standard/openapi/oas30/request-bodies/trajectory.yaml diff --git a/core/standard/openapi/responses/collections/collection.yaml b/core/standard/openapi/oas30/responses/collections/collection.yaml similarity index 100% rename from core/standard/openapi/responses/collections/collection.yaml rename to core/standard/openapi/oas30/responses/collections/collection.yaml diff --git a/core/standard/openapi/responses/collections/collections.yaml b/core/standard/openapi/oas30/responses/collections/collections.yaml similarity index 100% rename from core/standard/openapi/responses/collections/collections.yaml rename to core/standard/openapi/oas30/responses/collections/collections.yaml diff --git a/core/standard/openapi/responses/core/conformance.yaml b/core/standard/openapi/oas30/responses/core/conformance.yaml similarity index 100% rename from core/standard/openapi/responses/core/conformance.yaml rename to core/standard/openapi/oas30/responses/core/conformance.yaml diff --git a/core/standard/openapi/responses/core/exception.yaml b/core/standard/openapi/oas30/responses/core/exception.yaml similarity index 100% rename from core/standard/openapi/responses/core/exception.yaml rename to core/standard/openapi/oas30/responses/core/exception.yaml diff --git a/core/standard/openapi/responses/core/landingPage.yaml b/core/standard/openapi/oas30/responses/core/landingPage.yaml similarity index 100% rename from core/standard/openapi/responses/core/landingPage.yaml rename to core/standard/openapi/oas30/responses/core/landingPage.yaml diff --git a/core/standard/openapi/responses/queries/200.yaml b/core/standard/openapi/oas30/responses/queries/200.yaml similarity index 100% rename from core/standard/openapi/responses/queries/200.yaml rename to core/standard/openapi/oas30/responses/queries/200.yaml diff --git a/core/standard/openapi/responses/queries/202.yaml b/core/standard/openapi/oas30/responses/queries/202.yaml similarity index 100% rename from core/standard/openapi/responses/queries/202.yaml rename to core/standard/openapi/oas30/responses/queries/202.yaml diff --git a/core/standard/openapi/responses/queries/308.yaml b/core/standard/openapi/oas30/responses/queries/308.yaml similarity index 100% rename from core/standard/openapi/responses/queries/308.yaml rename to core/standard/openapi/oas30/responses/queries/308.yaml diff --git a/core/standard/openapi/responses/queries/400.yaml b/core/standard/openapi/oas30/responses/queries/400.yaml similarity index 100% rename from core/standard/openapi/responses/queries/400.yaml rename to core/standard/openapi/oas30/responses/queries/400.yaml diff --git a/core/standard/openapi/responses/queries/404.yaml b/core/standard/openapi/oas30/responses/queries/404.yaml similarity index 100% rename from core/standard/openapi/responses/queries/404.yaml rename to core/standard/openapi/oas30/responses/queries/404.yaml diff --git a/core/standard/openapi/responses/queries/413.yaml b/core/standard/openapi/oas30/responses/queries/413.yaml similarity index 100% rename from core/standard/openapi/responses/queries/413.yaml rename to core/standard/openapi/oas30/responses/queries/413.yaml diff --git a/core/standard/openapi/responses/queries/instances.yaml b/core/standard/openapi/oas30/responses/queries/instances.yaml similarity index 100% rename from core/standard/openapi/responses/queries/instances.yaml rename to core/standard/openapi/oas30/responses/queries/instances.yaml diff --git a/core/standard/openapi/responses/queries/items.yaml b/core/standard/openapi/oas30/responses/queries/items.yaml similarity index 100% rename from core/standard/openapi/responses/queries/items.yaml rename to core/standard/openapi/oas30/responses/queries/items.yaml diff --git a/core/standard/openapi/schemas/collections/DataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/DataQuery.yaml similarity index 92% rename from core/standard/openapi/schemas/collections/DataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/DataQuery.yaml index 3972a3563..427583636 100644 --- a/core/standard/openapi/schemas/collections/DataQuery.yaml +++ b/core/standard/openapi/oas30/schemas/collections/DataQuery.yaml @@ -21,11 +21,7 @@ properties: type: array items: type: string - example: - - CoverageJSON - - GeoJSON - - IWXXM - - GRIB + example: CoverageJSON default_output_format: description: default output format for the Position query type: string diff --git a/core/standard/openapi/schemas/collections/areaDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/areaDataQuery.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/areaDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/areaDataQuery.yaml diff --git a/core/standard/openapi/schemas/collections/areaLink.yaml b/core/standard/openapi/oas30/schemas/collections/areaLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/areaLink.yaml rename to core/standard/openapi/oas30/schemas/collections/areaLink.yaml diff --git a/core/standard/openapi/oas30/schemas/collections/collection.yaml b/core/standard/openapi/oas30/schemas/collections/collection.yaml new file mode 100644 index 000000000..d9898f95c --- /dev/null +++ b/core/standard/openapi/oas30/schemas/collections/collection.yaml @@ -0,0 +1,105 @@ +type: object +required: + - links + - id + - extent + - data_queries + - parameter_names + - output_formats + - crs +properties: + links: + type: array + items: + $ref: ../core/link.yaml + example: + href: https://example.org/service/description.html + hreflang: en + rel: service-doc + type: text/html + title: "" + id: + description: id of the collection + type: string + example: Metar data + title: + description: title of the collection + type: string + example: Metar observations + description: + description: description of the collection + type: string + example: Last 24 hours Metar observations + keywords: + description: List of keywords which help to describe the collection + type: array + items: + type: string + extent: + $ref: extent.yaml + data_queries: + description: Detailed information relevant to individual query types + type: object + properties: + position: + type: object + properties: + link: + $ref: positionLink.yaml + radius: + type: object + properties: + link: + $ref: radiusLink.yaml + area: + type: object + properties: + link: + $ref: areaLink.yaml + cube: + type: object + properties: + link: + $ref: cubeLink.yaml + trajectory: + type: object + properties: + link: + $ref: trajectoryLink.yaml + corridor: + type: object + properties: + link: + $ref: corridorLink.yaml + locations: + type: object + properties: + link: + $ref: locationsLink.yaml + items: + type: object + properties: + link: + $ref: itemsLink.yaml + instances: + type: object + properties: + link: + $ref: instancesLink.yaml + crs: + description: list of the coordinate reference systems the collection results can support + type: array + items: + type: string + output_formats: + description: list of formats the results can be presented in + type: array + items: + type: string + example: CoverageJSON + parameter_names: + description: list of the data parameters available in the collection + type: object + additionalProperties: + items: + $ref: parameterNames.yaml diff --git a/core/standard/openapi/oas30/schemas/collections/collections.yaml b/core/standard/openapi/oas30/schemas/collections/collections.yaml new file mode 100644 index 000000000..a22131719 --- /dev/null +++ b/core/standard/openapi/oas30/schemas/collections/collections.yaml @@ -0,0 +1,18 @@ +type: object +required: + - links + - collections +properties: + links: + type: array + items: + $ref: ../core/link.yaml + example: + href: https://example.org/edr/collections + hreflang: en + rel: self + type: application/yaml + collections: + type: array + items: + $ref: collection.yaml diff --git a/core/standard/openapi/oas30/schemas/collections/corridorDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/corridorDataQuery.yaml new file mode 100644 index 000000000..54f278a08 --- /dev/null +++ b/core/standard/openapi/oas30/schemas/collections/corridorDataQuery.yaml @@ -0,0 +1,24 @@ +allOf: + - $ref: DataQuery.yaml +required: + - width_units + - height_units +properties: + query_type: + description: Type of EDR query + type: string + enum: + - corridor + example: corridor + width_units: + description: list of width distance units distance values can be specified in + type: array + items: + type: string + example: km + height_units: + description: list of height distance units distance values can be specified in + type: array + items: + type: string + example: hPa diff --git a/core/standard/openapi/schemas/collections/corridorLink.yaml b/core/standard/openapi/oas30/schemas/collections/corridorLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/corridorLink.yaml rename to core/standard/openapi/oas30/schemas/collections/corridorLink.yaml diff --git a/core/standard/openapi/schemas/collections/crsObject.yaml b/core/standard/openapi/oas30/schemas/collections/crsObject.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/crsObject.yaml rename to core/standard/openapi/oas30/schemas/collections/crsObject.yaml diff --git a/core/standard/openapi/schemas/collections/cubeDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/cubeDataQuery.yaml similarity index 90% rename from core/standard/openapi/schemas/collections/cubeDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/cubeDataQuery.yaml index 2ef039662..064a6dacc 100644 --- a/core/standard/openapi/schemas/collections/cubeDataQuery.yaml +++ b/core/standard/openapi/oas30/schemas/collections/cubeDataQuery.yaml @@ -14,6 +14,4 @@ properties: type: array items: type: string - example: - - m - - hPa + example: m diff --git a/core/standard/openapi/schemas/collections/cubeLink.yaml b/core/standard/openapi/oas30/schemas/collections/cubeLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/cubeLink.yaml rename to core/standard/openapi/oas30/schemas/collections/cubeLink.yaml diff --git a/core/standard/openapi/schemas/collections/extent.yaml b/core/standard/openapi/oas30/schemas/collections/extent.yaml similarity index 89% rename from core/standard/openapi/schemas/collections/extent.yaml rename to core/standard/openapi/oas30/schemas/collections/extent.yaml index cef78f47f..162bdca14 100644 --- a/core/standard/openapi/schemas/collections/extent.yaml +++ b/core/standard/openapi/oas30/schemas/collections/extent.yaml @@ -85,11 +85,7 @@ properties: minItems: 6 maxItems: 6 type: array - example: - - -180 - - -90 - - 180 - - 90 + example: [[-180, -90, 180, 90]] crs: description: >- Coordinate reference system of the coordinates in the spatial extent @@ -127,12 +123,7 @@ properties: items: type: string nullable: true - example: - - ["2020-11-12T12:15Z","2020-11-12T12:15Z"] - - ["2020-11-12T12:15Z","2020-11-12T12:45Z"] - - ["2022-01-14T09:00Z","2022-01-15T09:00Z"] - - ["2022-01-14T09:00Z","2022-01-14T21:00Z"] - - ["2022-01-14T09:00Z","2022-01-16T09:00Z"] + example: [["2020-11-12T12:15Z","2020-11-12T12:15Z"]] values: description: |- @@ -148,12 +139,7 @@ properties: type: string minItems: 1 nullable: true - example: - - ["2020-11-12T12:15Z"] - - ["2020-11-12T12:15Z","2020-11-12T12:30Z","2020-11-12T12:45Z"] - - ["R12/2022-01-14T09:00Z/2022-01-15T09:00Z"] - - ["R12/2022-01-14T09:00Z/PT1H"] - - ["R12/2022-01-14T09:00Z/PT1H","R4/2022-01-14T21:00Z/PT3H","R4/2022-01-15T09:00Z/PT6H"] + example: ["R12/2022-01-14T09:00Z/PT1H","R4/2022-01-14T21:00Z/PT3H","R4/2022-01-15T09:00Z/PT6H"] trs: description: >- @@ -195,8 +181,7 @@ properties: items: type: string nullable: true - example: - - ["2","100"] + example: [["2","100"]] values: description: |- Vertical level intervals that data in the collection is available at @@ -210,10 +195,7 @@ properties: items: type: string nullable: true - example: - - ["2/100"] - - ["R20/1000/-50"] - - ["2","10","80", "100"] + example: ["R20/1000/-50"] vrs: description: |- Coordinate reference system of the coordinates in the vertical extent @@ -239,8 +221,7 @@ properties: description: >- The name of the custom dimension. type: string - example: - - ["members"] + example: "members" interval: description: >- If multiple intervals are provided, the union of the intervals describes the custom extent. @@ -254,8 +235,7 @@ properties: items: type: string nullable: true - example: - - ["0","50"] + example: [["0","50"]] values: description: |- values that data in the collection is available at @@ -269,10 +249,7 @@ properties: items: type: string nullable: true - example: - - ["25/75"] - - ["R20/0/5"] - - ["25","50","75"] + example: ["R20/0/5"] reference: description: |- URI to a definition or description of the custom dimension diff --git a/core/standard/openapi/schemas/collections/instancesDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/instancesDataQuery.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/instancesDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/instancesDataQuery.yaml diff --git a/core/standard/openapi/schemas/collections/instancesLink.yaml b/core/standard/openapi/oas30/schemas/collections/instancesLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/instancesLink.yaml rename to core/standard/openapi/oas30/schemas/collections/instancesLink.yaml diff --git a/core/standard/openapi/schemas/collections/itemsDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/itemsDataQuery.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/itemsDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/itemsDataQuery.yaml diff --git a/core/standard/openapi/schemas/collections/itemsLink.yaml b/core/standard/openapi/oas30/schemas/collections/itemsLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/itemsLink.yaml rename to core/standard/openapi/oas30/schemas/collections/itemsLink.yaml diff --git a/core/standard/openapi/schemas/collections/locationsDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/locationsDataQuery.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/locationsDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/locationsDataQuery.yaml diff --git a/core/standard/openapi/schemas/collections/locationsLink.yaml b/core/standard/openapi/oas30/schemas/collections/locationsLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/locationsLink.yaml rename to core/standard/openapi/oas30/schemas/collections/locationsLink.yaml diff --git a/core/standard/openapi/schemas/collections/observedPropertyCollection.yaml b/core/standard/openapi/oas30/schemas/collections/observedPropertyCollection.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/observedPropertyCollection.yaml rename to core/standard/openapi/oas30/schemas/collections/observedPropertyCollection.yaml diff --git a/core/standard/openapi/schemas/collections/parameterNames.yaml b/core/standard/openapi/oas30/schemas/collections/parameterNames.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/parameterNames.yaml rename to core/standard/openapi/oas30/schemas/collections/parameterNames.yaml diff --git a/core/standard/openapi/schemas/collections/positionDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/positionDataQuery.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/positionDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/positionDataQuery.yaml diff --git a/core/standard/openapi/schemas/collections/positionLink.yaml b/core/standard/openapi/oas30/schemas/collections/positionLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/positionLink.yaml rename to core/standard/openapi/oas30/schemas/collections/positionLink.yaml diff --git a/core/standard/openapi/schemas/collections/radiusDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/radiusDataQuery.yaml similarity index 88% rename from core/standard/openapi/schemas/collections/radiusDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/radiusDataQuery.yaml index fb31980ad..d8dfee6ef 100644 --- a/core/standard/openapi/schemas/collections/radiusDataQuery.yaml +++ b/core/standard/openapi/oas30/schemas/collections/radiusDataQuery.yaml @@ -12,6 +12,4 @@ properties: type: array items: type: string - example: - - km - - miles + example: km diff --git a/core/standard/openapi/schemas/collections/radiusLink.yaml b/core/standard/openapi/oas30/schemas/collections/radiusLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/radiusLink.yaml rename to core/standard/openapi/oas30/schemas/collections/radiusLink.yaml diff --git a/core/standard/openapi/schemas/collections/trajectoryDataQuery.yaml b/core/standard/openapi/oas30/schemas/collections/trajectoryDataQuery.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/trajectoryDataQuery.yaml rename to core/standard/openapi/oas30/schemas/collections/trajectoryDataQuery.yaml diff --git a/core/standard/openapi/schemas/collections/trajectoryLink.yaml b/core/standard/openapi/oas30/schemas/collections/trajectoryLink.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/trajectoryLink.yaml rename to core/standard/openapi/oas30/schemas/collections/trajectoryLink.yaml diff --git a/core/standard/openapi/schemas/collections/units.yaml b/core/standard/openapi/oas30/schemas/collections/units.yaml similarity index 100% rename from core/standard/openapi/schemas/collections/units.yaml rename to core/standard/openapi/oas30/schemas/collections/units.yaml diff --git a/core/standard/openapi/schemas/core/confClasses.yaml b/core/standard/openapi/oas30/schemas/core/confClasses.yaml similarity index 100% rename from core/standard/openapi/schemas/core/confClasses.yaml rename to core/standard/openapi/oas30/schemas/core/confClasses.yaml diff --git a/core/standard/openapi/schemas/core/exception.yaml b/core/standard/openapi/oas30/schemas/core/exception.yaml similarity index 100% rename from core/standard/openapi/schemas/core/exception.yaml rename to core/standard/openapi/oas30/schemas/core/exception.yaml diff --git a/core/standard/openapi/oas30/schemas/core/landingPage.yaml b/core/standard/openapi/oas30/schemas/core/landingPage.yaml new file mode 100644 index 000000000..3d863b3be --- /dev/null +++ b/core/standard/openapi/oas30/schemas/core/landingPage.yaml @@ -0,0 +1,61 @@ +type: object +required: + - links +properties: + title: + type: string + example: Meteorological data server + description: + type: string + example: Access to Meteorological data via a Web API that conforms to the OGC + API Environmental Data Retrieval specification. + links: + type: array + items: + $ref: link.yaml + example: + href: https://example.org/edr/collections + hreflang: en + rel: data + type: application/json + title: "" + keywords: + type: array + items: + type: string + example: Temperature + provider: + type: object + properties: + name: + description: Name of organization providing the service + type: string + url: + description: Link to service providers website + type: string + contact: + type: object + properties: + email: + description: Email address of service provider + type: string + phone: + description: Phone number of service provider + type: string + fax: + description: Fax number of service provider + type: string + hours: + type: string + instructions: + type: string + address: + type: string + postalCode: + type: string + city: + type: string + stateorprovince: + type: string + country: + type: string diff --git a/core/standard/openapi/schemas/core/link.yaml b/core/standard/openapi/oas30/schemas/core/link.yaml similarity index 100% rename from core/standard/openapi/schemas/core/link.yaml rename to core/standard/openapi/oas30/schemas/core/link.yaml diff --git a/core/standard/openapi/schemas/covjson/anyAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/anyAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/anyAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/anyAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/coverageJSON.yaml b/core/standard/openapi/oas30/schemas/covjson/coverageJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/coverageJSON.yaml rename to core/standard/openapi/oas30/schemas/covjson/coverageJSON.yaml diff --git a/core/standard/openapi/schemas/covjson/domain.yaml b/core/standard/openapi/oas30/schemas/covjson/domain.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/domain.yaml rename to core/standard/openapi/oas30/schemas/covjson/domain.yaml diff --git a/core/standard/openapi/schemas/covjson/ndArray.yaml b/core/standard/openapi/oas30/schemas/covjson/ndArray.yaml similarity index 92% rename from core/standard/openapi/schemas/covjson/ndArray.yaml rename to core/standard/openapi/oas30/schemas/covjson/ndArray.yaml index fb6a2f380..b5d7a7c0d 100644 --- a/core/standard/openapi/schemas/covjson/ndArray.yaml +++ b/core/standard/openapi/oas30/schemas/covjson/ndArray.yaml @@ -32,17 +32,17 @@ oneOf: values: items: type: number - nullable: true + nullable: true - properties: values: items: type: integer - nullable: true + nullable: true - properties: values: items: type: string - nullable: true + nullable: true - properties: shape: minItems: 1 diff --git a/core/standard/openapi/schemas/covjson/numericAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/numericAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/numericAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/numericAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/numericRegularlySpacedAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/numericRegularlySpacedAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/numericRegularlySpacedAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/numericRegularlySpacedAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/numericValuesAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/numericValuesAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/numericValuesAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/numericValuesAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/polygonValuesAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/polygonValuesAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/polygonValuesAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/polygonValuesAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/primitiveValuesAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/primitiveValuesAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/primitiveValuesAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/primitiveValuesAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/referenceSystem.yaml b/core/standard/openapi/oas30/schemas/covjson/referenceSystem.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/referenceSystem.yaml rename to core/standard/openapi/oas30/schemas/covjson/referenceSystem.yaml diff --git a/core/standard/openapi/schemas/covjson/referenceSystemConnection.yaml b/core/standard/openapi/oas30/schemas/covjson/referenceSystemConnection.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/referenceSystemConnection.yaml rename to core/standard/openapi/oas30/schemas/covjson/referenceSystemConnection.yaml diff --git a/core/standard/openapi/schemas/covjson/stringValuesAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/stringValuesAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/stringValuesAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/stringValuesAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/tupleValuesAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/tupleValuesAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/tupleValuesAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/tupleValuesAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/valuesAxis.yaml b/core/standard/openapi/oas30/schemas/covjson/valuesAxis.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/valuesAxis.yaml rename to core/standard/openapi/oas30/schemas/covjson/valuesAxis.yaml diff --git a/core/standard/openapi/schemas/covjson/valuesAxisBase.yaml b/core/standard/openapi/oas30/schemas/covjson/valuesAxisBase.yaml similarity index 100% rename from core/standard/openapi/schemas/covjson/valuesAxisBase.yaml rename to core/standard/openapi/oas30/schemas/covjson/valuesAxisBase.yaml diff --git a/core/standard/openapi/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml b/core/standard/openapi/oas30/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml diff --git a/core/standard/openapi/schemas/edr-geojson/edrProperties.yaml b/core/standard/openapi/oas30/schemas/edr-geojson/edrProperties.yaml similarity index 84% rename from core/standard/openapi/schemas/edr-geojson/edrProperties.yaml rename to core/standard/openapi/oas30/schemas/edr-geojson/edrProperties.yaml index c38c39cff..2af2f8516 100644 --- a/core/standard/openapi/schemas/edr-geojson/edrProperties.yaml +++ b/core/standard/openapi/oas30/schemas/edr-geojson/edrProperties.yaml @@ -19,8 +19,7 @@ properties: title: Date/time Domain description: Either a date-time or a period string that adheres to RFC 3339. Indicates the time instant or period for which data are available from the EDR feature. default: '' - example: - - 2018-02-12T00:00:00Z/2018-03-18T12:31:12Z + example: 2018-02-12T00:00:00Z/2018-03-18T12:31:12Z parameter-name: type: array title: Available Parameters @@ -30,20 +29,16 @@ properties: title: Parameter ID list description: Each entry should contain one parameter ID that can be used to query against the feature. default: '' - example: - - velocity - - temperature + example: velocity label: type: string title: Label description: A label such as a site name or other text to use on a link. default: '' - example: - - Site A + example: Site A edrqueryendpoint: type: string title: EDR Query Endpoint description: A URI identifying the query end point. May identify a specific location. default: '' - example: - - "https://example.org/api/collections/collection/locations/location_123d}" + example: "https://example.org/api/collections/collection/locations/location_123d}" diff --git a/core/standard/openapi/schemas/edr-geojson/observedProperty.yaml b/core/standard/openapi/oas30/schemas/edr-geojson/observedProperty.yaml similarity index 100% rename from core/standard/openapi/schemas/edr-geojson/observedProperty.yaml rename to core/standard/openapi/oas30/schemas/edr-geojson/observedProperty.yaml diff --git a/core/standard/openapi/schemas/edr-geojson/parameter.yaml b/core/standard/openapi/oas30/schemas/edr-geojson/parameter.yaml similarity index 89% rename from core/standard/openapi/schemas/edr-geojson/parameter.yaml rename to core/standard/openapi/oas30/schemas/edr-geojson/parameter.yaml index f54ff11b8..e9ebb6afd 100644 --- a/core/standard/openapi/schemas/edr-geojson/parameter.yaml +++ b/core/standard/openapi/oas30/schemas/edr-geojson/parameter.yaml @@ -4,7 +4,7 @@ properties: id: type: string type: - description: Type of the parameter object, shall be "Parameter" + description: Type of the parameter object, SHALL be "Parameter" type: string enum: - Parameter diff --git a/core/standard/openapi/schemas/edr-geojson/unit.yaml b/core/standard/openapi/oas30/schemas/edr-geojson/unit.yaml similarity index 100% rename from core/standard/openapi/schemas/edr-geojson/unit.yaml rename to core/standard/openapi/oas30/schemas/edr-geojson/unit.yaml diff --git a/core/standard/openapi/schemas/geojson/featureGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/featureGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/featureGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/featureGeoJSON.yaml diff --git a/core/standard/openapi/schemas/geojson/geometrycollectionGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/geometrycollectionGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/geometrycollectionGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/geometrycollectionGeoJSON.yaml diff --git a/core/standard/openapi/schemas/geojson/linestringGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/linestringGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/linestringGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/linestringGeoJSON.yaml diff --git a/core/standard/openapi/schemas/geojson/multilinestringGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/multilinestringGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/multilinestringGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/multilinestringGeoJSON.yaml diff --git a/core/standard/openapi/schemas/geojson/multipointGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/multipointGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/multipointGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/multipointGeoJSON.yaml diff --git a/core/standard/openapi/schemas/geojson/multipolygonGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/multipolygonGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/multipolygonGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/multipolygonGeoJSON.yaml diff --git a/core/standard/openapi/schemas/geojson/pointGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/pointGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/pointGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/pointGeoJSON.yaml diff --git a/core/standard/openapi/schemas/geojson/polygonGeoJSON.yaml b/core/standard/openapi/oas30/schemas/geojson/polygonGeoJSON.yaml similarity index 100% rename from core/standard/openapi/schemas/geojson/polygonGeoJSON.yaml rename to core/standard/openapi/oas30/schemas/geojson/polygonGeoJSON.yaml diff --git a/core/standard/openapi/schemas/i18n.yaml b/core/standard/openapi/oas30/schemas/i18n.yaml similarity index 100% rename from core/standard/openapi/schemas/i18n.yaml rename to core/standard/openapi/oas30/schemas/i18n.yaml diff --git a/core/standard/openapi/schemas/numberMatched.yaml b/core/standard/openapi/oas30/schemas/numberMatched.yaml similarity index 100% rename from core/standard/openapi/schemas/numberMatched.yaml rename to core/standard/openapi/oas30/schemas/numberMatched.yaml diff --git a/core/standard/openapi/schemas/numberReturned.yaml b/core/standard/openapi/oas30/schemas/numberReturned.yaml similarity index 81% rename from core/standard/openapi/schemas/numberReturned.yaml rename to core/standard/openapi/oas30/schemas/numberReturned.yaml index 042cac90e..8635dfadd 100644 --- a/core/standard/openapi/schemas/numberReturned.yaml +++ b/core/standard/openapi/oas30/schemas/numberReturned.yaml @@ -5,7 +5,7 @@ description: |- A server may omit this information in a response, if the information about the number of features is not known or difficult to compute. - If the value is provided, the value shall be identical to the number + If the value is provided, the value SHALL be identical to the number of items in the "features" array. minimum: 0 example: 10 \ No newline at end of file diff --git a/core/standard/openapi/schemas/parameterGroup.yaml b/core/standard/openapi/oas30/schemas/parameterGroup.yaml similarity index 88% rename from core/standard/openapi/schemas/parameterGroup.yaml rename to core/standard/openapi/oas30/schemas/parameterGroup.yaml index e7d610339..8636c60a7 100644 --- a/core/standard/openapi/schemas/parameterGroup.yaml +++ b/core/standard/openapi/oas30/schemas/parameterGroup.yaml @@ -2,7 +2,7 @@ type: object description: Represents logical groups of parameters properties: type: - description: Type of the parameter group object, shall be "ParameterGroup" + description: Type of the parameter group object, SHALL be "ParameterGroup" type: string enum: - ParameterGroup diff --git a/core/standard/openapi/oas30/schemas/queries/instances.yaml b/core/standard/openapi/oas30/schemas/queries/instances.yaml new file mode 100644 index 000000000..0edf55715 --- /dev/null +++ b/core/standard/openapi/oas30/schemas/queries/instances.yaml @@ -0,0 +1,18 @@ +type: object +required: + - links + - instances +properties: + links: + type: array + items: + $ref: ../core/link.yaml + example: + href: https://example.org/edr/collections/the_collection_id/instances + hreflang: en + rel: self + type: application/json + instances: + type: array + items: + $ref: ../collections/collection.yaml diff --git a/core/standard/openapi/oas31/examples/LandingPageExample.json b/core/standard/openapi/oas31/examples/LandingPageExample.json new file mode 100644 index 000000000..fa29e242a --- /dev/null +++ b/core/standard/openapi/oas31/examples/LandingPageExample.json @@ -0,0 +1,14 @@ +{ + "title": "Example API Landing Page", + "description": "This is an example of an API landing page in JSON format,", + "links": [ + { "href": "https://example.org/", + "rel": "self", "type": "application/json", "title": "this document" }, + { "href": "https://example.org/api", + "rel": "service-desc", "type": "application/vnd.oai.openapi+json;version=3.0", "title": "the API definition" }, + { "href": "https://example.org/conformance", + "rel": "conformance", "type": "application/json", "title": "OGC conformance classes implemented by this API" }, + { "href": "https://example.org/collections", + "rel": "data", "type": "application/json", "title": "Metadata about the resource collections" } + ] +} diff --git a/core/standard/openapi/oas31/examples/LandingPageExample2.json b/core/standard/openapi/oas31/examples/LandingPageExample2.json new file mode 100644 index 000000000..769c257c1 --- /dev/null +++ b/core/standard/openapi/oas31/examples/LandingPageExample2.json @@ -0,0 +1,72 @@ +{ + "title": "Some Title for this API", + "description": "Some description for this API.", + "links": [ + { + "rel": "service", + "type": "application/json", + "title": "API definition for this enpoint as JSON", + "href": "https://example.com/oapi-c/api?f=application/json" + }, + { + "rel": "service", + "type": "application/vnd.ogc_wfs+xml", + "title": "API definition for this endpoint as XML", + "href": "https://example.com/oapi-c/api?f=application/vnd.ogc_wfs+xml" + }, + { + "rel": "conformance", + "type": "application/json", + "title": "Conformance Declaration as JSON", + "href": "https://example.com/oapi-c/conformance?f=application/json" + }, + { + "rel": "conformance", + "type": "application/xml", + "title": "Conformance Declaration as XML", + "href": "https://example.com/oapi-c/conformance?f=application/xml" + }, + { + "rel": "conformance", + "type": "text/html", + "title": "Conformance Declaration as HTML", + "href": "https://example.com/oapi-c/conformance?f=text/html" + }, + { + "rel": "data", + "type": "application/json", + "title": "Collections Metadata as JSON", + "href": "https://example.com/oapi-c/collections?f=application/json" + }, + { + "rel": "data", + "type": "application/xml", + "title": "Collections Metadata as XML", + "href": "https://example.com/oapi-c/collections?f=application/xml" + }, + { + "rel": "data", + "type": "text/html", + "title": "Collections Metadata as HTML", + "href": "https://example.com/oapi-c/collections?f=text/html" + }, + { + "rel": "self", + "type": "application/json", + "title": "This Document", + "href": "https://example.com/oapi-c?f=application/json" + }, + { + "rel": "alternate", + "type": "application/xml", + "title": "This Document as XML", + "href": "https://example.com/oapi-c?f=application/xml" + }, + { + "rel": "alternate", + "type": "text/html", + "title": "This Document as HTML", + "href": "https://example.com/oapi-c?f=text/html" + } + ] +} diff --git a/core/standard/openapi/oas31/examples/collection.json b/core/standard/openapi/oas31/examples/collection.json new file mode 100644 index 000000000..4548791cf --- /dev/null +++ b/core/standard/openapi/oas31/examples/collection.json @@ -0,0 +1,691 @@ +{ + "links": [ + { + "href": "https://example.org/edr/collections/?f=json", + "hreflang": "en", + "rel": "self", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/f=html", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + }, + { + "href": "https://example.org/edr/collections/f=xml", + "hreflang": "en", + "rel": "alternate", + "type": "application/xml" + } + ], + "collections": [ + { + "id": "hrly_obs", + "title": "Hourly Site Specific observations", + "description": "Observation data for UK observing sites", + "keywords": [ + "Wind Direction", + "Wind Speed", + "Wind Gust", + "Air Temperature", + "Weather", + "Relative Humidity", + "Dew point", + "Pressure", + "Pressure Tendancy", + "Visibility" + ], + "links": [ + { + "href": "https://example.org/uk-hourly-site-specific-observations", + "hreflang": "en", + "rel": "service-doc", + "type": "text/html" + }, + { + "href": "https://example.org/terms-and-conditions---datapoint#datalicence", + "hreflang": "en", + "rel": "license", + "type": "text/html" + }, + { + "href": "https://example.org/data/datapoint/terms-and-conditions---datapoint#termsofservice", + "hreflang": "en", + "rel": "restrictions", + "type": "text/html" + }, + { + "href": "https://example.org/edr/collections/hrly_obs?f=json", + "hreflang": "en", + "rel": "collection", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/hrly_obs?f=html", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + }, + { + "href": "https://example.org/edr/collections/hrly_obs?f=xml", + "hreflang": "en", + "rel": "alternate", + "type": "application/xml" + } + ], + "extent": { + "spatial": { + "bbox": [[ + -15.0, + 48.0, + 5.0, + 62.0 + ]], + "crs": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + }, + "temporal": { + "interval": [ + ["2020-04-19T11:00:00Z","2020-06-30T09:00:00Z"] + ], + "values": [ + "2020-04-19T11:00:00Z/2020-06-30T09:00:00Z" + ], + "trs": "TIMECRS[\"DateTime\",TDATUM[\"Gregorian Calendar\"],CS[TemporalDateTime,1],AXIS[\"Time (T)\",future]]" + } + }, + "data_queries" : { + "position": { + "link": { + "href": "https://example.org/edr/collections/hrly_obs/position?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Position query", + "description": "Position query", + "coords" :{ + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "IWXXM" + ], + "default_output_format": "IWXXM", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "radius": { + "link": { + "href": "https://example.org/edr/collections/hrly_obs/radius?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Radius query", + "description": "Radius query", + "coords" :{ + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "IWXXM" + ], + "default_output_format": "GeoJSON", + "within_units": [ + "km", + "miles" + ], + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "area": { + "link": { + "href": "https://example.org/edr/collections/hrly_obs/area?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Area query", + "description": "Area query", + "coords" :{ + "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "BUFR", + "IWXXM" + ], + "default_output_format": "CoverageJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "locations": { + "link": { + "href": "https://example.org/edr/collections/hrly_obs/locations", + "hreflang": "en", + "rel": "data", + "templated": false, + "variables": { + "title": "Location query", + "description": "Location query", + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "BUFR", + "IWXXM" + ], + "default_output_format": "CoverageJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + } + }, + "crs": [ + "https://www.opengis.net/def/crs/OGC/1.3/CRS84" + ], + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "IWXXM" + ], + "parameter_names": { + "Wind Direction": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degree true", + "symbol": { + "value": "°", + "type": "https://example.org/edr/metadata/units/degree" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_windDirection", + "label": "Wind Direction" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Speed": { + "type": "Parameter", + "description": "", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_windSpeed", + "label": "Wind Speed" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Gust": { + "type": "Parameter", + "description": "", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_maximumWindGustSpeed", + "label": "Wind Gust" + }, + "measurementType": { + "method": "maximum", + "duration": "-PT10M" + } + }, + "Air Temperature": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Air Temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Weather": { + "type": "Parameter", + "description": "", + "unit": { + "label": "weather", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_weather" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/wmdr/ObservedVariableAtmosphere/_266", + "label": "Weather" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Relative Humidity": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/bufr4/b/13/_009", + "label": "Relative Humidity" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Dew point": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_dewPointTemperature", + "label": "Dew point" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Pressure": { + "type": "Parameter", + "description": "", + "unit": { + "label": "hPa", + "symbol": { + "value": "hPa", + "type": "https://example.org/edr/metadata/units/hPa" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/bufr4/b/10/_051", + "label": "Pressure" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Pressure Tendancy": { + "type": "Parameter", + "description": "", + "unit": { + "label": "tendency", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/units/hPa" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_pressureTendency", + "label": "Pressure Tendancy" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Visibility": { + "type": "Parameter", + "description": "", + "unit": { + "label": "m", + "symbol": { + "value": "m", + "type": "https://example.org/edr/metadata/units/m" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_horizontalVisibility", + "label": "Visibility" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + } + } + }, + { + "id": "UK 3 hourly forecast", + "title": "UK 3 Hourly Site Specific Forecast", + "description": "Five day site specific forecast for 6000 UK locations", + "keywords": [ + "Wind Direction", + "Wind Speed", + "Wind Gust", + "Air Temperature", + "Weather", + "Relative Humidity", + "Feels like temperature", + "UV index", + "Probabilty of precipitation", + "Visibility" + ], + "links": [ + { + "href": "https://example.org/uk-3-hourly-site-specific-forecast", + "hreflang": "en", + "rel": "service-doc", + "type": "text/html" + }, + { + "href": "https://example.org/terms-and-conditions---datapoint#datalicence", + "hreflang": "en", + "rel": "licence", + "type": "text/html" + }, + { + "href": "https://example.org/terms-and-conditions---datapoint#termsofservice", + "hreflang": "en", + "rel": "restrictions", + "type": "text/html" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst?f=json", + "hreflang": "en", + "rel": "collection", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst?f=html", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst?f=xml", + "hreflang": "en", + "rel": "alternate", + "type": "application/xml" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances?f=json", + "hreflang": "en", + "rel": "collection" + } + ], + "extent": { + "spatial": { + "bbox": [[ + -15.0, + 48.0, + 5.0, + 62.0 + ]], + "crs": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + }, + "temporal": { + "interval": [ + ["2020-04-19T11:00:00Z","2020-06-30T09:00:00Z"] + ], + "values": [ + "2020-04-19T11:00:00Z/2020-06-30T09:00:00Z" + ], + "trs": "TIMECRS[\"DateTime\",TDATUM[\"Gregorian Calendar\"],CS[TemporalDateTime,1],AXIS[\"Time (T)\",future]]" + } + }, + "crs": [ + "https://www.opengis.net/def/crs/OGC/1.3/CRS84" + ], + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "parameter_names": { + "Wind Direction": { + "type": "Parameter", + "description": "Direction wind is from", + "unit": { + "label": "degree true", + "symbol": { + "value": "°", + "type": "https://example.org/edr/metadata/units/degree" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-0", + "label": "Wind Direction" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Speed": { + "type": "Parameter", + "description":"Average wind speed", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Speed" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Gust": { + "type": "Parameter", + "description": "Wind gusts are a rapid increase in strength of the wind relative to the wind speed.", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Gust" + }, + "measurementType": { + "method": "maximum", + "duration": "-PT10M" + } + }, + "Air Temperature": { + "type": "Parameter", + "description": "2m air temperature in the shade and out of the wind", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Air Temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Weather": { + "type": "Parameter", + "description": "", + "unit": { + "label": "weather", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_weather" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/wmdr/ObservedVariableAtmosphere/_266", + "label": "Weather" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Relative Humidity": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Relative Humidity" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Feels like temperature": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Feels like temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "UV index": { + "type": "Parameter", + "description": "", + "unit": { + "label": "UV_index", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_uv" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-4-51", + "label": "UV index" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Probabilty of precipitation": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Probabilty of precipitation" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Visibility": { + "type": "Parameter", + "description": "", + "unit": { + "label": "quality", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_visibility" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_horizontalVisibility", + "label": "Visibility" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + } + } + } + ] +} diff --git a/core/standard/openapi/oas31/examples/instance.json b/core/standard/openapi/oas31/examples/instance.json new file mode 100644 index 000000000..9e45d90a7 --- /dev/null +++ b/core/standard/openapi/oas31/examples/instance.json @@ -0,0 +1,1488 @@ +{ + "links": [ + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/", + "hreflang": "en", + "rel": "self", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/", + "hreflang": "en", + "rel": "alternate", + "type": "application/xml" + }, + { + "href": "https://example.org/terms-and-conditions---datapoint#termsofservice", + "hreflang": "en", + "rel": "restrictions", + "type": "text/html", + "title": "" + }, + { + "href": "https://example.org/terms-and-conditions---datapoint#datalicence", + "hreflang": "en", + "rel": "license", + "type": "text/html", + "title": "" + }, + { + "href": "https://example.org/uk-3-hourly-site-specific-forecast", + "hreflang": "en", + "rel": "service-doc", + "type": "text/html", + "title": "" + } + ], + "instances": [ + { + "id": "2020-06-30T10:00:00Z", + "title": "3 hrly fcst", + "description": "Five day site specific forecast for 6000 UK locations 3 hrly fcst", + "keywords": [ + "Wind Direction", + "Wind Speed", + "Wind Gust", + "Air Temperature", + "Weather", + "Relative Humidity", + "Feels like temperature", + "UV index", + "Probabilty of precipitation", + "Visibility" + ], + "links": [ + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T10:00:00Z?f=json", + "hreflang": "en", + "rel": "collection", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T10:00:00Zf=html", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + } + ], + "extent": { + "spatial": { + "bbox": [[ + -15.0, + 48.0, + 5.0, + 62.0 + ]], + "crs": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + }, + "temporal": { + "interval": [ + ["2020-06-30T06:00:00Z","2020-07-04T21:00:00Z"] + ], + "values": [ + "2020-06-30T06:00:00Z/2020-07-04T21:00:00Z" + ], + "trs": "TIMECRS[\"DateTime\",TDATUM[\"Gregorian Calendar\"],CS[TemporalDateTime,1],AXIS[\"Time (T)\",future]]" + } + }, + "data_queries": { + "position": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T10:00:00Z/position?coords={coords}", + "hreflang": "en", + "rel": "data", + "title": "", + "templated": true, + "variables": { + "title": "Position query", + "description": "Position query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "radius": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T10:00:00Z/radius?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Radius query", + "description": "Radius query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "GeoJSON", + "within_units": [ + "km", + "miles" + ], + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "area": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T10:00:00Z/area?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Area query", + "description": "Area query", + "coords": { + "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "CoverageJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "locations": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T10:00:00Z/locations", + "hreflang": "en", + "rel": "data", + "templated": false, + "variables": { + "title": "Locations query", + "description": "Locations query", + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + } + }, + "crs": [ + "https://www.opengis.net/def/crs/OGC/1.3/CRS84" + ], + "output_formats": [ + "GeoJSON", + "CoverageJSON", + "CSV" + ], + "parameter_names": { + "Wind Direction": { + "type": "Parameter", + "description": "Direction wind is from", + "unit": { + "label": "degree true", + "symbol": { + "value": "°", + "type": "https://example.org/edr/metadata/units/degree" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-0", + "label": "Wind Direction" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Speed": { + "type": "Parameter", + "description": "Average wind speed", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Speed" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Gust": { + "type": "Parameter", + "description": "Wind gusts are a rapid increase in strength of the wind relative to the wind speed.", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Gust" + }, + "measurementType": { + "method": "maximum", + "duration": "-PT10M" + } + }, + "Air Temperature": { + "type": "Parameter", + "description": "2m air temperature in the shade and out of the wind", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Air Temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Weather": { + "type": "Parameter", + "description": "", + "unit": { + "label": "weather", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_weather" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/wmdr/ObservedVariableAtmosphere/_266", + "label": "Weather" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Relative Humidity": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Relative Humidity" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Feels like temperature": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Feels like temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "UV index": { + "type": "Parameter", + "description": "", + "unit": { + "label": "UV_index", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_uv" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-4-51", + "label": "UV index" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Probabilty of precipitation": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Probabilty of precipitation" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Visibility": { + "type": "Parameter", + "description": "", + "unit": { + "label": "quality", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_visibility" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_horizontalVisibility", + "label": "Visibility" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + } + } + }, + { + "id": "2020-06-30T09:00:00Z", + "title": "3 hrly fcst", + "description": "Five day site specific forecast for 6000 UK locations 3 hrly fcst", + "keywords": [ + "Wind Direction", + "Wind Speed", + "Wind Gust", + "Air Temperature", + "Weather", + "Relative Humidity", + "Feels like temperature", + "UV index", + "Probabilty of precipitation", + "Visibility" + ], + "links": [ + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T09:00:00Z?f=json", + "hreflang": "en", + "rel": "collection", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T09:00:00Zf=html", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + } + ], + "extent": { + "spatial": { + "bbox": [[ + -15.0, + 48.0, + 5.0, + 62.0 + ]], + "crs": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + }, + "temporal": { + "interval": [ + ["2020-06-30T06:00:00Z","2020-07-04T21:00:00Z"] + ], + "values": [ + "2020-06-30T06:00:00Z/2020-07-04T21:00:00Z" + ], + "trs": "TIMECRS[\"DateTime\",TDATUM[\"Gregorian Calendar\"],CS[TemporalDateTime,1],AXIS[\"Time (T)\",future]]" + } + }, + "data_queries": { + "position": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T09:00:00Z/position?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Position query", + "description": "Position query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "radius": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T09:00:00Z/radius?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Radius query", + "description": "Radius query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "GeoJSON", + "within_units": [ + "km", + "miles" + ], + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "area": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T09:00:00Z/area?coords={coords}", + "hreflang": "en", + "rel": "data", + "title": "", + "templated": true, + "variables": { + "title": "Area query", + "description": "Area query", + "coords": { + "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "CoverageJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "locations": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T09:00:00Z/locations", + "hreflang": "en", + "rel": "data", + "templated": false, + "variables": { + "title": "Locations query", + "description": "Locations query", + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + } + }, + "crs": [ + "https://www.opengis.net/def/crs/OGC/1.3/CRS84" + ], + "output_formats": [ + "GeoJSON", + "CoverageJSON", + "CSV" + ], + "parameter_names": { + "Wind Direction": { + "type": "Parameter", + "description": "Direction wind is from", + "unit": { + "label": "degree true", + "symbol": { + "value": "°", + "type": "https://example.org/edr/metadata/units/degree" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-0", + "label": "Wind Direction" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Speed": { + "type": "Parameter", + "description": "Average wind speed", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Speed" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Gust": { + "type": "Parameter", + "description": "Wind gusts are a rapid increase in strength of the wind relative to the wind speed.", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Gust" + }, + "measurementType": { + "method": "maximum", + "duration": "-PT10M" + } + }, + "Air Temperature": { + "type": "Parameter", + "description": "2m air temperature in the shade and out of the wind", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Air Temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Weather": { + "type": "Parameter", + "description": "", + "unit": { + "label": "weather", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_weather" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/wmdr/ObservedVariableAtmosphere/_266", + "label": "Weather" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Relative Humidity": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Relative Humidity" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Feels like temperature": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Feels like temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "UV index": { + "type": "Parameter", + "description": "", + "unit": { + "label": "UV_index", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_uv" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-4-51", + "label": "UV index" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Probabilty of precipitation": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Probabilty of precipitation" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Visibility": { + "type": "Parameter", + "description": "", + "unit": { + "label": "quality", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_visibility" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_horizontalVisibility", + "label": "Visibility" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + } + } + }, + { + "id": "2020-06-30T08:00:00Z", + "title": "3 hrly fcst", + "description": "Five day site specific forecast for 6000 UK locations 3 hrly fcst", + "keywords": [ + "Wind Direction", + "Wind Speed", + "Wind Gust", + "Air Temperature", + "Weather", + "Relative Humidity", + "Feels like temperature", + "UV index", + "Probabilty of precipitation", + "Visibility" + ], + "links": [ + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T08:00:00Zf=json", + "hreflang": "en", + "rel": "collection", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T08:00:00Zf=html", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + } + ], + "extent": { + "spatial": { + "bbox": [[ + -15.0, + 48.0, + 5.0, + 62.0 + ]], + "crs": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + }, + "temporal": { + "interval": [ + ["2020-06-30T06:00:00Z","2020-07-04T21:00:00Z"] + ], + "values": [ + "2020-06-30T06:00:00Z/2020-07-04T21:00:00Z" + ], + "trs": "TIMECRS[\"DateTime\",TDATUM[\"Gregorian Calendar\"],CS[TemporalDateTime,1],AXIS[\"Time (T)\",future]]" + } + }, + "data_queries": { + "position": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T08:00:00Z/position?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Position query", + "description": "Position query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "radius": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T08:00:00Z/radius?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Radius query", + "description": "Radius query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "GeoJSON", + "within_units": [ + "km", + "miles" + ], + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "area": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T08:00:00Z/area?coords={coords}", + "hreflang": "en", + "rel": "data", + "title": "", + "templated": true, + "variables": { + "title": "Area query", + "description": "Area query", + "coords": { + "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "CoverageJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "locations": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T08:00:00Z/locations", + "hreflang": "en", + "rel": "data", + "templated": false, + "variables": { + "title": "Locations query", + "description": "Locations query", + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + } + }, + "crs": [ + "https://www.opengis.net/def/crs/OGC/1.3/CRS84" + ], + "output_formats": [ + "GeoJSON", + "CoverageJSON", + "CSV" + ], + "parameter_names": { + "Wind Direction": { + "type": "Parameter", + "description": "Direction wind is from", + "unit": { + "label": "degree true", + "symbol": { + "value": "°", + "type": "https://example.org/edr/metadata/units/degree" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-0", + "label": "Wind Direction" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Speed": { + "type": "Parameter", + "description": "Average wind speed", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Speed" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Gust": { + "type": "Parameter", + "description": "Wind gusts are a rapid increase in strength of the wind relative to the wind speed.", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Gust" + }, + "measurementType": { + "method": "maximum", + "duration": "-PT10M" + } + }, + "Air Temperature": { + "type": "Parameter", + "description": "2m air temperature in the shade and out of the wind", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Air Temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Weather": { + "type": "Parameter", + "description": "", + "unit": { + "label": "weather", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_weather" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/wmdr/ObservedVariableAtmosphere/_266", + "label": "Weather" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Relative Humidity": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Relative Humidity" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Feels like temperature": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Feels like temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "UV index": { + "type": "Parameter", + "description": "", + "unit": { + "label": "UV_index", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_uv" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-4-51", + "label": "UV index" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Probabilty of precipitation": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Probabilty of precipitation" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Visibility": { + "type": "Parameter", + "description": "", + "unit": { + "label": "quality", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_visibility" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_horizontalVisibility", + "label": "Visibility" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + } + } + }, + { + "id": "2020-06-30T07:00:00Z", + "title": "3 hrly fcst", + "description": "Five day site specific forecast for 6000 UK locations 3 hrly fcst", + "keywords": [ + "Wind Direction", + "Wind Speed", + "Wind Gust", + "Air Temperature", + "Weather", + "Relative Humidity", + "Feels like temperature", + "UV index", + "Probabilty of precipitation", + "Visibility" + ], + "links": [ + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T07:00:00Zf=json", + "hreflang": "en", + "rel": "collection", + "type": "application/json" + }, + { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T07:00:00Zf=html", + "hreflang": "en", + "rel": "alternate", + "type": "text/html" + } + ], + "extent": { + "spatial": { + "bbox": [[ + -15.0, + 48.0, + 5.0, + 62.0 + ]], + "crs": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + }, + "temporal": { + "interval": [ + ["2020-06-30T06:00:00Z","2020-07-04T21:00:00Z"] + ], + "values": [ + "2020-06-30T06:00:00Z/2020-07-04T21:00:00Z" + ], + "trs": "TIMECRS[\"DateTime\",TDATUM[\"Gregorian Calendar\"],CS[TemporalDateTime,1],AXIS[\"Time (T)\",future]]" + } + }, + "data_queries": { + "position": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T07:00:00Z/position?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Position query", + "description": "Position query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "radius": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T07:00:00Z/radius?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Radius query", + "description": "Radius query", + "coords": { + "description": "Well Known Text POINT value i.e. POINT(-120, 55)" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "GeoJSON", + "within_units": [ + "km", + "miles" + ], + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "area": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T07:00:00Z/area?coords={coords}", + "hreflang": "en", + "rel": "data", + "templated": true, + "variables": { + "title": "Area query", + "description": "Area query", + "coords": { + "description": "Well Known Text POLYGON value i.e. POLYGON((-79 40,-79 38,-75 38,-75 41,-79 40))" + }, + "output_formats": [ + "CoverageJSON", + "GeoJSON", + "CSV" + ], + "default_output_format": "CoverageJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + }, + "locations": { + "link": { + "href": "https://example.org/edr/collections/3_hrly_fcst/instances/2020-06-30T07:00:00Z/locations", + "hreflang": "en", + "rel": "data", + "templated": false, + "variables": { + "title": "Locations query", + "description": "Locations query", + "output_formats": [ + "CoverageJSON", + "GeoJSON" + ], + "default_output_format": "GeoJSON", + "crs_details": [ + { + "crs": "CRS84", + "wkt": "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]" + } + ] + } + } + } + }, + "crs": [ + "https://www.opengis.net/def/crs/OGC/1.3/CRS84" + ], + "output_formats": [ + "GeoJSON", + "CoverageJSON", + "CSV" + ], + "parameter_names": { + "Wind Direction": { + "type": "Parameter", + "description": "Direction wind is from", + "unit": { + "label": "degree true", + "symbol": { + "value": "°", + "type": "https://example.org/edr/metadata/units/degree" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-0", + "label": "Wind Direction" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Speed": { + "type": "Parameter", + "description": "Average wind speed", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Speed" + }, + "measurementType": { + "method": "mean", + "duration": "-PT10M" + } + }, + "Wind Gust": { + "type": "Parameter", + "description": "Wind gusts are a rapid increase in strength of the wind relative to the wind speed.", + "unit": { + "label": "mph", + "symbol": { + "value": "mph", + "type": "https://example.org/edr/metadata/units/mph" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-2-1", + "label": "Wind Gust" + }, + "measurementType": { + "method": "maximum", + "duration": "-PT10M" + } + }, + "Air Temperature": { + "type": "Parameter", + "description": "2m air temperature in the shade and out of the wind", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Air Temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Weather": { + "type": "Parameter", + "description": "", + "unit": { + "label": "weather", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_weather" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/wmdr/ObservedVariableAtmosphere/_266", + "label": "Weather" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Relative Humidity": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Relative Humidity" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Feels like temperature": { + "type": "Parameter", + "description": "", + "unit": { + "label": "degC", + "symbol": { + "value": "°C", + "type": "https://example.org/edr/metadata/units/degC" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_airTemperature", + "label": "Feels like temperature" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "UV index": { + "type": "Parameter", + "description": "", + "unit": { + "label": "UV_index", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_uv" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-4-51", + "label": "UV index" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Probabilty of precipitation": { + "type": "Parameter", + "description": "", + "unit": { + "label": "percent", + "symbol": { + "value": "%", + "type": "https://example.org/edr/metadata/units/percent" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/grib2/codeflag/4.2/_0-1-1", + "label": "Probabilty of precipitation" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + }, + "Visibility": { + "type": "Parameter", + "description": "", + "unit": { + "label": "quality", + "symbol": { + "value": "", + "type": "https://example.org/edr/metadata/lookup/mo_dp_visibility" + } + }, + "observedProperty": { + "id": "https://codes.wmo.int/common/quantity-kind/_horizontalVisibility", + "label": "Visibility" + }, + "measurementType": { + "method": "instantaneous", + "duration": "PT0M" + } + } + } + } + ] +} diff --git a/core/standard/openapi/oas31/parameters/collections/collectionId.yaml b/core/standard/openapi/oas31/parameters/collections/collectionId.yaml new file mode 100644 index 000000000..648d15b43 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/collections/collectionId.yaml @@ -0,0 +1,6 @@ +name: collectionId +in: path +description: Identifier (id) of a specific collection +required: true +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/areaCoords.yaml b/core/standard/openapi/oas31/parameters/core/areaCoords.yaml new file mode 100644 index 000000000..f95d8e5b3 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/areaCoords.yaml @@ -0,0 +1,25 @@ +name: coords +in: query +description: |- + Only data that has a geometry that intersects the area defined by the polygon + are selected. + + The polygon is defined using a Well Known Text string following + + coords=POLYGON((x y,x1 y1,x2 y2,...,xn yn x y)) + + which are values in the coordinate system defined by the crs query parameter + (if crs is not defined the values will be assumed to be WGS84 longitude/latitude coordinates). + + For instance a polygon that roughly describes an area that contains + South West England in WGS84 would look like: + + coords=POLYGON((-6.1 50.3,-4.35 51.4,-2.6 51.6,-2.8 50.6,-5.3 49.9,-6.1,50.3)) + + see https://portal.ogc.org/files/?artifact_id=25355 and + https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry + + The coords parameter will only support 2D POLYGON definitions +required: true +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/bbox.yaml b/core/standard/openapi/oas31/parameters/core/bbox.yaml new file mode 100644 index 000000000..db92270f9 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/bbox.yaml @@ -0,0 +1,39 @@ +name: bbox +in: query +description: |- + Only features that have a geometry that intersects the bounding box are selected. + The bounding box is provided as four or six numbers, depending on whether the + coordinate reference system includes a vertical axis (height or depth): + * Lower left corner, coordinate axis 1 + * Lower left corner, coordinate axis 2 + * Minimum value, coordinate axis 3 (optional) + * Upper right corner, coordinate axis 1 + * Upper right corner, coordinate axis 2 + * Maximum value, coordinate axis 3 (optional) + The coordinate reference system of the values is WGS 84 longitude/latitude + (https://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate + reference system is specified in the parameter `bbox-crs`. + For WGS 84 longitude/latitude the values are in most cases the sequence of + minimum longitude, minimum latitude, maximum longitude and maximum latitude. + However, in cases where the box spans the antimeridian the first value + (west-most box edge) is larger than the third value (east-most box edge). + If the vertical axis is included, the third and the sixth number are the + bottom and the top of the 3-dimensional bounding box. + If a feature has multiple spatial geometry properties, it is the decision of the + server whether only a single spatial geometry property is used to determine + the extent or all relevant geometries. +required: false +schema: + oneOf: + - items: + type: number + type: array + minItems: 4 + maxItems: 4 + - items: + type: number + type: array + minItems: 6 + maxItems: 6 +style: form +explode: false \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/corridor-height.yaml b/core/standard/openapi/oas31/parameters/core/corridor-height.yaml new file mode 100644 index 000000000..be9584de2 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/corridor-height.yaml @@ -0,0 +1,20 @@ +name: corridor-height +in: query +description: |+ + height of the corridor + + The height value represents the whole height of the corridor where + the trajectory supplied in the `coords` query parameter is the centre + point of the corridor + + `corridor-height={height}` + + e.g. corridor-height=100 + + Would be a request for a corridor 100 units high with the coords parameter values being the centre point of the requested corridor, + the request would be for data values 50 units either side of the trajectory coordinates defined in the coords parameter. + + The height units supported by the collection will be provided in the API metadata responses +required: true +schema: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/corridor-width.yaml b/core/standard/openapi/oas31/parameters/core/corridor-width.yaml new file mode 100644 index 000000000..e98656e8a --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/corridor-width.yaml @@ -0,0 +1,20 @@ +name: corridor-width +in: query +description: |+ + width of the corridor + + The width value represents the whole width of the corridor where + the trajectory supplied in the `coords` query parameter is the centre + point of the corridor + + `corridor-width={width}` + + e.g. corridor-width=100 + + Would be a request for a corridor 100 units wide with the coords parameter values being the centre point of the requested corridor, + the request would be for data values 50 units either side of the trajectory coordinates defined in the coords parameter. + + The width units supported by the collection will be provided in the API metadata responses +required: true +schema: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/crs.yaml b/core/standard/openapi/oas31/parameters/core/crs.yaml new file mode 100644 index 000000000..f7546831b --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/crs.yaml @@ -0,0 +1,10 @@ +name: crs +in: query +description: identifier (id) of the coordinate system to return data in list of valid crs identifiers for the chosen collection are defined in the metadata responses. If not supplied the coordinate reference system will default to WGS84. +required: false +examples: + native: + summary: name of the native resolution + value: native +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/cube-bbox.yaml b/core/standard/openapi/oas31/parameters/core/cube-bbox.yaml new file mode 100644 index 000000000..432d5fa3c --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/cube-bbox.yaml @@ -0,0 +1,32 @@ +name: bbox +in: query +description: |- + Only features that have a geometry that intersects the bounding box are selected. + The bounding box is provided as four numbers: + * Lower left corner, coordinate axis 1 + * Lower left corner, coordinate axis 2 + * Upper right corner, coordinate axis 1 + * Upper right corner, coordinate axis 2 + + For WGS 84 longitude/latitude the values are in most cases the sequence of + minimum longitude, minimum latitude, maximum longitude and maximum latitude. + However, in cases where the box spans the antimeridian the first value + (west-most box edge) is larger than the third value (east-most box edge). + If 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. +required: true +schema: + oneOf: + - items: + type: number + type: array + minItems: 4 + maxItems: 4 + - items: + type: number + type: array + minItems: 6 + maxItems: 6 +style: form +explode: false \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/cube-z.yaml b/core/standard/openapi/oas31/parameters/core/cube-z.yaml new file mode 100644 index 000000000..843cda4e3 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/cube-z.yaml @@ -0,0 +1,35 @@ +name: z +in: query +description: |+ + Define the vertical levels to return data from + + The value will override any vertical values defined in the BBOX query parameter + + A range to return data for all levels between and including 2 defined levels + + i.e. z=minimum value/maximum value + + for instance if all values between and including 10m and 100m + + z=10/100 + + A list of height values can be specified + i.e. z=value1,value2,value3 + + for instance if values at 2m, 10m and 80m are required + + z=2,10,80 + + An Arithmetic sequence using Recurring height intervals, the difference is the number of recurrences is defined at the start + and the amount to increment the height by is defined at the end + + i.e. z=Rn/min height/height interval + + so if the request was for 20 height levels 50m apart starting at 100m: + + z=R20/100/50 + + When not specified data from all available heights SHOULD be returned +required: false +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/f.yaml b/core/standard/openapi/oas31/parameters/core/f.yaml new file mode 100644 index 000000000..bcea8af80 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/f.yaml @@ -0,0 +1,6 @@ +name: f +in: query +description: format to return the data response in +required: false +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/height-units.yaml b/core/standard/openapi/oas31/parameters/core/height-units.yaml new file mode 100644 index 000000000..76c57bef8 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/height-units.yaml @@ -0,0 +1,8 @@ +name: height-units +in: query +description: Distance units for the corridor-height parameter +required: true +examples: + - KM +schema: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/limit.yaml b/core/standard/openapi/oas31/parameters/core/limit.yaml new file mode 100644 index 000000000..a788a3f54 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/limit.yaml @@ -0,0 +1,10 @@ +name: limit +in: query +description: Defines the maximum number of features to return in a request +required: false +examples: + limitval: + summary: number of features to return + value: 10 +schema: + type: number diff --git a/core/standard/openapi/oas31/parameters/core/parameter-name.yaml b/core/standard/openapi/oas31/parameters/core/parameter-name.yaml new file mode 100644 index 000000000..85b8ff9db --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/parameter-name.yaml @@ -0,0 +1,8 @@ +name: parameter-name +in: query +description: comma delimited list of parameters to retrieve data for. Valid parameters are listed in the collections metadata +schema: + type: string +style: form +explode: false +required: false diff --git a/core/standard/openapi/oas31/parameters/core/positionCoords.yaml b/core/standard/openapi/oas31/parameters/core/positionCoords.yaml new file mode 100644 index 000000000..9aff64f0b --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/positionCoords.yaml @@ -0,0 +1,23 @@ +name: coords +in: query +description: |+ + location(s) to return data for, the coordinates are defined by a Well Known Text + (wkt) string. to retrieve a single location : + + POINT(x y) i.e. POINT(0 51.48) for Greenwich, London + + And for a list of locations + + MULTIPOINT((x y),(x1 y1),(x2 y2),(x3 y3)) + + i.e. + MULTIPOINT((38.9 -77),(48.85 2.35),(39.92 116.38),(-35.29 149.1),(51.5 -0.1)) + + see https://portal.ogc.org/files/?artifact_id=25355 and + https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry + + the coordinate values will depend on the CRS parameter, if this is not defined + the values will be assumed to WGS84 values (i.e x=longitude and y=latitude) +required: true +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/radiusCoords.yaml b/core/standard/openapi/oas31/parameters/core/radiusCoords.yaml new file mode 100644 index 000000000..c53bb4331 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/radiusCoords.yaml @@ -0,0 +1,16 @@ +name: coords +in: query +description: | + location(s) to return data for, the coordinates are defined by a Well Known Text + (wkt) string. to retrieve a single location : + + POINT(x y) i.e. POINT(0 51.48) for Greenwich, London + + see https://portal.ogc.org/files/?artifact_id=25355 and + https://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry + + the coordinate values will depend on the CRS parameter, if this is not defined + the values will be assumed to WGS84 values (i.e x=longitude and y=latitude) +required: true +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/resolution-x.yaml b/core/standard/openapi/oas31/parameters/core/resolution-x.yaml new file mode 100644 index 000000000..534439f2e --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/resolution-x.yaml @@ -0,0 +1,15 @@ +name: resolution-x +in: query +description: |+ + Defined it the user requires data at a different resolution from the native resolution of the data along the x-axis + + If this is a single value it denotes the number of intervals to retrieve data for along the x-axis + + i.e. resolution-x=10 + + would retrieve 10 values along the x-axis from the minimum x coordinate to maximum x coordinate (i.e. a value at both the minimum x and maximum x coordinates and 8 values between). +required: false +schema: + items: + type: string + diff --git a/core/standard/openapi/oas31/parameters/core/resolution-y.yaml b/core/standard/openapi/oas31/parameters/core/resolution-y.yaml new file mode 100644 index 000000000..4b09a3d18 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/resolution-y.yaml @@ -0,0 +1,14 @@ +name: resolution-y +in: query +description: |+ + Defined it the user requires data at a different resolution from the native resolution of the data along the y-axis + + If this is a single value it denotes the number of intervals to retrieve data for along the y-axis + + i.e. resolution-y=10 + + would retrieve 10 values along the y-axis from the minimum y coordinate to maximum y coordinate (i.e. a value at both the minimum y and maximum y coordinates and 8 values between). +required: false +schema: + items: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/resolution-z.yaml b/core/standard/openapi/oas31/parameters/core/resolution-z.yaml new file mode 100644 index 000000000..e7f4fef82 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/resolution-z.yaml @@ -0,0 +1,14 @@ +name: resolution-z +in: query +description: |+ + Defined it the user requires data at a different resolution from the native resolution of the data along the z-axis + + If this is a single value it denotes the number of intervals to retrieve data for along the z-axis + + i.e. resolution-z=10 + + would retrieve 10 values along the z-axis from the minimum z coordinate to maximum z coordinate (i.e. a value at both the minimum z and maximum z coordinates and 8 values between). +required: false +schema: + items: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/trajectoryCoords.yaml b/core/standard/openapi/oas31/parameters/core/trajectoryCoords.yaml new file mode 100644 index 000000000..a1d2aa90e --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/trajectoryCoords.yaml @@ -0,0 +1,46 @@ +name: coords +in: query +description: |- + Only data that has a geometry that intersects the area defined by the linestring + are selected. + + The trajectory is defined using a Well Known Text string following + + A 2D trajectory, on the surface of earth with no time or height dimensions: + coords=LINESTRING(-2.87 51.14 , -2.98 51.36,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 ) + + A 2D trajectory, on the surface of earth with all for the same time and no height dimension, time value defined in ISO8601 format by the `datetime` query parameter : + coords=LINESTRING(-2.87 51.14 , -2.98 51.36 ,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 )&time=2018-02-12T23:00:00Z + + A 2D trajectory, on the surface of earth with no time value but at a fixed height level, height defined in the collection height units by the `z` query parameter : + coords=LINESTRING(-2.87 51.14 , -2.98 51.36 ,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 )&z=850 + + A 2D trajectory, on the surface of earth with all for the same time and at a fixed height level, time value defined in ISO8601 format by the `datetime` query parameter and height defined in the collection height units by the `z` query parameter : + coords=LINESTRING(-2.87 51.14 , -2.98 51.36 ,-3.15 51.03 ,-3.48 50.74 ,-3.36 50.9 )&time=2018-02-12T23:00:00Z&z=850 + + A 3D trajectory, on the surface of the earth but over a time range with no height values: + coords=LINESTRINGM(-2.87 51.14 1560507000,-2.98 51.36 1560507600,-3.15 51.03 1560508200,-3.48 50.74 1560508500,-3.36 50.9 1560510240) + + A 3D trajectory, on the surface of the earth but over a time range with a fixed height value, height defined in the collection height units by the `z` query parameter : + coords=LINESTRINGM(-2.87 51.14 1560507000,-2.98 51.36 1560507600,-3.15 51.03 1560508200,-3.48 50.74 1560508500,-3.36 50.9 1560510240)&z=200 + + + A 3D trajectory, through a 3D volume with height or depth, but no defined time: + coords=LINESTRINGZ(-2.87 51.14 0.1,-2.98 51.36 0.2,-3.15 51.03 0.3,-3.48 50.74 0.4,-3.36 50.9 0.5) + + A 3D trajectory, through a 3D volume with height or depth, but a fixed time time value defined in ISO8601 format by the `datetime` query parameter: + coords=LINESTRINGZ(-2.87 51.14 0.1,-2.98 51.36 0.2,-3.15 51.03 0.3,-3.48 50.74 0.4,-3.36 50.9 0.5)&time=2018-02-12T23:00:00Z + + A 4D trajectory, through a 3D volume but over a time range: + coords=LINESTRINGZM(-2.87 51.14 0.1 1560507000,-2.98 51.36 0.2 1560507600,-3.15 51.03 0.3 1560508200, -3.48 50.74 0.4 1560508500, -3.36 50.9 0.5 1560510240) + (using either the `time` or `z` parameters with a 4D trajectory wil generate an error response) + + where Z in `LINESTRINGZ` and `LINESTRINGZM` refers to the height value. + `If the specified CRS does not define the height units, the heights units will default to metres above mean sea level` + + and the M in `LINESTRINGM` and `LINESTRINGZM` refers to the number of seconds that have elapsed since the Unix epoch, that is the time 00:00:00 UTC on 1 January 1970. See + https://en.wikipedia.org/wiki/Unix_time + +required: true +schema: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/width-units.yaml b/core/standard/openapi/oas31/parameters/core/width-units.yaml new file mode 100644 index 000000000..f5fd67fc1 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/width-units.yaml @@ -0,0 +1,8 @@ +name: width-units +in: query +description: Distance units for the corridor-width parameter +required: true +example: + - KM +schema: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/within-units.yaml b/core/standard/openapi/oas31/parameters/core/within-units.yaml new file mode 100644 index 000000000..12e80d7d5 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/within-units.yaml @@ -0,0 +1,10 @@ +name: within-units +in: query +description: Distance units for the within parameter +required: true +example: + unittype: + summary: distance measurement units + value: km +schema: + type: string diff --git a/core/standard/openapi/oas31/parameters/core/within.yaml b/core/standard/openapi/oas31/parameters/core/within.yaml new file mode 100644 index 000000000..5117d927f --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/within.yaml @@ -0,0 +1,10 @@ +name: within +in: query +description: Defines radius of area around defined coordinates to include in the data selection +required: true +examples: + radiusval: + summary: radius to return data within + value: 10 +schema: + type: number \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/core/z.yaml b/core/standard/openapi/oas31/parameters/core/z.yaml new file mode 100644 index 000000000..279423d27 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/core/z.yaml @@ -0,0 +1,39 @@ +name: z +in: query +description: |+ + Define the vertical level to return data from + i.e. z=level + + for instance if the 850hPa pressure level is being queried + + z=850 + + or a range to return data for all levels between and including 2 defined levels + i.e. z=minimum value/maximum value + + for instance if all values between and including 10m and 100m + + z=10/100 + + finally a list of height values can be specified + i.e. z=value1,value2,value3 + + for instance if values at 2m, 10m and 80m are required + + z=2,10,80 + + An Arithmetic sequence using Recurring height intervals, the difference is the number of recurrences is defined at the start + and the amount to increment the height by is defined at the end + + i.e. z=Rn/min height/height interval + + so if the request was for 20 height levels 50m apart starting at 100m: + + z=R20/100/50 + + When not specified data from all available heights SHOULD be returned +required: false +schema: + type: string +style: form +explode: false diff --git a/core/standard/openapi/oas31/parameters/queries/instanceId.yaml b/core/standard/openapi/oas31/parameters/queries/instanceId.yaml new file mode 100644 index 000000000..9373dc6c9 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/queries/instanceId.yaml @@ -0,0 +1,6 @@ +name: instanceId +in: path +description: Identifier (id) of a specific instance of a collection +required: true +schema: + type: string diff --git a/core/standard/openapi/oas31/parameters/queries/itemId.yaml b/core/standard/openapi/oas31/parameters/queries/itemId.yaml new file mode 100644 index 000000000..a1d3b42a6 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/queries/itemId.yaml @@ -0,0 +1,6 @@ +name: itemId +in: path +required: true +description: 'Retrieve data from the collection using a unique identifier.' +schema: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/parameters/queries/locationId.yaml b/core/standard/openapi/oas31/parameters/queries/locationId.yaml new file mode 100644 index 000000000..ce68183e2 --- /dev/null +++ b/core/standard/openapi/oas31/parameters/queries/locationId.yaml @@ -0,0 +1,6 @@ +name: locationId +in: path +required: true +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/openapi/oas31/paths/collections/collection.yaml b/core/standard/openapi/oas31/paths/collections/collection.yaml new file mode 100644 index 000000000..ccc3ee5a9 --- /dev/null +++ b/core/standard/openapi/oas31/paths/collections/collection.yaml @@ -0,0 +1,15 @@ +# Collection +get: + tags: + - Collection metadata + summary: List query types supported by the collection + description: This will provide information about the query types that are supported by the chosen collection Use content negotiation to request HTML or JSON + operationId: getQueries + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/f.yaml + responses: + 200: + $ref: ../../responses/collections/collection.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/collections/collections.yaml b/core/standard/openapi/oas31/paths/collections/collections.yaml new file mode 100644 index 000000000..7ca342782 --- /dev/null +++ b/core/standard/openapi/oas31/paths/collections/collections.yaml @@ -0,0 +1,15 @@ +# Collections +get: + tags: + - Capabilities + summary: List the avialable collections from the service + operationId: listCollections + parameters: + - $ref: ../../parameters/core/bbox.yaml + - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml + - $ref: ../../parameters/core/f.yaml + responses: + 200: + $ref: ../../responses/collections/collections.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/core/conformance.yaml b/core/standard/openapi/oas31/paths/core/conformance.yaml new file mode 100644 index 000000000..ad907b674 --- /dev/null +++ b/core/standard/openapi/oas31/paths/core/conformance.yaml @@ -0,0 +1,12 @@ +# Conformance +get: + tags: + - Capabilities + summary: Information about standards that this API conforms to + description: List all requirements classes specified in a standard that the server conforms to + operationId: getRequirementsClasses + parameters: + - $ref: ../../parameters/core/f.yaml + responses: + '200': + $ref: ../../responses/core/conformance.yaml diff --git a/core/standard/openapi/oas31/paths/core/landingPage.yaml b/core/standard/openapi/oas31/paths/core/landingPage.yaml new file mode 100644 index 000000000..b3720d7fd --- /dev/null +++ b/core/standard/openapi/oas31/paths/core/landingPage.yaml @@ -0,0 +1,12 @@ +# Landing page +get: + tags: + - Capabilities + summary: landing page of this API + description: The landing page provides links to the API definition, the Conformance statements and the metadata about the feature data in this dataset. + operationId: getLandingPage + parameters: + - $ref: ../../parameters/core/f.yaml + responses: + '200': + $ref: ../../responses/core/landingPage.yaml diff --git a/core/standard/openapi/oas31/paths/queries/area.yaml b/core/standard/openapi/oas31/paths/queries/area.yaml new file mode 100644 index 000000000..1c2941667 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/area.yaml @@ -0,0 +1,59 @@ +# Area query +get: + tags: + - Collection data queries + summary: 'Query end point for area queries of collection {collectionId} defined by a polygon' + description: Return the data values for the data area defined by the query parameters + operationId: GetDataForArea + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/areaCoords.yaml + - $ref: ../../parameters/core/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/crs.yaml + - $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 + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: 'Query end point for area queries of collection {collectionId} defined by a polygon' + description: Return the data values for the data area defined by the query parameters + operationId: PostDataForArea + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + requestBody: + $ref: ../../request-bodies/area.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml + diff --git a/core/standard/openapi/oas31/paths/queries/corridor.yaml b/core/standard/openapi/oas31/paths/queries/corridor.yaml new file mode 100644 index 000000000..c1b09562b --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/corridor.yaml @@ -0,0 +1,61 @@ +# Corridor query +get: + tags: + - Collection data queries + summary: 'Query end point for Corridor queries of collection {collectionId} defined by a polygon' + description: Return the data values for the Corridor defined by the query parameters + operationId: GetDataForCorridor + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/trajectoryCoords.yaml + - $ref: ../../parameters/core/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/corridor-width.yaml + - $ref: ../../parameters/core/width-units.yaml + - $ref: ../../parameters/core/corridor-height.yaml + - $ref: ../../parameters/core/height-units.yaml + - $ref: ../../parameters/core/resolution-x.yaml + - $ref: ../../parameters/core/resolution-y.yaml + - $ref: ../../parameters/core/crs.yaml + - $ref: ../../parameters/core/f.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: 'Query end point for Corridor queries of collection {collectionId} defined by a polygon' + description: Return the data values for the Corridor defined by the query parameters + operationId: PostDataForCorridor + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + requestBody: + $ref: ../../request-bodies/corridor.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/cube.yaml b/core/standard/openapi/oas31/paths/queries/cube.yaml new file mode 100644 index 000000000..1786ce6f7 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/cube.yaml @@ -0,0 +1,58 @@ +# Cube query +get: + tags: + - Collection data queries + summary: 'Query end point for Cube queries of collection {collectionId} defined by a cube' + description: Return the data values for the data Cube defined by the query parameters + operationId: GetDataForCube + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/cube-bbox.yaml + - $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: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: 'Query end point for Cube queries of collection {collectionId} defined by a cube' + description: Return the data values for the data Cube defined by the query parameters + operationId: PostDataForCube + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + requestBody: + $ref: ../../request-bodies/cube.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instance-area.yaml b/core/standard/openapi/oas31/paths/queries/instance-area.yaml new file mode 100644 index 000000000..1b9f38848 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-area.yaml @@ -0,0 +1,61 @@ +# Instance Area query +get: + tags: + - Instance data queries + summary: 'Query end point for area queries of instance {instanceId} of collection {collectionId} defined by a polygon' + description: Return the data values for the data area defined by the query parameters + operationId: GetInstanceDataForArea + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/core/areaCoords.yaml + - $ref: ../../parameters/core/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/crs.yaml + - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: 'Query end point for area queries of instance {instanceId} of collection {collectionId} defined by a polygon' + description: Return the data values for the data area defined by the query parameters + operationId: PostInstanceDataForArea + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + requestBody: + $ref: ../../request-bodies/area.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml + diff --git a/core/standard/openapi/oas31/paths/queries/instance-corridor.yaml b/core/standard/openapi/oas31/paths/queries/instance-corridor.yaml new file mode 100644 index 000000000..aba033965 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-corridor.yaml @@ -0,0 +1,63 @@ +# Instance Corridor query +get: + tags: + - Instance data queries + summary: 'Query end point for Corridor queries of instance {instanceId} of collection {collectionId} defined by a polygon' + description: Return the data values for the Corridor defined by the query parameters + operationId: GetInstanceDataForCorridor + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/core/trajectoryCoords.yaml + - $ref: ../../parameters/core/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/corridor-width.yaml + - $ref: ../../parameters/core/width-units.yaml + - $ref: ../../parameters/core/corridor-height.yaml + - $ref: ../../parameters/core/height-units.yaml + - $ref: ../../parameters/core/resolution-x.yaml + - $ref: ../../parameters/core/resolution-z.yaml + - $ref: ../../parameters/core/crs.yaml + - $ref: ../../parameters/core/f.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: 'Query end point for Corridor queries of instance {instanceId} of collection {collectionId} defined by a polygon' + description: Return the data values for the Corridor defined by the query parameters + operationId: PostInstanceDataForCorridor + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + requestBody: + $ref: ../../request-bodies/corridor.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instance-cube.yaml b/core/standard/openapi/oas31/paths/queries/instance-cube.yaml new file mode 100644 index 000000000..854a84f63 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-cube.yaml @@ -0,0 +1,61 @@ +# Instance Cube query +get: + tags: + - Instance data queries + summary: 'Query end point for Cube queries of instance {instanceId} of collection {collectionId} defined by a cube' + description: Return the data values for the data Cube defined by the query parameters + operationId: GetInstanceDataForCube + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/core/bbox.yaml + - $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: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: 'Query end point for Cube queries of instance {instanceId} of collection {collectionId} defined by a cube' + description: Return the data values for the data Cube defined by the query parameters + + operationId: PostInstanceDataForCube + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + requestBody: + $ref: ../../request-bodies/cube.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instance-location.yaml b/core/standard/openapi/oas31/paths/queries/instance-location.yaml new file mode 100644 index 000000000..08d378007 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-location.yaml @@ -0,0 +1,57 @@ +# Instance Location query +get: + tags: + - Instance data queries + summary: 'Query end point for queries of instance {instanceId} of collection {collectionId} defined by a location id' + description: Return data the for the location defined by locid + operationId: GetInstanceDataForLocation + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/queries/locationId.yaml + - $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 + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: 'Query end point for queries of instance {instanceId} of collection {collectionId} defined by a location id' + description: Return data the for the location defined by locid + operationId: PostInstanceDataForLocation + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/queries/locationId.yaml + requestBody: + $ref: ../../request-bodies/location.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instance-locations.yaml b/core/standard/openapi/oas31/paths/queries/instance-locations.yaml new file mode 100644 index 000000000..62b59cace --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-locations.yaml @@ -0,0 +1,54 @@ +# Instance Locations query +get: + tags: + - Instance data queries + summary: List available location identifers for the instance + description: List the locations available for the instance of the collection + operationId: GetListDataInstanceLocations + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $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 + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: List available location identifers for the instance + description: List the locations available for the instance of the collection + operationId: PostListDataInstanceLocations + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + requestBody: + $ref: ../../request-bodies/locations.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instance-position.yaml b/core/standard/openapi/oas31/paths/queries/instance-position.yaml new file mode 100644 index 000000000..79c9679cd --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-position.yaml @@ -0,0 +1,59 @@ +# Instance Position query +get: + tags: + - Instance data queries + summary: 'Query end point for position queries of instance {instanceId} of collection {collectionId}' + description: Query end point for position queries + operationId: GetInstanceDataForPoint + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/core/positionCoords.yaml + - $ref: ../../parameters/core/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/crs.yaml + - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: 'Query end point for position queries of instance {instanceId} of collection {collectionId}' + description: Query end point for position queries + + operationId: PostInstanceDataForPoint + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + requestBody: + $ref: ../../request-bodies/position.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instance-radius.yaml b/core/standard/openapi/oas31/paths/queries/instance-radius.yaml new file mode 100644 index 000000000..539d3c1a9 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-radius.yaml @@ -0,0 +1,60 @@ +# Instance Radius query +get: + tags: + - Instance data queries + summary: 'Query end point to return data within defined radius of a point for an instance {instanceId} of collection {collectionId}' + description: Query end point to return all data within a defined radius of the defined point location queries + operationId: GetInstanceDataForRadius + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/core/radiusCoords.yaml + - $ref: ../../parameters/core/z.yaml + - $ref: https://beta.schemas.opengis.net/ogcapi/common/part2/0.1/collections/openapi/parameters/datetime.yaml + - $ref: ../../parameters/core/within.yaml + - $ref: ../../parameters/core/within-units.yaml + - $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 + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: 'Query end point to return data within defined radius of a point for an instance {instanceId} of collection {collectionId}' + description: Query end point to return all data within a defined radius of the defined point location queries + operationId: PostInstanceDataForRadius + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + requestBody: + $ref: ../../request-bodies/radius.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instance-trajectory.yaml b/core/standard/openapi/oas31/paths/queries/instance-trajectory.yaml new file mode 100644 index 000000000..a1f631d49 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instance-trajectory.yaml @@ -0,0 +1,58 @@ +# Instance Trajectory query +get: + tags: + - Instance data queries + summary: 'Query end point for trajectory queries of instance {instanceId} of collection {collectionId} defined by a wkt linestring and a iso8601 time period' + description: Return the data values for the data Polygon defined by the query parameters + operationId: GetInstanceDataForTrajectory + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + - $ref: ../../parameters/core/trajectoryCoords.yaml + - $ref: ../../parameters/core/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/crs.yaml + - $ref: ../../parameters/core/f.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Instance data queries + summary: 'Query end point for trajectory queries of instance {instanceId} of collection {collectionId} defined by a wkt linestring and a iso8601 time period' + description: Return the data values for the data Polygon defined by the query parameters + + operationId: PostInstanceDataForTrajectory + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/instanceId.yaml + requestBody: + $ref: ../../request-bodies/trajectory.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/instances.yaml b/core/standard/openapi/oas31/paths/queries/instances.yaml new file mode 100644 index 000000000..c3e4e79d9 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/instances.yaml @@ -0,0 +1,15 @@ +# Instances query +get: + tags: + - Instance metadata + summary: 'List data instances of {collectionId}' + description: This will provide list of the avalable instances of the collection Use content negotiation to request HTML or JSON. + operationId: getCollectionInstances + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/f.yaml + responses: + '200': + $ref: ../../responses/queries/instances.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/item.yaml b/core/standard/openapi/oas31/paths/queries/item.yaml new file mode 100644 index 000000000..62ff7f913 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/item.yaml @@ -0,0 +1,49 @@ +# Item query +get: + tags: + - Collection data queries + summary: Return item {itemId} from collection {collectionId} + description: 'Query end point to retrieve data from collection {collectionId} using a unique identifier' + operationId: GetDataForItem + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/itemId.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: Return item {itemId} from collection {collectionId} + description: 'Query end point to retrieve data from collection {collectionId} using a unique identifier' + operationId: PostDataForItem + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/itemId.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/items.yaml b/core/standard/openapi/oas31/paths/queries/items.yaml new file mode 100644 index 000000000..83b91dbe1 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/items.yaml @@ -0,0 +1,64 @@ +# Items query +get: + tags: + - Collection data queries + summary: List available items + description: List the items available in the collection accessible via a unique identifier + operationId: ListDataItems + parameters: + - $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 + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: List available items + description: List the items available in the collection accessible via a unique identifier + operationId: PostListDataItems + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + + requestBody: + + content: + application/json: + schema: + type: object + required: + - bbox + properties: + bbox: + type: string + datetime: + type: string + responses: + 200: + $ref: ../../responses/queries/items.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/location.yaml b/core/standard/openapi/oas31/paths/queries/location.yaml new file mode 100644 index 000000000..a7dd577b4 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/location.yaml @@ -0,0 +1,56 @@ +# Location query +get: + tags: + - Collection data queries + summary: 'Query end point for queries of collection {collectionId} defined by a location id' + description: Return data the for the location defined by locid + operationId: GetCollectionDataForLocation + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/locationId.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/crs.yaml + - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: 'Query end point for queries of collection {collectionId} defined by a location id' + description: Return data the for the location defined by locid + operationId: PostCollectionDataForLocation + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/queries/locationId.yaml + requestBody: + $ref: ../../request-bodies/location.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/locations.yaml b/core/standard/openapi/oas31/paths/queries/locations.yaml new file mode 100644 index 000000000..d7e3de458 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/locations.yaml @@ -0,0 +1,52 @@ +# Locations query +get: + tags: + - Collection data queries + summary: List available location identifers for the collection + description: List the locations available for the collection + operationId: ListCollectionDataLocations + parameters: + - $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 + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: List available location identifers for the collection + description: List the locations available for the collection + operationId: PostListCollectionDataLocations + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + requestBody: + $ref: ../../request-bodies/locations.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/position.yaml b/core/standard/openapi/oas31/paths/queries/position.yaml new file mode 100644 index 000000000..9e0d1d1c6 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/position.yaml @@ -0,0 +1,56 @@ +# Position query +get: + tags: + - Collection data queries + summary: Query end point for position queries of collection {collectionId} + description: Query end point for position queries + operationId: GetDataForPoint + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/positionCoords.yaml + - $ref: ../../parameters/core/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/crs.yaml + - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: Query end point for position queries of collection {collectionId} + description: Query end point for position queries + operationId: PostDataForPoint + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + requestBody: + $ref: ../../request-bodies/position.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/radius.yaml b/core/standard/openapi/oas31/paths/queries/radius.yaml new file mode 100644 index 000000000..d482d8ea2 --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/radius.yaml @@ -0,0 +1,58 @@ +# Radius query +get: + tags: + - Collection data queries + summary: 'Query end point for radius queries of collection {collectionId}' + description: Query end point for to return values within a defined radius of a point queries + operationId: GetDataForRadius + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/radiusCoords.yaml + - $ref: ../../parameters/core/within.yaml + - $ref: ../../parameters/core/within-units.yaml + - $ref: ../../parameters/core/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/crs.yaml + - $ref: ../../parameters/core/f.yaml + - $ref: ../../parameters/core/limit.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: 'Query end point for radius queries of collection {collectionId}' + description: Query end point for to return values within a defined radius of a point queries + operationId: PostDataForRadius + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + requestBody: + $ref: ../../request-bodies/radius.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/paths/queries/trajectory.yaml b/core/standard/openapi/oas31/paths/queries/trajectory.yaml new file mode 100644 index 000000000..239bca4bf --- /dev/null +++ b/core/standard/openapi/oas31/paths/queries/trajectory.yaml @@ -0,0 +1,55 @@ +# Trajectory query +get: + tags: + - Collection data queries + summary: 'Query end point for trajectory queries of collection {collectionId} defined by a wkt linestring and a iso8601 time period' + description: Return the data values for the data Polygon defined by the query parameters + operationId: GetDataForTrajectory + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + - $ref: ../../parameters/core/trajectoryCoords.yaml + - $ref: ../../parameters/core/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/crs.yaml + - $ref: ../../parameters/core/f.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml +post: + tags: + - Collection data queries + summary: 'Query end point for trajectory queries of collection {collectionId} defined by a wkt linestring and a iso8601 time period' + description: Return the data values for the data Polygon defined by the query parameters + operationId: PostDataForTrajectory + parameters: + - $ref: ../../parameters/collections/collectionId.yaml + requestBody: + $ref: ../../request-bodies/trajectory.yaml + responses: + 200: + $ref: ../../responses/queries/200.yaml + 202: + $ref: ../../responses/queries/202.yaml + 308: + $ref: ../../responses/queries/308.yaml + 400: + $ref: ../../responses/queries/400.yaml + 404: + $ref: ../../responses/queries/404.yaml + 413: + $ref: ../../responses/queries/413.yaml + default: + $ref: ../../responses/core/exception.yaml diff --git a/core/standard/openapi/oas31/request-bodies/area.yaml b/core/standard/openapi/oas31/request-bodies/area.yaml new file mode 100644 index 000000000..d12b15de5 --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/area.yaml @@ -0,0 +1,29 @@ +content: + application/json: + schema: + type: object + required: + - coords + properties: + coords: + description: Well Known Text Polygon definition + type: string + z: + type: string + datetime: + type: string + parameter-name: + type: array + items: + type: string + crs: + type: string + resolution-x: + type: string + resolution-y: + type: string + f: + type: string + limit: + type: number + diff --git a/core/standard/openapi/oas31/request-bodies/corridor.yaml b/core/standard/openapi/oas31/request-bodies/corridor.yaml new file mode 100644 index 000000000..3281bb8ea --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/corridor.yaml @@ -0,0 +1,38 @@ +content: + application/json: + schema: + type: object + required: + - coords + - corridor-width + - width-units + - corridor-height + - height-units + properties: + coords: + description: Well Known Text LineString definition + type: string + z: + type: string + datetime: + type: string + parameter-name: + type: array + items: + type: string + corridor-width: + type: string + width-units: + type: string + corridor-height: + type: string + height-units: + type: string + resolution-x: + type: string + resolution-y: + type: string + crs: + type: string + f: + type: string \ No newline at end of file diff --git a/core/standard/openapi/oas31/request-bodies/cube.yaml b/core/standard/openapi/oas31/request-bodies/cube.yaml new file mode 100644 index 000000000..0c08327fc --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/cube.yaml @@ -0,0 +1,22 @@ +content: + application/json: + schema: + type: object + required: + - bbox + properties: + bbox: + type: string + z: + type: string + datetime: + type: string + parameter-name: + type: array + items: + type: string + crs: + type: string + f: + type: string + diff --git a/core/standard/openapi/oas31/request-bodies/location.yaml b/core/standard/openapi/oas31/request-bodies/location.yaml new file mode 100644 index 000000000..9c1aa86ca --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/location.yaml @@ -0,0 +1,19 @@ +content: + application/json: + schema: + type: object + properties: + datetime: + type: string + parameter-name: + type: array + items: + type: string + crs: + type: string + f: + type: string + limit: + type: number + + diff --git a/core/standard/openapi/oas31/request-bodies/locations.yaml b/core/standard/openapi/oas31/request-bodies/locations.yaml new file mode 100644 index 000000000..0ca17adde --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/locations.yaml @@ -0,0 +1,12 @@ +content: + application/json: + schema: + type: object + properties: + bbox: + type: string + datetime: + type: string + limit: + type: number + diff --git a/core/standard/openapi/oas31/request-bodies/position.yaml b/core/standard/openapi/oas31/request-bodies/position.yaml new file mode 100644 index 000000000..60b6439de --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/position.yaml @@ -0,0 +1,25 @@ +content: + application/json: + schema: + type: object + required: + - coords + properties: + coords: + description: Well Known Text Point definition + type: string + z: + type: string + datetime: + type: string + parameter-name: + type: array + items: + type: string + crs: + type: string + f: + type: string + limit: + type: number + diff --git a/core/standard/openapi/oas31/request-bodies/radius.yaml b/core/standard/openapi/oas31/request-bodies/radius.yaml new file mode 100644 index 000000000..e10aae92b --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/radius.yaml @@ -0,0 +1,30 @@ +content: + application/json: + schema: + type: object + required: + - coords + - within + - within-units + properties: + coords: + description: Well Known Text Point definition + type: string + within: + type: number + within-units: + type: string + z: + type: string + datetime: + type: string + parameter-name: + type: array + items: + type: string + crs: + type: string + f: + type: string + limit: + type: number diff --git a/core/standard/openapi/oas31/request-bodies/trajectory.yaml b/core/standard/openapi/oas31/request-bodies/trajectory.yaml new file mode 100644 index 000000000..7db4360a1 --- /dev/null +++ b/core/standard/openapi/oas31/request-bodies/trajectory.yaml @@ -0,0 +1,23 @@ +content: + application/json: + schema: + type: object + required: + - coords + properties: + coords: + description: Well Known Text LineString definition + type: string + z: + type: string + datetime: + type: string + parameter-name: + type: array + items: + type: string + crs: + type: string + f: + type: string + diff --git a/core/standard/openapi/oas31/responses/collections/collection.yaml b/core/standard/openapi/oas31/responses/collections/collection.yaml new file mode 100644 index 000000000..59d2f76e1 --- /dev/null +++ b/core/standard/openapi/oas31/responses/collections/collection.yaml @@ -0,0 +1,8 @@ +description: Metadata about the {collectionId} collection shared by this API +content: + application/json: + schema: + $ref: ../../schemas/collections/collection.yaml + text/html: + schema: + type: string diff --git a/core/standard/openapi/oas31/responses/collections/collections.yaml b/core/standard/openapi/oas31/responses/collections/collections.yaml new file mode 100644 index 000000000..838317d95 --- /dev/null +++ b/core/standard/openapi/oas31/responses/collections/collections.yaml @@ -0,0 +1,8 @@ +description: Metadata about the Environmental data collections shared by this API +content: + application/json: + schema: + $ref: ../../schemas/collections/collections.yaml + text/html: + schema: + type: string diff --git a/core/standard/openapi/oas31/responses/core/conformance.yaml b/core/standard/openapi/oas31/responses/core/conformance.yaml new file mode 100644 index 000000000..8a37dd301 --- /dev/null +++ b/core/standard/openapi/oas31/responses/core/conformance.yaml @@ -0,0 +1,8 @@ +description: URIs of all requirements classes supported by the server +content: + application/json: + schema: + $ref: ../../schemas/core/confClasses.yaml + text/html: + schema: + type: string diff --git a/core/standard/openapi/oas31/responses/core/exception.yaml b/core/standard/openapi/oas31/responses/core/exception.yaml new file mode 100644 index 000000000..115f4c29e --- /dev/null +++ b/core/standard/openapi/oas31/responses/core/exception.yaml @@ -0,0 +1,8 @@ +description: An error occured. +content: + application/json: + schema: + $ref: ../../schemas/core/exception.yaml + text/html: + schema: + type: string diff --git a/core/standard/openapi/oas31/responses/core/landingPage.yaml b/core/standard/openapi/oas31/responses/core/landingPage.yaml new file mode 100644 index 000000000..e5ee2338c --- /dev/null +++ b/core/standard/openapi/oas31/responses/core/landingPage.yaml @@ -0,0 +1,8 @@ +description: links to the API capabilities +content: + application/json: + schema: + $ref: ../../schemas/core/landingPage.yaml + text/html: + schema: + type: string diff --git a/core/standard/openapi/oas31/responses/queries/200.yaml b/core/standard/openapi/oas31/responses/queries/200.yaml new file mode 100644 index 000000000..5f46cd0eb --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/200.yaml @@ -0,0 +1,14 @@ +description: Data ranges required to construct valid queries for the choosen data collection +content: + application/vnd.cov+json: + schema: + $ref: https://covjson.org/schema/dev/coveragejson.json + application/geo+json: + schema: + $ref: ../../schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml + application/x-netcdf: + schema: + type: object + text/xml: + schema: + type: string diff --git a/core/standard/openapi/oas31/responses/queries/202.yaml b/core/standard/openapi/oas31/responses/queries/202.yaml new file mode 100644 index 000000000..8fc2529d3 --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/202.yaml @@ -0,0 +1 @@ +description: Data request still being processed diff --git a/core/standard/openapi/oas31/responses/queries/308.yaml b/core/standard/openapi/oas31/responses/queries/308.yaml new file mode 100644 index 000000000..b7df25bb1 --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/308.yaml @@ -0,0 +1 @@ +description: Request will take a significant time to process diff --git a/core/standard/openapi/oas31/responses/queries/400.yaml b/core/standard/openapi/oas31/responses/queries/400.yaml new file mode 100644 index 000000000..8d47e9693 --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/400.yaml @@ -0,0 +1,6 @@ +description: Invalid request. +content: + application/json: + schema: + $ref: ../../schemas/core/exception.yaml + text/xml: {} diff --git a/core/standard/openapi/oas31/responses/queries/404.yaml b/core/standard/openapi/oas31/responses/queries/404.yaml new file mode 100644 index 000000000..06bf5f4e7 --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/404.yaml @@ -0,0 +1,6 @@ +description: Requested data not found. +content: + application/json: + schema: + $ref: ../../schemas/core/exception.yaml + text/xml: {} diff --git a/core/standard/openapi/oas31/responses/queries/413.yaml b/core/standard/openapi/oas31/responses/queries/413.yaml new file mode 100644 index 000000000..c72a80132 --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/413.yaml @@ -0,0 +1,6 @@ +description: Requested data volume to large to be handled by this service. +content: + application/json: + schema: + $ref: ../../schemas/core/exception.yaml + text/xml: {} diff --git a/core/standard/openapi/oas31/responses/queries/instances.yaml b/core/standard/openapi/oas31/responses/queries/instances.yaml new file mode 100644 index 000000000..4aa27c520 --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/instances.yaml @@ -0,0 +1,8 @@ +description: Metadata about the instance of {collectionId} collection shared by this API +content: + application/json: + schema: + $ref: ../../schemas/queries/instances.yaml + text/html: + schema: + type: string diff --git a/core/standard/openapi/oas31/responses/queries/items.yaml b/core/standard/openapi/oas31/responses/queries/items.yaml new file mode 100644 index 000000000..36274c9b7 --- /dev/null +++ b/core/standard/openapi/oas31/responses/queries/items.yaml @@ -0,0 +1,11 @@ +description: List of pre-existing items available for retrieval +content: + application/geo+json: + schema: + $ref: ../../schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml + application/json: + schema: + type: string + text/xml: + schema: + type: string diff --git a/core/standard/openapi/oas31/schemas/collections/DataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/DataQuery.yaml new file mode 100644 index 000000000..03bd1f91d --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/DataQuery.yaml @@ -0,0 +1,38 @@ +description: Property to contain any extra metadata information that is specific + to an individual data query +type: object +required: + - title + - description + - output_formats + - default_output_format + - crs_details +properties: + title: + description: title of the query + type: string + examples: + - Position query + description: + description: description of the query + type: string + examples: + - Query to return data for a defined well known text point + output_formats: + description: list of output formats supported by the Position query + type: array + items: + type: string + examples: + - CoverageJSON + - GeoJSON + - IWXXM + - GRIB + default_output_format: + description: default output format for the Position query + type: string + crs_details: + description: List of key/value definitions for the CRS's supported by the Position query. The key is the query parameter and the value is the Well Known Text description + type: array + items: + $ref: crsObject.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/areaDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/areaDataQuery.yaml new file mode 100644 index 000000000..5de481d0d --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/areaDataQuery.yaml @@ -0,0 +1,10 @@ +allOf: + - $ref: DataQuery.yaml +properties: + query_type: + description: Type of EDR query + type: string + enum: + - area + examples: + - area diff --git a/core/standard/openapi/oas31/schemas/collections/areaLink.yaml b/core/standard/openapi/oas31/schemas/collections/areaLink.yaml new file mode 100644 index 000000000..66fad9c9f --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/areaLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/area + variables: + $ref: areaDataQuery.yaml diff --git a/core/standard/openapi/schemas/collections/collection.yaml b/core/standard/openapi/oas31/schemas/collections/collection.yaml similarity index 95% rename from core/standard/openapi/schemas/collections/collection.yaml rename to core/standard/openapi/oas31/schemas/collections/collection.yaml index a1de68221..b6c717a91 100644 --- a/core/standard/openapi/schemas/collections/collection.yaml +++ b/core/standard/openapi/oas31/schemas/collections/collection.yaml @@ -12,7 +12,7 @@ properties: type: array items: $ref: ../core/link.yaml - example: + examples: - href: https://example.org/service/description.html hreflang: en rel: service-doc @@ -46,15 +46,18 @@ properties: id: description: id of the collection type: string - example: Metar data + examples: + - Metar data title: description: title of the collection type: string - example: Metar observations + examples: + - Metar observations description: description: description of the collection type: string - example: Last 24 hours Metar observations + examples: + - Last 24 hours Metar observations keywords: description: List of keywords which help to describe the collection type: array @@ -121,7 +124,7 @@ properties: type: array items: type: string - example: + examples: - CoverageJSON - GeoJSON - IWXXM diff --git a/core/standard/openapi/schemas/collections/collections.yaml b/core/standard/openapi/oas31/schemas/collections/collections.yaml similarity index 97% rename from core/standard/openapi/schemas/collections/collections.yaml rename to core/standard/openapi/oas31/schemas/collections/collections.yaml index 540d4c5ed..625367c71 100644 --- a/core/standard/openapi/schemas/collections/collections.yaml +++ b/core/standard/openapi/oas31/schemas/collections/collections.yaml @@ -7,7 +7,7 @@ properties: type: array items: $ref: ../core/link.yaml - example: + examples: - href: https://example.org/edr/collections hreflang: en rel: self diff --git a/core/standard/openapi/schemas/collections/corridorDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/corridorDataQuery.yaml similarity index 89% rename from core/standard/openapi/schemas/collections/corridorDataQuery.yaml rename to core/standard/openapi/oas31/schemas/collections/corridorDataQuery.yaml index 58362bb6d..71d3288b5 100644 --- a/core/standard/openapi/schemas/collections/corridorDataQuery.yaml +++ b/core/standard/openapi/oas31/schemas/collections/corridorDataQuery.yaml @@ -9,13 +9,14 @@ properties: type: string enum: - corridor - example: corridor + examples: + - corridor width_units: description: list of width distance units distance values can be specified in type: array items: type: string - example: + examples: - km - miles height_units: @@ -23,6 +24,6 @@ properties: type: array items: type: string - example: + examples: - m - hPa diff --git a/core/standard/openapi/oas31/schemas/collections/corridorLink.yaml b/core/standard/openapi/oas31/schemas/collections/corridorLink.yaml new file mode 100644 index 000000000..b9f33b748 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/corridorLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/corridor + variables: + $ref: corridorDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/crsObject.yaml b/core/standard/openapi/oas31/schemas/collections/crsObject.yaml new file mode 100644 index 000000000..8de51156d --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/crsObject.yaml @@ -0,0 +1,15 @@ +type: object +required: + - crs + - wkt +properties: + crs: + description: name of the coordinate reference system, used as the value in the crs query parameter to define the required output CRS + type: string + examples: + - native + wkt: + description: Well Known text description of the coordinate reference system + type: string + examples: + - 'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]' \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/collections/cubeDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/cubeDataQuery.yaml new file mode 100644 index 000000000..da415ea9a --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/cubeDataQuery.yaml @@ -0,0 +1,20 @@ +allOf: + - $ref: DataQuery.yaml +required: + - height_units +properties: + query_type: + description: Type of EDR query + type: string + enum: + - cube + examples: + - cube + height_units: + description: list of z distance units vertical values can be specified in + type: array + items: + type: string + examples: + - m + - hPa diff --git a/core/standard/openapi/oas31/schemas/collections/cubeLink.yaml b/core/standard/openapi/oas31/schemas/collections/cubeLink.yaml new file mode 100644 index 000000000..ecd5b802c --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/cubeLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/cube + variables: + $ref: cubeDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/extent.yaml b/core/standard/openapi/oas31/schemas/collections/extent.yaml new file mode 100644 index 000000000..741741839 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/extent.yaml @@ -0,0 +1,282 @@ +description: >- + The extent of the information in the collection. In the Core only spatial and + temporal + + extents are specified. Extensions may add additional members to represent other + + extents, for example, thermal or pressure ranges. +type: object +properties: + spatial: + description: The spatial extent of the information in the collection. + type: object + required: + - bbox + - crs + properties: + bbox: + description: >- + One or more bounding boxes that describe the spatial extent of the + dataset. + + In the Core only a single bounding box is supported. Extensions may support + + additional areas. If multiple areas are provided, the union of the bounding + + boxes describes the spatial extent. + type: array + minItems: 1 + items: + description: >- + Each bounding box is provided as four or six numbers, depending on + + whether the coordinate reference system includes a vertical axis + + (height or depth): + + + * Lower left corner, coordinate axis 1 + + * Lower left corner, coordinate axis 2 + + * Minimum value, coordinate axis 3 (optional) + + * Upper right corner, coordinate axis 1 + + * Upper right corner, coordinate axis 2 + + * Maximum value, coordinate axis 3 (optional) + + + The coordinate reference system of the values is WGS 84 longitude/latitude + + (https://www.opengis.net/def/crs/OGC/1.3/CRS84) unless a different coordinate + + reference system is specified in `crs`. + + + For WGS 84 longitude/latitude the values are in most cases the sequence of + + minimum longitude, minimum latitude, maximum longitude and maximum latitude. + + However, in cases where the box spans the antimeridian the first value + + (west-most box edge) is larger than the third value (east-most box edge). + + + If the vertical axis is included, the third and the sixth number are + + the bottom and the top of the 3-dimensional bounding box. + + + If a feature has multiple spatial geometry properties, it is the decision of the + + server whether only a single spatial geometry property is used to determine + + the extent or all relevant geometries. + oneOf: + - items: + type: number + minItems: 4 + maxItems: 4 + type: array + - items: + type: number + minItems: 6 + maxItems: 6 + type: array + examples: + - [[-180, -90, 180, 90]] + + crs: + description: >- + Coordinate reference system of the coordinates in the spatial extent + + (property `bbox`). The default reference system is WGS 84 longitude/latitude. + + In the Core this is the only supported coordinate reference system. + + Extensions may support additional coordinate reference systems + type: string + default: GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS + 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]] + name: + description: Name of the vertical coordinate reference system + type: string + temporal: + description: The temporal extent of the information in the collection. + type: object + required: + - interval + - trs + properties: + interval: + description: RFC3339 compliant Date and Time + type: array + minItems: 1 + items: + description: |- + Begin and end times of the time interval. The timestamps are in the + temporal coordinate reference system specified in `trs`. By default + this is the Gregorian calendar. + type: array + minItems: 2 + maxItems: 2 + items: + type: + - string + - "null" + examples: + - [["2020-11-12T12:15Z","2020-11-12T12:15Z"]] + - [["2020-11-12T12:15Z","2020-11-12T12:45Z"]] + - [["2022-01-14T09:00Z","2022-01-15T09:00Z"]] + - [["2022-01-14T09:00Z","2022-01-14T21:00Z"]] + - [["2022-01-14T09:00Z","2022-01-16T09:00Z"]] + values: + description: |- + Provides information about the time intervals available in the collection + as ISO8601 compliant dates, either as a time range specified + as start time / end time (e.g. 2017-11-14T09:00Z/2017-11-14T21:00Z) or + as number of repetitions / start time / interval (e.g. R4/2017-11-14T21:00Z/PT3H) + or a list of time values (e.g. + 2017-11-14T09:00Z,2017-11-14T12:00Z,2017-11-14T15:00Z,2017-11-14T18:00Z,2017-11-14T21:00Z) + type: array + minItems: 1 + items: + type: + - string + - "null" + minItems: 1 + examples: + - ["2020-11-12T12:15Z"] + - ["2020-11-12T12:15Z","2020-11-12T12:30Z","2020-11-12T12:45Z"] + - ["R12/2022-01-14T09:00Z/2022-01-15T09:00Z"] + - ["R12/2022-01-14T09:00Z/PT1H"] + - ["R12/2022-01-14T09:00Z/PT1H","R4/2022-01-14T21:00Z/PT3H","R4/2022-01-15T09:00Z/PT6H"] + trs: + description: >- + Coordinate reference system of the coordinates in the temporal extent + + (property `interval`). The default reference system is the Gregorian calendar. + + In the Core this is the only supported temporal coordinate reference system. + + Extensions may support additional temporal coordinate reference systems + type: string + examples: + - TIMECRS["DateTime",TDATUM["Gregorian Calendar"],CS[TemporalDateTime,1],AXIS["Time (T)",future]] + default: https://www.opengis.net/def/uom/ISO-8601/0/Gregorian + name: + description: Name of the temporal coordinate reference system + type: string + vertical: + description: The vertical extent of the information in the collection. + type: object + required: + - interval + - vrs + properties: + interval: + description: >- + If multiple intervals are provided, the union of the intervals describes the vertical extent. + type: array + minItems: 1 + items: + description: >- + minimum and maximum heights of the vertical interval. The values are + in the + + vertical coordinate reference system specified in `vrs`. By default + + this is the vertical coordinate reference system of the source information. + type: array + minItems: 1 + items: + type: + - string + - "null" + examples: + - [["2","100"]] + values: + description: |- + Vertical level intervals 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 vertical levels (e.g. "2",10,"80","100"} + The value `null` is supported and indicates an open vertical interval. + type: array + minItems: 1 + items: + type: + - string + - "null" + examples: + - ["2/100"] + - ["R20/1000/-50"] + - ["2","10","80", "100"] + vrs: + description: |- + Coordinate reference system of the coordinates in the vertical extent + (property `interval`). + type: string + example: VERTCS["WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Meter",1.0]],AXIS["Up",UP] + default: VERTCS["WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PARAMETER["Vertical_Shift",0.0],PARAMETER["Direction",1.0],UNIT["Meter",1.0]],AXIS["Up",UP] + 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 + - "null" + examples: + - [["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 + - "null" + examples: + - ["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/openapi/oas31/schemas/collections/instancesDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/instancesDataQuery.yaml new file mode 100644 index 000000000..8457b09d7 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/instancesDataQuery.yaml @@ -0,0 +1,21 @@ +description: Property to contain any extra metadata information that is specific + to an individual data queries +type: object +properties: + title: + description: title of the query + type: string + examples: + - Instances query + description: + description: description of the query + type: string + examples: + - Instances of collection each representing different versions + query_type: + description: Instances of collection + type: string + enum: + - instances + examples: + - instances diff --git a/core/standard/openapi/oas31/schemas/collections/instancesLink.yaml b/core/standard/openapi/oas31/schemas/collections/instancesLink.yaml new file mode 100644 index 000000000..e293a555b --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/instancesLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/instances + variables: + $ref: instancesDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/itemsDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/itemsDataQuery.yaml new file mode 100644 index 000000000..783045c2d --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/itemsDataQuery.yaml @@ -0,0 +1,21 @@ +description: Property to contain any extra metadata information that is specific + to an individual data queries +type: object +properties: + title: + description: title of the query + type: string + examples: + - Items query + description: + description: description of the query + type: string + examples: + - Query to return data for a defined well known text point + query_type: + description: Type of EDR query + type: string + enum: + - items + examples: + - items diff --git a/core/standard/openapi/oas31/schemas/collections/itemsLink.yaml b/core/standard/openapi/oas31/schemas/collections/itemsLink.yaml new file mode 100644 index 000000000..f67e0cd91 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/itemsLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/items + variables: + $ref: itemsDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/locationsDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/locationsDataQuery.yaml new file mode 100644 index 000000000..1ae2070a3 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/locationsDataQuery.yaml @@ -0,0 +1,10 @@ +allOf: + - $ref: DataQuery.yaml +properties: + query_type: + description: Type of EDR query + type: string + enum: + - locations + examples: + - locations diff --git a/core/standard/openapi/oas31/schemas/collections/locationsLink.yaml b/core/standard/openapi/oas31/schemas/collections/locationsLink.yaml new file mode 100644 index 000000000..b9b156691 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/locationsLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/locations + variables: + $ref: locationsDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/observedPropertyCollection.yaml b/core/standard/openapi/oas31/schemas/collections/observedPropertyCollection.yaml new file mode 100644 index 000000000..6c98fdce6 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/observedPropertyCollection.yaml @@ -0,0 +1,51 @@ +type: object +title: name of property +description: Description of the property +required: + - label +properties: + id: + description: >- + URI linking to an external registry which contains the definitive + definition of + + the observed property + type: string + label: + oneOf: + - type: string + - type: object + description: + type: string + categories: + type: array + items: + minItems: 1 + type: object + required: + - id + - label + properties: + id: + description: >- + URI linking to an external registry which contains the definitive + definition of + + the observed property + type: string + label: + oneOf: + - type: string + - type: object + description: + oneOf: + - type: string + - type: object + required: + - en + properties: + en: + type: string +examples: + - id: https://vocab.nerc.ac.uk/standard_name/sea_ice_area_fraction/ + label: Sea Ice Concentration diff --git a/core/standard/openapi/oas31/schemas/collections/parameterNames.yaml b/core/standard/openapi/oas31/schemas/collections/parameterNames.yaml new file mode 100644 index 000000000..cac092748 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/parameterNames.yaml @@ -0,0 +1,70 @@ +type: object +title: Parameter name +description: Definition of data parameter +required: + - type + - observedProperty +properties: + type: + description: type + enum: + - Parameter + description: + type: string + label: + type: string + data-type: + description: Data type of returned parameter + type: string + enum: + - integer + - float + - string + unit: + $ref: units.yaml + observedProperty: + $ref: observedPropertyCollection.yaml + categoryEncoding: + type: object + additionalProperties: + oneOf: + - type: integer + - type: array + items: + type: integer + extent: + $ref: extent.yaml + id: + description: Unique ID of the parameter, this is the value used for querying the data + type: string + measurementType: + type: object + title: Parameter measurement approach + description: Approach to calculating the data values + required: + - method + properties: + method: + type: string + examples: + - mean + duration: + type: string + title: Measurement time duration + description: The time duration that the value was calculated for as an RFC3339 + duration value. If the method value is instantaneous this value is + not required. + examples: + - PT10M +examples: + - type: Parameter + id: sea_ice + description: Sea Ice concentration (ice=1;no ice=0) + unit: + label: Ratio + symbol: + value: "1" + type: https://www.opengis.net/def/uom/UCUM/ + observedProperty: + id: https://vocab.nerc.ac.uk/standard_name/sea_ice_area_fraction/ + label: Sea Ice Concentration diff --git a/core/standard/openapi/oas31/schemas/collections/positionDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/positionDataQuery.yaml new file mode 100644 index 000000000..189a109de --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/positionDataQuery.yaml @@ -0,0 +1,12 @@ +allOf: + - $ref: DataQuery.yaml +required: + - query_type +properties: + query_type: + description: Type of EDR query + type: string + enum: + - position + examples: + - position diff --git a/core/standard/openapi/oas31/schemas/collections/positionLink.yaml b/core/standard/openapi/oas31/schemas/collections/positionLink.yaml new file mode 100644 index 000000000..4320de384 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/positionLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/position + variables: + $ref: positionDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/radiusDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/radiusDataQuery.yaml new file mode 100644 index 000000000..f7f857aae --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/radiusDataQuery.yaml @@ -0,0 +1,18 @@ +allOf: + - $ref: DataQuery.yaml +properties: + query_type: + description: Type of EDR query + type: string + enum: + - radius + examples: + - radius + within_units: + description: list of distance units radius values can be specified in + type: array + items: + type: string + examples: + - km + - miles diff --git a/core/standard/openapi/oas31/schemas/collections/radiusLink.yaml b/core/standard/openapi/oas31/schemas/collections/radiusLink.yaml new file mode 100644 index 000000000..0705c5df9 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/radiusLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/radius + variables: + $ref: radiusDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/trajectoryDataQuery.yaml b/core/standard/openapi/oas31/schemas/collections/trajectoryDataQuery.yaml new file mode 100644 index 000000000..986b2c03f --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/trajectoryDataQuery.yaml @@ -0,0 +1,10 @@ +allOf: + - $ref: DataQuery.yaml +properties: + query_type: + description: Type of EDR query + type: string + enum: + - trajectory + examples: + - trajectory diff --git a/core/standard/openapi/oas31/schemas/collections/trajectoryLink.yaml b/core/standard/openapi/oas31/schemas/collections/trajectoryLink.yaml new file mode 100644 index 000000000..2309b2b6e --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/trajectoryLink.yaml @@ -0,0 +1,9 @@ +allOf: + - $ref: ../core/link.yaml +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/trajectory + variables: + $ref: trajectoryDataQuery.yaml diff --git a/core/standard/openapi/oas31/schemas/collections/units.yaml b/core/standard/openapi/oas31/schemas/collections/units.yaml new file mode 100644 index 000000000..c557c7a4b --- /dev/null +++ b/core/standard/openapi/oas31/schemas/collections/units.yaml @@ -0,0 +1,42 @@ +type: object +title: unit name +description: definition of data units +anyOf: + - required: + - label + - required: + - symbol + - required: + - label + - symbol +properties: + label: + additionalProperties: + type: string + symbol: + title: Describe unit symbol + oneOf: + - type: object + description: Information about the symbol used to describe the units + required: + - value + - type + properties: + value: + description: representation of the units symbol + type: string + type: + description: uri to detailed desxcription of the units + type: string + - type: string + examples: + - value: hPa + type: https://www.opengis.net/def/uom/UCUM/ + id: + type: string +examples: + - label: + en: Kelvin + symbol: + value: K + type: https://www.opengis.net/def/uom/UCUM/ diff --git a/core/standard/openapi/oas31/schemas/core/confClasses.yaml b/core/standard/openapi/oas31/schemas/core/confClasses.yaml new file mode 100644 index 000000000..1777e8029 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/core/confClasses.yaml @@ -0,0 +1,8 @@ +type: object +required: + - conformsTo +properties: + conformsTo: + type: array + items: + type: string diff --git a/core/standard/openapi/oas31/schemas/core/exception.yaml b/core/standard/openapi/oas31/schemas/core/exception.yaml new file mode 100644 index 000000000..2d0871932 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/core/exception.yaml @@ -0,0 +1,8 @@ +type: object +required: + - code +properties: + code: + type: string + description: + type: string \ No newline at end of file diff --git a/core/standard/openapi/schemas/core/landingPage.yaml b/core/standard/openapi/oas31/schemas/core/landingPage.yaml similarity index 87% rename from core/standard/openapi/schemas/core/landingPage.yaml rename to core/standard/openapi/oas31/schemas/core/landingPage.yaml index 15eb8733b..896771313 100644 --- a/core/standard/openapi/schemas/core/landingPage.yaml +++ b/core/standard/openapi/oas31/schemas/core/landingPage.yaml @@ -4,16 +4,17 @@ required: properties: title: type: string - example: Meteorological data server + examples: + - Meteorological data server description: type: string - example: Access to Meteorological data via a Web API that conforms to the OGC - API Environmental Data Retrieval specification. + examples: + - Access to Meteorological data via a Web API that conforms to the OGC API Environmental Data Retrieval specification. links: type: array items: $ref: link.yaml - example: + examples: - href: https://example.org/edr/api hreflang: en rel: service-desc @@ -33,7 +34,7 @@ properties: type: array items: type: string - example: + examples: - Temperature - Wind - Point diff --git a/core/standard/openapi/oas31/schemas/core/link.yaml b/core/standard/openapi/oas31/schemas/core/link.yaml new file mode 100644 index 000000000..fddf71f86 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/core/link.yaml @@ -0,0 +1,31 @@ +type: object +required: + - href + - rel +properties: + href: + type: string + examples: + - https://example.com/collections/monitoringsites/locations/1234 + rel: + type: string + examples: + - alternate + type: + type: string + examples: + - application/geo+json + hreflang: + type: string + examples: + - en + title: + type: string + examples: + - Monitoring site name + length: + type: integer + templated: + description: defines if the link href value is a template with values requiring replacement + type: boolean + diff --git a/core/standard/openapi/oas31/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml b/core/standard/openapi/oas31/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml new file mode 100644 index 000000000..62ca08ff2 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/edr-geojson/edrFeatureCollectionGeoJSON.yaml @@ -0,0 +1,32 @@ +type: object +required: + - type + - features +properties: + type: + type: string + enum: + - FeatureCollection + features: + type: array + items: + $ref: ../geojson/featureGeoJSON.yaml + parameters: + description: list of the data parameters available in the collection + type: array + items: + $ref: parameter.yaml + links: + type: array + items: + $ref: ../../schemas/core/link.yaml + timeStamp: + description: This property indicates the time and date when the response was generated. + type: string + format: date-time + examples: + - '2017-08-17T08:05:32Z' + numberMatched: + $ref: ../../schemas/numberMatched.yaml + numberReturned: + $ref: ../../schemas/numberReturned.yaml diff --git a/core/standard/openapi/oas31/schemas/edr-geojson/edrProperties.yaml b/core/standard/openapi/oas31/schemas/edr-geojson/edrProperties.yaml new file mode 100644 index 000000000..898304d48 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/edr-geojson/edrProperties.yaml @@ -0,0 +1,49 @@ +type: object +title: EDR GeoJSON Properties +description: Properties to describe existing EDR features -- may be real-world or virtual sampling features. +examples: + - datetime: 2018-02-12T00:00:00Z/2018-03-18T12:31:12Z + label: Monitoring site name + parameter-name: + - velocity + - temperature + edrqueryendpoint: "https://example.org/api/collections/collection/locations/location_123" +required: + - datetime + - parameter-name + - label + - edrqueryendpoint +properties: + datetime: + type: string + title: Date/time Domain + description: Either a date-time or a period string that adheres to RFC 3339. Indicates the time instant or period for which data are available from the EDR feature. + default: '' + examples: + - 2018-02-12T00:00:00Z/2018-03-18T12:31:12Z + parameter-name: + type: array + title: Available Parameters + description: Unique IDs of available parameters, this is the value used for querying the data and corresponds to an ID in the parameter metadata of the collection. + items: + type: string + title: Parameter ID list + description: Each entry should contain one parameter ID that can be used to query against the feature. + default: '' + examples: + - velocity + - temperature + label: + type: string + title: Label + description: A label such as a site name or other text to use on a link. + default: '' + examples: + - Site A + edrqueryendpoint: + type: string + title: EDR Query Endpoint + description: A URI identifying the query end point. May identify a specific location. + default: '' + examples: + - "https://example.org/api/collections/collection/locations/location_123d}" diff --git a/core/standard/openapi/oas31/schemas/edr-geojson/observedProperty.yaml b/core/standard/openapi/oas31/schemas/edr-geojson/observedProperty.yaml new file mode 100644 index 000000000..faf37fbfc --- /dev/null +++ b/core/standard/openapi/oas31/schemas/edr-geojson/observedProperty.yaml @@ -0,0 +1,26 @@ +type: object +description: A definition of the quantity being measured. +properties: + id: + type: string + label: + $ref: ../i18n.yaml + description: + $ref: ../i18n.yaml + categories: + type: array + items: + type: object + properties: + id: + type: string + label: + $ref: ../i18n.yaml + description: + $ref: ../i18n.yaml + required: + - id + - label + minItems: 1 +required: + - label diff --git a/core/standard/openapi/oas31/schemas/edr-geojson/parameter.yaml b/core/standard/openapi/oas31/schemas/edr-geojson/parameter.yaml new file mode 100644 index 000000000..e9ebb6afd --- /dev/null +++ b/core/standard/openapi/oas31/schemas/edr-geojson/parameter.yaml @@ -0,0 +1,28 @@ +type: object +description: Represents metadata about the values of the coverage +properties: + id: + type: string + type: + description: Type of the parameter object, SHALL be "Parameter" + type: string + enum: + - Parameter + description: + $ref: ../i18n.yaml + observedProperty: + $ref: observedProperty.yaml + unit: + $ref: unit.yaml + categoryEncoding: + type: object + description: Maps IDs of categories in the observedProperty to range values + additionalProperties: + oneOf: + - type: integer + - type: array + items: + type: integer +required: + - type + - observedProperty diff --git a/core/standard/openapi/oas31/schemas/edr-geojson/unit.yaml b/core/standard/openapi/oas31/schemas/edr-geojson/unit.yaml new file mode 100644 index 000000000..8fc69f0d3 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/edr-geojson/unit.yaml @@ -0,0 +1,24 @@ +type: object +description: The units of measure +properties: + id: + type: string + label: + $ref: ../i18n.yaml + symbol: + oneOf: + - type: string + - type: object + properties: + type: + type: string + value: + type: string + required: + - type + - value +anyOf: + - required: + - label + - required: + - symbol diff --git a/core/standard/openapi/oas31/schemas/geojson/featureGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/featureGeoJSON.yaml new file mode 100644 index 000000000..cb4c1910c --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/featureGeoJSON.yaml @@ -0,0 +1,29 @@ +type: object +required: + - type + - geometry + - properties +properties: + type: + type: string + enum: + - Feature + geometry: + oneOf: + - $ref: pointGeoJSON.yaml + - $ref: multipointGeoJSON.yaml + - $ref: linestringGeoJSON.yaml + - $ref: multilinestringGeoJSON.yaml + - $ref: polygonGeoJSON.yaml + - $ref: multipolygonGeoJSON.yaml + - $ref: geometrycollectionGeoJSON.yaml + properties: + $ref: ../edr-geojson/edrProperties.yaml + id: + oneOf: + - type: string + - type: integer + links: + type: array + items: + $ref: ../core/link.yaml diff --git a/core/standard/openapi/oas31/schemas/geojson/geometrycollectionGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/geometrycollectionGeoJSON.yaml new file mode 100644 index 000000000..e0028da84 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/geometrycollectionGeoJSON.yaml @@ -0,0 +1,19 @@ +type: object +required: + - type + - geometries +properties: + type: + type: string + enum: + - GeometryCollection + geometries: + type: array + items: + oneOf: + - $ref: pointGeoJSON.yaml + - $ref: multipointGeoJSON.yaml + - $ref: linestringGeoJSON.yaml + - $ref: multilinestringGeoJSON.yaml + - $ref: polygonGeoJSON.yaml + - $ref: multipolygonGeoJSON.yaml diff --git a/core/standard/openapi/oas31/schemas/geojson/linestringGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/linestringGeoJSON.yaml new file mode 100644 index 000000000..73c14ea44 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/linestringGeoJSON.yaml @@ -0,0 +1,23 @@ +type: object +required: + - type + - coordinates +properties: + type: + type: string + enum: + - LineString + - LineStringM + - LineStringZ + - LineStringZM + coordinates: + type: array + items: + type: array + minItems: 2 + items: + type: array + minItems: 2 + maxItems: 4 + items: + type: number \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/geojson/multilinestringGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/multilinestringGeoJSON.yaml new file mode 100644 index 000000000..3a7edca73 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/multilinestringGeoJSON.yaml @@ -0,0 +1,19 @@ +type: object +required: + - type + - coordinates +properties: + type: + type: string + enum: + - MultiLineString + coordinates: + type: array + items: + type: array + minItems: 2 + items: + type: array + minItems: 2 + items: + type: number \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/geojson/multipointGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/multipointGeoJSON.yaml new file mode 100644 index 000000000..b100f5f42 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/multipointGeoJSON.yaml @@ -0,0 +1,16 @@ +type: object +required: + - type + - coordinates +properties: + type: + type: string + enum: + - MultiPoint + coordinates: + type: array + items: + type: array + minItems: 2 + items: + type: number \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/geojson/multipolygonGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/multipolygonGeoJSON.yaml new file mode 100644 index 000000000..0a4a27c8e --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/multipolygonGeoJSON.yaml @@ -0,0 +1,21 @@ +type: object +required: + - type + - coordinates +properties: + type: + type: string + enum: + - MultiPolygon + coordinates: + type: array + items: + type: array + items: + type: array + minItems: 4 + items: + type: array + minItems: 2 + items: + type: number \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/geojson/pointGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/pointGeoJSON.yaml new file mode 100644 index 000000000..f46566619 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/pointGeoJSON.yaml @@ -0,0 +1,14 @@ +type: object +required: + - type + - coordinates +properties: + type: + type: string + enum: + - Point + coordinates: + type: array + minItems: 2 + items: + type: number \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/geojson/polygonGeoJSON.yaml b/core/standard/openapi/oas31/schemas/geojson/polygonGeoJSON.yaml new file mode 100644 index 000000000..298bcc917 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/geojson/polygonGeoJSON.yaml @@ -0,0 +1,19 @@ +type: object +required: + - type + - coordinates +properties: + type: + type: string + enum: + - Polygon + coordinates: + type: array + items: + type: array + minItems: 4 + items: + type: array + minItems: 2 + items: + type: number \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/i18n.yaml b/core/standard/openapi/oas31/schemas/i18n.yaml new file mode 100644 index 000000000..40bc61db0 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/i18n.yaml @@ -0,0 +1,4 @@ +type: object +description: Object representing an internationalised string. +additionalProperties: + type: string diff --git a/core/standard/openapi/oas31/schemas/numberMatched.yaml b/core/standard/openapi/oas31/schemas/numberMatched.yaml new file mode 100644 index 000000000..902cf5432 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/numberMatched.yaml @@ -0,0 +1,7 @@ +description: |- + The number of features of the feature type that match the selection + parameters like `bbox`. +type: integer +minimum: 0 +examples: + - 127 \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/numberReturned.yaml b/core/standard/openapi/oas31/schemas/numberReturned.yaml new file mode 100644 index 000000000..e10f2ec77 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/numberReturned.yaml @@ -0,0 +1,12 @@ +type: integer +description: |- + The number of features in the feature collection. + + A server may omit this information in a response, if the information + about the number of features is not known or difficult to compute. + + If the value is provided, the value SHALL be identical to the number + of items in the "features" array. +minimum: 0 +examples: + - 10 \ No newline at end of file diff --git a/core/standard/openapi/oas31/schemas/parameterGroup.yaml b/core/standard/openapi/oas31/schemas/parameterGroup.yaml new file mode 100644 index 000000000..8636c60a7 --- /dev/null +++ b/core/standard/openapi/oas31/schemas/parameterGroup.yaml @@ -0,0 +1,30 @@ +type: object +description: Represents logical groups of parameters +properties: + type: + description: Type of the parameter group object, SHALL be "ParameterGroup" + type: string + enum: + - ParameterGroup + id: + type: string + label: + $ref: i18n.yaml + description: + $ref: i18n.yaml + observedProperty: + $ref: observedProperty.yaml + members: + type: array + items: + type: string + minItems: 1 + uniqueItems: true +required: + - type + - members +anyOf: + - required: + - label + - required: + - observedProperty diff --git a/core/standard/openapi/schemas/queries/instances.yaml b/core/standard/openapi/oas31/schemas/queries/instances.yaml similarity index 97% rename from core/standard/openapi/schemas/queries/instances.yaml rename to core/standard/openapi/oas31/schemas/queries/instances.yaml index 8956765bd..414bd1a08 100644 --- a/core/standard/openapi/schemas/queries/instances.yaml +++ b/core/standard/openapi/oas31/schemas/queries/instances.yaml @@ -7,7 +7,7 @@ properties: type: array items: $ref: ../core/link.yaml - example: + examples: - href: https://example.org/edr/collections/the_collection_id/instances hreflang: en rel: self diff --git a/core/standard/openapi/ogcapi-environmental-data-retrieval-1.yaml b/core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas30.yaml similarity index 64% rename from core/standard/openapi/ogcapi-environmental-data-retrieval-1.yaml rename to core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas30.yaml index e54bcb952..585df12a9 100644 --- a/core/standard/openapi/ogcapi-environmental-data-retrieval-1.yaml +++ b/core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas30.yaml @@ -1,8 +1,8 @@ -openapi: 3.0.3 +openapi: 3.0.4 info: title: OGC API - Environmental Data Retrieval Standard description: Example of OGC API - Environmental Data Retrieval Standard OpenAPI document - version: 1.1.0 + version: 1.2.0 license: name: OGC License url: 'https://www.ogc.org/legal' @@ -23,50 +23,50 @@ tags: paths: # OGC API - Environmental Data Retrieval: Core /: - $ref: paths/core/landingPage.yaml + $ref: oas30/paths/core/landingPage.yaml /conformance: - $ref: paths/core/conformance.yaml + $ref: oas30/paths/core/conformance.yaml # OGC API - Environmental Data Retrieval: Collections /collections: - $ref: paths/collections/collections.yaml + $ref: oas30/paths/collections/collections.yaml /collections/{collectionId}: - $ref: paths/collections/collection.yaml + $ref: oas30/paths/collections/collection.yaml # OGC API - Environmental Data Retrieval: Queries /collections/{collectionId}/position: - $ref: paths/queries/position.yaml + $ref: oas30/paths/queries/position.yaml /collections/{collectionId}/radius: - $ref: paths/queries/radius.yaml + $ref: oas30/paths/queries/radius.yaml /collections/{collectionId}/area: - $ref: paths/queries/area.yaml + $ref: oas30/paths/queries/area.yaml /collections/{collectionId}/cube: - $ref: paths/queries/cube.yaml + $ref: oas30/paths/queries/cube.yaml /collections/{collectionId}/trajectory: - $ref: paths/queries/trajectory.yaml + $ref: oas30/paths/queries/trajectory.yaml /collections/{collectionId}/corridor: - $ref: paths/queries/corridor.yaml + $ref: oas30/paths/queries/corridor.yaml /collections/{collectionId}/items: - $ref: paths/queries/items.yaml + $ref: oas30/paths/queries/items.yaml /collections/{collectionId}/items/{itemId}: - $ref: paths/queries/item.yaml + $ref: oas30/paths/queries/item.yaml /collections/{collectionId}/instances: - $ref: paths/queries/instances.yaml + $ref: oas30/paths/queries/instances.yaml /collections/{collectionId}/instances/{instanceId}/position: - $ref: paths/queries/instance-position.yaml + $ref: oas30/paths/queries/instance-position.yaml /collections/{collectionId}/instances/{instanceId}/radius: - $ref: paths/queries/instance-radius.yaml + $ref: oas30/paths/queries/instance-radius.yaml /collections/{collectionId}/instances/{instanceId}/area: - $ref: paths/queries/instance-area.yaml + $ref: oas30/paths/queries/instance-area.yaml /collections/{collectionId}/instances/{instanceId}/cube: - $ref: paths/queries/instance-cube.yaml + $ref: oas30/paths/queries/instance-cube.yaml /collections/{collectionId}/instances/{instanceId}/trajectory: - $ref: paths/queries/instance-trajectory.yaml + $ref: oas30/paths/queries/instance-trajectory.yaml /collections/{collectionId}/instances/{instanceId}/corridor: - $ref: paths/queries/instance-corridor.yaml + $ref: oas30/paths/queries/instance-corridor.yaml /collections/{collectionId}/locations: - $ref: paths/queries/locations.yaml + $ref: oas30/paths/queries/locations.yaml /collections/{collectionId}/locations/{locationId}: - $ref: paths/queries/location.yaml + $ref: oas30/paths/queries/location.yaml /collections/{collectionId}/instances/{instanceId}/locations: - $ref: paths/queries/instance-locations.yaml + $ref: oas30/paths/queries/instance-locations.yaml /collections/{collectionId}/instances/{instanceId}/locations/{locationId}: - $ref: paths/queries/instance-location.yaml + $ref: oas30/paths/queries/instance-location.yaml diff --git a/core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas31.yaml b/core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas31.yaml new file mode 100644 index 000000000..60199679e --- /dev/null +++ b/core/standard/openapi/ogcapi-environmental-data-retrieval-1-oas31.yaml @@ -0,0 +1,72 @@ +openapi: 3.1.1 +info: + title: OGC API - Environmental Data Retrieval Standard + description: Example of OGC API - Environmental Data Retrieval Standard OpenAPI document + version: 1.2.0 + license: + name: OGC License + url: 'https://www.ogc.org/legal' +servers: + - url: 'https://example.org/edr' + description: Example OGC API - Environmental Data Retrieval server +tags: + - name: Capabilities + description: Essential characteristics of the information available from the API. + - name: Collection metadata + description: Description of the information available from the collections + - name: Instance metadata + description: Description of the information available from the instances of a collection + - name: Collection data queries + description: Data queries available. + - name: Instance data queries + description: Data queries available on instances of the collection. +paths: + # OGC API - Environmental Data Retrieval: Core + /: + $ref: oas31/paths/core/landingPage.yaml + /conformance: + $ref: oas31/paths/core/conformance.yaml + # OGC API - Environmental Data Retrieval: Collections + /collections: + $ref: oas31/paths/collections/collections.yaml + /collections/{collectionId}: + $ref: oas31/paths/collections/collection.yaml + # OGC API - Environmental Data Retrieval: Queries + /collections/{collectionId}/position: + $ref: oas31/paths/queries/position.yaml + /collections/{collectionId}/radius: + $ref: oas31/paths/queries/radius.yaml + /collections/{collectionId}/area: + $ref: oas31/paths/queries/area.yaml + /collections/{collectionId}/cube: + $ref: oas31/paths/queries/cube.yaml + /collections/{collectionId}/trajectory: + $ref: oas31/paths/queries/trajectory.yaml + /collections/{collectionId}/corridor: + $ref: oas31/paths/queries/corridor.yaml + /collections/{collectionId}/items: + $ref: oas31/paths/queries/items.yaml + /collections/{collectionId}/items/{itemId}: + $ref: oas31/paths/queries/item.yaml + /collections/{collectionId}/instances: + $ref: oas31/paths/queries/instances.yaml + /collections/{collectionId}/instances/{instanceId}/position: + $ref: oas31/paths/queries/instance-position.yaml + /collections/{collectionId}/instances/{instanceId}/radius: + $ref: oas31/paths/queries/instance-radius.yaml + /collections/{collectionId}/instances/{instanceId}/area: + $ref: oas31/paths/queries/instance-area.yaml + /collections/{collectionId}/instances/{instanceId}/cube: + $ref: oas31/paths/queries/instance-cube.yaml + /collections/{collectionId}/instances/{instanceId}/trajectory: + $ref: oas31/paths/queries/instance-trajectory.yaml + /collections/{collectionId}/instances/{instanceId}/corridor: + $ref: oas31/paths/queries/instance-corridor.yaml + /collections/{collectionId}/locations: + $ref: oas31/paths/queries/locations.yaml + /collections/{collectionId}/locations/{locationId}: + $ref: oas31/paths/queries/location.yaml + /collections/{collectionId}/instances/{instanceId}/locations: + $ref: oas31/paths/queries/instance-locations.yaml + /collections/{collectionId}/instances/{instanceId}/locations/{locationId}: + $ref: oas31/paths/queries/instance-location.yaml diff --git a/core/standard/openapi/ogcapi-environmental-data-retrieval-1.bundled.json b/core/standard/openapi/ogcapi-environmental-data-retrieval-1.bundled.json index 16d743fc9..387451551 100644 --- a/core/standard/openapi/ogcapi-environmental-data-retrieval-1.bundled.json +++ b/core/standard/openapi/ogcapi-environmental-data-retrieval-1.bundled.json @@ -2735,7 +2735,7 @@ "type": "string" }, "type": { - "description": "Type of the parameter object, shall be \"Parameter\"", + "description": "Type of the parameter object, SHALL be \"Parameter\"", "type": "string", "enum": [ "Parameter" @@ -2878,7 +2878,7 @@ }, "numberReturned": { "type": "integer", - "description": "The number of features in the feature collection.\n\nA server may omit this information in a response, if the information\nabout the number of features is not known or difficult to compute.\n\nIf the value is provided, the value shall be identical to the number\nof items in the \"features\" array.", + "description": "The number of features in the feature collection.\n\nA server may omit this information in a response, if the information\nabout the number of features is not known or difficult to compute.\n\nIf the value is provided, the value SHALL be identical to the number\nof items in the \"features\" array.", "minimum": 0, "example": 10 } diff --git a/core/standard/recommendations/core/PER_api-definition-uri.adoc b/core/standard/recommendations/core/PER_api-definition-uri.adoc new file mode 100644 index 000000000..5892931f0 --- /dev/null +++ b/core/standard/recommendations/core/PER_api-definition-uri.adoc @@ -0,0 +1,9 @@ +[[per_core_api-definition-uri]] +[width="90%",cols="2,6a"] +|=== +^|*Permission {counter:per-id}* |*/per/core/api-definition-uri* +^|A |The API definition is metadata about the API and strictly not part of the API +itself, but it MAY be hosted as a sub-resource to the base path of the API, +for example, at path `/api`. There is no need to include +the path of the API definition in the API definition itself. +|=== \ No newline at end of file diff --git a/core/standard/recommendations/core/REC_api-definition-oas.adoc b/core/standard/recommendations/core/REC_api-definition-oas.adoc new file mode 100644 index 000000000..09bd0388c --- /dev/null +++ b/core/standard/recommendations/core/REC_api-definition-oas.adoc @@ -0,0 +1,7 @@ +[[rec_core_api-definition-oas]] +[width="90%",cols="2,6a"] +|=== +^|*Recommendation {counter:rec-id}* |*/rec/core/api-definition-oas* +^|A |If the API definition document uses the OpenAPI Specification 3.0, the document SHOULD conform to the <>. +^|B |If the API definition document uses the OpenAPI Specification 3.1, the document SHOULD conform to the <>. +|=== \ No newline at end of file diff --git a/core/standard/requirements/edr/query_type/item.adoc b/core/standard/requirements/edr/query_type/item.adoc index 3b3e80d65..69df84ac9 100644 --- a/core/standard/requirements/edr/query_type/item.adoc +++ b/core/standard/requirements/edr/query_type/item.adoc @@ -1,7 +1,7 @@ The EDR API Items query is an <> endpoint that may be used to catalog pre-existing EDR sampling features. The pre-existence of an EDR sampling feature may be because a particular query has been cached for later use,such as a monitoring location. Or -there may be a catalog of spatiotemporal sampling features such as domains of anomalies in a dataset. A https://schemas.opengis.net/ogcapi/edr/1.2/openapi/ogcapi-environmental-data-retrieval-1.yaml[GeoJSON-compatible +there may be a catalog of spatio-temporal sampling features such as domains of anomalies in a dataset. A https://schemas.opengis.net/ogcapi/edr/1.2/openapi/ogcapi-environmental-data-retrieval-1.yaml[GeoJSON-compatible JSON-Schema] is specified to document an EDR API query endpoint and valid query parameters including time range, parameters, and spatial characteristics. A service can define a custom GeoJSON schema in the OpenAPI definition for the service, with the default being the edr-geojson schema if no alternative is documented. diff --git a/core/standard/requirements/oas/REQ_completeness.adoc b/core/standard/requirements/oas/REQ_completeness.adoc new file mode 100644 index 000000000..4dbc5d317 --- /dev/null +++ b/core/standard/requirements/oas/REQ_completeness.adoc @@ -0,0 +1,18 @@ +[[req_oas_completeness]] +==== *Requirement /req/oas/completeness* OpenAPI Completeness + +[requirement] +==== +[%metadata] +identifier:: /req/oas/completeness + +*A:* + +The OpenAPI definition SHALL specify for each operation all HTTP Status Codes and Response Objects that the server uses in responses. This includes the successful execution of an operation as well as all error situations that originate from the server. + +--- +*B:* + +This includes the successful execution of an operation as well as all error situations that originate from the server. + +==== diff --git a/core/standard/requirements/oas30/REQ_exception-codes.adoc b/core/standard/requirements/oas/REQ_exception-codes.adoc similarity index 53% rename from core/standard/requirements/oas30/REQ_exception-codes.adoc rename to core/standard/requirements/oas/REQ_exception-codes.adoc index 25c719a01..363762fbd 100644 --- a/core/standard/requirements/oas30/REQ_exception-codes.adoc +++ b/core/standard/requirements/oas/REQ_exception-codes.adoc @@ -1,10 +1,10 @@ -[[req_oas30_exceptions-codes]] -==== *Requirement /req/oas30/exceptions-codes* OpenAPI 3.0 Exception codes +[[req_oas_exceptions-codes]] +==== *Requirement /req/oas/exceptions-codes* OpenAPI Exception codes [requirement] ==== [%metadata] -identifier:: /req/oas30/exceptions-codes +identifier:: /req/oas/exceptions-codes *A:* diff --git a/core/standard/requirements/oas/REQ_oas-definition.adoc b/core/standard/requirements/oas/REQ_oas-definition.adoc new file mode 100644 index 000000000..4ec05870d --- /dev/null +++ b/core/standard/requirements/oas/REQ_oas-definition.adoc @@ -0,0 +1,16 @@ +[[req_oas_oas-definition]] +==== *Requirement /req/oas/oas-definition* OpenAPI definition + +[requirement] +==== +[%metadata] +identifier:: /req/oas/oas-definition + +*A:* + +The content of the response of the HTTP GET operation at the landing page SHALL include the following links to the API definition: + +* Relation type `service-desc` and content type `application/vnd.oai.openapi+json;version=x.y` (where `x.y` is the version of the OpenAPI specification used); +* Relation type `service-doc` and content type `text/html`. + +==== diff --git a/core/standard/requirements/oas30/REQ_oas-impl.adoc b/core/standard/requirements/oas/REQ_oas-impl.adoc similarity index 51% rename from core/standard/requirements/oas30/REQ_oas-impl.adoc rename to core/standard/requirements/oas/REQ_oas-impl.adoc index 2d1f64988..d84280313 100644 --- a/core/standard/requirements/oas30/REQ_oas-impl.adoc +++ b/core/standard/requirements/oas/REQ_oas-impl.adoc @@ -1,11 +1,11 @@ -[[req_oas30_oas-impl]] -==== *Requirement /req/oas30/oas-impl* OpenAPI 3.0 implementation +[[req_oas_oas-impl]] +==== *Requirement /req/oas/oas-impl* OpenAPI implementation [requirement] ==== [%metadata] -identifier:: /req/oas30/oas-impl +identifier:: /req/oas/oas-impl *A:* diff --git a/core/standard/requirements/oas30/REQ_security.adoc b/core/standard/requirements/oas/REQ_security.adoc similarity index 63% rename from core/standard/requirements/oas30/REQ_security.adoc rename to core/standard/requirements/oas/REQ_security.adoc index b7711b018..9a758a7c4 100644 --- a/core/standard/requirements/oas30/REQ_security.adoc +++ b/core/standard/requirements/oas/REQ_security.adoc @@ -1,10 +1,10 @@ -[[req_oas30_security]] -==== *Requirement /req/oas30/security* OpenAPI 3.0 Security +[[req_oas_security]] +==== *Requirement /req/oas/security* OpenAPI Security [requirement] ==== [%metadata] -identifier:: /req/oas30/security +identifier:: /req/oas/security *A:* diff --git a/core/standard/requirements/oas30/REQ_completeness.adoc b/core/standard/requirements/oas30/REQ_completeness.adoc deleted file mode 100644 index a6dcfb993..000000000 --- a/core/standard/requirements/oas30/REQ_completeness.adoc +++ /dev/null @@ -1,18 +0,0 @@ -[[req_oas30_completeness]] -==== *Requirement /req/oas30/completeness* OpenAPI 3.0 Completeness - -[requirement] -==== -[%metadata] -identifier:: /req/oas30/completeness - -*A:* - -The OpenAPI definition SHALL specify for each operation all link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#httpCodes[HTTP Status Codes] and link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#responseObject[Response Objects] that the API uses in responses. - ---- -*B:* - -This includes the successful execution of an operation as well as all error situations that originate from the server. - -==== diff --git a/core/standard/requirements/oas30/REQ_oas-definition.adoc b/core/standard/requirements/oas30/REQ_oas-definition.adoc new file mode 100644 index 000000000..f88461a0c --- /dev/null +++ b/core/standard/requirements/oas30/REQ_oas-definition.adoc @@ -0,0 +1,13 @@ +[[req_oas30_oas-definition]] +==== *Requirement /req/oas30/oas-definition* OpenAPI 3.0 definition + +[requirement] +==== +[%metadata] +identifier:: /req/oas30/oas-definition + +*A:* + +The JSON representation SHALL conform to the <>. + +==== \ No newline at end of file diff --git a/core/standard/requirements/oas30/oas-definition-1.adoc b/core/standard/requirements/oas30/oas-definition-1.adoc deleted file mode 100644 index 9aa58340f..000000000 --- a/core/standard/requirements/oas30/oas-definition-1.adoc +++ /dev/null @@ -1,16 +0,0 @@ -[[req_oas30_oas-definition-1]] -==== *Requirement /req/oas30/oas-definition-1* - -[requirement] -==== -[%metadata] -identifier:: /req/oas30/oas-definition-1 - -*A:* - -The content of the response of the HTTP GET operation at the landing page SHALL include the following links to the API definition: - - -* relation type `service-desc` and content type `application/vnd.oai.openapi+json;version=3.0`, -* relation type `service-doc` and content type `text/html`. -==== diff --git a/core/standard/requirements/oas30/oas-definition-2.adoc b/core/standard/requirements/oas30/oas-definition-2.adoc deleted file mode 100644 index 034d89295..000000000 --- a/core/standard/requirements/oas30/oas-definition-2.adoc +++ /dev/null @@ -1,13 +0,0 @@ -[[req_oas30_oas-definition-2]] -==== *Requirement /req/oas30/oas-definition-2* OpenAPI 3.0 conformance - -[requirement] -==== -[%metadata] -identifier:: /req/oas30/oas-definition-2 - -*A:* - -The JSON representation SHALL conform to the <>. - -==== diff --git a/core/standard/requirements/oas31/REQ_oas-definition.adoc b/core/standard/requirements/oas31/REQ_oas-definition.adoc new file mode 100644 index 000000000..57db2be4f --- /dev/null +++ b/core/standard/requirements/oas31/REQ_oas-definition.adoc @@ -0,0 +1,13 @@ +[[req_oas31_oas-definition]] +==== *Requirement /req/oas31/oas-definition* OpenAPI 3.1 definition + +[requirement] +==== +[%metadata] +identifier:: /req/oas31/oas-definition + +*A:* + +The JSON representation SHALL conform to the <>. + +==== \ No newline at end of file diff --git a/core/standard/requirements/requirements_class_custom_dimensions.adoc b/core/standard/requirements/requirements_class_custom_dimensions.adoc index 36e0d2bbf..bab5a2227 100644 --- a/core/standard/requirements/requirements_class_custom_dimensions.adoc +++ b/core/standard/requirements/requirements_class_custom_dimensions.adoc @@ -1,4 +1,4 @@ -Support for dimensions other than the standard spatiotemporal dimensions can be provided by adding the custom dimension type to the EDR API extent object in the <> response. The custom dimension type allows for an array of custom query dimensions to be defined. Each custom dimension item is defined with the following characteristics (using an OpenAPI Specification 3.0 fragment) +Support for dimensions other than the standard spatio-temporal dimensions can be provided by adding the custom dimension type to the EDR API extent object in the <> response. The custom dimension type allows for an array of custom query dimensions to be defined. Each custom dimension item is defined with the following characteristics (using an OpenAPI Specification 3.0 fragment) .Schema for custom query parameter metadata ==== @@ -36,7 +36,7 @@ properties: ---- ==== -Following the conventions used for the temporal or vertical extents, custom extent objects shall provide the following information: +Following the conventions used for the temporal or vertical extents, custom extent objects SHALL provide the following information: * id: Name of the <>. * interval: data value range of the dimension (minimum value, maximum value). diff --git a/core/standard/requirements/requirements_class_oas.adoc b/core/standard/requirements/requirements_class_oas.adoc new file mode 100644 index 000000000..1187f1da1 --- /dev/null +++ b/core/standard/requirements/requirements_class_oas.adoc @@ -0,0 +1,18 @@ +[[rc_oas]] +[requirements_class] +.OAS + +==== +[%metadata] +identifier:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/req/oas +obligation:: requirement +subject:: Web API +inherit:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/req/core + +requirement:: /req/oas/completeness +requirement:: /req/oas/exceptions-codes +requirement:: /req/oas/oas-definition +requirement:: /req/oas/oas-impl +requirement:: /req/oas/security + +==== \ No newline at end of file diff --git a/core/standard/requirements/requirements_class_oas30.adoc b/core/standard/requirements/requirements_class_oas30.adoc index 3193527be..ceeb7f602 100644 --- a/core/standard/requirements/requirements_class_oas30.adoc +++ b/core/standard/requirements/requirements_class_oas30.adoc @@ -1,22 +1,13 @@ [[rc_oas30]] - [requirements_class] -.OpenAPI 3.0 Requirements Class +.OAS30 ==== [%metadata] identifier:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/req/oas30 obligation:: requirement subject:: Web API -inherit:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/req/core -inherit:: https://www.opengis.net/spec/ogcapi-common-1/1.0/req/oas30 -inherit:: OpenAPI Specification 3.0.3 - -requirement:: /req/oas30/oas-impl -requirement:: /req/oas30/oas-definition-1 -requirement:: /req/oas30/oas-definition-2 -requirement:: /req/oas30/completeness -requirement:: /req/oas30/exceptions-codes -requirement:: /req/oas30/security +inherit:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/req/oas +inherit:: https://spec.openapis.org/oas/v3.0.4 -==== +==== \ No newline at end of file diff --git a/core/standard/requirements/requirements_class_oas31.adoc b/core/standard/requirements/requirements_class_oas31.adoc new file mode 100644 index 000000000..38d83e55f --- /dev/null +++ b/core/standard/requirements/requirements_class_oas31.adoc @@ -0,0 +1,13 @@ +[[rc_oas31]] +[requirements_class] +.OAS31 + +==== +[%metadata] +identifier:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/req/oas31 +obligation:: requirement +subject:: Web API +inherit:: https://www.opengis.net/spec/ogcapi-edr-1/1.2/req/oas +inherit:: https://spec.openapis.org/oas/v3.1.1 + +==== \ No newline at end of file diff --git a/core/standard/sections/annex_ats.adoc b/core/standard/sections/annex_ats.adoc index e4e50728f..cb95e11e8 100644 --- a/core/standard/sections/annex_ats.adoc +++ b/core/standard/sections/annex_ats.adoc @@ -9,7 +9,7 @@ implementations of the EDR API. An ATS provides a basis for developing an Execut The abstract test cases (assertions) are organized into test groups that correspond to distinct conformance test classes defined in the EDR API Standard. -OGC APIs are not Web Services in the traditional sense. Rather, they define the behavior and content of a set of Resources exposed through a Web Application Programing Interface (Web API). Therefore, an API may expose resources in addition to those defined by the standard. A test engine shall be able to traverse the API, identify and validate test points, and ignore resource paths which are not to be tested. +OGC APIs are not Web Services in the traditional sense. Rather, they define the behavior and content of a set of Resources exposed through a Web Application Programing Interface (Web API). Therefore, an API may expose resources in addition to those defined by the standard. A test engine SHALL be able to traverse the API, identify and validate test points, and ignore resource paths which are not to be tested. === Conformance Class Core @@ -43,6 +43,10 @@ include::../abstract_tests/ATS_class_html.adoc[] include::../abstract_tests/ATS_class_oas30.adoc[] +=== Conformance Class OpenAPI 3.1 + +include::../abstract_tests/ATS_class_oas31.adoc[] + === Conformance Class Queries include::../abstract_tests/ATS_class_queries.adoc[] diff --git a/core/standard/sections/annex_glossary.adoc b/core/standard/sections/annex_glossary.adoc index c3bfda27c..3117d305f 100644 --- a/core/standard/sections/annex_glossary.adoc +++ b/core/standard/sections/annex_glossary.adoc @@ -23,7 +23,7 @@ NOTE: When no ambiguity is possible, the word `test` may be omitted. i.e. confor [[ctc-definition]] === Conformance Class; Conformance Test Class -set of conformance test modules that shall be applied to receive a single certificate of conformance (https://portal.ogc.org/files/?artifact_id=34762[OGC 08-131r3]) +set of conformance test modules that SHALL be applied to receive a single certificate of conformance (https://portal.ogc.org/files/?artifact_id=34762[OGC 08-131r3]) NOTE: When no ambiguity is possible, the word _test_ may be left out, so conformance test class maybe called a conformance class. @@ -57,7 +57,7 @@ expression in the content of a document conveying criteria to be fulfilled if co [[requirements-class-definition]] === Requirements Class -aggregate of all requirement modules that shall all be satisfied to satisfy a conformance test class (https://portal.ogc.org/files/?artifact_id=34762[OGC 08-131r3]) +aggregate of all requirement modules that SHALL all be satisfied to satisfy a conformance test class (https://portal.ogc.org/files/?artifact_id=34762[OGC 08-131r3]) [[requirements-module-definition]] === Requirements Module diff --git a/core/standard/sections/annex_measurement_type_methods.adoc b/core/standard/sections/annex_measurement_type_methods.adoc index d0ab1983b..59643f653 100644 --- a/core/standard/sections/annex_measurement_type_methods.adoc +++ b/core/standard/sections/annex_measurement_type_methods.adoc @@ -5,7 +5,7 @@ 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"] +[width="100%",cols="30%,70%",frame="topbot",options="header"] .Recommended method values |========================== |Method | Description diff --git a/core/standard/sections/annex_relationship.adoc b/core/standard/sections/annex_relationship.adoc index ecdb4800e..ae1e57864 100644 --- a/core/standard/sections/annex_relationship.adoc +++ b/core/standard/sections/annex_relationship.adoc @@ -9,26 +9,26 @@ This Annex outlines the relationships, in terms of underlying conceptual models, :sectnums!: === Relationship between OGC API-EDR and OGC API-Features -The EDR API is completely compatible with https://docs.ogc.org/is/17-069r3/17-069r3.html[OGC API - Features - Part 1: Core (OGC 17-069r3)], in that it supports Collections and Items. It extends the Collection functionality by allowing 'Instances', a form of 'collection of collections'. The EDR API also supports the retrieval of spatiotemporal data by named location as well as coordinates. +The EDR API is completely compatible with https://docs.ogc.org/is/17-069r3/17-069r3.html[OGC API - Features - Part 1: Core (OGC 17-069r3)], in that it supports Collections and Items. It extends the Collection functionality by allowing 'Instances', a form of 'collection of collections'. The EDR API also supports the retrieval of spatio-temporal data by named location as well as coordinates. === Relationships between OGC API-EDR and Moving Features standards There are four OGC Moving Features standards: https://docs.ogc.org/is/18-075/18-075.html[conceptual model with XML encoding (OGC 18-075)], https://docs.ogc.org/is/16-120r3/16-120r3.html[access (OGC 16-120r3)], https://docs.ogc.org/is/14-084r2/14-084r2.html[CSV encoding (OGC 14-084r2)], and https://docs.ogc.org/is/19-045r3/19-045r3.html[JSON encoding (OGC 19-045r3)]. The Moving Features Standards are concerned with things that move along a trajectory, and simultaneously change their orientation through rigid body rotation. The concepts are defined in https://www.uml.org[Unified Modeling Language (UML)] and encoded in GML. The EDR API does not have the concept of orientation, or foliation or prisms. EDR API is OpenAPI defined, over HTTP(S), and not defined in UML. Moving Features and EDR API do share a common conceptual definition, from ISO, of a Trajectory, but the Moving Features Standards encode trajectories in GML, CSV and Moving Features JSON, whereas the EDR API encodes trajectories in WKT. The Moving Features Standards support relationships between trajectories and other features, including other trajectories, the EDR API does not. Moving Features also explicitly supports concepts such as velocity, acceleration and distance along a trajectory, whereas the EDR API does not. -The Moving Features Standards consider trajectories as a primary resource to be queried, manipulated and processed, whereas in the EDR API, a trajectory is simply a query sampling pattern, encoded in WKT and https://www.iso.org/iso-8601-date-and-time-format.html[ISO 8601 Date Time Format], into a spatiotemporal data resource. +The Moving Features Standards consider trajectories as a primary resource to be queried, manipulated and processed, whereas in the EDR API, a trajectory is simply a query sampling pattern, encoded in WKT and https://www.iso.org/iso-8601-date-and-time-format.html[ISO 8601 Date Time Format], into a spatio-temporal data resource. === Relationships between OGC API-EDR and Web Coverage Service and Coverage Implementation Schema -The primary messaging mechanism of the EDR API is JSON, including CoverageJSON, over HTTP(S). Implementations of the EDR API are described using the OpenAPI V3.0 specification. The target users are web-developers and end-users who are not geospatial experts. The target data resources are any dataset described as spatiotemporal, accessible by coordinates. +The primary messaging mechanism of the EDR API is JSON, including CoverageJSON, over HTTP(S). Implementations of the EDR API are described using the OpenAPI V3.0 specification. The target users are web-developers and end-users who are not geospatial experts. The target data resources are any dataset described as spatio-temporal, accessible by coordinates. The EDR API is consistent with the https://docs.ogc.org/is/17-089r1/17-089r1.html[Web Coverage Service (WCS)] and https://docs.ogc.org/is/09-146r8/09-146r8.html[Coverage Implementation Schema (CIS)] standards but does not require the end user or developer to use the terms Domain and RangeSet. The EDR API can also be used to generate a single query against a collection of coverages, providing the data coordinate reference systems are consistent. The EDR API can support any of the WCS and CIS output formats if required. At the time of publication of version 1.0.0 of the EDR API, at least one EDR API implementation had been created by building on top of a WCS/CIS implementation. -The EDR API, with only a single form of spatiotemporal query, allows the retrieval of data from other data stores adhering to data models that are not coverages, such as features or observations. +The EDR API, with only a single form of spatio-temporal query, allows the retrieval of data from other data stores adhering to data models that are not coverages, such as features or observations. === Relationship between OGC API-EDR and the OGC MetOcean Application profile of Web Coverage Service (WCS) 2.1 The OGC API-EDR standard was developed out of the experiences of creating https://docs.ogc.org/is/15-045r7/15-045r7.html[Part 0], https://docs.ogc.org/is/15-108r3/15-108r3.html[Part 1] and https://docs.ogc.org/is/17-086r3/17-086r3.html[Part 2] of the WCS 2.1 Met Ocean Application Profile, *ostensibly* for similar use cases, but for differing technology bases. -The primary messaging mechanism of the EDR API is JSON, including CoverageJSON, over HTTP(S). Implementations of the EDR API are described using the OpenAPI V3.0 specification. The target users are web-developers and end-users who are not geospatial experts. The target data resources are any data described as spatiotemporal, accessible by coordinates, not just meteorological or oceanographic. +The primary messaging mechanism of the EDR API is JSON, including CoverageJSON, over HTTP(S). Implementations of the EDR API are described using the OpenAPI V3.0 specification. The target users are web-developers and end-users who are not geospatial experts. The target data resources are any data described as spatio-temporal, accessible by coordinates, not just meteorological or oceanographic. In contrast, the Met Ocean Application Profile of WCS 2.1 is designed primarily to support XML-encoded messaging, in particular, for GetCapabilities and GetCoverage requests. Responses returning coverages are modelled according to the CIS, which can be XML, JSON or JSON-LD. Developers and end-users are expected to be familiar with the geospatial terminology of coverages, and use the Profile with predominantly meteorological or oceanographic data. diff --git a/core/standard/sections/annex_requirements.adoc b/core/standard/sections/annex_requirements.adoc index 8d0c9351a..b9e199fbe 100755 --- a/core/standard/sections/annex_requirements.adoc +++ b/core/standard/sections/annex_requirements.adoc @@ -19,12 +19,6 @@ include::../requirements/core/REQ_root-op.adoc[] include::../requirements/core/REQ_root-success.adoc[] - - -include::../requirements/core/REQ_rc-api-definition-op.adoc[] - -include::../requirements/core/REQ_rc-api-definition-success.adoc[] - include::../requirements/core/REQ_core_conformance.adoc[] include::../requirements/core/REQ_conformance-success.adoc[] @@ -365,25 +359,3 @@ include::../requirements/html/REQ_content.adoc[] include::../requirements/html/REQ_definition.adoc[] :sectnums: - -=== Requirements Class "OpenAPI 3.0" in Detail - -:sectnums!: - -==== *Requirements Class:* OpenAPI 3.0 - -include::../requirements/requirements_class_oas30.adoc[] - -include::../requirements/oas30/REQ_oas-impl.adoc[] - -include::../requirements/oas30/oas-definition-1.adoc[] - -include::../requirements/oas30/oas-definition-2.adoc[] - -include::../requirements/oas30/REQ_completeness.adoc[] - -include::../requirements/oas30/REQ_exception-codes.adoc[] - -include::../requirements/oas30/REQ_security.adoc[] - -:sectnums: diff --git a/core/standard/sections/clause_0_front_material.adoc b/core/standard/sections/clause_0_front_material.adoc index 66cfe4320..024178885 100644 --- a/core/standard/sections/clause_0_front_material.adoc +++ b/core/standard/sections/clause_0_front_material.adoc @@ -5,7 +5,7 @@ *OGC Declaration* //// -Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium shall not be held responsible for identifying any or all such patent rights. +Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. The Open Geospatial Consortium SHALL not be held responsible for identifying any or all such patent rights. Recipients of this document are requested to submit, with their comments, notification of any relevant patent claims or other intellectual property rights of which they may be aware that might be infringed by any implementation of the standard set forth in this document, and to provide supporting documentation. @@ -20,7 +20,7 @@ International Standards are drafted in accordance with the rules given in the IS The main task of technical committees is to prepare International Standards. Draft International Standards adopted by the technical committees are circulated to the member bodies for voting. Publication as an International Standard requires approval by at least 75 % of the member bodies casting a vote. -Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO shall not be held responsible for identifying any or all such patent rights. +Attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. ISO SHALL not be held responsible for identifying any or all such patent rights. //// @@ -41,7 +41,7 @@ All questions regarding this submission should be directed to the editor or the [abstract] == Abstract -The OGC API - Environmental Data Retrieval (EDR) standard provides a family of lightweight query interfaces to access spatiotemporal data resources by requesting data at a *Position*, within an *Radius*, *Area* or *Cube*, along a *Trajectory* or through a *Corridor*, from a predefined *Location* or as an existing data *Item*. A spatio-temporal data resource is a collection of spatio-temporal data that can be sampled using the EDR query pattern geometries. These patterns are described in the section describing the <>. +The OGC API - Environmental Data Retrieval (EDR) standard provides a family of lightweight query interfaces to access spatio-temporal data resources by requesting data at a *Position*, within an *Radius*, *Area* or *Cube*, along a *Trajectory* or through a *Corridor*, from a predefined *Location* or as an existing data *Item*. A spatio-temporal data resource is a collection of spatio-temporal data that can be sampled using the EDR query pattern geometries. These patterns are described in the section describing the <>. The goals of the EDR Application Programming Interface (API) that is specified by this standard are to: @@ -50,7 +50,7 @@ The goals of the EDR Application Programming Interface (API) that is specified b A major use case for the EDR API is to retrieve small subsets from large collections of environmental data, such as weather forecasts, though many other types of data can be accessed. The important aspect is that the requested data can be unambiguously specified by spatio-temporal coordinates. -The EDR API query patterns - <>, <>, <>, <>, <>, <> or <> - can be thought of as discrete sampling geometries, conceptually consistent with the feature of interest in the https://www.ogc.org/standards/sos[Sensor Observation Service (SOS)] standard. A typical data resource accessed by an EDR API instance is a multidimensional dataset that could be accessed via an implementation of the http://www.ogc.org/standards/wcs[Web Coverage Service (WCS)] standard. In contrast to SOS and WCS, the EDR API is fully consistent with the patterns of the https://ogcapi.ogc.org/[OGC API] family of standards and aims to provide a single set of simple-to-use query patterns. Use cases for EDR range from real or virtual time-series observation retrievals, to sub-setting 4-dimensional data cubes along user-supplied sampling geometries. These query patterns do not attempt to satisfy the full scope of either SOS or WCS, but instead provide useful building blocks to enable the composition of APIs that satisfy a wide range of geospatial data use cases. By defining a small set of query patterns (and no requirement to implement all of them), the EDR API should help to simplify the design of systems (as they can be performance tuned for the supported queries) making it easier to build robust and scalable infrastructures. +The EDR API query patterns - <>, <>, <>, <>, <>, <> or <> - can be thought of as discrete sampling geometries, conceptually consistent with the feature of interest in the https://www.ogc.org/standards/sos[Sensor Observation Service (SOS)] standard. A typical data resource accessed by an EDR API instance is a multidimensional dataset that could be accessed via an implementation of the https://www.ogc.org/standards/wcs[Web Coverage Service (WCS)] standard. In contrast to SOS and WCS, the EDR API is fully consistent with the patterns of the https://ogcapi.ogc.org/[OGC API] family of standards and aims to provide a single set of simple-to-use query patterns. Use cases for EDR range from real or virtual time-series observation retrievals, to sub-setting 4-dimensional data cubes along user-supplied sampling geometries. These query patterns do not attempt to satisfy the full scope of either SOS or WCS, but instead provide useful building blocks to enable the composition of APIs that satisfy a wide range of geospatial data use cases. By defining a small set of query patterns (and no requirement to implement all of them), the EDR API should help to simplify the design of systems (as they can be performance tuned for the supported queries) making it easier to build robust and scalable infrastructures. The EDR API *Item* query pattern provides a way of discovering and retrieving existing data objects available from the service. diff --git a/core/standard/sections/clause_10_oas.adoc b/core/standard/sections/clause_10_oas.adoc new file mode 100644 index 000000000..4c25fd911 --- /dev/null +++ b/core/standard/sections/clause_10_oas.adoc @@ -0,0 +1,81 @@ +== OpenAPI requirements classes + +=== Requirements Class "OpenAPI Specification" + +NOTE: This requirements class is abstract. Implementations can only conform to the concrete requirements classes <> or <>. + +==== Basic requirements + +Servers conforming to this requirements class define their API by an OpenAPI Document. Note that this requirements class is not specific to a particular version of the OpenAPI specification. Requirements specific to a particular version are defined in separate, dependent requirements classes. + +include::../requirements/requirements_class_oas.adoc[] + +include::../requirements/oas/REQ_oas-definition.adoc[] + +The requirements <> and <> in _Core_ require that the API definition documents are referenced from the landing page. + +[[two_appraoches_oas]] +OpenAPI definitions can be created using different approaches. A typical example is the representation of the feature collections. One approach is to use a path parameter `collectionId,` i.e., the API definition has only a single path entry for all feature collections. Another approach is to explicitly define each feature collection in a separate path and without a path parameter, which allows to specify filter parameters or explicit feature schemas per feature collection. Both approaches are valid. + +include::../requirements/oas/REQ_oas-impl.adoc[] + +==== Complete definition + +include::../requirements/oas/REQ_completeness.adoc[] + +Note that servers that, for example, are access-controlled (see <>), support web cache validation, CORS or that use HTTP redirection will make use of additional HTTP status codes beyond regular codes such as `200` for successful GET requests and `400`, `404` or `500` for error situations. See <>. + +Clients have to be prepared to receive responses not documented in the OpenAPI definition. For example, additional errors can occur in the transport layer outside of the server. + +[[exceptions]] +==== Exceptions + +include::../requirements/oas/REQ_exception-codes.adoc[] + +[[example_14]] +.An exception response object definition +================= +[source,YAML] +---- +description: An error occurred. +content: + application/json: + schema: + $ref: https://schemas.opengis.net/ogcapi/edr/1.1/openapi/schemas/core/exception.yaml + text/html: + schema: + type: string +---- +================= + +[[security]] +==== Security + +include::../requirements/oas/REQ_security.adoc[] + +The OpenAPI specification currently supports the following link:https://spec.openapis.org/oas/v3.0.4#security-scheme-object[security schemes]: + +* HTTP authentication, + +* an API key (either as a header or as a query parameter), + +* OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and + +* OpenID Connect Discovery. + + +=== Requirements Class "OpenAPI Specification 3.0" + +Servers conforming to this requirements class define their API by an link:https://spec.openapis.org/oas/v3.0.4#openapi-document[OpenAPI 3.0 Document]. + +include::../requirements/requirements_class_oas30.adoc[] + +include::../requirements/oas30/REQ_oas-definition.adoc[] + +=== Requirements Class "OpenAPI Specification 3.1" + +Servers conforming to this requirements class define their API by an link:https://spec.openapis.org/oas/v3.1.1#openapi-document[OpenAPI 3.1 Document]. + +include::../requirements/requirements_class_oas31.adoc[] + +include::../requirements/oas31/REQ_oas-definition.adoc[] \ No newline at end of file diff --git a/core/standard/sections/clause_2_conformance.adoc b/core/standard/sections/clause_2_conformance.adoc index 0af0f7ccb..09d7baec3 100644 --- a/core/standard/sections/clause_2_conformance.adoc +++ b/core/standard/sections/clause_2_conformance.adoc @@ -1,6 +1,6 @@ == Conformance -Conformance with this standard shall be checked using the tests specified in <> of this document. The framework, concepts, and methodology for testing, and the criteria to claim conformance are specified in the https://portal.ogc.org/files/?artifact_id=55234[OGC Compliance Testing Policies and Procedures] and the https://www.ogc.org/compliance[OGC Compliance Testing] web site. +Conformance with this standard SHALL be checked using the tests specified in <> of this document. The framework, concepts, and methodology for testing, and the criteria to claim conformance are specified in the https://portal.ogc.org/files/?artifact_id=55234[OGC Compliance Testing Policies and Procedures] and the https://www.ogc.org/compliance[OGC Compliance Testing] web site. The one Standardization Target for this standard is <>. @@ -36,11 +36,13 @@ The Requirements Classes are specified in <> and None of these encodings are mandatory. An implementation of the EDR API may decide to implement another encoding instead of, or in addition to, those listed. However, a common format does simplify interoperability, so support for _CoverageJSON_ is highly recommended as an established, efficient and effective format for a variety of spatio-temporal data. -* <>, one Requirements Class +The _Core_ does not mandate any encoding or format for the formal definition of the API either. The recommended option is the OpenAPI specification and three requirements classes have been specified for OpenAPI: -The <> Standard does not mandate any encoding or format for the formal definition of the API. However, the preferred option is the OpenAPI 3.0 specification. Therefore, the EDR APIs are defined using OpenAPI 3.0. +* <> (depends on _Core_), +* <> (depends on _OpenAPI Specification_). +* <> (depends on _OpenAPI Specification_). -The OpenAPI 3.0 Requirements Class is specified in <> and <> in more detail. +The _Core_ requirements class can also decide to use other API definition representations in addition or instead of an OpenAPI 3.x definition. Examples for alternative API definitions: OpenAPI 2.0 (Swagger), future versions of the OpenAPI specification, an OWS Common 2.0 capabilities document or WSDL. * <>, one Requirements Class ** <> diff --git a/core/standard/sections/clause_3_references.adoc b/core/standard/sections/clause_3_references.adoc index 26ff9227d..94a478c75 100755 --- a/core/standard/sections/clause_3_references.adoc +++ b/core/standard/sections/clause_3_references.adoc @@ -3,7 +3,8 @@ 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] +* [[[OpenAPI30,nofetch(OpenAPI30)]]] OpenAPI Initiative (OAI). **OpenAPI Specification 3.0** [online]. 2020 [viewed 2025-01-03]. The latest patch version at the time of publication of this standard was 3.0.4, available at https://spec.openapis.org/oas/v3.0.4 +* [[[OpenAPI31,nofetch(OpenAPI31)]]] OpenAPI Initiative (OAI). **OpenAPI Specification 3.1** [online]. 2021 [viewed 2025-01-03]. The latest patch version at the time of publication of this standard was 3.1.1, available at https://spec.openapis.org/oas/v3.1.1 * [[[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] @@ -12,8 +13,8 @@ The following normative documents contain provisions that, through reference in * [[[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] +* [[[html5,nofetch(html5)]]] W3C: HTML5, W3C Recommendation, https://www.w3.org/TR/html5/[https://www.w3.org/TR/html5/] +* [[[schema_org,nofetch(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,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, https://portal.ogc.org/files/?artifact_id=25355[https://portal.ogc.org/files/?artifact_id=25355] diff --git a/core/standard/sections/clause_4_terms_and_definitions.adoc b/core/standard/sections/clause_4_terms_and_definitions.adoc index dae339731..0990f1ff5 100644 --- a/core/standard/sections/clause_4_terms_and_definitions.adoc +++ b/core/standard/sections/clause_4_terms_and_definitions.adoc @@ -5,7 +5,7 @@ //// -This document uses the terms defined in https://portal.ogc.org/public_ogc/directives/directives.php[OGC Policy Directive 49], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “shall” (not “must”) is the verb form used to indicate a requirement to be strictly followed to conform to this document and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2. +This document uses the terms defined in https://portal.ogc.org/public_ogc/directives/directives.php[OGC Policy Directive 49], which is based on the ISO/IEC Directives, Part 2, Rules for the structure and drafting of International Standards. In particular, the word “SHALL” (not “MUST”) is the verb form used to indicate a requirement to be strictly followed to conform to this document and OGC documents do not use the equivalent phrases in the ISO/IEC Directives, Part 2. This document also uses terms defined in the OGC Standard for Modular specifications (https://portal.ogc.org/files/?artifact_id=34762[OGC 08-131r3]), also known as the ‘ModSpec’. The definitions of terms such as standard, specification, requirement, and conformance test are provided in the ModSpec. @@ -58,8 +58,8 @@ data type that describes a point or geometry potentially occupied by an object o region specified with a geographic position and radial distance -[[spatiotemporal-data-definition]] -=== spatiotemporal data +[[spatio-temporal-data-definition]] +=== spatio-temporal data data associated with a position in space-time diff --git a/core/standard/sections/clause_5_conventions.adoc b/core/standard/sections/clause_5_conventions.adoc index e7e83a131..1485463f0 100755 --- a/core/standard/sections/clause_5_conventions.adoc +++ b/core/standard/sections/clause_5_conventions.adoc @@ -71,7 +71,7 @@ XML media types that would typically occur in an OGC API that supports XML are: The typical HTML media type for all "web pages" in an OGC API would be `text/html`. -The media types for an OpenAPI definition are `application/vnd.oai.openapi+json;version=3.0` (JSON) and `application/vnd.oai.openapi;version=3.0` (YAML). +The media types for an OpenAPI definition are `application/vnd.oai.openapi+json;version=3.0.4` or `application/vnd.oai.openapi+json;version=3.1.1` (JSON) and `application/vnd.oai.openapi;version=3.0.4` or `application/vnd.oai.openapi;version=3.1.1` (YAML). NOTE: The OpenAPI media type has not been registered yet with IANA and may change. @@ -96,36 +96,43 @@ For simplicity, this Standard generally refers to the HTTP protocol. This is not So that developers can more easily learn how to use the API, good documentation is essential for any API. In the best case, documentation would be available both in HTML for human consumption and in a machine-readable format that can be best processed by software for run-time binding. -This OGC Standard specifies requirements and recommendations for implementation APIs that share spatiotemporal resources and want to follow a standard way of doing so. In general, APIs will go beyond the requirements and recommendations stated in this standard. They will support additional operations, parameters, etc. that are specific to the API or the software tool used to implement the API. +This OGC Standard specifies requirements and recommendations for implementation APIs that share spatio-temporal resources and want to follow a standard way of doing so. In general, APIs will go beyond the requirements and recommendations stated in this standard. They will support additional operations, parameters, etc. that are specific to the API or the software tool used to implement the API. ==== Role of OpenAPI -This document uses OpenAPI 3.0 fragments as examples and to formally state requirements. Using OpenAPI 3.0 is not required for implementing an OGC API. Other API definition languages may be used along with, or instead of OpenAPI. However, any API definition language used should have an associated <> advertised through the `/conformance` path. +This document uses OpenAPI 3.1 fragments as examples and to formally state requirements. However, using OpenAPI 3.1 is not required for implementing a server. -This approach is used to avoid lock-in to a specific approach to defining an API. This standard includes a <> for API definitions that follow the <>. Conformance classes for additional API definition languages will be added as the API landscape continues to evolve. +Therefore, the _Core_ requirements class only requires that an API definition is provided and linked from the landing page. -In this document, fragments of OpenAPI definitions are shown in YAML since YAML is easier to format than JSON and is typically used in OpenAPI editors. +Separate requirements classes are specified for API definitions that follow the <> and <>. This does not preclude that in the future or in parallel other versions of OpenAPI or other API descriptions are provided by a server. + +NOTE: This approach is used to avoid lock-in to a specific approach to defining an API as it is expected that the API landscape will continue to evolve. + +In this document, fragments of OpenAPI definitions are shown in <> since YAML is easier to read than JSON and is typically used in OpenAPI editors. YAML is described by its authors as a human friendly data serialization standard for all programming languages. ==== References to OpenAPI components in normative statements -Some normative statements (requirements, recommendations and permissions) use a phrase that a component in the API definition of the server must be "based upon" a schema or parameter component in the OGC schema repository. +Some normative statements (requirements, recommendations and permissions) use a phrase that a component in the API definition of the server has to be "based upon" a schema or parameter component in the OGC schema repository. -In this case, the following changes to the pre-defined OpenAPI component are permitted: +In the case above, the following changes to the pre-defined OpenAPI component are permitted. * If the server supports an XML encoding, `xml` properties may be added to the relevant OpenAPI schema components. -* The range of values of a parameter or property may be extended (additional values) or constrained (if a subset of all possible values are applicable to the server). An example for a constrained range of values is to explicitly specify the supported values of a string parameter or property using an `enum`. + +* The range of values of a parameter or property may be extended (additional values) or constrained (if a subset of all possible values are applicable to the server). An example for a constrained range of values is to explicitly specify the supported values of a string parameter or property using an enum. + +* The default value of a parameter may be changed or added unless a requirement explicitly prohibits this. + * Additional properties may be added to the schema definition of a Response Object. + * Informative text may be changed or added, like comments or description properties. -For EDR API definitions that do not conform to the <> the normative statement should be interpreted in the context of the API definition language used. +For API definitions that do not conform to the <>, the normative statement has to be interpreted in the context of the API definition language used. ==== Paths in OpenAPI definitions -All paths in an OpenAPI definition are relative to the base URL of a server. Unlike Web Services, an API is decoupled from the server(s). Some ramifications of this are: - -* An API may be hosted (replicated) on more than one server. -* Parts of an API may be distributed across multiple servers. +All paths in an OpenAPI definition are relative to a base URL of the server. +[[example_1]] .URL of the OpenAPI definition =========================================== If the OpenAPI Server Object looks like this: @@ -139,9 +146,10 @@ servers: description: Production server ---- -The path +`/mypath`+ in the OpenAPI definition of the API would be the URL +`https://data.example.org/mypath`+ for the production server. +The path "/mypath" in the OpenAPI definition of a Web API would be the +URL `https://data.example.org/mypath` for the production server. =========================================== ==== Reusable OpenAPI components -Reusable components for OpenAPI definitions for an OGC API are referenced from this document. +Reusable components for OpenAPI definitions for implementations of OGC API Features are referenced from this document. diff --git a/core/standard/sections/clause_6_overview.adoc b/core/standard/sections/clause_6_overview.adoc index 7aa55c39b..8e7b1aca8 100644 --- a/core/standard/sections/clause_6_overview.adoc +++ b/core/standard/sections/clause_6_overview.adoc @@ -12,7 +12,7 @@ The https://ogcapi.ogc.org/edr[OGC API - Environmental Data Retrieval] Standard . To allow clients to retrieve a subset of data created by the API in response to a standardized, coordinate orientated, query pattern; . To provide 'building blocks' allowing the construction of more complex applications. -An EDR API implemented according to this standard can be considered a 'Sampling API'. The query creates a discrete sampling geometry against the spatiotemporal data resource of a relatively persistent data store. The query and its response are transient resources, but if required could be made persistent for re-use. +An EDR API implemented according to this standard can be considered a 'Sampling API'. The query creates a discrete sampling geometry against the spatio-temporal data resource of a relatively persistent data store. The query and its response are transient resources, but if required could be made persistent for re-use. The functionality provided by the EDR query patterns could be realized through specific implementation of the SOS (and to some extent WCS) from the https://www.ogc.org/standards/common[OGC Web Services family of (XML-based) standards]. The OGC API-EDR introduces a streamlined JSON-based OGC API implementation of building blocks that could be used for many of the simple similar use cases addressed by SOS and WCS in the past. diff --git a/core/standard/sections/clause_7_core.adoc b/core/standard/sections/clause_7_core.adoc index 9cc5a2ba2..3a3c19633 100755 --- a/core/standard/sections/clause_7_core.adoc +++ b/core/standard/sections/clause_7_core.adoc @@ -1,7 +1,7 @@ [[dependencies-overview]] == Dependencies on Core and Collections Requirements Classes of OGC API - Common -The OGC API-EDR standard is an extension of <> and <>. Therefore, an implementation of OGC API-EDR shall first satisfy the appropriate Requirements Classes from OGC API - Common, namely: +The OGC API-EDR standard is an extension of <> and <>. Therefore, an implementation of OGC API-EDR SHALL first satisfy the appropriate Requirements Classes from OGC API - Common, namely: * Core, <> * Collections, <> @@ -67,7 +67,7 @@ A successful response to the `Landing Page` operation is defined in OGC API  .Landing Page Response Schema [source,yaml] ---- -include::../openapi/schemas/core/landingPage.yaml[] +include::../openapi/oas31/schemas/core/landingPage.yaml[] ---- The following JSON fragment is an example of a response to an OGC API-EDR Landing Page operation. @@ -84,6 +84,30 @@ include::../examples/json/landingPage_example.json[] The requirements for handling unsuccessful requests are provided in Recommendation <> of OGC API - Common. General guidance on HTTP status codes and how they should be handled is provided in <> - HTTP Status Codes. [[api-definition]] +=== API definition + +==== Operation + +Every OGC Web API is expected to provide a definition that describes the capabilities of the server and which can be used by developers to understand the API, by software clients to connect to the server, or by development tools to support the implementation of servers and clients. + +include::../requirements/core/REQ_rc-api-definition-op.adoc[] + +include::../recommendations/core/PER_api-definition-uri.adoc[] + +Note that multiple API definition formats can be supported. + +==== Response + +include::../requirements/core/REQ_rc-api-definition-success.adoc[] + +include::../recommendations/core/REC_api-definition-oas.adoc[] + +If the server hosts the API definition under the base path of the API (for example, at path `/api`), there is no need to include the path of the API definition in the API definition itself. + +The idea is that any OGC API Features implementation can be used by developers that are familiar with the API definition language(s) supported by the server. For example, if an OpenAPI definition is used, it is possible to create a working client using the OpenAPI definition. The developer may need to learn a little bit about geometry data types, etc., but it is not necessary to read this standard to access the data via the API. + +In case the API definition is based on OpenAPI 3.1, consider the <> discussed in OpenAPI requirements class. + ==== API definition Every API is required to provide a definition document that describes the capabilities of that API. This definition document can be used by developers to understand the API, by software clients to connect to the server, or by development tools to support the implementation of servers and clients. @@ -141,7 +165,7 @@ Apply Requirement <> on declaration .Conformance Response Schema [source,yaml] ---- -include::../openapi/schemas/core/confClasses.yaml[] +include::../openapi/oas31/schemas/core/confClasses.yaml[] ---- The following JSON fragment is an example of a response to an OGC API-EDR conformance operation. diff --git a/core/standard/sections/clause_8_queries.adoc b/core/standard/sections/clause_8_queries.adoc index 98857c527..eee7c6d6e 100755 --- a/core/standard/sections/clause_8_queries.adoc +++ b/core/standard/sections/clause_8_queries.adoc @@ -2,21 +2,21 @@ [[environmental-resource-section]] == Query, Spatiotemporal and Information Resources -Query resources are spatiotemporal queries which support operation of the API for the access and use of the spatiotemporal data resources. The OGC API-EDR standard has identified an initial set of common `queryTypes` to implement. These are described in <>. This list may change as the Standard is used and experience gained. +Query resources are spatio-temporal queries which support operation of the API for the access and use of the spatio-temporal data resources. The OGC API-EDR standard has identified an initial set of common `queryTypes` to implement. These are described in <>. This list may change as the Standard is used and experience gained. [[rc_collection-section]] -A spatiotemporal data resource is a <> of spatiotemporal data that can be sampled using the OGC API-EDR query patterns. +A spatio-temporal data resource is a <> of spatio-temporal data that can be sampled using the OGC API-EDR query patterns. This clause specifies the "Collections" Requirements Class. The detailed specification of the Requirements Class is in <>. -Query resources related to spatiotemporal data resources (<> of spatiotemporal data) can be exposed using the path templates: +Query resources related to spatio-temporal data resources (<> of spatio-temporal data) can be exposed using the path templates: * `/collections/{collectionId}/{queryType}` * `/collections/{collectionId}/instances/{instanceId}/{queryType}` Where -`{collectionId}` = a unique identifier for a <> of spatiotemporal data. +`{collectionId}` = a unique identifier for a <> of spatio-temporal data. `{instanceId}` = a text string identifying the version or <> of the chosen <>. diff --git a/core/standard/sections/clause_9_general.adoc b/core/standard/sections/clause_9_general.adoc index 6b4f563ba..4a86c1cfb 100755 --- a/core/standard/sections/clause_9_general.adoc +++ b/core/standard/sections/clause_9_general.adoc @@ -165,61 +165,3 @@ NOTE: The representation of the links and the other properties in the payload de include::../recommendations/core/REC_link-header.adoc[] -[[rc_oas30-section]] -=== OpenAPI 3.0 - -==== Basic requirements - -Apply the <>. - -The OpenAPI 3.0 Requirements Class used in OGC API - Common is applicable to the EDR API as well. So an implementation of EDR API which supports OpenAPI 3.0 as an API Description format shall also comply with the OpenAPI 3.0 Requirements Class (https://www.opengis.net/spec/ogcapi-common-1/1.0/req/oas30) specified in OGC API — Common. - -Apply <> for OpenAPI 3.0 conformance. - -Implementations shall also advertise conformance with this Requirements Class. - -Apply <> for OpenAPI 3.0 implementation. - -An example OpenAPI definition document is available at https://schemas.opengis.net/ogcapi/edr/1.2/openapi/ogcapi-environmental-data-retrieval-1.yaml - -==== Complete definition - -Apply <> for OpenAPI 3.0 Completeness. - -Note, for example, that APIs which are access-controlled (see <>), support web cache validation, CORS, or that use HTTP redirection will make use of additional HTTP status codes as well as common codes such as `200` for successful GET requests and `400`, `404` or `500` for error situations. See <>. - -Clients shall be prepared to receive responses not documented in the OpenAPI definition. For example, additional errors may occur in the transport layer outside of the server. - -[[exceptions]] -==== Exceptions - -Apply <> for OpenAPI 3.0 Exception codes. - -.An exception response object definition -================= -[source,YAML] ----- -description: An error occurred. -content: - application/json: - schema: - $ref: https://schemas.opengis.net/ogcapi/edr/1.2/openapi/schemas/core/exception.yaml - text/html: - schema: - type: string ----- -================= - -[[security]] -=== Security considerations - -The https://www.opengis.net/doc/IS/ogcapi-edr-1/1.1[OGC API - EDR] Standard is an extension of <>. The <> Standard does not mandate any specific security controls. However, the Standard was constructed so that security controls can be added without impacting conformance. - -Apply <> for OpenAPI 3.0 Security support. - -The OpenAPI specification, which is used by the https://www.opengis.net/doc/IS/ogcapi-edr-1/1.1[OGC API - EDR] Standard, currently supports the following link:https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.0.md#security-scheme-object[security schemes]: - -* HTTP authentication, -* an API key (either as a header or as a query parameter), -* OAuth2's common flows (implicit, password, application and access code) as defined in RFC6749, and -* OpenID Connect Discovery. diff --git a/deployments.md b/deployments.md index d202139b7..15a1854b6 100644 --- a/deployments.md +++ b/deployments.md @@ -35,7 +35,7 @@ and the British Oceanographic Data Centre (BODC) and others, are currently waiti The [pygeoapi](https://pygeoapi.io) project implements the current EDR candidate standard. pygeoapi is a free and open source OGC API server implementation written in Python, which supports a robust -plugin mechanism, allowing for flexible integration of spatiotemporal data into the OGC API +plugin mechanism, allowing for flexible integration of spatio-temporal data into the OGC API family of standards, including EDR. ### UK Met Office diff --git a/docs/edr_api.html b/docs/edr_api.html index b82cfd684..44f6cae62 100644 --- a/docs/edr_api.html +++ b/docs/edr_api.html @@ -7,7 +7,7 @@