diff --git a/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/PER_response-insert.adoc b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/PER_response-insert.adoc new file mode 100644 index 00000000..f13fd2d0 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/recommendations/deploy-replace-undeploy/replace/PER_response-insert.adoc @@ -0,0 +1,21 @@ +[[per_deploy-replace-undeploy_replace_response-insert]] +[permission] +==== +[%metadata] +identifier:: /per/deploy-replace-undeploy/replace-response-insert + +[.component,class=part] +-- +A server MAY support immediate creation of the initial process definition when none exists using the HTTP PUT operation +in an "upsert" fashion (i.e.: update or insert as applicable). In this case, the process creation SHOULD behave as if it +was directly submitted for deployment as per <>. +-- + +[.component,class=part] +-- +If the operation results in an insertion creating a new process definition rather than an update, it SHOULD reflect +the appropriate HTTP status code as per the requirement +<>. +-- + +==== 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 46e252e6..7c206762 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 @@ -6,7 +6,8 @@ identifier:: /req/deploy-replace-undeploy/replace-content-type [.component,class=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. +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 3324f8f1..7a9d60d4 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 @@ -6,12 +6,12 @@ identifier:: /req/deploy-replace-undeploy/replace-put-op [.component,class=part] -- -For every dynamically deployed processes (path '/processes/{processID}'), the server SHALL support the HTTP PUT operation. +For every dynamically deployed processes (path `/processes/{processID}`), the server SHALL support the HTTP PUT operation. -- [.component,class=part] -- -The parameter 'processID' is each 'id' property in the process collection response (JSONPath: `$.processes[*].id`). +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/replace/REQ_response-body.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_response-body.adoc new file mode 100644 index 00000000..915b3c32 --- /dev/null +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_response-body.adoc @@ -0,0 +1,21 @@ +[[req_deploy-replace-undeploy_replace_response-body]] +[requirement] +==== +[%metadata] +identifier:: /req/deploy-replace-undeploy/replace-response-body + +[.component,class=part] +-- +If the replacement response employs HTTP status code `200`, `201` or `202` accordingly to +requirement <>, +the response body SHALL conform to the summary description of the process +as per https://schemas.opengis.net/ogcapi/processes/part1/1.0/openapi/schemas/processSummary.yaml[processSummary.yaml] schema. +-- + +[.component,class=part] +-- +If the replacement response employs HTTP status code `204`, the response body SHALL be empty +as per standard HTTP specification. +-- + +==== diff --git a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_response.adoc b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_response.adoc index 9ce1602a..a53ab3e4 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_response.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/deploy-replace-undeploy/replace/REQ_response.adoc @@ -9,6 +9,14 @@ identifier:: /req/deploy-replace-undeploy/replace-response A successful execution of the operation SHALL be reported as a response with a HTTP status code `200` or `204`. -- +[.component,class=part] +-- +If the operation results in the immediate creation of a distinct process definition (rather than a literal replacement) +which can be distinguished from the originally referenced `{processID}` by some versioning mechanism, the response SHALL +have a HTTP status code `201` to hint clients about this separate resource. +The `{processID}` SHALL then reference the newly created process definition used as replacement. +-- + [.component,class=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/requirements_class_deploy-replace-undeploy.adoc b/extensions/deploy_replace_undeploy/standard/requirements/requirements_class_deploy-replace-undeploy.adoc index faf54106..6a353e53 100644 --- a/extensions/deploy_replace_undeploy/standard/requirements/requirements_class_deploy-replace-undeploy.adoc +++ b/extensions/deploy_replace_undeploy/standard/requirements/requirements_class_deploy-replace-undeploy.adoc @@ -24,6 +24,7 @@ requirement:: /req/deploy-replace-undeploy/replace-body requirement:: /req/deploy-replace-undeploy/replace-content-type requirement:: /req/deploy-replace-undeploy/replace-put-op requirement:: /req/deploy-replace-undeploy/replace-response +requirement:: /req/deploy-replace-undeploy/replace-response-body requirement:: /req/deploy-replace-undeploy/static-indicator requirement:: /req/deploy-replace-undeploy/undeploy-delete-op requirement:: /req/deploy-replace-undeploy/undeploy-response diff --git a/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc b/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc index 7ae2662e..c894a9ca 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/annex_history.adoc @@ -20,4 +20,6 @@ |2024-04-26 |None |Gérald Fenoy |all |Add section for retrieving formal description of a mutable process |2026-04-08 |None |Francis Charette-Migneault |all |Update format rendering of code snippets |2026-04-13 |None |Francis Charette-Migneault |all |Fix req/rec/per definitions format and references. +|2026-04-14 |None |Francis Charette-Migneault |Replace |Add more explicit details about replacement conditions and body expectations. +|2026-04-16 |None |Francis Charette-Migneault |Replace |Fix missing req/rec/per document references in sections. |=== 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 0cb68a3c..f7e1025c 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 @@ -216,6 +216,10 @@ include::../recommendations/deploy-replace-undeploy/replace/REC_body-cwl.adoc[] include::../requirements/deploy-replace-undeploy/replace/REQ_response.adoc[] +include::../requirements/deploy-replace-undeploy/replace/REQ_response-body.adoc[] + +include::../recommendations/deploy-replace-undeploy/replace/PER_response-insert.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). 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. @@ -286,6 +290,14 @@ include::../requirements/deploy-replace-undeploy/package/REQ_response-success.ad include::../requirements/deploy-replace-undeploy/package/REQ_response-body.adoc[] +===== OGC Application Package encoding + +include::../recommendations/deploy-replace-undeploy/package/REC_response-ogcapppkg.adoc[] + +===== CWL encoding + +include::../recommendations/deploy-replace-undeploy/package/REC_response-cwl.adoc[] + ==== Exceptions See <> for general guidance. 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 452dd803..bc9f70e5 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_7_apppkg.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_7_apppkg.adoc @@ -23,6 +23,8 @@ The information contained in an `OGC Application Package` can include: include::../requirements/ogcapppkg/REQ_schema.adoc[] +include::../requirements/ogcapppkg/REQ_body.adoc[] + [[schema_ogcappkg]] .link:http://schemas.opengis.net/ogcapi/processes/part2/1.0/openapi/schemas/ogcapppkg.yaml[Schema for the OGC Application Package] [source,yaml] @@ -47,6 +49,10 @@ include::../recommendations/ogcapppkg/REC_execution-unit-docker.adoc[] include::../recommendations/ogcapppkg/REC_ogcapppkg_execution-unit-cwl.adoc[] +==== deploymentProfile property + +include::../requirements/ogcapppkg/REQ_profile-docker.adoc[] + === Deploy ==== OGC Application Package body @@ -63,4 +69,4 @@ include::../requirements/ogcapppkg/replace/REQ_body.adoc[] ==== OGC Application Package content -include::../requirements/ogcapppkg/package/REQ_response-body.adoc[] \ No newline at end of file +include::../requirements/ogcapppkg/package/REQ_response-body.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 92b35bb7..927e0769 100644 --- a/extensions/deploy_replace_undeploy/standard/sections/clause_9_cwl.adoc +++ b/extensions/deploy_replace_undeploy/standard/sections/clause_9_cwl.adoc @@ -5,6 +5,8 @@ include::../requirements/requirements_class_cwl.adoc[] +include::../requirements/cwl/REQ_body.adoc[] + 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. === OGC Application Package @@ -67,4 +69,4 @@ include::../requirements/cwl/replace/REQ_body.adoc[] ==== CWL content -include::../requirements/cwl/package/REQ_response-body.adoc[] \ No newline at end of file +include::../requirements/cwl/package/REQ_response-body.adoc[] diff --git a/extensions/versioning/README.md b/extensions/versioning/README.md new file mode 100644 index 00000000..d0a3db22 --- /dev/null +++ b/extensions/versioning/README.md @@ -0,0 +1 @@ +Backup of versioning definitions to be considereconditions::d for a separate part. diff --git a/extensions/versioning/standard/recommendations/process/REC_response-links.adoc b/extensions/versioning/standard/recommendations/process/REC_response-links.adoc new file mode 100644 index 00000000..987a3b1d --- /dev/null +++ b/extensions/versioning/standard/recommendations/process/REC_response-links.adoc @@ -0,0 +1,24 @@ +[[rec_versioning_process_response-links]] +[recommendation] +==== +[%metadata] +identifier:: /rec/versioning/replace-response-links +conditions:: The server supports DRU <> + +[.component,class=part] +-- +If a server supports multiple versions of a process definition as per +<>, +its process description `links` SHOULD consider providing references to these versions for improved retrieval. +Such links SHOULD use standard +<>. +-- + +[.component,class=part] +-- +If the `latest-version` link relation type is provided, it SHOULD point to the latest version of +the process definition or an equivalent description corresponding to the `/processes/{processID}` endpoint +after resource resolution. +-- + +==== diff --git a/extensions/versioning/standard/sections/annex_bibliography.adoc b/extensions/versioning/standard/sections/annex_bibliography.adoc new file mode 100644 index 00000000..6068bd7f --- /dev/null +++ b/extensions/versioning/standard/sections/annex_bibliography.adoc @@ -0,0 +1,22 @@ +[bibliography] +[[Bibliography]] +== Bibliography + +//// +The TC has approved Springer LNCS as the official document citation type. + +Springer LNCS is widely used in technical and computer science journals and other publications + +* For citations in the text please use square brackets and consecutive numbers: [1], [2], [3] + +– Actual References: + +[n] Journal: Author Surname, A.: Title. Publication Title. Volume number, Issue number, Pages Used (Year Published) + +[n] Web: Author Surname, A.: Title, http://Website-Url + +* [[[OGC2015,OGCTB12]]], _OGC: OGC Testbed 12 Annex B: Architecture_ (2015). + +//// + +* [[[rfc5829]]] Internet Engineering Task Force (IETF). RFC 5829: **Link Relation Types for Simple Version Navigation between Web Resources** [online]. Edited by A. Brown, G. Clemm, J. Reschke. 2010 [viewed 2026-04-14]. Available at https://www.rfc-editor.org/rfc/rfc5829.html diff --git a/extensions/versioning/standard/sections/annex_history.adoc b/extensions/versioning/standard/sections/annex_history.adoc new file mode 100644 index 00000000..fba8e20c --- /dev/null +++ b/extensions/versioning/standard/sections/annex_history.adoc @@ -0,0 +1,8 @@ +[appendix] +== Revision History + +[cols="12,18,12,12,46",options="header,unnumbered"] +|=== +|Date |Release |Editor | Primary clauses modified |Description +|2026-04-16 |None |Francis Charette-Migneault |Process |Add versioning link RFC 5829 recommendation if employed for DRU process replacement. +|=== diff --git a/openapi/paths/processes-dru/pProcessDescriptionReplaceUndeploy.yaml b/openapi/paths/processes-dru/pProcessDescriptionReplaceUndeploy.yaml index ddd6668d..894bcfd8 100644 --- a/openapi/paths/processes-dru/pProcessDescriptionReplaceUndeploy.yaml +++ b/openapi/paths/processes-dru/pProcessDescriptionReplaceUndeploy.yaml @@ -49,6 +49,12 @@ put: #$ref: "https://w3id.org/cwl/v1.2/cwl-json-schema.yaml" $ref: "../../schemas/cwl/cwl.yaml" responses: + 200: + $ref: "../../responses/processes-dru/rProcessSummary.yaml" + 201: + $ref: "../../responses/processes-dru/rProcessSummary.yaml" + 202: + $ref: "../../responses/processes-dru/rProcessSummary.yaml" 204: $ref: "../../responses/processes-core/rEmpty.yaml" 400: