Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[[per_deploy-replace-undeploy_replace_response-insert]]
[permission]
====
[%metadata]
identifier:: /per/deploy-replace-undeploy/replace-response-insert
Copy link
Copy Markdown
Member

@jerstlouis jerstlouis Apr 16, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is identified as a permission (firt part uses MAY) but includes a recommendation (SHOULD) inside for second part.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there actually something against that term? How to indicate something optional, but if you do, it should be done that way ideally? "SHOULD" is still optional / not prescriptive (unlike SHALL).

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise transform it as a recommendation?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@fmigneault Usually we try to strictly use SHALL in requirements, MAY in permission, and SHOULD in recommendations. One way I've done it e.g. in the Coverages issue we've been working on together lately is by having a separate recommendation in the context of (immediately following) the permission.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One issue is that I don't find it too appropriate to make it a recommendation and use SHOULD for the first part, since supporting "PUT as insert" is really an extra to the more classical HTTP 200 of inplace replacement.


[.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 <<req_deploy-replace-undeploy_deploy_post-op,/req/deploy-replace-undeploy/deploy-post-op>>.
--

[.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
<<req_deploy-replace-undeploy_replace_response,/req/deploy-replace-undeploy/replace-response>>.
--

====
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@ identifier:: /req/deploy-replace-undeploy/replace-content-type

[.component,class=part]
--
As per <<rfc2616,HTTP 1.1>> (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 <<rfc2616,HTTP 1.1>> (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.
--

====
Original file line number Diff line number Diff line change
Expand Up @@ -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`).
--

====
Original file line number Diff line number Diff line change
@@ -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 <<req_deploy-replace-undeploy_replace_response,/req/deploy-replace-undeploy/replace-response>>,
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.
--

====
Original file line number Diff line number Diff line change
Expand Up @@ -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`.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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.
|===
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down Expand Up @@ -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 <<deploy-replace-undeploy-http_status_codes,HTTP status codes>> for general guidance.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand All @@ -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
Expand All @@ -63,4 +69,4 @@ include::../requirements/ogcapppkg/replace/REQ_body.adoc[]

==== OGC Application Package content

include::../requirements/ogcapppkg/package/REQ_response-body.adoc[]
include::../requirements/ogcapppkg/package/REQ_response-body.adoc[]
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -67,4 +69,4 @@ include::../requirements/cwl/replace/REQ_body.adoc[]

==== CWL content

include::../requirements/cwl/package/REQ_response-body.adoc[]
include::../requirements/cwl/package/REQ_response-body.adoc[]
1 change: 1 addition & 0 deletions extensions/versioning/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Backup of versioning definitions to be considereconditions::d for a separate part.
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
[[rec_versioning_process_response-links]]
[recommendation]
====
[%metadata]
identifier:: /rec/versioning/replace-response-links
conditions:: The server supports DRU <<req_deploy-replace-undeploy_replace_response,/req/deploy-replace-undeploy/replace-response>>

[.component,class=part]
--
If a server supports multiple versions of a process definition as per
<<req_deploy-replace-undeploy_replace_response,/req/deploy-replace-undeploy/replace-response>>,
its process description `links` SHOULD consider providing references to these versions for improved retrieval.
Such links SHOULD use standard
<<rfc5829,RFC 5829 Link Relation Types for Simple Version Navigation between Web Resources>>.
--

[.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.
--

====
22 changes: 22 additions & 0 deletions extensions/versioning/standard/sections/annex_bibliography.adoc
Original file line number Diff line number Diff line change
@@ -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
8 changes: 8 additions & 0 deletions extensions/versioning/standard/sections/annex_history.adoc
Original file line number Diff line number Diff line change
@@ -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.
|===
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down