diff --git a/extensions/deploy_replace_undeploy/standard/20-044.adoc b/extensions/deploy_replace_undeploy/standard/20-044.adoc index a10d9783..af0779de 100644 --- a/extensions/deploy_replace_undeploy/standard/20-044.adoc +++ b/extensions/deploy_replace_undeploy/standard/20-044.adoc @@ -11,7 +11,7 @@ :issued-date: yyyy-mm-dd :external-id: http://www.opengis.net/doc/IS/ogcapi-processes-2/1.0 :keywords: process, collection, instance, spatial, data, openapi, transactions, insert, update, delete, add, remove, deploy, undeploy, REST, PUT, POST, DELETE -:submitting-organizations: Geolabs; CubeWerx Inc. +:submitting-organizations: Geolabs; CubeWerx Inc; Terradue Srl.; Wuhan University (WHU).; Computer Research Institute of Montréal (CRIM). :editor: Panagiotis (Peter) A. Vretanos, Gérald Fenoy :mn-document-class: ogc :mn-output-extensions: xml,html,doc,pdf diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/deploy/ATS_body.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/deploy/ATS_body.adoc index 181c5201..dc085137 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/deploy/ATS_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/deploy/ATS_body.adoc @@ -4,8 +4,8 @@ ==== [%metadata] identifier:: /conf/cwl/deploy/body -target:: /rec/deploy-replace-undeploy/deploy/body-cwl -test-purpose:: Validate that the server support deploy operation using the Common Worflow Language encoding +target:: /req/cwl/deploy/body +test-purpose:: Validate that the server support deploy operation using the Common Workflow Language encoding test-method:: + -- @@ -13,11 +13,11 @@ test-method:: 2. Issue an HTTP POST request using the media type "application/cwl" and the application package content -3. Validate the reponse with <> +3. Validate the response with <> 4. Send the same POST request again -5. Validate the reponse with <> +5. Validate the response with <> -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/replace/ATS_body.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/replace/ATS_body.adoc index b115bb87..4ca0ef1c 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/replace/ATS_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/cwl/replace/ATS_body.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/cwl/replace/body target:: /req/cwl/replace/body -test-purpose:: Validate that the server support replace operation using the Common Worflow Language encoding +test-purpose:: Validate that the server support replace operation using the Common Workflow Language encoding test-method:: + -- @@ -13,9 +13,9 @@ test-method:: 2. Append `/{processId}` to each path, where `{processId}` is a mutable process id. -3. Send a PUT request on one path using the media type "application/cwl" and the application package content +3. Send a PUT request for one path using the media type "application/cwl" and the application package content -4. Validate the reponse with <> +4. Validate the response with <> -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/deploy/ATS_body.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/deploy/ATS_body.adoc index 5ca5fe01..96bbee2c 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/deploy/ATS_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/deploy/ATS_body.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/docker/deploy/body target:: /rec/deploy-replace-undeploy/deploy/body-docker -test-purpose:: Validate that the server support deploy operation using a docker image as execution unit +test-purpose:: Validate that the server supports deploy operation using a Docker image as execution unit test-method:: + -- @@ -13,11 +13,11 @@ test-method:: 2. Issue an HTTP POST request using the media type "application/ogcapppkg+json" with as body a default OGC Application Package -3. Validate the reponse with <> +3. Validate the response with <> 4. Send the same POST request again -5. Validate the reponse with <> +5. Validate the response with <> -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/replace/ATS_body.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/replace/ATS_body.adoc index 7fa9e94a..0beaced1 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/replace/ATS_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/docker/replace/ATS_body.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/docker/replace/body target:: /req/docker/replace/body -test-purpose:: Validate that the server support replace operation using the Common Worflow Language encoding +test-purpose:: Validate that the server support replace operation using a Docker image as execution unit test-method:: + -- @@ -13,9 +13,9 @@ test-method:: 2. Append `/{processId}` to each path, where `{processId}` is the process id retrieved from <>. -3. Send a PUT request on one path using the media type "application/ogcapppkg+json" with as body a default OGC Application Package +3. Send a PUT request for one path using the media type "application/ogcapppkg+json" with as body a default OGC Application Package -4. Validate the reponse with <> +4. Validate the response with <> -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_static-indicator.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_static-indicator.adoc index 4bda5c76..52c94a46 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_static-indicator.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_static-indicator.adoc @@ -11,9 +11,9 @@ test-method:: -- 1. Construct a path for each "rel=http://www.opengis.net/def/rel/ogc/1.0/processes" link on the landing page as well as for the {root}/processes path. -2. Issue an HTTP GET request on each path +2. Issue an HTTP GET request for each path -3. Validate the process list is composed of processes that get the mutable boolean parameter set to true or false +3. Validate the process list is composed of processes that get the mutable Boolean parameter set to true or false -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_test-process.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_test-process.adoc index 504ddda3..69a08726 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_test-process.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/ATS_test-process.adoc @@ -8,6 +8,6 @@ test-purpose:: Ensure that an application package URL can be provided in CWL enc test-method:: + -- -If a server implementing the OGC API - Processes - Part 2: Deploy, Replace, Undeploy is tested using CITE tests, it should provide a URL to an example application package encoded in CWL for tests against the OGC Application Package and CWL conformance classes to occurred. +If a server implementing the OGC API - Processes - Part 2: Deploy, Replace, Undeploy is tested using CITE tests, it should provide a URL to an example application package encoded in CWL for tests against the OGC Application Package and CWL conformance classes. -- ==== \ No newline at end of file diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_post-op.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_post-op.adoc index b899e020..e9801ca2 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_post-op.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_post-op.adoc @@ -11,7 +11,7 @@ test-method:: -- 1. Construct a path for each "rel=http://www.opengis.net/def/rel/ogc/1.0/processes" link on the landing page as well as for the {root}/processes path. -2. Issue an HTTP POST request on each path. +2. Issue an HTTP POST request for each path. 3. Validate that the response header does not contain `405 Method not allowed` -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_unsupported-content-type.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_unsupported-content-type.adoc index ad373d0a..9d52c76d 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_unsupported-content-type.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/deploy/ATS_unsupported-content-type.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/deploy/unsupported-content-type target:: /req/deploy-replace-undeploy/deploy/unsupported-content-type -test-purpose:: Validate that the server return a 415 status code with a relevant exception +test-purpose:: Validate that the server returns a 415 status code with a relevant exception test-method:: + -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_content-type.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_content-type.adoc index 4ad548a3..71c63c22 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_content-type.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_content-type.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/replace/content-type target:: /req/deploy-replace-undeploy/replace/content-type -test-purpose:: Validate that the server support the Content-type header to declare the media type of the request body +test-purpose:: Validate that the server supports the Content-type header to declare the media type of the request body test-method:: + -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_put-op.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_put-op.adoc index 341271fe..8928d88b 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_put-op.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_put-op.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/replace/put-op target:: /req/deploy-replace-undeploy/replace/put-op -test-purpose:: Validate that the server support HTTP PUT operation at the path /processes +test-purpose:: Validate that the server supports HTTP PUT operation at the path /processes test-method:: + -- @@ -13,7 +13,7 @@ test-method:: 2. Append `/{processId}` to each path, where `{processId}` is not an existing process id, i.e. `not-existing-process`. -3. Issue an HTTP PUT request on each path. +3. Issue an HTTP PUT request for each path. 4. Validate that the response header does not contain `405 Method not allowed`. -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_unsupported-content-type.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_unsupported-content-type.adoc index 9ae5e755..2ad65cb8 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_unsupported-content-type.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/replace/ATS_unsupported-content-type.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/replace/unsupported-content-type target:: /req/deploy-replace-undeploy/deploy/unsupported-content-type -test-purpose:: Validate that the server return a 415 status code with a relevant exception +test-purpose:: Validate that the server returns a 415 status code with a relevant exception test-method:: + -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_delete-op.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_delete-op.adoc index 8710f709..753e46fe 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_delete-op.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_delete-op.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/undeploy/delete-op target:: /req/deploy-replace-undeploy/undeploy/delete-op -test-purpose:: Validate that the server support HTTP DELETE operation at the path /processes/{processId} +test-purpose:: Validate that the server supports HTTP DELETE operation at the path /processes/{processId} test-method:: + -- @@ -13,7 +13,7 @@ test-method:: 2. Append `/{processId}` to each path, where `{processId}` is not an existing process id, i.e. `not-existing-process`. -3. Issue an HTTP DELETE request on each path. +3. Issue an HTTP DELETE request for each path. 3. Validate that the response header does not contain `405 Method not allowed`. -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable-success.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable-success.adoc index a1d3572b..30d02764 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable-success.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable-success.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/undeploy/response-immutable-success target:: /req/deploy-replace-undeploy/deploy/response-immutable -test-purpose:: Validate that the server return a 403 status code when removing an immutable process +test-purpose:: Validate that the server returns a 403 status code when removing an immutable process test-method:: + -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable.adoc index f1fdc1b5..2c59c753 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response-immutable.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/undeploy/response-immutable target:: /req/deploy-replace-undeploy/deploy/response-immutable -test-purpose:: Validate that the server return a 403 status code when removing an immutable process +test-purpose:: Validate that the server returns a 403 status code when removing an immutable process test-method:: + -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response.adoc index e4ccf123..8acda064 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/dru/undeploy/ATS_response.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/dru/undeploy/response target:: /req/deploy-replace-undeploy/undeploy/response -test-purpose:: Validate that the server return a 204 status code when removing a mutable process +test-purpose:: Validate that the server returns a 204 status code when removing a mutable process test-method:: + -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_body.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_body.adoc index 4d1ff1a4..5d2f8c5e 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_body.adoc @@ -4,8 +4,8 @@ ==== [%metadata] identifier:: /conf/ogcapppkg/deploy/body -target:: /rec/ogcapppkg/deploy/body -test-purpose:: Validate that the server support OGC Application Package encoding +target:: /req/ogcapppkg/deploy/body +test-purpose:: Validate that the server supports OGC Application Package encoding test-method:: + -- @@ -13,11 +13,11 @@ test-method:: 2. Issue an HTTP POST request using the content type "application/ogcapppkg+json" with as body a default OGC Application Package or the application package as reference, if any, on one path -3. Validate the reponse with <> +3. Validate the response with <> 4. Send the same POST request again -5. Validate the reponse with <> +5. Validate the response with <> -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response-success.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response-success.adoc index 194afd81..63e692ab 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response-success.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response-success.adoc @@ -5,11 +5,11 @@ [%metadata] identifier:: /conf/ogcapppkg/deploy/response-success target:: /req/deploy-replace-undeploy/deploy/response-success -test-purpose:: Validate that the server return a Location header and a process summary +test-purpose:: Validate that the server returns a Location header and a process summary test-method:: + -- -1. Validate the Location header contain a URI of the deployed process. +1. Validate the Location header contains a URI of the deployed process. 2. Validate the document conforms to the https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/processSummary.yaml[processSummary.yaml] schema. -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response.adoc index 1142d103..27c39446 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/deploy/ATS_response.adoc @@ -5,7 +5,7 @@ [%metadata] identifier:: /conf/ogcapppkg/deploy/response target:: /req/deploy-replace-undeploy/deploy/response-success -test-purpose:: Validate that the server return HTTP Status code 201 or 202 +test-purpose:: Validate that the server returns HTTP Status code 201 or 202 test-method:: + -- diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_body.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_body.adoc index 297f32ef..3842382b 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_body.adoc @@ -4,8 +4,8 @@ ==== [%metadata] identifier:: /conf/ogcapppkg/replace/body -target:: /rec/deploy-replace-undeploy/replace/body-ogcapppkg -test-purpose:: Validate that the server support OGC Application Package encoding +target:: /req/ogcapppkg/replace/body +test-purpose:: Validate that the server supports OGC Application Package encoding test-method:: + -- @@ -13,9 +13,9 @@ test-method:: 2. Append `/{processId}` to each path, where `{processId}` is the process id retrieved from <>. -3. Issue an HTTP PUT request using the media type "application/ogcapppkg+json" with as body a default OGC Application Package or the application package URL, if any, on each path +3. Issue an HTTP PUT request using the media type "application/ogcapppkg+json" with as body a default OGC Application Package or the application package URL, if any, for each path -4. Validate the reponse with <> +4. Validate the response with <> -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_response.adoc b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_response.adoc index d49c7479..ec038521 100644 --- a/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_response.adoc +++ b/extensions/deploy_replace_undeploy/standard/abstract_tests/ogcapppkg/replace/ATS_response.adoc @@ -5,11 +5,11 @@ [%metadata] identifier:: /conf/ogcapppkg/replace/response target:: /req/deploy-replace-undeploy/response-success -test-purpose:: Validate that the server return HTTP Status code 200, 202 or 204 +test-purpose:: Validate that the server returns HTTP Status code 200, 202 or 204 test-method:: + -- -1. Validate that the status code is 200, 202 or 204 +1. Validate that the status code is 200, 202 or 204. -- ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/PER_additional-status-codes.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/PER_additional-status-codes.adoc index b7736b5b..0c57ebb4 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/PER_additional-status-codes.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/PER_additional-status-codes.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /per/core/additional-status-codes -part:: Servers may support other capabilities of the HTTP protocol and, therefore, may return other status codes than those listed in <>. +part:: Servers MAY support other HTTP protocol capabilities. Therefore, the server may return other status codes than those listed in <>. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/PER_body.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/PER_body.adoc index 06c45cd0..bfc31688 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/PER_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/PER_body.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /per/deploy-replace-undeploy/deploy/body -part:: A server may support any processes description encoding in the body of a HTTP POST operation. +part:: A server MAY support any processes description encoding in the body of a HTTP POST operation. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-cwl.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-cwl.adoc index 0dff1477..b6fa0051 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-cwl.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-cwl.adoc @@ -4,12 +4,6 @@ [%metadata] label:: /rec/deploy-replace-undeploy/deploy/body-cwl -part:: If a process can be represented for the intended use as a <>, implementations should consider supporting the <> encoding for describing the process to be deployed to the API. - -part:: The media type `application/cwl` shall be used to indicate that request body contains a processes description encoded as a <>. - -part:: If the CWL contains more than one workflow, an additional `w` query parameter may be used to reference the workflow id to be deployed. - -part:: The server should validate the CWL at the request time. In case, the server cannot find the `w` identifier within the workflow from the CWL provided, a 400 status code is expected with the type "worflow-not-found". +part:: If a process can be encoded for the intended use in <>, implementations SHOULD consider supporting the <> encoding for describing the process to be deployed to the API. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-ogcapppkg.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-ogcapppkg.adoc index bc894a54..bbce0bd6 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-ogcapppkg.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/deploy/REC_body-ogcapppkg.adoc @@ -4,7 +4,5 @@ [%metadata] label:: /rec/deploy-replace-undeploy/deploy/body-ogcapppkg -part:: If a process can be represented for the intended use as an <>, implementations should consider supporting the <> encoding for describing the process to be added to the API. - -part:: The media type `application/ogcapppkg+json` shall be used to indicate that request body contains a processes description encoded as an <>. +part:: If a process can be represented for the intended use as an <>, implementations SHOULD consider supporting the <> encoding for describing the process to be added to the API. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/PER_body.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/PER_body.adoc index aa29030b..2f1ef382 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/PER_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/PER_body.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /per/deploy-replace-undeploy/replace/body -part:: A server may support any processes description encoding in the body of a HTTP POST operation. +part:: A server MAY support any processes description encoding in the body of a HTTP PUT operation. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-cwl.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-cwl.adoc index 8d4b499f..8972765a 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-cwl.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-cwl.adoc @@ -4,7 +4,6 @@ [%metadata] label:: /rec/deploy-replace-undeploy/replace/body-cwl -part:: If a process can be described for the intended use as a <>, implementations should consider supporting the <> encoding for describing the replacement process. +part:: If a process can be encoded for the intended use in <>, implementations SHOULD consider supporting the <> encoding for describing the replacement process. -part:: The media type `application/cwl` shall be used to indicate that request body contains a processes description encoded as <>. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-ogcapppkg.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-ogcapppkg.adoc index 508a1d2a..3b09db27 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-ogcapppkg.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/REC_body-ogcapppkg.adoc @@ -4,7 +4,6 @@ [%metadata] label:: /rec/deploy-replace-undeploy/replace/body-ogcapppkg -part:: If a process can be described for the intended use as an <>, implementations should consider supporting the <> encoding for describing the replacement process. +part:: If a process can be described for the intended use as an <>, implementations SHOULD consider supporting the <> encoding for describing the replacement process. -part:: The media type `application/ogcapppkg+json` shall be used to indicate that request body contains a processes description encoded as an <>. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_execution-unit-docker.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_execution-unit-docker.adoc index 61d25608..000a8994 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_execution-unit-docker.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_execution-unit-docker.adoc @@ -3,10 +3,5 @@ ==== [%metadata] label:: /rec/ogcapppkg/execution-unit-docker - -part:: If the execution unit is a Docker image then it is recommended that the contents of the execution unit have the properties `type` and `image`. - -part:: The value of the `type` property shall be `docker'. - -part:: The value of the `image` property shall be a reference to the Docker image. +part:: If the execution unit is a Docker image, implementations SHOULD consider supporting the <>. ==== diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_ogcapppkg_execution-unit-cwl.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_ogcapppkg_execution-unit-cwl.adoc index 7622d75e..f8bdbd83 100644 --- a/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_ogcapppkg_execution-unit-cwl.adoc +++ b/extensions/deploy_replace_undeploy/standard/recommendations/ogcapppkg/REC_ogcapppkg_execution-unit-cwl.adoc @@ -3,17 +3,5 @@ ==== [%metadata] label:: /rec/ogcapppkg/execution-unit-cwl - -part:: If the execution unit is encoded in CWL then it is recommended that the contents of the execution unit be the properties: - * `type` and `href` if passed by reference - * `value` and `mediaType` if passed by value - -part:: The value of the `type` property shall be `application/cwl`, when for `mediaType` it should be `application/cwl+json`. - -part:: The value of the `href` property shall be a reference to the CWL encoded file. The value of the `value` property shall be the CWL encoded in json format. - -part:: If the CWL contains more than a single workflow identifier, an addition `w` query parameter may be used to target a specific workflow id to be deployed. - -part:: The server should validate the CWL at the request time. In case, the server cannot find the `w` identifier within the workflow from the CWL provided, a 400 status code is expected with the type "cwl-worflow-not-exist". - +part:: If the execution unit is encoded in CWL, implementations SHOULD consider supporting the <>. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/cwl/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/cwl/REQ_body.adoc new file mode 100644 index 00000000..386b10c2 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/cwl/REQ_body.adoc @@ -0,0 +1,7 @@ +[[req_cwl_body]] +[requirement] +==== +[%metadata] +label:: /req/cwl/body +part:: The media type `application/cwl` SHALL be used to indicate that request body contains a processes description encoded as <>. +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/cwl/REQ_execution-unit.adoc b/extensions/deploy_replace_undeploy/standard/requirements/cwl/REQ_execution-unit.adoc new file mode 100644 index 00000000..0ca2c367 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/cwl/REQ_execution-unit.adoc @@ -0,0 +1,15 @@ +[[req_cwl_execution-unit]] +[requirement] +==== +[%metadata] +label:: /req/cwl/execution-unit + +part:: If the execution unit is encoded in CWL, the content of the `executionUnit` parameter SHALL be an object with the following properties: + * `type` and `href` if passed by reference + * `value` and `mediaType` property if passed by value + +part:: If the execution unit is encoded in CWL, the value of the `type` property SHALL be `application/cwl`, when for `mediaType` it should be `application/cwl+json`. + +part:: If the execution unit is encoded in CWL, the value of the `href` property SHALL be a reference to the CWL encoded file, when the value of the `value` property shall be the CWL encoded in JSON format. + +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/cwl/deploy/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/cwl/deploy/REQ_body.adoc new file mode 100644 index 00000000..7bce0e9b --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/cwl/deploy/REQ_body.adoc @@ -0,0 +1,7 @@ +[[req_cwl_deploy_body]] +[requirement] +==== +[%metadata] +label:: /req/cwl/deploy/body +part:: The media type `application/cwl` SHALL be used to indicate that request body contains a processes description encoded as <>. +==== \ No newline at end of file diff --git a/extensions/deploy_replace_undeploy/standard/requirements/cwl/deploy/REQ_w-param.adoc b/extensions/deploy_replace_undeploy/standard/requirements/cwl/deploy/REQ_w-param.adoc new file mode 100644 index 00000000..7220eba0 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/cwl/deploy/REQ_w-param.adoc @@ -0,0 +1,9 @@ +[[req_cwl_w-param]] +[requirement] +==== +[%metadata] +label:: /req/cwl/deploy/w-param + +part:: If the CWL contains more than a single workflow identifier, an additional `w` query parameter MAY be used to target a specific workflow id to be deployed. If not used, the first process found SHALL be deployed. + +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/cwl/replace/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/cwl/replace/REQ_body.adoc new file mode 100644 index 00000000..dfc21904 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/cwl/replace/REQ_body.adoc @@ -0,0 +1,7 @@ +[[req_cwl_replace_body]] +[requirement] +==== +[%metadata] +label:: /req/cwl/replace/body +part:: The media type `application/cwl` SHALL be used to indicate that request body contains a processes description encoded as <>. +==== \ No newline at end of file diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_body.adoc index 0a52333e..88486cc7 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_body.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/deploy/body -part:: The body of the POST request shall contain a formal description of the process to be dynamically deployed to the API. +part:: The body of the POST request SHALL contain a formal description of the process to be dynamically deployed to the API. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_post-op.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_post-op.adoc index e4629863..2c0ac42a 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_post-op.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_post-op.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/deploy/post-op -part:: The server shall support the HTTP POST operation at the path `/processes`. +part:: The server SHALL support the HTTP POST operation at the path `/processes`. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-body.adoc index dc03db14..88e6849e 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-body.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-body.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/deploy/response-body -part:: The response shall include a body that contains a summary description of the added process conforms to the https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/processSummary.yaml[processSummary.yaml] schema. +part:: The response SHALL include a body that contains a summary description of the added process conforms to the https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/processSummary.yaml[processSummary.yaml] schema. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-duplicate.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-duplicate.adoc index 08fb022f..7e5f2283 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-duplicate.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-duplicate.adoc @@ -4,7 +4,7 @@ [%metadata] label:: /req/deploy-replace-undeploy/deploy/response-duplicate -part:: If a process with the same identifier already exists on the server, the satus code of the response SHALL be `409`. +part:: If a process with the same identifier already exists on the server, the code of the response SHALL be `409`. part:: A response with HTTP status code `409` MAY include a `Location` header with the URI of the duplicated processes (path: `/processes/{processId}`). part:: The content of that response SHALL be based upon the OpenAPI 3.0 schema https://raw.githubusercontent.com/opengeospatial/ogcapi-processes/master/core/openapi/schemas/exception.yaml[exception.yaml]. diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-immutable.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-immutable.adoc index 020769d4..2a1ba152 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-immutable.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-immutable.adoc @@ -4,7 +4,7 @@ [%metadata] label:: /req/deploy-replace-undeploy/deploy/response-immutable -part:: If a process with the same identifier already exists on the server and is immutable, the satus code of the response SHALL be `403`. +part:: If a process with the same identifier already exists on the server and is immutable, the code of the response SHALL be `403`. part:: A response with HTTP status code `403` MAY include a `Location` header with the URI of the existing process (path: `/processes/{processId}`). part:: The content of that response shall be based upon the OpenAPI 3.0 schema https://raw.githubusercontent.com/opengeospatial/ogcapi-processes/master/core/openapi/schemas/exception.yaml[exception.yaml]. diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-pid.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-pid.adoc index 288bd90f..b41df9d7 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-pid.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-pid.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/deploy/response-pid -part:: If the operation completes successfully, the server shall assign the processes identifier (i.e. `{processId}`) specified in the processes description to the newly added processes. +part:: If the operation completes, the server SHALL assign the processes identifier (i.e. `{processId}`) specified in the processes description for the newly added processes. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-success.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-success.adoc index 53a06433..5f1bc618 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-success.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_response-success.adoc @@ -3,7 +3,7 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/deploy/response-success -part:: A successful execution of the operation shall be reported as a response with a HTTP status code `201`. +part:: A successful execution of the operation SHALL be reported as a response with a HTTP status code `201`. part:: A response with HTTP status code `201` SHALL include a `Location` header with the URI of the deployed processes (path: `/processes/{processId}`). part:: If the operation is not executed immediately, but is added to a processing queue, the response SHALL have a HTTP status code `202`. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_unsupported-media-type.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_unsupported-media-type.adoc index 7071ac54..e5686d24 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_unsupported-media-type.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/deploy/REQ_unsupported-media-type.adoc @@ -4,7 +4,7 @@ [%metadata] label:: /req/deploy-replace-undeploy/deploy/unsupported-media-type -part:: If the server does not support the Content-Type header associated with the request body, the satus code of the response SHALL be `415 Unsupported Media Type`. +part:: If the server does not support the Content-Type header associated with the request body, the code of the response SHALL be `415 Unsupported Media Type`. part:: The content of that response SHALL be based upon the OpenAPI 3.0 schema https://raw.githubusercontent.com/opengeospatial/ogcapi-processes/master/core/openapi/schemas/exception.yaml[exception.yaml]. part:: The `type` of the exception SHALL be “http://www.opengis.net/def/exceptions/ogcapi-processes-2/1.0/unsupported-media-type”. diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/immutable/REQ_indicator.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/immutable/REQ_indicator.adoc index 3267419e..cfeb4a9d 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/immutable/REQ_indicator.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/immutable/REQ_indicator.adoc @@ -3,8 +3,8 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/static-indicator -part:: The optional property `mutable` shall be used to indicate whether a process is a static or built-in process that is immutable or a dynamically added process that is mutable. -part:: A value of `true` shall be used to indicate that a processes is mutable and can thus be manipulated through the API. -part:: A value of `false` shall be used to indicate that a processes is immutable and can thus not be manupulated through the API. -part:: The default value shall be `true`. +part:: The optional property `mutable` SHALL be used to indicate whether a process is a static or built-in process that is immutable or a dynamically added process that is mutable. +part:: A value of `true` SHALL be used to indicate that a processes is mutable and can thus be manipulated through an API request. +part:: A value of `false` SHALL be used to indicate that a processes is immutable and can thus not be manipulated through an API request. +part:: The default value SHALL be `true`. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_body.adoc index 9aa8e0ee..72f52383 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_body.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_body.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/replace/body* -part:: The body of a PUT request shall contain a formal description of the replacement process. +part:: The body of a PUT request SHALL contain a formal description of the replacement process. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_content-type.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_content-type.adoc index d2a7d717..19f3a0a6 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_content-type.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_content-type.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/replace/content-type -part:: As per <> (https://tools.ietf.org/html/rfc2616#section-14.17) the 'Content-Type' header shall be used to indicate the media type of a request body containing the description of the replacement processes. +part:: As per <> (https://tools.ietf.org/html/rfc2616#section-14.17) the 'Content-Type' header SHALL be used to indicate the media type of a request body containing the description of the replacement processes. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_put-op.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_put-op.adoc index ced61562..b9e580a6 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_put-op.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_put-op.adoc @@ -3,6 +3,6 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/replace/put-op -part:: For every dynamically deployed processes (path '/processes/{processId}'), the server shall support the HTTP PUT operation. +part:: For every dynamically deployed processes (path '/processes/{processId}'), the server SHALL support the HTTP PUT operation. part:: The parameter 'processId' is each 'id' property in the process collection response (JSONPath: `$.processes[*].id`). ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_delete-op.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_delete-op.adoc index 2681409c..1e0ea85d 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_delete-op.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_delete-op.adoc @@ -3,6 +3,6 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/undeploy/delete-op -part:: For every dynamically added process (path: `/processes/{processId}`), the server shall support the HTTP DELETE operation. +part:: For every dynamically added process (path: `/processes/{processId}`), the server SHALL support the HTTP DELETE operation. part:: The parameter `processId` is each `id` property in the process collection response (JSONPath: `$.processes[*].id`). ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_response.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_response.adoc index 3c90d6be..8b5e1dee 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_response.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/undeploy/REQ_response.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/deploy-replace-undeploy/undeploy/response -part:: A successful execution of the operation shall be reported as a response with a HTTP status code '204'. +part:: A successful execution of the operation SHALL be reported as a response with a HTTP status code '204'. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/docker/REQ_execution-unit.adoc b/extensions/deploy_replace_undeploy/standard/requirements/docker/REQ_execution-unit.adoc new file mode 100644 index 00000000..264db259 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/docker/REQ_execution-unit.adoc @@ -0,0 +1,9 @@ +[[req_docker_execution-unit]] +[requirement] +==== +[%metadata] +label:: /req/docker/execution-unit +part:: If the execution unit is specified as a Docker image, the value of the `type` property SHALL be `docker'. + +part:: If the execution unit is specified as a Docker image, the value of the `image` property SHALL be a reference to the Docker image. +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/docker/REQ_schema.adoc b/extensions/deploy_replace_undeploy/standard/requirements/docker/REQ_schema.adoc new file mode 100644 index 00000000..fdc84645 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/docker/REQ_schema.adoc @@ -0,0 +1,7 @@ +[[req_docker_schema]] +[requirement] +==== +[%metadata] +label:: /req/docker/schema +part:: The `executionUnit` property of an `OGC Application Package` document SHALL be based upon the schema https://github.com/opengeospatial/ogcapi-processes/blob/master/openapi/schemas/processes-dru/executionUnit.yaml[executionUnit.yaml]. +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_body.adoc new file mode 100644 index 00000000..286bbc0d --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_body.adoc @@ -0,0 +1,7 @@ +[[req_ogcappkg_body]] +[requirement] +==== +[%metadata] +label:: /req/ogcapppkg/body +part:: The media type `application/ogcapppkg+json` SHALL be used to indicate that request body contains a processes description encoded as an <>. +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_process-description.adoc b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_process-description.adoc index b2ab05c3..d483da05 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_process-description.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_process-description.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/ogcapppkg/process-description -part:: The value of the processDescription property shall be based upon the OpenAPI 3.0 schema https://github.com/opengeospatial/ogcapi-processes/blob/master/openapi/schemas/processes-core/process.yaml[process.yaml]. +part:: The value of the processDescription property SHALL be based upon the OpenAPI schema https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/process.yaml[process.yaml]. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_schema.adoc b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_schema.adoc index c091854a..bd3c64a2 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_schema.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/REQ_schema.adoc @@ -3,5 +3,5 @@ ==== [%metadata] label:: /req/ogcapppkg/schema -part:: An `OGC Application Package` document shall be based upon the schema http://schemas.opengis.net/ogcapi/processes/part2/1.0/openapi/schemas/ogcapppkg.yaml[ogcapppkg.yaml]. +part:: An `OGC Application Package` document SHALL be based upon the OpenAPI schema http://schemas.opengis.net/ogcapi/processes/part2/1.0/openapi/schemas/ogcapppkg.yaml[ogcapppkg.yaml]. ==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/deploy/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/deploy/REQ_body.adoc new file mode 100644 index 00000000..cc390b65 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/deploy/REQ_body.adoc @@ -0,0 +1,7 @@ +[[req_ogcappkg_deploy_body]] +[requirement] +==== +[%metadata] +label:: /req/ogcapppkg/deploy/body +part:: The media type `application/ogcapppkg+json` SHALL be used to indicate that request body contains a processes description encoded as an <>. +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/replace/REQ_body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/replace/REQ_body.adoc new file mode 100644 index 00000000..076e39b5 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/ogcapppkg/replace/REQ_body.adoc @@ -0,0 +1,7 @@ +[[req_ogcappkg_replace_body]] +[requirement] +==== +[%metadata] +label:: /req/ogcapppkg/replace/body +part:: The media type `application/ogcapppkg+json` SHALL be used to indicate that request body contains a processes description encoded as an <>. +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/requirements_class_cwl.adoc b/extensions/deploy_replace_undeploy/standard/requirements/requirements_class_cwl.adoc index eb236340..739861dc 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/requirements_class_cwl.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/requirements_class_cwl.adoc @@ -7,5 +7,6 @@ obligation:: requirement subject:: Web API inherit:: <> inherit:: <> +inherit:: <> inherit:: Common Workflow Language <> ==== diff --git a/extensions/deploy_replace_undeploy/standard/sections/annex_ats.adoc b/extensions/deploy_replace_undeploy/standard/sections/annex_ats.adoc index 4a585f6c..44af1ba3 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/annex_ats.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/annex_ats.adoc @@ -4,15 +4,15 @@ === Introduction -OGC Web Application Programming Interfaces (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 API. Therefore, an API may expose resources in addition to those defined by the standard. A test engine must be able to traverse the API, identify and validate test points, and ignore resource paths which are not to be tested. +OGC Web Application Programming Interfaces (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 API. Therefore, an API endpoint may expose resources in addition to those defined by the standard. A test engine must be able to traverse an implementation of the API, identify and validate test points, and ignore resource paths which are not to be tested. The Web API under test can require authorization. Any Executable Test Suite implementing this test suite should implement the following security schemes supported by OpenAPI 3.0: HTTP Authorization schemes "basic" and "bearer", API keys, and OAuth2 flow "authorizationCode". -The following requirement applies for a server implementing the OGC API — Processes — Part 2: Deploy, Replace, Uneploy under test: +The following requirements apply for a server implementing the OGC API — Processes — Part 2: Deploy, Replace, Undeploy under test: include::../abstract_tests/dru/ATS_mutable-process.adoc[] -In case both OGC Application Package and CWL conformance classes are supported, the following requirement applies for a server implementing the OGC API — Processes — Part 2: Deploy, Replace, Uneploy under test: +In case both an OGC Application Package and CWL conformance classes are supported, the following requirement applies for a server implementing the OGC API — Processes — Part 2: Deploy, Replace, Undeploy being tested: include::../abstract_tests/dru/ATS_test-process.adoc[] diff --git a/extensions/deploy_replace_undeploy/standard/sections/annex_bibliography.adoc b/extensions/deploy_replace_undeploy/standard/sections/annex_bibliography.adoc index 0afc92dd..351430db 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/annex_bibliography.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/annex_bibliography.adoc @@ -25,5 +25,5 @@ Springer LNCS is widely used in technical and computer science journals and othe * [[[OpenEO_Process_Graphs,2]]], OpenEO: OpenEO Developers API Reference / Process Graphs. https://openeo.org/documentation/1.0/developers/api/reference.html#section/Processes/Process-Graphs -* [[[OpenAPI-Spec,OpenAPI Specification 3.0.2]]] Open API Initiative. OpenAPI Specification 3.0.2. Available at: +* [[[OpenAPI-Spec,OpenAPI Specification 3.0.2]]] OpenAPI Initiative. OpenAPI Specification 3.0.2. Available at: https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md. diff --git a/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc b/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc index aeb3fc24..4954565a 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc @@ -4,5 +4,17 @@ [cols="12,18,12,12,46",options="header,unnumbered"] |=== |Date |Release |Editor | Primary clauses modified |Description -|2019-xx-xx |1.0.0-SNAPSHOT |J. Doe |all |initial version +|2020-05-19 |None |Panagiotis (Peter) A. Vretanos |all |Initial check in of draft transactions extension. +|2020-06-23 |None |Panagiotis (Peter) A. Vretanos |all |Add initial draft of an example Open API document +|2021-10-18 |None |Panagiotis (Peter) A. Vretanos |all |Rename transaction directory to deploy_replace_undeploy. +|2022-10-04 |None |Gérald Fenoy |all |Use relative path to exception and problem+json +|2022-10-05 |None |Gérald Fenoy |all |Update the Deploy, Replace, Undeploy extension +|2022-12-12 |None |Gérald Fenoy |all |Change the status code to be returned (immutable) +|2023-02-20 |None |Panagiotis (Peter) A. Vretanos |all |Realign abstract test with requirements. +|2023-05-30 |None |Gérald Fenoy |all |Update status code and schema. +|2023-10-16 |None |Gérald Fenoy |all |Add content to the Abstract Test Suite +|2023-11-28 |None |Gérald Fenoy |all |Update test for validating support of a given HTTP method +|2023-12-06 |None |Gérald Fenoy |all |Abstract Test Suite Updates +|2023-12-07 |None |Gérald Fenoy |all |Fix mixed status code and value in security consideration +|2023-12-08 |None |Gérald Fenoy |all |Add requirements for managing docker image as execution unit |=== diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_0_front_material.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_0_front_material.adoc index 4f25343f..0218e57e 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_0_front_material.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_0_front_material.adoc @@ -2,11 +2,11 @@ [abstract] == Abstract -OGC API standards define modular API building blocks to spatially enable Web APIs in a consistent way. The <> is used to define the API building blocks. +OGC API Standards define modular API building blocks to spatially enable Web APIs in a consistent way. The <> is used to define the API building blocks. -OGC API Processes provides API building blocks to describe, execute, monitor and retrieve results of Web-accessible processes. OGC API Processes is comprised of multiple parts, each of them is a separate standard. +The OGC API Processes Standard (aka Processes API) defines API building blocks to describe, execute, monitor and retrieve results of Web-accessible processes. OGC API Processes is comprised of multiple parts, each of them is a separate OGC Standard. -This part extends the core capabilities specified in <> with the ability to dynamically add, modify and/or delete individual processes from a processes API endpoint. +OGC API - Processes - Part 2: Deploy, Replace, Undeploy extends the core capabilities specified in OGC API - Processes - Part 1: Core [<>] with the ability to dynamically add, modify and/or delete individual processes using an implementation (endpoint) of the OGC API - Processes Standard. CAUTION: This is a DRAFT version of the 2nd part of the OGC API - Processes standards. This draft is not complete and there are open issues that are still under discussion. diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_12_security_considerations.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_12_security_considerations.adoc index 2ce7390a..1207e44b 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_12_security_considerations.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_12_security_considerations.adoc @@ -2,26 +2,26 @@ See <>, Clause 10.4. -Since deploy, replace and undeploy operations will change processes available, servers will in almost all cases restrict the access to these operations. +Since deploy, replace and undeploy (DRU) operations will change the processes available to a client, servers will - in almost all cases - restrict the access to these operations. -Users making modifications to resources need to: +Users making modifications to process resources need to: -. be authenticated, -. have "modification privileges" on the processes offered by the API, -. have access to one or more of the POST, PUT and/or DELETE methods on the processes / processes/{processId} endpoints. +. Be authenticated, +. Have "modification privileges" on the processes offered through the API, +. Have access to one or more of the POST, PUT and/or DELETE methods on the processes / processes/{processId} endpoints. -The API definition has to reflect this in the resource paths and their available methods. +The API definition, as defined in Clause 7.3 from <>, must reflect this in the resource paths and their available methods. -The examples in the chapters specifying the requirements classes focus on the mechanics of the POST, PUT, and DELETE methods and exclude authentication. Since authentication will typically be required for all requests, this section provides some examples/guidance: +Examples in the Clauses specifying the requirements classes focus on the mechanics of the POST, PUT, and DELETE methods and exclude authentication. Since authentication will typically be required for all DRU requests, this section provides some examples/guidance: -The OpenAPI definition will declare the authentication schemes that the API supports for each operation (or for all operations in the API). +The OpenAPI definition exposed by the serve will declare the authentication schemes that an implementation of the Processes - Part 2 (DRU) supports for each operation (or for all operations in the API implementation). -A member "security" in the OpenAPI definition object can be provided to list the default security schemes supported by all operations. Individual operations can override this default by providing a "security" member for the individual operation. +A member "security" in the OpenAPI definition object can be provided to list the default security schemes supported by all operations. Individual DRU operations can override this default by providing a "security" member for the individual operation. [#auth-example-1,reftext=`Example OpenAPI definition with security requirements`] .Example OpenAPI definition with security requirements ==== -The following OpenAPI definition declares that the API accepts either api keys in an "X-API-Key" header or JWT bearer tokens to authenticate the requestor. The API will decide, if an authenticated request is rejected or executed based on privileges of the authenticated user. +The following OpenAPI definition declares that the API accepts either api keys in an "X-API-Key" header or Json Web Token (JWT) bearer tokens to authenticate the requestor. X-API-KEY is a custom HTTP header that can be used to secure APIs. The API implementation will decide, if an authenticated request is rejected or executed based on the privileges of the authenticated user. [source,JSON] ---- @@ -58,9 +58,9 @@ The following OpenAPI definition declares that the API accepts either api keys i ---- ==== -If the authentication of a secured request fails or if the user does not have sufficient privileges, the API will return an error. +If the authentication of a secured request fails or if the user does not have sufficient privileges, the API endpoint will return an error. -In case the request does not include information to authenticate the user, the server will respond with a 401 response ("Unauthorized"). The response will include a "WWW-Authenticate" header with hints how to provide authentication credentials. +In case the request does not include information to authenticate the user, the server will respond with a 401 response ("Unauthorized"). The response will include a "WWW-Authenticate" header with hints as to how authentication credentials are provided. [#auth-example-2,reftext=`Unauthorized request`] .Unauthorized request @@ -69,7 +69,7 @@ In case the request does not include information to authenticate the user, the s Client Server | | | DELETE /processes/SampleProcess HTTP/1.1 | - | ---------------------------------------------------------------------------------------------------------------------->| + | ----------------------------------------------------------->| | | | HTTP/1.1 401 Unauthorized | | Date: Mon, 23 May 2022 11:18:45 GMT | @@ -81,12 +81,13 @@ Client Server | | | { | | "status": 401, | - | "title": "Unauthorized", | - | "detail": "HTTP 401 Unauthorized" | + | "title": "Unauthorized", | + | "detail": "HTTP 401 Unauthorized" | | } | - | <----------------------------------------------------------------------------------------------------------------------| + | <-----------------------------------------------------------| ---- +NOTE: HTTP WWW-Authenticate header is a response-type header. It serves as a support for various authentication mechanisms which are important to control access to pages and other resources as well. All of these mechanisms are based on the use of the 401 status code. The HTTP WWW-Authenticate response header defines the authentication method that ought to be wont to gain access to a resource. As discussed earlier, the WWW-Authenticate header is sent along with a 401 Unauthorized response. (GeeksforGeeks.org, 2023) If valid authentication credentials have been provided, but the API refuses to execute the operation, because the user has insufficient privileges, the server will typically return a 403 response ("Forbidden"). @@ -99,7 +100,7 @@ Client Server | DELETE /processes/SampleProcess HTTP/1.1 | | Host: example.com | | Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ97HgQ | - |------------------------------------------------------------------------------------------------------------------------------------>| + |------------------------------------------------------------------>| | | | HTTP/1.1 403 Forbidden | | Date: Mon, 23 May 2022 11:18:55 GMT | @@ -112,7 +113,7 @@ Client Server | "title" : "Forbidden", | | "detail" : "HTTP 403 Forbidden" | | } | - |<------------------------------------------------------------------------------------------------------------------------------------| + |<------------------------------------------------------------------| ``` -However, for security reasons, the server may also decide to return other status codes to hide information from a potential attacker. For example, the server may decie to return a 401 response even for a valid, but un-privileged user. Or the server may return a 404 response ("Not Found") to hide the fact that the resource exists in the first place, typically if the user would also not be privileged to fetch the resource with a GET operation. \ No newline at end of file +However, for security reasons, the server may also decide to return other status codes to hide information from a potential attacker. For example, the server may decide to return a 401 response even for a valid, but un-privileged user. Or the server may return a 404 response ("Not Found") to hide the fact that the resource exists in the first place, typically if the user would also not be privileged to fetch the resource with a GET operation. \ No newline at end of file diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_1_scope.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_1_scope.adoc index 6c749924..9d9dc8dd 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_1_scope.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_1_scope.adoc @@ -1,14 +1,9 @@ == Scope -This specification is an extension to the <> standard that defines the behavior of a server that -supports the ability to dynamically add, replace or undeploy processes from an OGC API - Processes instance. +The OGC API - Processes - Part 2 Standard is an extension to the OGC API – Processes – Part 1: Core Standard [<>] and defines the behavior of a server that +supports the ability to dynamically add, replace and/or undeploy processes via an OGC API - Processes implementation instance. - -This document specifies an extension that defines the behaviour of a server -that supports operations to deploy, replace or undeploy individual processes -from an OGC API Processes. - -Specifically, this document specifies: +Specifically, the Processes Part 2 Standard specifies: * How to deploy a new process. @@ -17,11 +12,11 @@ Specifically, this document specifies: * How to undeploy an existing process. The following table crosswalks each of the resource endpoints discussed in this -standard with the HTTP methods POST, PUT and DELETE. Each intersecting +Standard with the HTTP methods POST, PUT and DELETE. Each intersecting cell in the table either contains the name of the operation for that combination of resource endpoint and HTTP method, or it contains the -phrase "n/a" which is used to indicate that this specification does not -specify any behaviour for that combination of resource endpoint and HTTP +phrase "n/a" which is used to indicate that this Standard does not +specify any behavior for that combination of resource endpoints and the HTTP method. [#endpoint_method_matrix,reftext='{table-caption} {counter:table-num}'] diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_2_conformance.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_2_conformance.adoc index aadedf38..162d3a45 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_2_conformance.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_2_conformance.adoc @@ -1,27 +1,25 @@ == Conformance -This standard defines the following requirements classes. - -The standardization target is "Web APIs". +The OGC API - Processes - Part 2 Standard defines the following requirements classes. The main requirements class is: * <>. -This class specifies requirements that all Web APIs have to implement. +This class specifies requirements that any Web API implementing Processes Part 2 must conform with. The `Deploy, Replace, Undeploy` class does not mandate a specific encoding or -format for the formal definition of a process. However, this extension +format for the formal definition of a process. However, the Part 2 extension defines the following conformance class: * <> -for this purpose. The `OGC Application Package` class defines the schema of a +The `OGC Application Package` class defines the schema of a document that formally defines the inputs, outputs and other necessary metadata about a process that is to be dynamically deployed through the API. -This encoding is not mandatory and an implementation of this extension may +The Application Package encoding is not mandatory. An implementation of this extension may choose to implement some other process description instead. That said, the `Deploy, Replace, Undeploy` conformance class includes recommendations to support the `OGC Application Package`. @@ -35,7 +33,9 @@ enable support for the Common Workflow Language (CWL): * <> -Conformance with this standard shall be checked using all the relevant tests +The standardization target for all Conformance class defined in this Standard is “Web API”. + +Conformance with this Standard shall be checked using all the relevant tests specified in <> of this document. The framework, concepts, and methodology for testing, and the criteria to be achieved to claim conformance are specified in the OGC Compliance Testing Policies and Procedures and the diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_4_terms_and_definitions.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_4_terms_and_definitions.adoc index 53346ba2..7807e494 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_4_terms_and_definitions.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_4_terms_and_definitions.adoc @@ -1,11 +1,25 @@ -== Terms and Definitions +== Terms, definitions and abbreviated terms -This document uses the terms defined in Sub-clause 5.3 of [OGC 06-121r9], 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 standard. +=== Terms and definitions -For the purposes of this document, the following additional terms and definitions apply in addition to the terms defined in <>. +==== Execution unit + +A component containing a process that an implementation of the Processes API Part 1 can run. + +==== Deploy + +Deploy refers to installing a desired execution unit onto a Processes API server so that client applications can interact with it as a process using the Processes API Part 1 Standard. + +==== Replace + +Replace refers to upgrading a deployed process from a Processes API implementation. + +==== Undeploy + +Undeploy refers to removing a deployed process from a Processes API implementation so that it does not appear as an available process. === Abbreviated Terms CWL:: Common Workflow Language - +DRU:: Deploy, Replace, Undeploy diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_6_deploy_replace_undeploy.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_6_deploy_replace_undeploy.adoc index ba988199..d6545274 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_6_deploy_replace_undeploy.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_6_deploy_replace_undeploy.adoc @@ -1,36 +1,36 @@ -== Requirements Class "Deploy, Replace, Undeploy" +== Requirements Class "Deploy, Replace, Undeploy (DRU)" [[deploy-replace-undeploy-overview]] === Overview include::../requirements/requirements_class_deploy-replace-undeploy.adoc[] -A server that implements this conformance class provides the ability to -dynamically deploy, replace and undeploy processes from a processes API. +A server that implements the DRU Requirements Class provides the ability to +dynamically deploy, replace and undeploy processes. The HTTP POST method is used to deploy a new process to the API. -The HTTP PUT method is used to replace the definition of a previously deployed processes that is accessible via the API. +The HTTP PUT method is used to replace the definition of a previously deployed processes that are accessible via the Processes API endpoint. -Finally, the HTTP DELETE method is used to undeploy a previously deployed process that is accessible via the API. +Finally, the HTTP DELETE method is used to undeploy a previously deployed process that is accessible via the Processes API endpoint. Deploying or replacing a process requires that a formal description of the new or -replacement process be provided by the client. This extension does not +replacement process be provided by the client. This Standard does not mandate that a specific processes description language or vocabulary be used. -However, in order to promote interoperability, this extension defines two -conformance classes: +However, to promote interoperability, this extension defines two conformance +classes: * <>, that defines a formal process description language encoded using JSON, - * <>, that enables support for CWL-encoded process definition, + * <>, that enables support for CWL-encoded process definition. -A recommendation is made later in this specification that all implementations of this extension support the `OGC Application Package`. +A recommendation is made later in this Standard that all implementations of Processes API Part 2 extension support the `OGC Application Package`. [[deploy-replace-undeploy-http_status_codes]] ==== HTTP status codes -API clients should be prepared to handle any legal HTTP or HTTPS status code. +Clients implementing the Processes API Part 2 should be prepared to handle any legal HTTP or HTTPS status code. -The *Status Codes* listed in <> are of particular relevance to implementors of this standard. Status codes 200, 201 and 404 are called out in API requirements. Therefore, support for these status codes is mandatory for all compliant implementations. The remainder of the status codes in <> are not mandatory, but are important for the implementation of a well functioning API. Support for these status codes is strongly encouraged for both client and server implementations. +The *Status Codes* listed in <> are of particular relevance to implementors of this Standard. Status codes 200, 201 and 404 are called out in API requirements. Therefore, support for these status codes is mandatory for all compliant implementations. The remainder of the status codes in <> are not mandatory, but are important for the implementation of a well functioning API implementation. Support for these status codes is strongly encouraged for both client and server implementations. [[status_codes]] .Typical HTTP status codes @@ -38,12 +38,12 @@ The *Status Codes* listed in <> are of particular relevance to imp |=== |Status code |Description |`200` |A successful request. -|`201` |The server has been fulfilled the operation and a new resource has been created. -|`202` |The request has been accepted for processing, but the processing has not been completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place. +|`201` |The server has successfully completed the operation and a new resource has been created. +|`202` |The request was accepted for processing, but the processing was not completed. The request might or might not eventually be acted upon, as it might be disallowed when processing actually takes place. |`204` |A successful request with no additional content to send in the response. |`400` |The server cannot or will not process the request due to an apparent client error. For example, a query parameter had an incorrect value. |`401` |The request requires user authentication. The response includes a `WWW-Authenticate` header field containing a challenge applicable to the requested resource. -|`403` |The server understood the request, but is refusing to fulfill it. While status code `401` indicates missing or bad authentication, status code `403` indicates that authentication is not the issue, but the client is not authorized to perform the requested operation on the resource. +|`403` |The server understood the request, but is refusing to execute the request. While status code `401` indicates missing or bad authentication, status code `403` indicates that authentication is not the issue, but that the client is not authorized to perform the requested operation on the resource. |`404` |The requested resource does not exist on the server. For example, a path parameter had an incorrect value. |`405` |The request method is not supported. For example, a POST request was submitted, but the resource only supports GET requests. |`406` |Content negotiation failed. For example, the `Accept` header submitted in the request did not support any of the media types supported by the server for the requested resource. @@ -60,7 +60,7 @@ More specific guidance is provided for each resource, where applicable. include::../recommendations/deploy-replace-undeploy/PER_additional-status-codes.adoc[] -The API Description Document describes the HTTP status codes generated by that API. This should not be an exhaustive list of all possible status codes. It is not reasonable to expect an API designer to control the use of HTTP status codes which are not generated by their software. Therefore, it is recommended that the API Description Document limit itself to describing HTTP status codes relevant to the proper operation of the API application logic. Client implementations should be prepared to receive HTTP status codes in addition to those described in the API Description Document. +The API Description Document describes the HTTP status codes generated by that API imeplementation instance. This should not be an exhaustive list of all possible status codes. It is not reasonable to expect an API designer to control the use of HTTP status codes which are not generated by their software. Therefore, it is recommended that the API Description Document be limited to describing HTTP status codes relevant to the proper operation of the API application logic. Client implementations should be prepared to receive HTTP status codes in addition to those described in the API Description Document. [[cross_origin]] ==== Cross-origin requests @@ -70,9 +70,9 @@ See <>, section link:http://www.open === Immutable processes -This extension recognizes that an OGC web processing API may be deployed with a set of static, built-in processes that are immutable and cannot be removed or modified via the deploy-replace-undeploy API. In an API Description Document (e.g. OpenAPI), such process paths would not include support for the HTTP POST, PUT or DELETE methods. +The Processes API Part 2 extension recognizes that an OGC web processing API may be deployed with a set of static, built-in processes that are immutable and cannot be removed or modified via requests from a deploy-replace-undeploy API implementation. In an API Description Document (e.g. OpenAPI), such process paths would not include support for the HTTP POST, PUT or DELETE methods. -However, in order to make it clear which processes in a collection (path: `/processes`) are built-in - and thus immutable - and which have been dynamically deployed, the processes collection schema is modified to add a flag indicating this aspect of a process. +However, to make it clear which processes in a collection (path: `/processes`) are built-in - and thus immutable - and which have been dynamically deployed, the processes collection schema is modified to add a flag indicating this aspect of a process. include::../requirements/deploy-replace-undeploy/immutable/REQ_indicator.adoc[] @@ -157,6 +157,7 @@ include::../requirements/deploy-replace-undeploy/deploy/REQ_response-duplicate.a include::../requirements/deploy-replace-undeploy/deploy/REQ_response-immutable.adoc[] + [[replace]] === Replacing an existing processes @@ -165,7 +166,7 @@ include::../requirements/deploy-replace-undeploy/deploy/REQ_response-immutable.a The following diagram illustrates the sequence diagram for replacing a previously deployed processes. The identifier of the process does not change. -NOTE: The new process definition replaced to old process definition; version control is not discussed in this standard. +NOTE: The new process definition replaces the old process definition. Version control is not discussed in this Standard. ``` Client Server @@ -208,15 +209,15 @@ include::../recommendations/deploy-replace-undeploy/replace/REC_body-cwl.adoc[] include::../requirements/deploy-replace-undeploy/replace/REQ_response.adoc[] -The status code depends on the server. If the server has replaced the process, the response is either `200`, if the response includes additional content, or `204`, if the response has no additional content. +The status code depends on the server. If the server has replaced the process, the response is either `200` (if the response includes additional content) or `204` (if the response has no additional content). -If the server will process the replace request later, it will return a `202`. In this case, the processing can succeed or fail, without further notification to the client. +If the server will process the replace request later, a `202` status code will be returned. In this case, the processing can succeed or fail, without further notification to the client. ==== Exceptions See <> for general guidance. -If the request body's media type is not supported by the server, then <> applies. +If the request body's media type is not supported by the server, then <> applies. If the process with the specified identifier does not exist on the server, see requirement /req/core/process-exception/no-such-process from <>. diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_7_apppkg.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_7_apppkg.adoc index 30e9d74b..2b103003 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_7_apppkg.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_7_apppkg.adoc @@ -6,18 +6,15 @@ include::../requirements/requirements_class_ogcapppkg.adoc[] -This conformance class defines the schema of an `OGC Application Package`. An +This requirements class defines the schema of an `OGC Application Package`. An `OGC Application Package` is a document that describes a process in sufficient detail so that an implementation of this extension can dynamically deploy the -process and make it available for execution via an OGC processes API. - -An `OGC Application Package` document provides all the information necessary to -deploy a process and make it accessible through the OGC API - Processes API. +process and make it accessible via an OGC API - Processes implementation. The information contained in an `OGC Application Package` can include: * A formal description of the process including what inputs the process takes and what outputs the process generates. -* Either inline or by reference an execution unit which is the `code` that the server needs to execute whenever the process is invoked. +* Either an inline or by reference execution unit which is the `code` that the server needs to execute whenever the process is invoked. * Additional resource information required by the execution unit. === OGC Application Package schema @@ -36,7 +33,7 @@ include::../../../../openapi/schemas/processes-dru/ogcapppkg.yaml[] ==== processDescription property The formal process description (i.e. its inputs, its output, etc.) is provided, -either in-line using the `processDescription` property or may be infered from +either in-line using the `processDescription` property or may be inferred from the information provided in the <>. include::../requirements/ogcapppkg/REQ_process-description.adoc[] @@ -44,26 +41,22 @@ include::../requirements/ogcapppkg/REQ_process-description.adoc[] [[executionUnit]] ==== executionUnit property -The execution unit is the `code` that an implementation of this extension needs -to execute whenever the deployed process is executed. The execution unit can be -specified by reference, e.g. docker image reference. +If the schema defined for the executionUnit property of an OGC Application Package remains open, it can be restricted in other Requirements. include::../recommendations/ogcapppkg/REC_execution-unit-docker.adoc[] -When CWL encoding is used, -the execution unit can be either passed by value (in-line) or by reference. - include::../recommendations/ogcapppkg/REC_ogcapppkg_execution-unit-cwl.adoc[] -Below is an example of a deploy body request using a CWL-encoded execution unit by reference. +=== Deploy + +==== OGC Application Package body + +include::../requirements/ogcapppkg/deploy/REQ_body.adoc[] + +=== Replace + +==== OGC Application Package body + +include::../requirements/ogcapppkg/replace/REQ_body.adoc[] + -[[example1]] -[source%unnumbered] ----- -{ - "executionUnit": { - "href": "https://raw.githubusercontent.com/EOEPCA/app-snuggs/main/app-package.cwl", - "type": "application/cwl" - } -} ----- diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_8_docker.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_8_docker.adoc index 4d704564..2dc43860 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_8_docker.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_8_docker.adoc @@ -5,10 +5,25 @@ include::../requirements/requirements_class_docker.adoc[] -A server that implements this conformance class supports the management of Docker image as execution units with the deploy-replace-undeploy extension from a processes API. +A server that implements the Docker Requirement Class supports the management of Docker image as execution units by implementing the Processes API Part2 deploy-replace-undeploy extension. -In consequence, the following recommandation become requirement: +=== OGC Application Package - * <> +==== executionUnit property +===== Overview +include::../requirements/docker/REQ_schema.adoc[] + +[[schema_executionUnit]] +.link:https://github.com/opengeospatial/ogcapi-processes/blob/master/openapi/schemas/processes-dru/executionUnit.yaml[Schema for the Docker execution unit parameter] +[source,yaml] +---- +include::../../../../openapi/schemas/processes-dru/executionUnit.yaml[] +---- + +===== type and image properties + +The execution unit can be specified by reference, using a Docker image reference. + +include::../requirements/docker/REQ_execution-unit.adoc[] diff --git a/extensions/deploy_replace_undeploy/standard/sections/clause_9_cwl.adoc b/extensions/deploy_replace_undeploy/standard/sections/clause_9_cwl.adoc index c124b364..13bd9782 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_9_cwl.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_9_cwl.adoc @@ -5,12 +5,61 @@ include::../requirements/requirements_class_cwl.adoc[] -A server that implements this conformance class supports the use of CWL encoding when interacting with the deploy-replace-undeploy extension from a processes API. +A server that implements the CWL Requirement Class SHALL support the use of CWL encoding when interacting with the Processes API Part 2 deploy-replace-undeploy extension endpoint. -In consequence, the following recommandations become requirements: +=== OGC Application Package - * <> - * <> - * <> +==== executionUnit property +In case the OGC Application Package encoding is used, the following Requirement applies. + +include::../requirements/cwl/REQ_execution-unit.adoc[] + +Below is an example of a deploy body request using a CWL-encoded execution unit by reference. + +[[cwl_ogcapppkg_example1]] +[source%unnumbered] +---- +{ + "executionUnit": { + "href": "https://raw.githubusercontent.com/EOEPCA/app-snuggs/main/app-package.cwl", + "type": "application/cwl" + } +} +---- + +Below is an example of a deploy body request using a CWL-encoded execution unit by value. The value is not included for readability and results from converting from the original CWL format (YAML) into JSON. + +[[cwl_ogcapppkg_example2]] +[source%unnumbered] +---- +{ + "executionUnit": { + "value": { ... }, + "mediaType": "application/cwl+json" + } +} +---- + +=== Deploy + +==== CWL body + +include::../requirements/cwl/deploy/REQ_body.adoc[] + +==== w parameter + +When encoded in CWL, processes are identified as instances of the workflow class. + +include::../requirements/cwl/deploy/REQ_w-param.adoc[] + +==== Exception + +include::../requirements/cwl/deploy/REQ_exception-workflow-not-found.adoc[] + +=== Replace + +==== CWL body + +include::../requirements/cwl/replace/REQ_body.adoc[]