diff --git a/artifacts/buildSrc/src/main/java/org/eclipse/dsp/generation/transformer/HtmlTableTransformer.java b/artifacts/buildSrc/src/main/java/org/eclipse/dsp/generation/transformer/HtmlTableTransformer.java index 3d995a7..40ffb6d 100644 --- a/artifacts/buildSrc/src/main/java/org/eclipse/dsp/generation/transformer/HtmlTableTransformer.java +++ b/artifacts/buildSrc/src/main/java/org/eclipse/dsp/generation/transformer/HtmlTableTransformer.java @@ -54,7 +54,7 @@ private void transformProperties(Set references, boolea private void transformProperty(SchemaPropertyReference propertyReference, boolean required, StringBuilder builder) { builder.append(""); builder.append(format("%s", propertyReference.getName())); - builder.append("").append(required ? "required" : "optional").append(""); + builder.append("").append(required ? "REQUIRED" : "OPTIONAL").append(""); var resolvedProperty = propertyReference.getResolvedProperty(); if (resolvedProperty != null) { String resolvedTypes = ""; diff --git a/specifications/catalog/catalog.binding.https.md b/specifications/catalog/catalog.binding.https.md index d289677..c1fd599 100644 --- a/specifications/catalog/catalog.binding.https.md +++ b/specifications/catalog/catalog.binding.https.md @@ -37,11 +37,11 @@ Authorization: ... -- The `Authorization` header is optional if the [=Catalog Service=] does not require authorization. If present, the +- The `Authorization` header is OPTIONAL if the [=Catalog Service=] does not require authorization. If present, the contents of the `Authorization` header are detailed in the [Authorization section](../common/common.binding.https.md#2-authorization). -- The `filter` property is optional. If present, the `filter` property MAY contain an implementation-specific filter +- The `filter` property is OPTIONAL. If present, the `filter` property MAY contain an implementation-specific filter expression or query to be executed as part of the [=Catalog=] request. If a filter expression is not supported by an implementation, it MUST return a HTTP 400 (Bad Request) response. @@ -68,7 +68,7 @@ Authorization: ... -- The `Authorization` header is optional if the [=Catalog Service=] does not require authorization. If present, the +- The `Authorization` header is OPTIONAL if the [=Catalog Service=] does not require authorization. If present, the contents of the `Authorization` header are detailed in the [[[#authorization]]]. **Response** @@ -85,7 +85,7 @@ a [Dataset](#ack-dataset). ### Pagination -A [=Catalog Service=] may paginate the results of a [Catalog Request Message](#catalog-request-message). Pagination data +A [=Catalog Service=] MAY paginate the results of a [Catalog Request Message](#catalog-request-message). Pagination data MUST be specified using [Web Linking](https://datatracker.ietf.org/doc/html/rfc5988) and the HTTP `Link` header. The `Link` header will contain URLs for navigating to previous and subsequent results. Only the `next` and `previous` link relation types MUST be supported. @@ -128,7 +128,7 @@ Link:

| -- A [=Catalog=] MUST have zero to many [=Datasets=]. (_NOTE: Since a Catalog may be dynamically generated for a request based on the requesting [=Participant=]'s credentials, it is possible for it to contain 0 matching [=Datasets=]._) +- A [=Catalog=] MUST have zero to many [=Datasets=]. (_NOTE: Since a Catalog MAY be dynamically generated for a request based on the requesting [=Participant=]'s credentials, it is possible for it to contain 0 matching [=Datasets=]._) - A [=Catalog=] MUST have one to many [=Data Services=] that reference a [=Connector=] where [=Datasets=] MAY be obtained. @@ -94,7 +94,7 @@ An [=Offer=] contains the following attributes: - An [=Offer=] MUST be unique to a [=Dataset=] since the target of the [=Offer=] is derived from its enclosing context. -- [=Offers=] MAY contain any `target` attributes. The value of the `target` attribute MUST be the [=Dataset=] identifier. (_NOTE: If the [=Offer=] is used in an enclosing [=Catalog=] or [=Dataset=], there must not be any `target` attribute set._) +- [=Offers=] MAY contain any `target` attributes. The value of the `target` attribute MUST be the [=Dataset=] identifier. (_NOTE: If the [=Offer=] is used in an enclosing [=Catalog=] or [=Dataset=], there MUST NOT be any `target` attribute set._) ### ERROR - Catalog Error @@ -112,7 +112,7 @@ a [Dataset Request Message](#dataset-request-message) and the [=Provider=] canno ### Queries and Filter Expressions -A [=Catalog Service=] may support [=Catalog=] queries or filter expressions as an +A [=Catalog Service=] MAY support [=Catalog=] queries or filter expressions as an implementation-specific feature. However, query capabilities by the [=Consumer=] MUST be implemented against the results of a [Catalog Request Message](#catalog-request-message). Client-side querying can be scaled by periodically crawling @@ -133,7 +133,7 @@ a [=Consumer=] discovers [=Catalog Services=]. ### Security [=Catalog Services=] SHOULD implement access control. -A [=Catalog=] as well as individual [=Datasets=] may be restricted to trusted +A [=Catalog=] as well as individual [=Datasets=] MAY be restricted to trusted parties. Therefore, the [=Catalog Service=] MAY require [=Consumers=] to include a security token along with a [Catalog Request Message](#catalog-request-message). The specifics of how this is done can be found in the relevant @@ -146,14 +146,14 @@ If a [=Catalog=] contains protected [=Datasets=], the [=Provider=] has two optio all [=Datasets=] in the [=Catalog=] response and restrict access when a [=Policy=] is negotiated; or, require one or more proofs when the [Catalog Request](#catalog-request-message) is made and filter the [=Datasets=] accordingly. The latter option requires a mechanism for clients to -discover the type of proofs that may be presented at request time. The specifics of proof types and presenting a proof +discover the type of proofs that MAY be presented at request time. The specifics of proof types and presenting a proof during a [=Catalog=] request is outside the scope of the [=Dataspace Protocol=]. However, [=Catalog Protocol=] bindings SHOULD define a proof data endpoint for obtaining this information. ### Catalog Brokers -A [=Dataspace=] may include Catalog Brokers. A Catalog Broker is +A [=Dataspace=] MAY include Catalog Brokers. A Catalog Broker is a [=Consumer=] that has trusted access to 1..N upstream [=Catalog Services=] and advertises their respective [=Catalogs=] as a diff --git a/specifications/common/common.protocol.md b/specifications/common/common.protocol.md index 3668418..46931c6 100644 --- a/specifications/common/common.protocol.md +++ b/specifications/common/common.protocol.md @@ -3,7 +3,7 @@ ## Authorization All requests to HTTPS endpoints SHOULD use the `Authorization` header to include an authorization token. The semantics -of such tokens are not part of this specification. The `Authorization` HTTP header is optional if the [=Connector=] +of such tokens are not part of this specification. The `Authorization` HTTP header is OPTIONAL if the [=Connector=] does not require authorization. ## Schemas & Contexts @@ -18,7 +18,7 @@ similar contexts that facilitate this approach to interoperability. As this spec ## Exposure of Versions {#exposure-of-dataspace-protocol-versions} -[=Connectors=] implementing the [=Dataspace Protocol=] may operate on different versions and bindings. Therefore, it is +[=Connectors=] implementing the [=Dataspace Protocol=] MAY operate on different versions and bindings. Therefore, it is necessary that they can discover such information reliably and unambiguously. Each [=Connector=] MUST provide a version metadata endpoint ending with Uniform Resource Identifier (URI) segments `/.well-known/dspace-version`. The location of this endpoint SHOULD adhere to [[rfc8615]]. diff --git a/specifications/common/terminology.md b/specifications/common/terminology.md index 97d43c1..8157b8b 100644 --- a/specifications/common/terminology.md +++ b/specifications/common/terminology.md @@ -1,6 +1,6 @@ # Terms and definitions {#terminology} -The following terms and definitions introduce the core concepts, entities, and relationships that underpin a [=Dataspace=] and its communication protocols. Not all [=Dataspace=] entities have a concrete _technical_ materialization; some entities may exist as purely logical constructs. +The following terms and definitions introduce the core concepts, entities, and relationships that underpin a [=Dataspace=] and its communication protocols. Not all [=Dataspace=] entities have a concrete _technical_ materialization; some entities MAY exist as purely logical constructs. Agreement @@ -28,7 +28,7 @@ A [=Participant=] that requests access to an offered [=Dataset=]. Contract Negotiation -A set of interactions between a [=Provider=] and [=Consumer=] that establish an [=Agreement=]. It is an instantiation of the state machine of a [=Contract Negotiation Protocol=]. An outcome of a Contract Negotiation may be the production of an [=Agreement=]. +A set of interactions between a [=Provider=] and [=Consumer=] that establish an [=Agreement=]. It is an instantiation of the state machine of a [=Contract Negotiation Protocol=]. An outcome of a Contract Negotiation MAY be the production of an [=Agreement=]. Contract Negotiation Protocol @@ -48,7 +48,7 @@ Note 1 to entry: This specification convers only protocols to facilitate interop Dataspace Protocol -A set of [=Messages=] and [=Message=] sequences that enables the interaction between [=Participant Agents=] in a [=Dataspace=]. This may require additional concepts, which are not in the scope of the specification itself. +A set of [=Messages=] and [=Message=] sequences that enables the interaction between [=Participant Agents=] in a [=Dataspace=]. This MAY require additional concepts, which are not in the scope of the specification itself. Data Transfer Protocol diff --git a/specifications/negotiation/contract.negotiation.binding.https.md b/specifications/negotiation/contract.negotiation.binding.https.md index eb8bf2c..00420b9 100644 --- a/specifications/negotiation/contract.negotiation.binding.https.md +++ b/specifications/negotiation/contract.negotiation.binding.https.md @@ -35,7 +35,7 @@ If the client is not authorized, the [=Consumer=] or [=Provider=] MUST return an ### Authorization All requests SHOULD use the `Authorization` header to include an authorization token. The semantics of such tokens are -not part of this specification. The `Authorization` HTTP header is optional if the [=Connector=] does not require +not part of this specification. The `Authorization` HTTP header is OPTIONAL if the [=Connector=] does not require authorization. ## Provider Path Bindings @@ -93,7 +93,7 @@ Authorization: ... the [=Contract Negotiation=]. The HTTPS scheme MUST be supported. Implementations MAY optionally support other URL schemes. - Callback [=Messages=] will be sent to paths under the base URL as described by this specification. (_NOTE: - [=Providers=] should properly handle the cases where a trailing `/` is included + [=Providers=] SHOULD properly handle the cases where a trailing `/` is included with or absent from the `callbackAddress` when resolving full URL._) **Response** @@ -110,7 +110,7 @@ the [Contract Negotiation](#ack-contract-negotiation): **Request** -A [=Consumer=] may make an [=Offer=] by POSTing +A [=Consumer=] MAY make an [=Offer=] by POSTing a [Contract Request Message](#contract-request-message) to `negotiations/:providerPid/request`: @@ -254,7 +254,7 @@ Authorization: ... [=Contract Negotiation=]. The HTTPS scheme MUST be supported. Implementations MAY optionally support other URL schemes. - Callback messages will be sent to paths under the base URL as described by this specification. (_NOTE: [=Consumers=] - should properly handle the cases where a trailing / is included with or absent from the `callbackAddress` when + SHOULD properly handle the cases where a trailing / is included with or absent from the `callbackAddress` when resolving full URL._) **Response** @@ -271,7 +271,7 @@ the [Contract Negotiation](#ack-contract-negotiation): **Request** -A [=Provider=] may make an [=Offer=] by POSTing a [Contract Offer Message](#contract-offer-message) to +A [=Provider=] MAY make an [=Offer=] by POSTing a [Contract Offer Message](#contract-offer-message) to the `negotiations/:consumerPid/offers` callback: