From 15be6d2afff9099f7452939e7ab4d2ea6a17e2b8 Mon Sep 17 00:00:00 2001 From: sebbader-sap <107036549+sebbader-sap@users.noreply.github.com> Date: Wed, 22 Feb 2023 12:58:34 +0100 Subject: [PATCH] feat: add message schemas and shapes (#3) * feat: add message schemes for contract negotiation * feat: add message schemes for cataloging * feat: add message schemes for transfer process * refactor: replace JSON schema keyword "pattern" with better fitting "const" * fix: revert not discussed changes * fix: resolve broken links and typos * refactor: clean up file structure * fix: broken link to the negotiation error diagram --------- Co-authored-by: Julia Pampus <72392527+juliapampus@users.noreply.github.com> --- SUMMARY.md | 74 ++++++++-------- catalog/catalog.binding.https.md | 2 +- catalog/catalog.protocol.md | 57 +++++++++--- catalog/message/catalog-error-message.json | 9 ++ ...sage.json => catalog-request-message.json} | 0 catalog/message/catalog.error.message.json | 9 -- .../{catalog.message.json => catalog.json} | 0 .../message/diagram/catalog-error-message.png | Bin 0 -> 7992 bytes .../diagram/catalog-error-message.puml | 16 ++++ .../diagram/catalog-request-message.png | Bin 0 -> 7942 bytes .../diagram/catalog-request-message.puml | 15 ++++ catalog/message/diagram/catalog.png | Bin 0 -> 4461 bytes catalog/message/diagram/catalog.puml | 14 +++ .../example/dcat.distribution.example.json | 0 .../dcat.distribution.example.option1.json | 0 .../dcat.distribution.example.option2.json | 0 .../schema/catalog-error-message-schema.json | 28 ++++++ .../schema/catalog-message-schema.json | 34 ++++++++ .../catalog-request-message-schema.json | 35 ++++++++ catalog/message/schema/catalog-schema.json | 39 +++++++++ .../shape/catalog-error-message-shape.ttl | 33 +++++++ .../message/shape/catalog-message-shape.ttl | 39 +++++++++ .../shape/catalog-request-message-shape.ttl | 39 +++++++++ catalog/message/shape/catalog-shape.ttl | 39 +++++++++ {schemas => common/schema}/context.json | 7 +- common/{ => schema}/definitions.schema.json | 0 common/shape/message-shape.ttl | 41 +++++++++ common/shape/odrl-shapes.ttl | 41 +++++++++ .../style}/diagram.styles.puml | 0 model/m.dataspace.relationships.puml | 2 +- .../contract.negotiation.binding.https.md | 20 ++--- negotiation/contract.negotiation.protocol.md | 65 ++++++++------ ...e.json => contract-agreement-message.json} | 0 ...ntract-agreement-verification-message.json | 28 ++++++ .../message/contract-negotiation-error.json | 14 +++ ...> contract-negotiation-event-message.json} | 4 +- ...tract-negotiation-termination-message.json | 15 ++++ negotiation/message/contract-negotiation.json | 8 ++ ...ssage.json => contract-offer-message.json} | 0 ...age.json => contract-request-message.json} | 13 +-- ...ntract.agreement.verification.message.json | 8 -- .../message/contract.negotiation.error.json | 10 --- negotiation/message/contract.negotiation.json | 7 -- ...tract.negotiation.termination.message.json | 10 --- .../diagram/contract-agreement-message.png | Bin 0 -> 19724 bytes .../diagram/contract-agreement-message.puml | 25 ++++++ ...ontract-agreement-verification-message.png | Bin 0 -> 45486 bytes ...ntract-agreement-verification-message.puml | 44 ++++++++++ .../diagram/contract-negotiation-error.png | Bin 0 -> 15871 bytes .../diagram/contract-negotiation-error.puml | 25 ++++++ .../contract-negotiation-event-message.png | Bin 0 -> 18519 bytes .../contract-negotiation-event-message.puml | 24 ++++++ ...ntract-negotiation-termination-message.png | Bin 0 -> 9703 bytes ...tract-negotiation-termination-message.puml | 17 ++++ .../message/diagram/contract-negotiation.png | Bin 0 -> 19525 bytes .../message/diagram/contract-negotiation.puml | 29 +++++++ .../diagram/contract-request-message.png | Bin 0 -> 16399 bytes .../diagram/contract-request-message.puml | 26 ++++++ .../contract-agreement-message-schema.json | 36 ++++++++ ...agreement-verification-message-schema.json | 67 +++++++++++++++ .../contract-negotiation-error-schema.json | 46 ++++++++++ ...ract-negotiation-event-message-schema.json | 44 ++++++++++ .../schema/contract-negotiation-schema.json | 36 ++++++++ ...egotiation-termination-message-schema.json | 44 ++++++++++ .../contract-request-message-schema.json | 40 +++++++++ .../contract-agreement-message-shape.ttl | 42 +++++++++ ...t-agreement-verification-message-shape.ttl | 52 +++++++++++ .../contract-negotiation-error-shape.ttl | 40 +++++++++ ...ntract-negotiation-event-message-shape.ttl | 53 ++++++++++++ .../contract-negotiation-message-shape.ttl | 41 +++++++++ .../shape/contract-negotiation-shape.ttl | 52 +++++++++++ ...-negotiation-termination-message-shape.ttl | 33 +++++++ .../shape/contract-request-message-shape.ttl | 52 +++++++++++ schemas/contract-agreement-message-shape.ttl | 1 - ...t-agreement-verification-message-shape.ttl | 1 - ...ntract-negotiation-event-message-shape.ttl | 1 - ...-negotiation-termination-message-shape.ttl | 1 - schemas/contract-request-message-shape.ttl | 1 - .../diagram/transfer-completion-message.png | Bin 0 -> 10057 bytes .../diagram/transfer-completion-message.puml | 16 ++++ transfer/message/diagram/transfer-error.png | Bin 0 -> 8343 bytes transfer/message/diagram/transfer-error.puml | 18 ++++ transfer/message/diagram/transfer-process.png | Bin 0 -> 14787 bytes .../message/diagram/transfer-process.puml | 27 ++++++ .../diagram/transfer-request-message.png | Bin 0 -> 9547 bytes .../diagram/transfer-request-message.puml | 18 ++++ .../diagram/transfer-start-message.png | Bin 0 -> 8540 bytes .../diagram/transfer-start-message.puml | 17 ++++ .../diagram/transfer-suspension-message.png | Bin 0 -> 9094 bytes .../diagram/transfer-suspension-message.puml | 18 ++++ .../diagram/transfer-termination-message.png | Bin 0 -> 9072 bytes .../diagram/transfer-termination-message.puml | 18 ++++ .../transfer-completion-message-schema.json | 36 ++++++++ .../message/schema/transfer-error-schema.json | 48 +++++++++++ .../schema/transfer-process-schema.json | 48 +++++++++++ .../transfer-request-message-schema.json | 77 +++++++++++++++++ .../schema/transfer-start-message-schema.json | 51 +++++++++++ .../transfer-suspension-message-schema.json | 44 ++++++++++ .../transfer-termination-message-schema.json | 48 +++++++++++ .../transfer-completion-message-shape.ttl | 42 +++++++++ .../message/shape/transfer-error-shape.ttl | 53 ++++++++++++ .../message/shape/transfer-process-shape.ttl | 52 +++++++++++ .../shape/transfer-request-message-shape.ttl | 71 +++++++++++++++ .../shape/transfer-start-message-shape.ttl | 53 ++++++++++++ .../transfer-suspension-message-shape.ttl | 43 ++++++++++ .../transfer-termination-message-shape.ttl | 53 ++++++++++++ ....json => transfer-completion-message.json} | 0 ...ransfer.error.json => transfer-error.json} | 2 +- ...fer.process.json => transfer-process.json} | 0 ...age.json => transfer-request-message.json} | 2 +- ...ssage.json => transfer-start-message.json} | 0 ....json => transfer-suspension-message.json} | 2 +- ...json => transfer-termination-message.json} | 2 +- ...png => transfer-process-state-machine.png} | Bin 21117 -> 21121 bytes ...ml => transfer-process-state-machine.puml} | 4 +- transfer/transfer.process.binding.https.md | 6 +- transfer/transfer.process.protocol.md | 81 +++++++++++++++--- 117 files changed, 2429 insertions(+), 169 deletions(-) create mode 100644 catalog/message/catalog-error-message.json rename catalog/message/{catalog.request.message.json => catalog-request-message.json} (100%) delete mode 100644 catalog/message/catalog.error.message.json rename catalog/message/{catalog.message.json => catalog.json} (100%) create mode 100644 catalog/message/diagram/catalog-error-message.png create mode 100644 catalog/message/diagram/catalog-error-message.puml create mode 100644 catalog/message/diagram/catalog-request-message.png create mode 100644 catalog/message/diagram/catalog-request-message.puml create mode 100644 catalog/message/diagram/catalog.png create mode 100644 catalog/message/diagram/catalog.puml rename catalog/{ => message}/example/dcat.distribution.example.json (100%) rename catalog/{ => message}/example/dcat.distribution.example.option1.json (100%) rename catalog/{ => message}/example/dcat.distribution.example.option2.json (100%) create mode 100644 catalog/message/schema/catalog-error-message-schema.json create mode 100644 catalog/message/schema/catalog-message-schema.json create mode 100644 catalog/message/schema/catalog-request-message-schema.json create mode 100644 catalog/message/schema/catalog-schema.json create mode 100644 catalog/message/shape/catalog-error-message-shape.ttl create mode 100644 catalog/message/shape/catalog-message-shape.ttl create mode 100644 catalog/message/shape/catalog-request-message-shape.ttl create mode 100644 catalog/message/shape/catalog-shape.ttl rename {schemas => common/schema}/context.json (60%) rename common/{ => schema}/definitions.schema.json (100%) create mode 100644 common/shape/message-shape.ttl create mode 100644 common/shape/odrl-shapes.ttl rename {diagrams => common/style}/diagram.styles.puml (100%) rename negotiation/message/{contract.agreement.message.json => contract-agreement-message.json} (100%) create mode 100644 negotiation/message/contract-agreement-verification-message.json create mode 100644 negotiation/message/contract-negotiation-error.json rename negotiation/message/{contract.negotiation.event.message.json => contract-negotiation-event-message.json} (72%) create mode 100644 negotiation/message/contract-negotiation-termination-message.json create mode 100644 negotiation/message/contract-negotiation.json rename negotiation/message/{contract.offer.message.json => contract-offer-message.json} (100%) rename negotiation/message/{contract.request.message.json => contract-request-message.json} (59%) delete mode 100644 negotiation/message/contract.agreement.verification.message.json delete mode 100644 negotiation/message/contract.negotiation.error.json delete mode 100644 negotiation/message/contract.negotiation.json delete mode 100644 negotiation/message/contract.negotiation.termination.message.json create mode 100644 negotiation/message/diagram/contract-agreement-message.png create mode 100644 negotiation/message/diagram/contract-agreement-message.puml create mode 100644 negotiation/message/diagram/contract-agreement-verification-message.png create mode 100644 negotiation/message/diagram/contract-agreement-verification-message.puml create mode 100644 negotiation/message/diagram/contract-negotiation-error.png create mode 100644 negotiation/message/diagram/contract-negotiation-error.puml create mode 100644 negotiation/message/diagram/contract-negotiation-event-message.png create mode 100644 negotiation/message/diagram/contract-negotiation-event-message.puml create mode 100644 negotiation/message/diagram/contract-negotiation-termination-message.png create mode 100644 negotiation/message/diagram/contract-negotiation-termination-message.puml create mode 100644 negotiation/message/diagram/contract-negotiation.png create mode 100644 negotiation/message/diagram/contract-negotiation.puml create mode 100644 negotiation/message/diagram/contract-request-message.png create mode 100644 negotiation/message/diagram/contract-request-message.puml create mode 100644 negotiation/message/schema/contract-agreement-message-schema.json create mode 100644 negotiation/message/schema/contract-agreement-verification-message-schema.json create mode 100644 negotiation/message/schema/contract-negotiation-error-schema.json create mode 100644 negotiation/message/schema/contract-negotiation-event-message-schema.json create mode 100644 negotiation/message/schema/contract-negotiation-schema.json create mode 100644 negotiation/message/schema/contract-negotiation-termination-message-schema.json create mode 100644 negotiation/message/schema/contract-request-message-schema.json create mode 100644 negotiation/message/shape/contract-agreement-message-shape.ttl create mode 100644 negotiation/message/shape/contract-agreement-verification-message-shape.ttl create mode 100644 negotiation/message/shape/contract-negotiation-error-shape.ttl create mode 100644 negotiation/message/shape/contract-negotiation-event-message-shape.ttl create mode 100644 negotiation/message/shape/contract-negotiation-message-shape.ttl create mode 100644 negotiation/message/shape/contract-negotiation-shape.ttl create mode 100644 negotiation/message/shape/contract-negotiation-termination-message-shape.ttl create mode 100644 negotiation/message/shape/contract-request-message-shape.ttl delete mode 100644 schemas/contract-agreement-message-shape.ttl delete mode 100644 schemas/contract-agreement-verification-message-shape.ttl delete mode 100644 schemas/contract-negotiation-event-message-shape.ttl delete mode 100644 schemas/contract-negotiation-termination-message-shape.ttl delete mode 100644 schemas/contract-request-message-shape.ttl create mode 100644 transfer/message/diagram/transfer-completion-message.png create mode 100644 transfer/message/diagram/transfer-completion-message.puml create mode 100644 transfer/message/diagram/transfer-error.png create mode 100644 transfer/message/diagram/transfer-error.puml create mode 100644 transfer/message/diagram/transfer-process.png create mode 100644 transfer/message/diagram/transfer-process.puml create mode 100644 transfer/message/diagram/transfer-request-message.png create mode 100644 transfer/message/diagram/transfer-request-message.puml create mode 100644 transfer/message/diagram/transfer-start-message.png create mode 100644 transfer/message/diagram/transfer-start-message.puml create mode 100644 transfer/message/diagram/transfer-suspension-message.png create mode 100644 transfer/message/diagram/transfer-suspension-message.puml create mode 100644 transfer/message/diagram/transfer-termination-message.png create mode 100644 transfer/message/diagram/transfer-termination-message.puml create mode 100644 transfer/message/schema/transfer-completion-message-schema.json create mode 100644 transfer/message/schema/transfer-error-schema.json create mode 100644 transfer/message/schema/transfer-process-schema.json create mode 100644 transfer/message/schema/transfer-request-message-schema.json create mode 100644 transfer/message/schema/transfer-start-message-schema.json create mode 100644 transfer/message/schema/transfer-suspension-message-schema.json create mode 100644 transfer/message/schema/transfer-termination-message-schema.json create mode 100644 transfer/message/shape/transfer-completion-message-shape.ttl create mode 100644 transfer/message/shape/transfer-error-shape.ttl create mode 100644 transfer/message/shape/transfer-process-shape.ttl create mode 100644 transfer/message/shape/transfer-request-message-shape.ttl create mode 100644 transfer/message/shape/transfer-start-message-shape.ttl create mode 100644 transfer/message/shape/transfer-suspension-message-shape.ttl create mode 100644 transfer/message/shape/transfer-termination-message-shape.ttl rename transfer/message/{transfer.completion.message.json => transfer-completion-message.json} (100%) rename transfer/message/{transfer.error.json => transfer-error.json} (93%) rename transfer/message/{transfer.process.json => transfer-process.json} (100%) rename transfer/message/{transfer.request.message.json => transfer-request-message.json} (89%) rename transfer/message/{transfer.start.message.json => transfer-start-message.json} (100%) rename transfer/message/{transfer.suspension.message.json => transfer-suspension-message.json} (94%) rename transfer/message/{transfer.termination.message.json => transfer-termination-message.json} (94%) rename transfer/{transfer.process.state.machine.png => transfer-process-state-machine.png} (93%) rename transfer/{transfer.process.state.machine.puml => transfer-process-state-machine.puml} (86%) diff --git a/SUMMARY.md b/SUMMARY.md index 4e6492cf..d813100c 100644 --- a/SUMMARY.md +++ b/SUMMARY.md @@ -26,46 +26,46 @@ * [README.md](./README.md) * [SUMMARY.md](./SUMMARY.md) * [Section 1 Terminology and Section 2 Concepts](./model/information.model.md) -* [Figure: Entities and Relationships in Data Space](./model/im.dataspace.relationships.png) -* [Figure (source): Entities and Relationships in Data Space](./model/im.dataspace.relationships.puml) -* [Figure: Entites and relationships to DCAT and ODRL](./model/im.participant.entities.png) -* [Figure (source): Entites and relationships to DCAT and ODRL](./model/im.participant.entities.drawio) +* [Figure: Entities and Relationships in Data Space](./model/m.dataspace.relationships.png) +* [Figure (source): Entities and Relationships in Data Space](./model/m.dataspace.relationships.puml) +* [Figure: Entities and relationships to DCAT and ODRL](./model/m.participant.entities.png) +* [Figure (source): Entities and relationships to DCAT and ODRL](./model/m.participant.entities.drawio) * [Section 3 Catalog protocol](./catalog/catalog.protocol.md) * [Catalog HTTPS Binding](./catalog/catalog.binding.https.md) -* [Example: DCAT Distribtion (json)](./catalog/example/dcat.distribution.example.json) -* [Example: DCAT Distribtion option 1 (json)](./catalog/example/dcat.distribution.example.option1.json) -* [Example: DCAT Distribtion option 2 (json)](./catalog/example/dcat.distribution.example.option2.json) -* [Catalog Error Message (json)](./catalog/message/catalog.error.message.json) -* [Catalog Message (json)](./catalog/message/catalog.message.json) -* [Catalog Request Message (json)](./catalog/message/catalog.request.message.json) +* [Example: DCAT Distribution (json)](./catalog/message/example/dcat.distribution.example.json) +* [Example: DCAT Distribution option 1 (json)](./catalog/message/example/dcat.distribution.example.option1.json) +* [Example: DCAT Distribution option 2 (json)](./catalog/message/example/dcat.distribution.example.option2.json) +* [Catalog Error Message (json)](./catalog/message/catalog-error-message.json) +* [Catalog Message (json)](./catalog/message/catalog.json) +* [Catalog Request Message (json)](./catalog/message/catalog-request-message.json) * [Section 4 Contract Negotiation](./negotiation/contract.negotiation.protocol.md) -* [Contract Negotiaton HTTPS Binding](./negotiation/contract.negotiation.binding.https.md) -* [Figure: Contract Negotation State Machine](./negotiation/contract.negotiation.state.machine.png) -* [Figure (Source): Contract Negotation State Machine](./negotiation/contract.negotiation.state.machine.puml) -* [Contract Agreement Message (json)](./negotiation/message/contract.agreement.message.json) -* [Contract Agreement Verification Message (json)](./negotiation/message/contract.agreement.verification.message.json) -* [Contract Negotiation Error Message (json)](./negotiation/message/contract.negotiation.error.json) -* [Contract Negotiation Event Message (json)](./negotiation/message/contract.negotiation.event.message.json) -* [Contract Negotation Message (json)](./negotiation/message/contract.negotiation.json) -* [Contract Negotiation Termination Message (json)](./negotiation/message/contract.negotiation.termination.message.json) -* [Contract Offer Message (json)](./negotiation/message/contract.offer.message.json) -* [Contract Request Message (json)](./negotiation/message/contract.request.message.json) +* [Contract Negotiation HTTPS Binding](./negotiation/contract.negotiation.binding.https.md) +* [Figure: Contract Negotiation State Machine](./negotiation/contract.negotiation.state.machine.png) +* [Figure (Source): Contract Negotiation State Machine](./negotiation/contract.negotiation.state.machine.puml) +* [Contract Agreement Message (json)](./negotiation/message/contract-agreement-message.json) +* [Contract Agreement Verification Message (json)](./negotiation/message/contract-agreement-verification-message.json) +* [Contract Negotiation Error Message (json)](./negotiation/message/contract-negotiation.json) +* [Contract Negotiation Event Message (json)](./negotiation/message/contract-negotiation-event-message.json) +* [Contract Negotiation Message (json)](./negotiation/message/contract-negotiation.json) +* [Contract Negotiation Termination Message (json)](./negotiation/message/contract-negotiation-termination-message.json) +* [Contract Offer Message (json)](./negotiation/message/contract-offer-message.json) +* [Contract Request Message (json)](./negotiation/message/contract-request-message.json) * [Example: Contract Agreement Message HTTP](./negotiation/message/example/contract.agreement.message.http.transfer.json) * [Section 5 Transfer process](./transfer/transfer.process.protocol.md) * [Transfer process HTTPS Binding](./transfer/transfer.process.binding.https.md) -* [Figure: Transfer Process State Machine](./transfer/transfer.process.state.machine.png) -* [Figure (source): Transfer Process State Machine](./transfer/transfer.process.state.machine.puml) -* [Transfer Completition Message (json)](./transfer/message/transfer.completion.message.json) -* [Transfer Error Message (json)](./transfer/message/transfer.error.json) -* [Transfer Process Message (json)](./transfer/message/transfer.process.json) -* [Transfer Request Message (json)](./transfer/message/transfer.request.message.json) -* [Transfer Start Message (json)](./transfer/message/transfer.start.message.json) -* [Transfer Suspension Message (json)](./transfer/message/transfer.suspension.message.json) -* [Transfer Termination Message (json)](./transfer/message/transfer.termination.message.json) -* [Common Schema (json)](./common/definitions.schema.json) -* [Shape: Contract Agreement Message (ttl)](./schemas/contract-agreement-message-shape.ttl) -* [Shape: Contract Agreement Verification message (ttl)](./schemas/contract-agreement-verification-message-shape.ttl) -* [Shape: Contract Negotation Event Message (ttl)](./schemas/contract-negotiation-event-message-shape.ttl) -* [Shape: Contract Negotation Termination Message (ttl)](./schemas/contract-negotiation-termination-message-shape.ttl) -* [Shape: Contract Request Message (ttl)](./schemas/contract-request-message-shape.ttl) -* [diagram.styles.puml](./diagrams/diagram.styles.puml) +* [Figure: Transfer Process State Machine](./transfer/transfer-process-state-machine.png) +* [Figure (source): Transfer Process State Machine](./transfer/transfer-process-state-machine.puml) +* [Transfer Completion Message (json)](./transfer/message/transfer-completion-message.json) +* [Transfer Error Message (json)](./transfer/message/transfer-error.json) +* [Transfer Process Message (json)](./transfer/message/transfer-process.json) +* [Transfer Request Message (json)](./transfer/message/transfer-request-message.json) +* [Transfer Start Message (json)](./transfer/message/transfer-start-message.json) +* [Transfer Suspension Message (json)](./transfer/message/transfer-suspension-message.json) +* [Transfer Termination Message (json)](./transfer/message/transfer-termination-message.json) +* [Common Schema (json)](./common/schema/definitions.schema.json) +* [Shape: Contract Agreement Message (ttl)](./negotiation/message/shape/contract-agreement-message-shape.ttl) +* [Shape: Contract Agreement Verification message (ttl)](./negotiation/message/shape/contract-agreement-verification-message-shape.ttl) +* [Shape: Contract Negotiation Event Message (ttl)](./negotiation/message/shape/contract-negotiation-event-message-shape.ttl) +* [Shape: Contract Negotiation Termination Message (ttl)](./negotiation/message/shape/contract-negotiation-termination-message-shape.ttl) +* [Shape: Contract Request Message (ttl)](./negotiation/message/shape/contract-request-message-shape.ttl) +* [diagram.styles.puml](./common/style/diagram.styles.puml) diff --git a/catalog/catalog.binding.https.md b/catalog/catalog.binding.https.md index 9b311294..cbcb293b 100644 --- a/catalog/catalog.binding.https.md +++ b/catalog/catalog.binding.https.md @@ -50,7 +50,7 @@ request. #### 2.3.2 OK (200) Response -If the request is successful, the catalog service must return a response body containing a [CatalogMessage](./message/catalog.message.json) which is a profiled DCAT Catalog type +If the request is successful, the catalog service must return a response body containing a [Catalog](./message/catalog.json) which is a profiled DCAT Catalog type described by the [Catalog Protocol Specification](catalog.protocol.md). ## 3 Technical Considerations diff --git a/catalog/catalog.protocol.md b/catalog/catalog.protocol.md index 820a7dd1..b8552939 100644 --- a/catalog/catalog.protocol.md +++ b/catalog/catalog.protocol.md @@ -20,32 +20,63 @@ Future IDS specifications may define additional optional serialization formats. ### 2.1 CatalogRequestMessage -**Sent by**: Consumer +![](./message/diagram/catalog-request-message.png) -**Example**: +**Sent by**: Consumer -``` -{ - "@context": "https://w3id.org/idsa/v5/context.json", - "@type": "ids:CatalogRequest" - "ids:filter": {} -} -``` +**Example**: [CatalogRequestMessage](./message/catalog-request-message.json) -**Response**: [CatalogMessage](./message/catalog.message.json) containing the [DCAT catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog). +**Response**: [Catalog](#22-catalog) containing the [DCAT catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog). -**Schema**: (xx)[] +**Schema**: [CatalogRequestMessageShape](./message/shape/catalog-request-message-shape.ttl) and the [CatalogRequestMessage JSON Schema](./message/schema/catalog-request-message-schema.json) #### Description -The `CatalogRequestMessage` is message sent by a consumer to a catalog service. The catalog service must respond with a `CatalogMessage,` which is a -valid [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog). +The `CatalogRequestMessage` is message sent by a consumer to a catalog service. The catalog service must respond with a `Catalog,` which is a +valid instance of a [DCAT Catalog](https://www.w3.org/TR/vocab-dcat-3/#Class:Catalog). The `CatalogRequestMessage` may have a `filter` property which contains an implementation-specific query or filter expression type supported by the catalog service. The catalog service may require an authorization token. Details for including that token can be found in the relevant catalog binding specification. Similarly, pagination may be defined in the relevant catalog binding specification. + +### 2.2 Catalog + +![](./message/diagram/catalog.png) + +**Sent by**: Provider + +**Example**: [Catalog](./message/catalog.json) + + +**Response**: OK or ERROR + +**Schema**: [CatalogShape](./message/shape/catalog-shape.ttl) and the [Catalog JSON Schema](./message/schema/catalog-schema.json) + +#### Description + +The catalog contains all [Asset Entries](#31-asset-entry) which the requester shall see. + + +### 2.3 Catalog Error Message + +![](./message/diagram/catalog-error-message.png) + +**Sent by**: Consumer or Provider + +**Example**: [CatalogErrorMessage](./message/catalog-error-message.json) + +**Response**: OK or ERROR + +**Schema**: [CatalogErrorMessageShape](./message/shape/catalog-error-message-shape.ttl) and the [CatalogErrorMessage JSON Schema](./message/schema/catalog-error-message-schema.json) + +#### Description + +A Catalog Error Message is used when an error occured after a CatalogRequestMessage and the provider can not provide its catalog to the requester. + + + ## 3 DCAT Vocabulary Mapping This section describes how the IDS Information Model maps to DCAT resources. diff --git a/catalog/message/catalog-error-message.json b/catalog/message/catalog-error-message.json new file mode 100644 index 00000000..8b9b64b7 --- /dev/null +++ b/catalog/message/catalog-error-message.json @@ -0,0 +1,9 @@ +{ + "@context": "https://w3id.org/idsa/v5/context.json", + "@type": "ids:CatalogErrorMessage", + "ids:code": "123:A", + "ids:reason": [ + { "@value": "Catalog not provisioned for this requester.", "@language": "en" }, + { "some": "other reason"} + ] +} diff --git a/catalog/message/catalog.request.message.json b/catalog/message/catalog-request-message.json similarity index 100% rename from catalog/message/catalog.request.message.json rename to catalog/message/catalog-request-message.json diff --git a/catalog/message/catalog.error.message.json b/catalog/message/catalog.error.message.json deleted file mode 100644 index c57d246e..00000000 --- a/catalog/message/catalog.error.message.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "@context": "https://w3id.org/idsa/v5/context.json", - "@type": "ids:CatalogErrorMessage", - "ids:code": "123:A", - "ids:reasons": [ - {}, - {} - ] -} diff --git a/catalog/message/catalog.message.json b/catalog/message/catalog.json similarity index 100% rename from catalog/message/catalog.message.json rename to catalog/message/catalog.json diff --git a/catalog/message/diagram/catalog-error-message.png b/catalog/message/diagram/catalog-error-message.png new file mode 100644 index 0000000000000000000000000000000000000000..5f52db978b876bfa99ecd86257c2299ab2fd15ca GIT binary patch literal 7992 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 JDU~$~_&;{{;Hm%s literal 0 HcmV?d00001 diff --git a/catalog/message/diagram/catalog-request-message.puml b/catalog/message/diagram/catalog-request-message.puml new file mode 100644 index 00000000..fe2a605f --- /dev/null +++ b/catalog/message/diagram/catalog-request-message.puml @@ -0,0 +1,15 @@ +@startuml "catalog-request-message" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:CatalogRequestMessage" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : ids:CatalogRequestMessage + ids:filter : Object +} + +@enduml \ No newline at end of file diff --git a/catalog/message/diagram/catalog.png b/catalog/message/diagram/catalog.png new file mode 100644 index 0000000000000000000000000000000000000000..f360b4c3f972eda18fa21786d826a129bae52447 GIT binary patch literal 4461 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 . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:CatalogErrorMessageShape + a sh:NodeShape ; + sh:targetClass ids:CatalogErrorMessage ; + + +. \ No newline at end of file diff --git a/catalog/message/shape/catalog-message-shape.ttl b/catalog/message/shape/catalog-message-shape.ttl new file mode 100644 index 00000000..f80e71ac --- /dev/null +++ b/catalog/message/shape/catalog-message-shape.ttl @@ -0,0 +1,39 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:CatalogMessageShape + a sh:NodeShape ; + sh:targetClass ids:CatalogMessage ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:catalog ; + sh:class dcat:Catalog ; + sh:severity sh:Violation ; + sh:message " (CatalogMessageShape): An ids:catalog property must point zero or more instances of the dcat:Catalog class."@en ; + ] ; +. \ No newline at end of file diff --git a/catalog/message/shape/catalog-request-message-shape.ttl b/catalog/message/shape/catalog-request-message-shape.ttl new file mode 100644 index 00000000..3fa28f7a --- /dev/null +++ b/catalog/message/shape/catalog-request-message-shape.ttl @@ -0,0 +1,39 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:CatalogRequestMessageShape + a sh:NodeShape ; + sh:targetClass ids:CatalogRequestMessage ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:filter ; + sh:class ids:Filter ; + sh:severity sh:Violation ; + sh:message " (CatalogRequestMessageShape): An ids:filter property must point zero or more instances of the ids:Filter class."@en ; + ] ; +. \ No newline at end of file diff --git a/catalog/message/shape/catalog-shape.ttl b/catalog/message/shape/catalog-shape.ttl new file mode 100644 index 00000000..216232d7 --- /dev/null +++ b/catalog/message/shape/catalog-shape.ttl @@ -0,0 +1,39 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:CatalogShape + a sh:NodeShape ; + sh:targetClass dcat:Catalog ; + + sh:property [ + a sh:PropertyShape ; + sh:path dcat:dataset ; + sh:class dcat:Dataset ; + sh:severity sh:Violation ; + sh:message " (CatalogShape): A dcat:dataset property must point to a dcat:Dataset."@en ; + ] ; +. \ No newline at end of file diff --git a/schemas/context.json b/common/schema/context.json similarity index 60% rename from schemas/context.json rename to common/schema/context.json index a738908e..bc5dcaae 100644 --- a/schemas/context.json +++ b/common/schema/context.json @@ -2,9 +2,10 @@ "@context": { "ids": "https://w3id.org/idsa/core/", "odrl": "http://www.w3.org/ns/odrl/2/", - "xsd:": "http://www.w3.org/2001/XMLSchema#", + "xsd": "http://www.w3.org/2001/XMLSchema#", "cred": "https://www.w3.org/2018/credentials#", "sec": "https://w3id.org/security#", - "dct": "http://purl.org/dc/terms/" + "dct": "http://purl.org/dc/terms/", + "dcat": "http://www.w3.org/ns/dcat#" } -} +} \ No newline at end of file diff --git a/common/definitions.schema.json b/common/schema/definitions.schema.json similarity index 100% rename from common/definitions.schema.json rename to common/schema/definitions.schema.json diff --git a/common/shape/message-shape.ttl b/common/shape/message-shape.ttl new file mode 100644 index 00000000..adb6f429 --- /dev/null +++ b/common/shape/message-shape.ttl @@ -0,0 +1,41 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:MessageShape + a sh:NodeShape ; + sh:targetClass ids:Message ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:processId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (MessageShape): An ids:processId property must point to exactly one xsd:string."@en ; + ] ; +. \ No newline at end of file diff --git a/common/shape/odrl-shapes.ttl b/common/shape/odrl-shapes.ttl new file mode 100644 index 00000000..6df1b9e2 --- /dev/null +++ b/common/shape/odrl-shapes.ttl @@ -0,0 +1,41 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:OfferShape + a sh:NodeShape ; + sh:targetClass odrl:Offer ; + + sh:property [ + a sh:PropertyShape ; + sh:path odrl:target ; + sh:datatype xsd:anyURI ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (OfferShape): An odrl:target property must point to exactly one xsd:anyURI."@en ; + ] ; +. \ No newline at end of file diff --git a/diagrams/diagram.styles.puml b/common/style/diagram.styles.puml similarity index 100% rename from diagrams/diagram.styles.puml rename to common/style/diagram.styles.puml diff --git a/model/m.dataspace.relationships.puml b/model/m.dataspace.relationships.puml index 1b88cce5..0ab688a2 100644 --- a/model/m.dataspace.relationships.puml +++ b/model/m.dataspace.relationships.puml @@ -1,7 +1,7 @@ @startuml !pragma layout smetana -!include ../diagrams/diagram.styles.puml +!include ../common/style/diagram.styles.puml agent Participant diff --git a/negotiation/contract.negotiation.binding.https.md b/negotiation/contract.negotiation.binding.https.md index 1834abcb..826df350 100644 --- a/negotiation/contract.negotiation.binding.https.md +++ b/negotiation/contract.negotiation.binding.https.md @@ -18,7 +18,7 @@ The OpenAPI definitions for this specification can be accessed [here](TBD). ### 2.2 ContractNegotiationError In the event of a client request error, the connector must return an appropriate HTTP 4xxx client error code. If an error body is returned it must be -a [ContractNegotiationError](./message/contract.negotiation.error.json) with the following properties: +a [ContractNegotiationError](./message/contract-negotiation-error.json) with the following properties: | Field | Type | Description | |---------------|---------------|-------------------------------------------------------------| @@ -48,7 +48,7 @@ Authorization: ... ``` If the negotiation is found and the client is authorized, the provider connector must return an HTTP 200 (OK) response and a body containing -the [ContractNegotiation](./message/contract.negotiation.json): +the [ContractNegotiation](./message/contract-negotiation.json): ``` { @@ -94,7 +94,7 @@ is included with or absent from the `callbackAddress` when resolving full URL. The @id is the correlation id that will be used for callback messages. The provider connector must return an HTTP 201 (Created) response with the location header set to the location of the contract negotiation and a body containing -the [ContractNegotiation](./message/contract.negotiation.json) message: +the [ContractNegotiation](./message/contract-negotiation.json) message: ``` Location: /negotiations/urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3 @@ -113,7 +113,7 @@ Note that if the location header is not an absolute URL, it must resolve to an a #### 2.6.1 POST -A consumer may make an offer by POSTing a [ContractRequestMessage](./message/contract.request.message.json) to `negotiations/:id/request`: +A consumer may make an offer by POSTing a [ContractRequestMessage](./message/contract-request-message.json) to `negotiations/:id/request`: ``` POST https://connector.provider.com/negotiations/urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3/offers @@ -142,7 +142,7 @@ it. #### 2.7.1 POST -A consumer connector can POST a [ContractNegotiationEventMessage](./message/contract.negotiation.event.message.json) to `negotiations/:id/events` to accept the current +A consumer connector can POST a [ContractNegotiationEventMessage](./message/contract-negotiation-event-message.json) to `negotiations/:id/events` to accept the current provider contract offer. If the negotiation state is successfully transitioned, the provider must return HTTP code 200 (OK). The response body is not specified and clients are not required to process it. @@ -152,7 +152,7 @@ If the current contract offer was created by the consumer, the provider must ret #### 2.8.1 POST -The consumer connector can POST a [ContractAgreementVerificationMessage](./message/contract.agreement.verification.message.json) to verify an agreement. If the negotiation state is +The consumer connector can POST a [ContractAgreementVerificationMessage](./message/contract-agreement-verification-message.json) to verify an agreement. If the negotiation state is successfully transitioned, the provider must return HTTP code 200 (OK). The response body is not specified and clients are not required to process it. ``` @@ -177,7 +177,7 @@ Authorization: ... #### 2.9.1 POST -The consumer connector can POST a [ContractNegotiationTerminationMessage](./message/contract.negotiation.termination.message.json) to terminate a negotiation. If the negotiation +The consumer connector can POST a [ContractNegotiationTerminationMessage](./message/contract-negotiation-termination-message.json) to terminate a negotiation. If the negotiation state is successfully transitioned, the provider must return HTTP code 200 (OK). The response body is not specified and clients are not required to process it. ## 3 Consumer Callback Path Bindings @@ -192,7 +192,7 @@ be `https://connector.consumer.com/callback/negotiations/:id/offers`. #### 3.2.1 POST -A provider may make an offer by POSTing a [ContractOfferMessage](./message/contract.offer.message.json) to the `negotiations/:id/offers` callback: +A provider may make an offer by POSTing a [ContractOfferMessage](./message/contract-offer-message.json) to the `negotiations/:id/offers` callback: ``` POST https://connector.consumer.com/callback/negotiations/urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3/offers @@ -219,7 +219,7 @@ process it. #### 3.3.1 POST -The provider connector can POST a [ContractAgreementMessage](./message/contract.agreement.message.json) to the `negotiations/:id/agreement` callback to create an agreement. If the +The provider connector can POST a [ContractAgreementMessage](./message/contract-agreement-message.json) to the `negotiations/:id/agreement` callback to create an agreement. If the negotiation state is successfully transitioned, the consumer must return HTTP code 200 (OK). The response body is not specified and clients are not required to process it. ``` @@ -244,7 +244,7 @@ Authorization: ... #### 3.4.1 POST -A provider can POST a [ContractNegotiationEventMessage](./message/contract.negotiation.event.message.json) to the `negotiations/:id/events` callback with an `eventType` +A provider can POST a [ContractNegotiationEventMessage](./message/contract-negotiation-event-message.json) to the `negotiations/:id/events` callback with an `eventType` of `finalized` to finalize a contract agreement. If the negotiation state is successfully transitioned, the consumer must return HTTP code 200 (OK). The response body is not specified and clients are not required to process it. diff --git a/negotiation/contract.negotiation.protocol.md b/negotiation/contract.negotiation.protocol.md index d9fb0aae..ddc1cfe4 100644 --- a/negotiation/contract.negotiation.protocol.md +++ b/negotiation/contract.negotiation.protocol.md @@ -54,15 +54,18 @@ The CN state machine is transitioned upon receipt and acknowledgement of a messa ### 1. ContractRequestMessage +![](./message/diagram/contract-request-message.png) + **Sent by**: Consumer **Resulting State**: CONSUMER_REQUESTED, TERMINATED -**Example**: [ContractRequestMessage](./message/contract.request.message.json) +**Example**: [ContractRequestMessage](./message/contract-request-message.json) -**Response**: [ContractNegotiation](./message/contract.negotiation.json) containing the negotiation id or ERROR. +**Response**: [ContractNegotiation](./message/contract-negotiation.json) containing the negotiation id or ERROR: +![](./message/diagram/contract-negotiation.png) -**Schema**: [ContractRequestMessageShape](../../schemas/contract-request-message-shape.ttl) +**Schema**: [ContractRequestMessageShape](./message/shape/contract-request-message-shape.ttl), [ContractRequestMessage JSON Schema](./message/schema/contract-request-message-schema.json), [ContractNegotiationShape](./message/shape/contract-negotiation-shape.ttl) and [ContractNegotiation JSON Schema](./message/schema/contract-negotiation-schema.json) #### Description @@ -70,30 +73,32 @@ The _ContractRequestMessage_ is sent by a consumer to initiate a contract negoti #### Notes -- The consumer must include either an `offer` or `offerId` property. If the message includes a `processId` property, the request will be associated with an existing contract - negotiation and a consumer offer will be created using either the `offer` or `offerId` properties. If the message does not include a `processId`, a new contract negotiation - will be created using either the `offer` or `offerId` properties and the provider selects an appropriate `processId`. - -- It is an error to include both an `offer` and `offerId` property. +- The consumer must include an `offer` property, which itself must have a `@id` property. If the message includes a `processId` property, the request will be associated with an existing contract + negotiation and a consumer offer will be created using either the `offer` or `offer.@id` properties. If the message does not include a `processId`, a new contract negotiation + will be created using either the `offer` or `offer.@id` properties and the provider selects an appropriate `processId`. -- An `offerId` will generally refer to an offer contained in a catalog. If the provider is not aware of the `offerId` value, it must respond with an error message. +- An `offer.@id` will generally refer to an offer contained in a catalog. If the provider is not aware of the `offer.@id` value, it must respond with an error message. - The dataset id is not technically required but included to avoid an error where the offer is associated with a different data set. -- `callbackAddress` is a URI indicating where messages to the consumer should be sent in asynchronous settings. If the address is not understood, the provider MUST return an +> Comment sba (20.12.2022): Let's use the `offer.target` property for this, and nothing else. + +- `callbackAddress` is a URL indicating where messages to the consumer should be sent in asynchronous settings. If the address is not understood, the provider MUST return an UNRECOVERABLE error. ### 2. ContractAgreementMessage +![](./message/diagram/contract-agreement-message.png) + **Sent by**: Provider **Resulting State**: PROVIDER_AGREED, TERMINATED -**Example**: [ContractAgreementMessage](./message/contract.agreement.message.json) +**Example**: [ContractAgreementMessage](./message/contract-agreement-message.json) **Response**: OK or ERROR -**Schema**: [ContractAgreementMessageShape](../../schemas/contract-agreement-message-shape.ttl) +**Schema**: [ContractAgreementMessageShape](./message/shape/contract-agreement-message-shape.ttl) and [ContractAgreementMessage JSON Schema](./message/schema/contract-agreement-message-schema.json) #### Description @@ -105,15 +110,18 @@ A _ContractAgreementMessage_ must contain an ODRL Agreement. ### 3. ContractAgreementVerificationMessage + +![](./message/diagram/contract-agreement-verification-message.png) + **Sent by**: Consumer **Resulting State**: CONSUMER_VERIFIED, TERMINATED -**Example**: [ContractAgreementVerificationMessage](./message/contract.agreement.verification.message.json) +**Example**: [ContractAgreementVerificationMessage](./message/contract-agreement-verification-message.json) **Response**: OK or ERROR -**Schema**: [ContractAgreementVerificationMessageShape](../../schemas/contract-agreement-verification-message-shape.ttl) +**Schema**: [ContractAgreementVerificationMessageShape](./message/shape/contract-agreement-verification-message-shape.ttl) and the [ContractAgreementVerificationMessage JSON Schema](./message/schema/contract-agreement-verification-message-schema.json) #### Description @@ -124,44 +132,49 @@ A _ContractAgreementVerificationMessage_ must contain a `processId`. ### 4. ContractNegotiationEventMessage + +![](./message/diagram/contract-negotiation-event-message.png) + **Sent by**: Provider or Consumer **Resulting State**: PROVIDER_FINALIZED, CONSUMER_AGREED, TERMINATED -**Example**: [ContractNegotiationEventMessage](./message/contract.negotiation.event.message.json) +**Example**: [ContractNegotiationEventMessage](./message/contract-negotiation-event-message.json) **Response**: OK or ERROR -**Schema**: [ContractNegotiationEventMessageShape](../../schemas/contract-negotiation-event-message-shape.ttl) +**Schema**: [ContractNegotiationEventMessageShape](./message/shape/contract-negotiation-event-message-shape.ttl) and the [ContractNegotiationEventMessage JSON Schema](./message/schema/contract-negotiation-event-message-schema.json) #### Description -When the _ContractNegotiationEventMessage_ is sent by a provider with an `eventType` property set to `finalized`, a contract agreement has been finalized and the associated asset +When the _ContractNegotiationEventMessage_ is sent by a provider with an `eventType` property set to `FINALIZED`, a contract agreement has been finalized and the associated asset is accessible. The state machine is transitioned to the PROVIDER_FINALIZED state. Other event types may be defined in the future. A consumer responds with an error if the signature can't be validated or is incorrect. It is an error for a consumer to send a ContractNegotiationEventMessage with an eventType `finalized` to the provider. -When the _ContractNegotiationEventMessage_ is sent by a consumer with an `eventType` set to `accepted`, the state machine is placed in the CONSUMER_AGREED state. +When the _ContractNegotiationEventMessage_ is sent by a consumer with an `eventType` set to `ACCEPTED`, the state machine is placed in the CONSUMER_AGREED state. -It is an error for a provider to send a ContractNegotiationEventMessage with an eventType `accepted` to the consumer. +It is an error for a provider to send a ContractNegotiationEventMessage with an eventType `ACCEPTED` to the consumer. Note that contract events are not intended for propagation of agreement state after a contract negotiation has entered a terminal state. It is considered an error for a consumer or provider to send a contract negotiation event after the negotiation state machine has entered a terminal state. ### 5. ContractNegotiationTerminationMessage +![](./message/diagram/contract-negotiation-termination-message.png) + **Sent by**: Consumer or Provider **Resulting State**: TERMINATED -**Example**: [ContractNegotiationTermination](./message/contract.negotiation.termination.message.json) +**Example**: [ContractNegotiationTerminationMessage](./message/contract-negotiation-termination-message.json) -**Schema**: [ContractNegotiationTerminationMessageShape](../../schemas/contract-negotiation-termination-message-shape.ttl) +**Schema**: [ContractNegotiationTerminationMessageShape](./message/shape/contract-negotiation-termination-message-shape.ttl) and the [ContractNegotiationTerminationMessage JSON Schema](./message/schema/contract-negotiation-termination-message-schema.json) #### Description -The _ContractNegotiationTermination_ is sent by a consumer or provider indicating it has cancelled the negotiation sequence. The message can be sent at any state of a negotiation +The _ContractNegotiationTerminationMessage_ is sent by a consumer or provider indicating it has cancelled the negotiation sequence. The message can be sent at any state of a negotiation without providing an explanation. Nevertheless, the sender may provide a description to help the receiver. #### Notes @@ -169,15 +182,17 @@ without providing an explanation. Nevertheless, the sender may provide a descrip - A contract negotiation may be terminated for a variety of reasons, for example, an unrecoverable error was encountered or one of the parties no longer wishes to continue. A connector's operator may remove terminated contract negotiation resources after it has reached the terminated state. -- If an error is received in response to a ContractNegotiationTermination, the sending party may choose to ignore the error. +- If an error is received in response to a ContractNegotiationTerminationMessage, the sending party may choose to ignore the error. ## ContractNegotiationError +![](./message/diagram/contract-negotiation-error.png) + **Sent by**: Consumer or Provider -**Example**: [NegotiationError](./message/contract.negotiation.error.json) +**Example**: [NegotiationError](./message/contract-negotiation-error.json) -**Schema**: [ContractNegotiationErrorShape](../../schemas/contract-negotiation-error-message-shape.ttl) +**Schema**: [ContractNegotiationErrorShape](./message/shape/contract-negotiation-error-shape.ttl) and the [ContractNegotiationErrorMessage JSON Schema](./message/schema/contract-negotiation-error-schema.json) #### Description diff --git a/negotiation/message/contract.agreement.message.json b/negotiation/message/contract-agreement-message.json similarity index 100% rename from negotiation/message/contract.agreement.message.json rename to negotiation/message/contract-agreement-message.json diff --git a/negotiation/message/contract-agreement-verification-message.json b/negotiation/message/contract-agreement-verification-message.json new file mode 100644 index 00000000..11f3db1c --- /dev/null +++ b/negotiation/message/contract-agreement-verification-message.json @@ -0,0 +1,28 @@ +{ + "@context": "https://w3id.org/idsa/v5/context.json", + "@type": "ids:ContractAgreementVerificationMessage", + "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", + "cred:credentialSubject": { + "@type": "ids:ContractAgreementMessage", + "ids:hash": "abcdefghijk12345" + }, + "sec:proof": [ + { + "@type": "sec:Ed25519Signature2018", + "dct:created": { + "@type": "xsd:dateTime", + "@value": "2022-11-18T12:00:01Z" + }, + "sec:jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..8YIj2tG6HoiDKw476_ElxcCFiCTr89jHX24Osr1zgklp0Sgfkgx-ipu6Li5og4wtLGMoa7__xJpcHWHzwWZoCQ", + "sec:proofPurpose": "assertionMethod" + },{ + "@type": "sec:Ed25519Signature2018", + "dct:created": { + "@type": "xsd:dateTime", + "@value": "2022-11-18T12:00:01Z" + }, + "sec:jws": "eyJhbGciOiJFZERTQSIsImI2NCI6ZmFsc2UsImNyaXQiOlsiYjY0Il19..8YIj2tG6HoiDKw476_ElxcCFiCTr89jHX24Osr1zgklp0Sgfkgx-ipu6Li5og4wtLGMoa7__xJpcHWHzwWZoCQ", + "sec:proofPurpose": "assertionMethod" + } + ] +} diff --git a/negotiation/message/contract-negotiation-error.json b/negotiation/message/contract-negotiation-error.json new file mode 100644 index 00000000..329dc22a --- /dev/null +++ b/negotiation/message/contract-negotiation-error.json @@ -0,0 +1,14 @@ +{ + "@context": "https://w3id.org/idsa/v5/context.json", + "@type": "ids:ContractNegotiationError", + "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", + "ids:code": "...", + "ids:reason": [ + { "@value": "Catalog not provisioned for this requester.", "@language": "en" }, + { "some": "other reason"} + ], + "dct:description": [ + { "@language": "en", "@value": "The parsing of the input parameters failed." }, + { "@language": "de", "@value": "Das Lesen der Eingabeparameter schlug fehl." } + ] +} diff --git a/negotiation/message/contract.negotiation.event.message.json b/negotiation/message/contract-negotiation-event-message.json similarity index 72% rename from negotiation/message/contract.negotiation.event.message.json rename to negotiation/message/contract-negotiation-event-message.json index 19a2f529..53a55a17 100644 --- a/negotiation/message/contract.negotiation.event.message.json +++ b/negotiation/message/contract-negotiation-event-message.json @@ -2,6 +2,6 @@ "@context": "https://w3id.org/idsa/v5/context.json", "@type": "ids:ContractNegotiationEventMessage", "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", - "ids:eventType": "accepted | finalized", - "ids:checksum": "..." + "ids:eventType": "ACCEPTED", + "ids:checksum": "1ad23hs6" } diff --git a/negotiation/message/contract-negotiation-termination-message.json b/negotiation/message/contract-negotiation-termination-message.json new file mode 100644 index 00000000..65c1e16f --- /dev/null +++ b/negotiation/message/contract-negotiation-termination-message.json @@ -0,0 +1,15 @@ +{ + "@context": "https://w3id.org/idsa/v5/context.json", + "@type": "ids:ContractNegotiationTerminationMessage", + "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", + "ids:code": "...", + "ids:reason": [ + { + "@value": "License model does not fit.", + "@language": "en" + }, + { + "@id": "http://example.org/INCOMPATIBLE_LICENSE" + } + ] +} diff --git a/negotiation/message/contract-negotiation.json b/negotiation/message/contract-negotiation.json new file mode 100644 index 00000000..1c4b8a1f --- /dev/null +++ b/negotiation/message/contract-negotiation.json @@ -0,0 +1,8 @@ +{ + "@context": "https://w3id.org/idsa/v5/context.json", + "@id": "urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3", + "@type": "ids:ContractNegotiation", + "ids:processId": "urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3", + "ids:state": "CONSUMER_REQUESTED", + "ids:checksum": "..." + } \ No newline at end of file diff --git a/negotiation/message/contract.offer.message.json b/negotiation/message/contract-offer-message.json similarity index 100% rename from negotiation/message/contract.offer.message.json rename to negotiation/message/contract-offer-message.json diff --git a/negotiation/message/contract.request.message.json b/negotiation/message/contract-request-message.json similarity index 59% rename from negotiation/message/contract.request.message.json rename to negotiation/message/contract-request-message.json index 2f071966..d3f9386e 100644 --- a/negotiation/message/contract.request.message.json +++ b/negotiation/message/contract-request-message.json @@ -2,13 +2,16 @@ "@context": "https://w3id.org/idsa/v5/context.json", "@id": "urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3", "@type": "ids:ContractRequestMessage", - "dataSet": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", + "ids:dataSet": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", "ids:processId": "urn:uuid:dcbf434c-eacf-4582-9a02-f8dd50120fd3", - "ids:offerId": "urn:uuid:2828282:3dd1add8-4d2d-569e-d634-8394a8836a88", "ids:offer": { "@type": "odrl:Offer", - "@id": "...", - "odrl:target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88" + "@id": "urn:uuid:2828282:3dd1add8-4d2d-569e-d634-8394a8836a89", + "odrl:target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88", + ... }, - "ids:callbackAddress": "https://......" + "ids:callbackAddress": { + "@value": "https://......", + "@type": "xsd:anyURI" + } } diff --git a/negotiation/message/contract.agreement.verification.message.json b/negotiation/message/contract.agreement.verification.message.json deleted file mode 100644 index e86e4d0e..00000000 --- a/negotiation/message/contract.agreement.verification.message.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "@context": "https://w3id.org/idsa/v5/context.json", - "@type": "ids:ContractAgreementVerificationMessage", - "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", - "ids:agreement": { - "@type": "ids:ContractAgreementMessage" - } -} diff --git a/negotiation/message/contract.negotiation.error.json b/negotiation/message/contract.negotiation.error.json deleted file mode 100644 index 6406faef..00000000 --- a/negotiation/message/contract.negotiation.error.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@context": "https://w3id.org/idsa/v5/context.json", - "@type": "ids:ContractNegotiationError", - "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", - "ids:code": "...", - "ids:reasons": [ - {}, - {} - ] -} diff --git a/negotiation/message/contract.negotiation.json b/negotiation/message/contract.negotiation.json deleted file mode 100644 index 080ce2fb..00000000 --- a/negotiation/message/contract.negotiation.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "@context": "https://w3id.org/idsa/v5/context.json", - "@id": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", - "@type": "ids:ContractNegotiation", - "ids:state": "CONSUMER_REQUESTED", - "ids:checksum": "..." -} diff --git a/negotiation/message/contract.negotiation.termination.message.json b/negotiation/message/contract.negotiation.termination.message.json deleted file mode 100644 index 2ee1b645..00000000 --- a/negotiation/message/contract.negotiation.termination.message.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "@context": "https://w3id.org/idsa/v5/context.json", - "@type": "ids:ContractNegotiationTermination", - "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", - "ids:code": "...", - "ids:reasons": [ - {}, - {} - ] -} diff --git a/negotiation/message/diagram/contract-agreement-message.png b/negotiation/message/diagram/contract-agreement-message.png new file mode 100644 index 0000000000000000000000000000000000000000..fe25d7c2fae6e046c0b260b04af240c5ab3e970a GIT binary patch literal 19724 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 UdbZyH{M8>y^6EG9ZkPrBA0`RxBLDyZ literal 0 HcmV?d00001 diff --git a/negotiation/message/diagram/contract-agreement-verification-message.puml b/negotiation/message/diagram/contract-agreement-verification-message.puml new file mode 100644 index 00000000..eeca5415 --- /dev/null +++ b/negotiation/message/diagram/contract-agreement-verification-message.puml @@ -0,0 +1,44 @@ +@startuml "contract-agreement-verification-message" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:ContractAgreementVerificationMessage" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:ContractAgreementVerificationMessage" + ids:processId : String + cred:credentialSubject : ids:ContractAgreementMessage + sec:proof : sec:Proof +} + +class ids:ContractAgreementMessage { + @type : "ids:ContractAgreementMessage" + ids:hash : String +} + +class sec:Proof { + @type : Signature + dct:created : xsd:dateTime + sec:jws : String +} + +enum Signature { + sec:EcdsaSecp256k1Signature2019 + sec:EcdsaSecp256k1RecoverySignature2020 + sec:RsaSignature2018 + sec:SchnorrSecp256k1Signature2019 + sec:MerkleProof2019 + sec:Ed25519Signature2020 + sec:JsonWebSignature2020 + sec:BbsBlsSignature2020 + sec:BbsBlsSignatureProof2020 +} + +"ids:ContractAgreementVerificationMessage" "1" *-- "1" "ids:ContractAgreementMessage" : "cred:credentialSubject" +"ids:ContractAgreementVerificationMessage" "1" *-- "0..2" "sec:Proof" : "sec:proof" +"sec:Proof" "1" *-- "1" Signature : @type + +@enduml \ No newline at end of file diff --git a/negotiation/message/diagram/contract-negotiation-error.png b/negotiation/message/diagram/contract-negotiation-error.png new file mode 100644 index 0000000000000000000000000000000000000000..51d8027f9fedf326ddefe7353dc261f47e0ef339 GIT binary patch literal 15871 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 literal 0 HcmV?d00001 diff --git a/negotiation/message/diagram/contract-negotiation-error.puml b/negotiation/message/diagram/contract-negotiation-error.puml new file mode 100644 index 00000000..75f4fb2f --- /dev/null +++ b/negotiation/message/diagram/contract-negotiation-error.puml @@ -0,0 +1,25 @@ +@startuml "contract-negotiation-error" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:ContractNegotiationError" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:ContractNegotiationError" + ids:processId : String + ids:code : String + ids:reason : Array + dct:description : MultilanguageProperty +} + +class "MultilanguageProperty" { + @language : BCP47 Language-Tag + @value: String +} + +"ids:ContractNegotiationError" "1" *-- "*" "MultilanguageProperty" : "dct:description" + +@enduml \ No newline at end of file diff --git a/negotiation/message/diagram/contract-negotiation-event-message.png b/negotiation/message/diagram/contract-negotiation-event-message.png new file mode 100644 index 0000000000000000000000000000000000000000..f8fe08c5e4ad8e3fb3d985871a00787d6cdab71c GIT binary patch literal 18519 zcmb5Vby$_%(>5$2-3`)R5}WSsmX?l9H%LfHce4rUZjewKq+!z{B?{6YNK40i;q86@ z;(MO&J>EY&a9?|0Yt5Rq*33CG=R~Qi%Auo>pgei<1YJR1`o)tcFkZkvJS14)iAnFO z5%7n}Lq^ZT!r8^g0c_>*L=Nl(b~Ez;TT+_)P}+ESxCpYdyEvFRdAxFTV6$*`#O4qn zeewh@%T`Ozl^|X>pDrdE4ikbs`LN?!kB)sf z07~nf*DGX<9w4}k^hFzD&Ta7EW)IDVBfI(fuA%rKI-3;o$uSN4a&h|2tzpIfv=-3>meEmuh>yDD#yKaF)Yvn_hGU>^!D96~(#hSrCOBq2{pHo8SyRzHx&{Fc> zmCzad{95^t_nJlCIj#dSSDKEYJ2gOhLvQA@VNFA3+9s<`yish+yw}$4bt8%5w`?78 z|MHOZZ%)?+&M1}Jn~SJ3kP8;++otp{vnB>o?Ga+8I8v=vPvll`q=kz;vSO#@V!~5{ z^pQFv;(3QIY~qpMYHZPb;6neTHbOu0W;*mz=qA(0*5E^yc6nqfRV*b!ct~Xp-qrr> z2IQ4Mh5icVPBTtT>xK7|pZ6fvJ zu77U75K4yDo+$Lhmp@z%oI0{Tpl>Dg{eAyhwDppf8cUT9t+~vEwdP`(ZAli_wLgr% zNv@D7w~YcPqMa|bjm<$B55W%OY`)tNS?#le!cR=|u0veS3f-TzVdQ>Pkh0kC%*fI0 zk%xCst$Uo?#dRW5t3Btaw(Hi+6vn1&baiZpww_dVVeGZr4MAp`IZB)e31_QD%pF}ut6wxN{+VD|0qkcF4lw(FE z1<33#sP7hp@`2~gPn&KS9}1Ie)~der zCr_j$6{ID!yp4YvA$sEve8IpHl*cX(c`ETzToM~86oVRxIg-+-GMKUx#ZX);bvYH| z1zLeuv3#)tvJ4ii;wWsi@h{`Lc^1msI%~`O5mf=}2?1o7t_z<$;Vh<=)Es{=tH}dC zs%B((SSn8JH4I8Dq|p3et#ENlS~htw61?Qve|+dI1~of3z04&Gq+J+lbUj@@Ku;5zb8}-lt#coakC>G&7&^ zId=h^9td}GIBpUS8W@;dlR*QY2m zSH0N&fE7xkGa*TflY%VgaHImhmT7mVCoY#o%^lokW*uY`H;c~n4?$M{d(uB~4oy+sHB(-$Z zz^X&j;`BJIsQ&iRjVe%L?4U~4oSl~SahDnx?22vsgD2p_?&xy`o5=o+LEs0@X9sXm z`T>^jmDEKS+a3JQ@IE-B;rkdX%PT{Rb4Z<10cAC5@JDNIGQn4QB7v=>PFssg-3~EP-zaX-RZ1hJ2~&!o z{U$d>ZkF2fjTt&3OB}A)^^{ii83?4D7Fw2ZFO36VMOSN-Ne(c(@n_Jhe5rLlOY3{} z_4=yd-6wGCd02S3=zV{RTZ3iq2|ly+aH6ZpzCL*a_iIgPDibED2m=EK8@hjO5rw{? zw67+8Ki}~~a>~<~>Xv!mGkiFGOhTW^mh5{NGdHbFo-9vD)eDKw@nP-hrIQ)CMuWey z_;xN-kYfaq0;Si`)zF77bMBkxCk-G^X z%k2Mbf6j_YN+Gg2BgF!S_*l41irz(xSdDMYQ0RlvxQbp+@=Dee&O4+ONt3V+*Z<11 zuWmn#VsfqKVhL}rt{;7(_s)_BHA#EWbWvO&rhrN~=FpMQeI%$&uj!(~oNm(+0s7u; zAo}4)o7eh>JJyX}$V!9NC|gx*Enby4xFsmS5*Y>9KdlPmpM7c!QN0?C3XYy9gY0>% zqtP+L21Pn#i`DX9jg4)-1e4{p-?H3~C-WFgWVgP)ct-G6kViLj(v!?->gXveCx`kq zCiw_#M4Vrp*1`-wKe^Xa)RIU$9`H@E@6hqJA3d%5ah1(=Ap*jY3OX zA~_Jjz0OJjF_)F(HMLAk=R!4|nt3bzrFJvR0>6=NKk zoN*|bp48=!xOT-f<`fn$^3)cWU6M4AQQMgS#YkMxD7{MEhuwv)^}WU|8IhIZOn!7T zuG4hm0DSE*W(iSCdmD{Y0>^qZ3FvYzab7v7uE`-Hh~I52La(w|In!;wrD6=^AlZs_ zbKIfEq8)|TE*qpFTBdA54aoWNkceI0&X^$|LLpq zO_aui=f>34Q$-1l9px?qirUY3oS^@s9&ewX$dRe$(}zV1N3$vAafVbgfs&fVgJ2u< zll(3N@V)SHW;O=4SZ{l0AJ*pjC(&yi(UKa|1CpMo_&|t;P4v8%jvy1Wc7n9XTx`lC>F9+#;74b$2r_qHuP7c{j6yida zBWXDqh*~_{*gfUk9!f>`Zr^tVWbff{Ng}HV5&Pug zLcZh*-*nbqS=~SnzPTT9e>&UY!HQv(Cpxe+1f!KOB4&Zq7k$HLEE&0NGf1`RC10~? z7P;17Vba&-vH^yMLe?jct#1fjGdfCh`-E|RW+l@-%{(BU+pnuHD(XpZ7O(RrinXOK zd%GDZ9D>ZQo{uGT?*F|_3!(A(*T@Fz$shyVtxmth=LYq}Ln6MITTGC-7U&xr>;_YO ztThc{E0`cX98iOh7y*3;p6s&B7Vi&|Li=E+q`F(Kk}z2?Gu`f%|-sU~8Ru zzeazfi^A7>6+I*#qz`To&eSykQ9({OheXR?|&v`|d^DkFATVbvk)(<~dyQ92cZJW?Qrnlsss2Il%Gm*5?y*3;cs% z&5lrCob3ks%CTup)wJqGy&*|3$7Xog%U2{Vtog4o#j;PY=*Jhj9dd@-hQG=hNqMMn zSaK3t?kML#ze`(S!^DZNl}u-mPDV>D`VHBb%y&x3b&Lvn{um33&j*FSXz}-X7ZudD z%#}@F7e>zuxQFU*c$%WCH=t9m=c-wvMv>bvM=^Cg{=QpcFE8xUMJ*6EZ$OYLS#N(6 zSyDa-O{G{W9gC9_h4M8~vs{4FTHRfc!tU)r6^C_HwFaMDyc|ahb{Al*?xW!k>dRkz z*vGWsZMrzh%<+w1mkqihiWvwcNCOUEi|bOrdA`$muuUs$ZP2LBub8wNa00UtbEDaw zasLOqCFEK08kettiDN~9!+t2t$G2}*ySc$rG_(gWoI$a zcPxqLnZ+d@W;)-ee500kr-Y0|)VJa0Hbu2m;q*HV8K@u+`d(Mn`nTVOJ+DENVX0Rq zgx^`PjZV?eUww)W z(hf6oxeW?+b=(;6H0ZRRKo*WG(et*)GEwJ1)&WSmWIDTs;9S-dyaVsZUb{4-Ce!8v z|4$`KlPYG@F|C|cmyt9g_ooZ_YU~)nYj-_DFL(px?#{Uo}q@?q+ocj9zMNyBMD( z`HV%UGFtEafSnD$zZWDasadv_@)YeL-e{TCpq3h85Bf_;LmDtKdZ`6*;o&=P0n5e+ zShjsHFgC@w(O}`AT4r3}$`7H`rD>iO)0L^tMDlxTd`oPL5%u5Bk<9;)ST&_#iq^tS zi+E^Vlb*FBc2B63Z>R(Ed}xKskJ7ooFXlpFg%iTQJ>;cKB$$z6F~B01(|LxvRpQnX zV=`bg(7W)y*j(8EK94BoHhh=n(Iwx2dyYFQ`t0icETWY5ec zi(HT%Z2qbBm@zd1$(M4LFH`VF1Vei2?`)j9lEYE<%2|IK+3;lxtz3F=fx<`2N|0&7 z@*QNwa`Id2&NnsDjC$J-ETl|%j$e;zx}+>M`=2aUO(xQ_^A6dS_z&?t8X2D9FqZC- zkw~xfk#lZ36G-djw?lSr-&W6}Hqq79c8j2CED`!>3TR0gXqna8;jRN;eri+G zut*EfD4g6ZfxqufN^4cx&pCmuSDwEwon4!|%R{YIUUcQ0~9(0VK9 zE5DUJaD3@|Bd@&G!KW22PrKYs3!%b^ic)$(Or4a`^5+98B(vqG;5|;1bm3uk)3_|y zGKw1bQ1?Im_U{)tj~k65mYNQ6eAmp&YDF@wKWJDm9Ems`XykU^<^fmtaKV4eA(6S1K}9JL9PxEpdbOVNXFpftxpFDmyMAoOWi&(1e(FwPlSUdcGM};||YK zuHyncRn+Pd^$~ipm`4=S5qKzy*bHa+2eKEx2C{LDUV6 zfL<-nOg+XhB^^v%G;nMcGV*vpW=x>+IY& z$Lp!b9XUVC>4%y*WT3hol#k_xlx;GqmSBUUpyEc=ZW}~js5NaRxW9r6h%03^f!#I2m|QZ<&riR&K2?z}t(>v$oYc0sG-bk}Zi!I|ybb+rgY zUaw2tc(lZAC1_XfUecxoaBZ`OIkCkp1J;{(J09v?lWRy|Ki`7PRWM2nvJAyKeO2Pd zZrLiD!MkSI<_X4ztMB^W^{XtP2}!0=MEv8t;Kj~VMSBJ|8jBGx5I)_SP+VXT?*0;v zUh;kB>1yS{Gc|P0=&RP8(qx$EH0e;syk7aU6ExwPbb?&nuyWj1Y;U1hNu9o+nXeg)sS1{97 zw*CjolRKeyldN5fUmFe7!q2A7Zwu-wwQ7Q5{mvq)&Lz|KLgF`XvYFuObq4fJhcfUZ zzAoC~SV#XXf)=`LDrXB4u4AI>15p?so$3slZ$u1tp4|NTa=1}8u@U-Ny(n~f<|plQ z!r~>atO_)?N~*pgN%j8y2JG!+;%z;J0+M~b#a98J7g_FfAN^nBUDKS?HLMrfSh`Cr z_D3y*;OHv(R-eWdU-Fn!@xHn4mU6(NBnq5LB?=U;`f{|hUdmBaF+9Y?0^qHWmlnn~ zUEHMJ;?#IJdxx_NF$Q$hiCNajg5nkMHQ!~)I_qP-O3{>suu>$VI_Gf|eRt)!Z-o16 zk%YD15)1s6cx&1HXWuv@LGf3vrQ>}r#F39Okqb?>GZMr`X)-hyQ~ZS5vIm0Qdk&=! z%v`?rZac&nU%dQ^2C9DQQ|b~kvcaqU5!l~)`I=A)zB2(ngZETC{prIFpyR*+AOp$h zw6FXY;!D*Ysf5aheat{5-~wQ;{otM^ic=&~(@4^U_TUCXwQ5f3cg4M(Ft`@?xX5({ zK8G%eI=|E@_*hmrUaO;paF)YG8Ap>zOu03s^ zu)3}T>7AG{3gz-}EG3cCAYWMXMpdqSzgk2sgksRj>rR&#?Q3utc}({?qAZ%ucRlU`vnjH#SZ|wcVk~&^bpds*31=WMRqalkLSRQ!4@o0U7Z-}Yh_{A=raUUot&>fC6~@IBAa~5PpC$$OAP*d z9e8lZR;SJSr-ffS=NxCw*}J122vGuR+%fNQ^W9FZ9?pe5e=3lceYy6U4WHB?$U9jj z{U{n3_8C}*{e?Z5e_igL$?d>qkUeXEV~*!Kp|KVF<&gckB*9+Dd&~yY#3&vOgj@j4 z=-}?_;<)rA&vLMI#Ye#qx*-zjtx2hvoMU(ii``L^O3fT!34=&HU3ESTq+jp6el&9p zlydK_c~Q+&LN*;a>xC6XUQZTvcmHjt#0rYXQ6k>$%;$f99U?j1R5 z8xEb)#eo=_J+**DAqa_CiWVmdVY!)keRexc{^1s4s?z?Po?uk>+!i@00Hd!<72`(&k9?CX3cYBGr1=LZh&y?OACmljaG9 zC~iWy==^j7D_dbF6K=0ppiw{~{B@gLl_ATU%o0J_hf;DS`$i`e znLA(hFY(Wtp8YuO#fBzp52};ie9iQ?cF6AuCbi$8<18tl=yyry@g#n7i|PO*5Yy08 z8;MAI8!wkVInznYV`O|6y*j!yYauK;x4QG4&zgT)QxVqQrtuhf>VrK>^qw;Jp?iRj zH`|Z|;a)th(Xf_{+WxcS<*kyikR|@AkSB#j0Lx&7UmatPeG6l|xvQ2aJM6J;Z_Mv} zAKg`nsH)gk_hAePJ;iB(m0f?&&&f17RrjS(mQI1dlYdRxcHAMX&xBAeUaV4<8ODDM<0d!$aEhZ;zr;({8g0 zMld;8v9<9e)fC8#8#IA)CXJB+w>IC0;Kk9#3zdoSuXP9(h^eJaQ(nxBFY6@I<-Ab? zHF%wR1Xy~E&o8F4jI}j;N4=9w5S=(F?8Rr%cKqDJ^q+#ZNv7o9SH-g5gR?_tlq^?K z+)nl{Y-dWJ2|L8D3lu4?upn%c1SDdvh~GlqP2T>_UkSjpY$u9+C&+1x#3L(Z{PuQu zZUOv;0H5`e@!IcqDyof~wGSAa>m(S<-Q=#M!6 zks->^UoRaP4m3^vN0_mxq*A%MAU#WoUKfUcQeM!<6oXWOg4%=jAmIZj-a~QOClH0C z+x#0wQ%69^wtoIz;aZpO*aVNmh!U`y)Ht{>p6kRYruoX~? zD|g7aT!O&wv`*CDS}`>Gju0GgN)daKCu~TFf6-~~QoD-i!}Q@^(Qs8J1|t4CJ>6Nh z`htkIcW&Ykjm|_`}5m7 zc#YpDI~>S+ncD=j{my$)lWyZxAx{8q;na`{`S(`6tJ^akOXlDJSq={m#$KN3>i>@D z(L1gAfope&0$^07uB-GUqc)B*hBaX^$#vg>Y5sYaX+W+=<;a)<=?m9L#BvuPeR01s z-DGkgVAx43WIZjQtkK5fsvp91M#UG#t5dCoU%&6#UK^ouV0z}r%`H6-FGU~)oMX#w zmY7SM0}uh-P165=dZAqsI5qXh>@;m{A9EAsCuO5GR$fIYaJ?ccWxzMFnwfh3G0%VAt5EPh+;WSZvGR#Y11D zhNuwR?1;#2+P)xo+m9v>CiQ&)DOVab{CG);l>&!;U>Z3RanWy!q6H>ZdH}U!W}n<9 zw;7|M^gMn-jkkF@z5IP^v=5{1sLgVOfyg4ajX&$ys<@Vr7$`~U~ zgc6ZrEE)%lWU58zCa%q_s_cgu13TTS#0IEqEAHVP?O*wOq=3>s~G1_^v~e>xvsXsIA6v|4dFTCOp{l} z0G1!TMi{-M@wz_wPJmeW*$7(>X&gI+QB7)4A(ZGX(~Dg_`_p(hb>jOpje2$3X7idtxvAw3$dmtQDP|hOJ}ORW!-I7ZRH-- zJYLh#gH8m8yW6Sb7M3xt-TZ?p4omY05{8Hb)KoBHP2hxxp;~pBjdZ_lC_iN6zUws~vj#;)x8~u#oM5L_5et*V@jY+@# zg*xCoA;_)+LjU(sqPe+eSg0&B>ij?Ky*qIf6eFb}EX)PW)T0m_BIn8WBgTzLf+MBZ{KtTsAx2tQsqp| z%KTHx6mK-0Lr9&vfK+(wS}vAS5nqAKZA@H$Q30~xb<%)L)BLN0OSM=18zXN3t)KP( z5L9r8UN*3r&=-8QCHYQ!NtG(M#%G}$022@{dghQ>-__jlZ6HlLEOp7d;I{T;_awx^ zMv_v0OxpK!V|-|Wr0AqfwtIJW9&*-<8L}Q*TNgmTxKlbmz*twTz?oEMpyA2 zBsV@QXZ>tQys~R@$O%El_JmK<9_%K8>ZgkALf4eGM_V_io;?x6SNs_0=+E_bI6n_5l!MwxNQ9?%gfE9hn0U=@Qx|9L z=SFYU(?|u#SL21o^gW&)Tb?X>a5JYY6onBX0ct)LAq-iExIktIrr}~fJw@A^Z7FGV zrYD;uqp$YRH!{~DE}6$)^hGVI1~Fn&`5hX?N)DqmR=WolRmIBZ)Mc9fGH$WXv(oW7 zuL%0j=~riY$(FqQ{O39t&leF{zGchkVkwmhX8|~hpZzzEat7h}Hetb;xo8dUd&}%L zg=ucXS{W!i4ChSNCFFFW-2e&fYNdT|=AyHMMBaP2Ke<7qtO%MrR^1o1HHYxl1{t#YqNZW1#sL#3Z_8nGZ z5iiJ{M~S?Q4C3Htw(#sI^!UjD!J=o++YdRgw;65z7=3@3(W`4@VD+t*=cxHKjM z@;waJ&p<`ujYg!|kA{7u17|eIahSxe2$1yR&jrK2c>Uqv)&T6m!|h$j>3!r{oQvm+ zV4pHFvu&{$te_M5{f%V$fMMdQ1NCiGuMFjN>@8xcG}-fhaUxR4@egkq&)*_&SzhXW zT{#~L2zkXnY9sF;311FSm zyjE?2#TvJ4sp>$)$9DKURuR&Jjy3=6M)>W6<@yWagZn{sViTg&Wp|vvD^8NaZ=gGN z-U^3NgWr3Gl3pkCnH>~DhI!1Oq}vm)p<*!8f6XcgQTRM9i5A+UK`eLZO=rB`By;w$ z&;zC~=1qm)73$GIFk8LZ*OrcE4rXlx2LM3#K3>4UgvhD(?rCk=;!pEvT+dRMakUXh z`HqXQFc(gB|6Zy`fD5m~x0oXxN1+1qa)x-|ynW05OU0x{p)wTP^)u-{wTb=2k4jF2 z!jE>x0%v^vlBrQj_;BJF%g8)r9zXqpU{GOZiwd45A%epk1vh!B(K>YbF0K|t4e7GV z{{D+RHXq|FYl9YmS9TZI?f#w|Ex^UtVGi^eZrB_M>5{C*d{f5t(Vh}d(DzE=1mD=I zbv&*bupKe!XYslnf{w1-Y^EMfieo!P7X;PIoCgDh=U4t}+xLSB&|$Q97h~M>>bsA+ zl$%c(TCaU~BbJKcGtm6aL!Z<_qNlL+N|A(Fxe3gny(LPSCDc+%yS9JbMdedSMNg~% z#&Nj_(#$mpo{tH-D7krdA}ys1N`?Y7p?(DiR$0@_-HzlcC(bIA$-99z>_>HClX+Qrqx0q~M1*r%C zLp<8U9vbY5*m%P38xgPE4lp#$q#Hb0`qKnpTWkSEu13bX`xG=XRa$xjAju56V!>&E z5`9Htnu+|8KW6WuQrt+RY2BmDnO^hs{BEKtK`f~V&15P=iE{`i$}9c1Y2?TO3JQEH zBwFvLEGk}<^!nf59dl(1{h+)dc00?>MDx@O2J&s;?>i&bJl?X3s}&> z%{M%r*VO|^(p;Q1{O-rwgX|sIoED|gkV>az*EhNen!DX7Oa-9wZWhDyynaPe9#8XS zzpKT)2lI%%TMhwPOl_dP!bJ(eX8$gJ%dwg)e*H+8sBbBEX|^7O1cZ}z+EeF{=_s79 z;-rup)kNd750LGUUkQqCOxT}{VQ9S(2#%@NK-3se3Y9QHKqt!q61BH$giIeaEcJF9 zhK{2DRK4Xsz>YW#X8JSmFwQIR1qD7cV}OU?gA zD(>YkDPfAkBWD)?3gN9DPd9_NB{-$Eh`|p;!dd_-2^x(Kt`&k-|^%)&*=Daz7@nI}dFD+<19=v`1|en&-*ZXaWR@o_&okF}_kq zp%fIGcX)?_8y6|Ga*rSbMkB8Ta9;0koR`6|G<4VD9mSF3nwD-N1FYXlXetcg05RQK zYUu9PzN8ZJLPzyiaDc$%F&c($&kFdx2;aHhPG0_ddRN%fzR*3=U01Vey>|aELwOwR z%xzV})9v)2rJiJz7eL`-(>W(_&+eC9R=nPTAGa6rmUIRzd^t$*LED|MW`EiK<3imidn&sxbx;2?f^cVhK8csrR<4FXq^V@F zUlv=-eM;)1{)#O*w8Jx$<$?c?L>GfDs79plIrWns!w`Bl1psWBuOV;^UHQl|4sN*^oLVt!<*R}+GccSxLen|x!z8`Hn!Gf->Y9R zEKXQarVlc@HyAlz0(ZqW8P`G-cKV(vIZKnh7&9kQW|pFCaoL-z!M50z1ecD#^ikp~ zMG6h2giz^G+Rb9fqwza^O3vt%`!)?9j8Y7OH^C0Pdf9C@lL3wO_BvQP9J^o5>u$lt zM#2H;sPx&Q{;#*jGM~R};t#wRHehj8&Bm75qYq{W#;F+Wl%(` z$wKN1(F)HW__a4*XWU7Giwg(YopQ{m23d&earo_Li#-(YqV>SPAPy$vfcOOVvg(7E zvsyB?K=5_IfZi~gnYaw99U@kq!JD5_>COzpzoPf!7OzITMObh?(k!&fgpW&909;ydKC4qaDmUiC3)(xF+>q)*zO7J@x{S6e%bFP zd!+@Mwl&g6WWeH|FWi8r18#oug-U_HDj>s)0JF_Kswzk;+!P%U6aWA5K_m3`Y(|Yi zHQOZuhuky~idEgCwbh3yX4v`qz0kq=&jitHMp|0hE5ASv@1yTs%!aLQ139UQ{Eu^n zR47B3wXZJ@595`{nNLd)_gjnr!G*ogrscT6(Ej+K7(#aXF==_$$8pV!Ij;c3$8gRG zE>VPh`QW&RB0ZdZ-$Mn+FkrBfp*e|P;W0)q@{4x=o% z(Cr3Y$`y@wf2%f*}S83Hkm}~R=34QSY z`F{TO`M%GRh5N!gv!6@NlW%$KgJ7R-jb{zvFtUgrJq5PHo&&<9-(U%BlC!VVp_2pGoW8Pe7LM9vW?n21b~BB`(P4qb;EVAIhsD1$%Tj*cz?xE40GbK zGgUw?@_J(;=UGr+1m0e5vk9KpXEp?kUpidZ5w>`w!qKL+-~7Idb1oHQ$Lm9`PtC`B&C67CpxRp> ztVNy@Lo+znKL)`a5?wxX2g|aNg;fg_*BAOj+U3;GR)jZ>S3mm zF8Jz4m2O>w_%yx!msnyh4}8i?Sm3_#7&61*vFdS9Q^Qt8U7c=Asb@fMFS;KFz&^X5 zN+<#@sZ6^3ZZ+(cmB)b76QS76RTE=|j++leo7siiHQUZ0@YWf&7FIp!A^hvs zmTFbJ5P5xON~M&>+A|wD`YVbdcW1tiLX%ioirjafb4>A5sft0FDw(Lh&0+)C(vnt4 z6gZjjN#r99;L#6O<0J&jH3od}(U=~oOap?-+5Fh<6rLSkhs%;-C;-d*q)et+n;8y` zOc0OPYk#3fDj%qiqz#auJOz&=hfPkW{;iSJ!_nL0A&PW%6VHg{t~lg@?)zWtUO4=X7geC51ul#O04UeQDSoaQ9=j z3b>8MpipsOydz-eCEq-nZ{QgJp1k9YRyY>rqv;2}M#2K-esnnSNWc&TKtIGappVQY z=(l#S^^CBTzl53!?qsJ~YhDRxR{=zZf4mRCYb=i<1CHVy?7tpdh8Q$Ev5WaN4wdmC zRCjQCjE^J6sS^tv-P5abtMaK{=Qx%k5l}+v2j81GH)neN)mE_ zW1zou#ka=RK16X0L!~N$@MPQuP>n^z&O#OoW}6)OaS%1alkgy4ORO_sB&iE9-&$R3 z1lfN+?)yH=w_(N*+buTdcweY?2=l&D2bING80e+AjIju%B&~NNSnHHWgS!}}+>roA zFR*ulTEst6qLQ?!sYla@zjaKN_SJLXzM&Pm-OG@7Rts`%X^$=+O4_ zwK8K??(XLd?pRWp>zjO^F~-D4%8(RGzg|Q-Ca125eOwS_6&mgOX8K#68lBx+#1PBJ z9*RVqT?Ly1+hi!<4hJzBpr%frnqF=m(sw?$k4~14Ivb`-Fk0)Bd_fFod7-BS#4_hp zr(U_y>WXZ|`AZ33C5c*kYpyFt54Kp2t?FMb6RI67w2*q(idZsfNL2T^+^@*Wlg11| zx?B$dWz&UE%`|EuhQoW;vrG-LIVkv5!xkjUDfEu>e6L4W71RF8eBGE&o+JXS%@?K0 zJ^=exz}3apCOAI8(iQusN+#Ay|AUe$f%G4_3!y-ZgN)_n3|rJHa|%88Y)1Nz7~##U z*(h8eGYQi6&TBNEPB{}FWuY`?T;qFUt$e4uaA8Z=&j_J@J{txCu5YqAz^Vzxa97>o z^zi>fZ^MkXS%lUgPBF+6OS@DpPol_xd#*xx%foh)F=-eT^(2E}gh2?1`>f-D%@m8H$yPT{iVE^*#rpd80Kyz^08k=ojc{laBq7~}* zVb3KboZVC9Tz6DHzvpfyI~FOp29b(*ECC3;t0beYN*-3NoQY zA@oUwX30jiNo6?;F|br`Gij}=DAaJWW`{eH)Do2&HZCi6CV-$>?Fx|~iM?!%(Fx%9 znd?x~ssDH}G+C~Hqo14a6Z1hYoKpAjKG0~n5ZdvnfvmPL$wIXM1s&isEQVCTt;Vmf zW&tx#b-wPCr&Ec;ly<2LmXyls{Pg;3e}W5kseF?8U784zNvEss$P2LB=0wO_R>QWz z*-+gj4~LcGUjS<&*ZEUyy3<4x%Ow&XthfnSu#{N772v$i-F0U z2fb=Y(x;p-x7S(rtms=bW+kJ7*IRr0qxhckU{>I6BWi$AHYNkXpEyFGk>&aw?;aNp z+dPOM*uLBq-HsAvdt&ZR5U~0q(3O32-fu$AO}AR>*M5mfe+P9Ylv3i~3HoxX#=Rx8 ztp@CA4SL5fCbjPEMe%*tsCzkO%vW3bPH__a$k=6b_)p2$0t}n>P3G++Q_&`jZdCI< z3`@3Hw}KPVV9!R%_FViftGY>XFo{ku2?lf{|G!Lr*}!-o=Y~h7dy_c|V5L3f`O}%q zGDeFPAa>Fzg4w4+yk2ytV_?Ndi*ys`mcZWLe<$r{38^gyc5oSAWu#QZuItlNf`7J6 zxggNwr(+;@$0P*9$V{Bo_8|Y9&O(->o`Cz zOaP%TiXK%5x^c==Ij(?1f0X1IrDmKjh81zgTZX&!=*(L+hsA2XWjODWdf^E@jK zd0O;d#ei(mQ2#<_H}Yt~k?Qr!Ay9zQ3EihZ`ErX1c;djakb zG8QPj20D$_oNjxH6I{i%=lyQqi@ih0?Dn2rmU2zv`LQ*8j8rQd%5K;e-aSKA3523+ za)#g|=SJO^Qd!IYqNK+n1C(^r>o=%EKo*BzmV_XT4wIS7ZofZn>AX>{wUJP|u{=mh zc6CK&bgsd=wgdUuhXWb!st-BpoS$)rehPItJ?6LbVUgqr&8CNZ_Rqk%s7$Au>>tz9 z+P0qUw=?f2LiK_HpH>LH{dM3xJ6!T@iCJ4#7T~umQP=Ht##Sc1heGQ5<8>V`g{>zH zhary?!zdvA=L+#@7}ji&p{WEemODYM>2CY0!xT27*PduJK+h1vT%&nOrTpab-9SmO zo-!^L4$u~s$0}YU=;_nw&>G!>pA;|B^wTHb^Ebmrf8Papb!mHI9F0mYb2XXAgeu`=4T|CEWDbTYIC0eI-? zQh|1@bvg6?r)#ZX=m$I16oqrae+ilTa%^p_;+m1yfG0fALIF|355Z8EscD=P#lSn+yw z0A>6FUIF}w)DT0U{C=1r0aA9_b=W!$8z#O)sjN{Jp;P1t7r1|Z(g?+(!1@Ctib2wU z+!TOB1&cvxfKP_2K%1t5)WZW%hNFYtsePIK?d5m3PrSgo0K*cr1-!EL-#?TGM`BdO z(gBbQfVLigZ2t@5zx8oh0E(&~`1MayY1~Plk~=G>%O5EOA)F59tj?&r5MPX3RUl{u z{L)5wO&$dbi&2_S3Y?^rRBL*md$kjnEqN}lV;f-q0P2+yycIN6!0bzRPvyoeULuv$ zAV43BsqH;v`1fJ=BcL6#UW_To$_o8Q<3bq4swoIK9Df*GDnX2?Oa{y83oheUpO7Zg zyFVhPhz68^+Z`4uWDAtioU;Y2nUrQK9m}v1 zge<|w8N_-<#-BZ;3UG|6fNJB(bShCi-4ftmWj%LtvM+P#{{pi4nwh4Ku0Ovn-tGfr zUm6vliraFtwC<|=4sQ*k)`)vZFd05_)ex*V?YAexzyWbR*iWZE(De^Y{OjyYRm8ST z%2FB_3gyOSb6JgfY^_bU@GoA6h1D%}JbS<(1wpl&*z4oVY<#$E2`01=Wcr2&9dCTt za-ciPK*|FrO2!aU$EBUZZy(RY=v(f%pn!_w0bZXanVh>o)9u3nZ0_ty!S_S9hJ&&3=G$! z(T^R@+w516kCF_1-gTJYwADL0CTUD;^2{B}zj5QT4V5CuV?ELO_4b##eq9G}telbGcwZ4afrn~B`aS^Y5P<5IlTz=)`HKB91XC5t>K|GLEomEM z$jV5T{kaua{cKYF!Hh+oM7LxY4NWs3V`$D`#*>Af4$Jvb8@8v40rC2{*D>3bNewHRJOOdcrV zkCtQi^g#R=t2}#va|8iv>BNSKA^rO>NxON0#3d;F%n%p?R{e2FLuQL3^`a(rl5OF@ zD>0d90#ucp*S=%eMzR98qUTIB$$#G&fK@TN!)BEZrS!M4vFVXa@ZY;#O45?uE|9f0 zsQ`7}V1^{+b|O9lG4~zn=7FgH7}%WOrAWVNP@7iiBV5n#0X2R6`!$`%7JxF=`?5?$oPMpqo>_r5eN$4A%J4w0lk-jjKKQy&!z^S0zZ# z<&h`>B>q_D5AnF7@qM58LnHrna^Kv8dqpTn*$nD4kB8@vSq*iFx9gb3Uh7o>Tt0v} zMsBBPtdD2Nd^&NXX)19m91ZsS_}>Gh64n%H5M#-jRsy&mU=|90-r0{C#3bu}Y)Y8w z0h-S6W*E8tbJ2AGb0&~j?$tEtht}2(6NA#6gR){i$O@B3@TSo91NI{$Y!S>r`?T3J`dNL(JN>6#U+pk z_28p!jHjDq9!s45+ZM;hME(4?Q+rts>c7eQ%f$VgAN;?#Hy|BD_JUXm@QyHj_CV3) zt}qIdjlq%T(U-=O*|14@*s%S^1^@b?+0l<@CmA%NHvJqf324FO0Mgj$+LyiMxd0xj z_dogg&tpC8n{BAnftj3Nek9DBfASwdHRPu!s#Cv_XM*q=oaAE;2MsRx@b3gqPN2op zaT{{swc_>97Ec}%TlG2?bIS35h-O}AicXtil%+Mv$(hbr|tCT3+eK&f}z2~0q zyZ8PxGr#qlwfD2$^}O$T-e>PfB?S;B8VMR49319b8A%m5xF-(4?@SbU;M3td^9k_9 z=qjb4*xuF6&X(2G!48LAfD8@} z!OBWa%k`h*a8H2CcxLaVfn65avBM5>zloMRzQuZCJA|AK&#RCnK9a&M^6G<0%9o^9 z!!H|W9#-))zQozdyz{OcXQwzQTJdd~)=5_}E=XdK1jlpH)|M#{p?)mXQl3zFj)P;q zv>hQ6i7;(TL}?Njj8cSM<5idt6VZdghf%Av6&k6i)V30sr|9&;@ukNzJLo)B;vNyT z_4~I^Xq7AHhv=vAxaSiaON>3K(r|g8Y~k*ZMR3|zyR+xZ zDs^P;f|DY<%`GT`>sTHdWjQHUqOuc^pZra6krb!*2}^;H_@@`^oAi`q%qjWIL$(wb zO>1ly@qMaaZN%6Sk$YuO+U<$Dns()SZpSx>(jPu@FX_HkCNO1qnzR8D&j6h^iXq*8 z-J&A2Br`dH8q5Dg$W)OY(7Tkh1+R>!HasCl$z}Jqafn5V+xrMjVpfSlkw)ZflhS2% z{?+bp|LmIf7bxgXr;s0pAkP+Yyk?+Lq{z*dYDK7qi$>4QN$j-I?x2nwa<0XkzB1S6#XY`_jE1iR+7;p8D=K_THBfo0fD?aEM_+lnkSj-DLxA;U= zm+LGjcpBF~XRRpL2_Uuix8fZW_eVRYNnYUR2_X2GFN(@p)s>EaXLdI3SF@oxI| zLxaYhwhe{2&^>QfAwCYS33Y>=8%u@Vc^rY3n5qtyOTgIu=lZZMfqMF8nWgyHqKd2M zZ*x)jL04+_uTZh#Vr|-cc5Hf{$D(ZD;koaX z%zkP^bo;^6Wx=6iRWPsd`1W(k8c|qFk{H=e!)f#84cqNeIK`_zG3n%4O8j&F&4enJ<~6dd=(g~K%ucSTD!+wr+`m>d|rFF1wIOU=Vf;_1*maumOo zWf>8L;n-fDHqRmZFMJOZfe5$k+-AC5pJDW}2Q`RhE9!ZPMU$Reaypjy)v;v@T&$@d zw6D3m=?X)QeWh8UQmIupGFQPZYk90T9l%4{{6qZ&H_VumzGw}V4T51%Vn{6FQ03L; zmyF~_I`3m*IcfFEqP^42c%~~>8c%2_AL*O-e6l8|P*N$yh&+DKua9zJcBFlD#@h76p zZji3!TBVcSvR+p%mFE&OrtQhK)Oaj>H<#U*NN&?BISwwvwDANLF}cC4`*->5YmHA7 zW-4D`qh!bucBHb!=lxnOGK@?rIo=r7t@0lCI!Vto?|Df_*9_cd4r`I~$L7=Bid-E+ zEFCwCzzB3zMB8v}W)f=N9XW&wjS3Fm`S;++n}{bC1QXK$=AX&jhr zs0o3X!q0d2U|!R=J6TLIRN{LLkKtiIEm35R^37r0LCMw-pQr{*Z=CQ)W|V6zT`V31 ztovFb8b|*|IKZAot9(6yFi-pX2=?`$efqkyt#S%+fw!$H)Jo&U0eIK&;h+HI)2DA( zsda?QHtr{}Yv^OTIoIO6IgwMQk)x}^Ydcd7kAM_Qlq4+O)WU4;lH=Wsc6EC3@Rp4K z_PVg2!_I29_$n7+uq1SN#v+|n{~T6P9dx%qP>n0=6`?vyM5uW>9|m@6bva1)XtYPa zaPIG0R;!!7m8uAZI!xR9NMEXS{U$EnQ1yGs!2I;^aihtZQ?z7 zzlrG&13z=8;~~@q0;Wn0Di+n(#a0Lfl-$3ym-(I0O6BtwL>aY7Tq7)WK$YrNXAeo{ zODkp8F-brS)nV$szDrp;F$~((&q)Mq2T-8eZjSn)Fg^{Kw)U$?n+o+BdkFqeE{V`l zXrKh>8zz~)UWs-4tYLe%L!~f~C0bp}O4UJD1tuj-2fnq2sw0Zl(s7x$zdte#Dm);> z5Q+Tktd2(!`ORlJYde_R%W$U^!ePY)zbyZhH0Hhb!0*?C!<=&G>EI6on`fmaEk6wV9Cl%l6| z+EsjdkRlCw#1Uf~W5Ut-I8GLsa%ro($eFmDR+H4I)n3#2tNZZvvNHpvKhXhg4=z;F zfD68S$jJ+9_n61AQCGQF^~i&9$WHS>Qke9;`{`{Oi4sqCvn@C3<29|k@$__CU9Dy+ z-<&_UU!u>;!{wwSREd{~nX)io7|yzY)F|AK&!S`7d_EJuKaEg@xe`cz z)Q8Z-me)(VebM>SU*A-u$E{Y>c;5#_sX4?v?v$YC35Koj2eW^7KnPV5>71V@N2YoK z9~CwPuf|nHGY?Z!zAM{*t!|nE@RJ1sbv)COT^Uk-^;Wip;39w_EB`;Q3-RI2ot=vegeyU+zr8yhuMF!6b#|x z6Xk2E_9R>6x=wYnxcr>)!9@Cmpcz<(^|KMnpq9K@g!Td!oe!O>ESPyaSB+K$)=eaB z&&X7HK&t+byIou=LIx$JI4TU1%Gl7#MNLKZ4h^JHi!tRqf8&X;aZ2Mk7Q^v$HqrSF z>$f9Vt5J2U-9|}}+beX-Cvr;p>rKwW##^+b;WK26s#v<{;ig}Oo2<*FTQcfLO7n9{ ztq?-t8l0S@oTy59wLHq7mRkt+MewAi04wl-a*zOo!XV1N-KaItiTPOOL(g6R*)0?= zkCfm4hMM`EfqbSm+qX0{b^BS_bFcy#zgaO*v3y__d)~-h!ZaIhq#l+RM7E2q3u^Eo z=SRsFx*r_(ETrKC{b#&_mx-NAna99u}D0-i>aEc-{ zCylf+h-p=v^B0|rdU>~$=rHS)XvPX#v_&fjuM!%OPD0(r)al;@DZc&B{OAt)U?qN{ zJn+!Ny4H0)B^Iw)?rpmI-m71`pNMp$G&9k~vMbcE z%Zgs`+M29ev46ZGd)>9scaXKN&S^m}`5D)6s?AzDn=$5e+rb-V{u&mw%YCezaR>EA zRY~qjJ)=S9U=LJzk2>mL(T{7#>M;{-i|&2Y1P+D=_G^UG6Q|lIB}n^cKSdG2(%+VJ zn*=D5;tTjdPw-igo5NPX&t!foG6p zpUi}33%HETHClgOl>Zgc#KibOe!Z`2^QZ8?Fu$AEar@06$;xDarSoo^q0q|3n_uU4J);iw^>%|;IR`$UZ+BBr!-1L>U87B}nA@(^>2@%s z=+`r;hx&KgcSHoVEs~~RbL3neg~Vbn@eDI{npasEh6_TBIYo)_z=(i4;st-KGESzu z3!@*`5&&(5=A?4gJVa2%LU`@cJ_m`uGR~+JmzKt(zhs#V8y7;xBKFc9)i~m@CU~WR z;ZG%j&@sx#4~Q>bPJRd=;Oqd=%N`@@$ZbqCK>0ZG;~7Qa@F~moQ93YUHbB5O)rTPk zC{WxuI*i^+1Q1@B@oiucYA^f!r>PKQBL9D#U$4R)X&e1>s2VNOnl~0^#EF`?vNlvb zGJS~+{;+p@nmFjQqSs;_2>i&@qx+&kJmraHqWs}Gcp@up`wU6SGmB%;Qm`c zud@eSDo@p1JC@Goztnah;(6KlS@pH*HA7;x$~mL2%(Bq8PlRRg>6FF>JE=qaY;Nj( z9mY~xCkqyRlBD2VVvhT`c{@Wt^CLj0DDpqt?ryAo_|4C5d--v?WE7TFa4l}8zjem6 zcdnFP;SGz?1kUQ^6X=stc@FE}Ck*blW0N3-+r!zJU}7lUc`;gt)EsH{THy~jcQ710E*s`q!ixzEa?_%x;QiQtL`6;r+Of2vqec+RgL zZe*EaEX2?rTOLmhf~@DO>Ca1hGxlBAf`M}^q|EYj?K=*{0y0r6>2RNYywIu}H&Crm zW93RK3s;)v5znt;zZ(Y({?oPy^Q}GC?c9l#4MTcQuigPvOJ=hXV(@_0VDG~jw98b> z6`=c0RhDuE+3Ry(Tia}+92IF~lT~EQYZg!(nJJyTOAx7He)F6S$M(ULP@QR6^>?*v z3A@AU@6Lp?Ila)kI`w9Wd7C{%YmmLw)xCXu4@ZG(5Lf;E+hJ^-)v40A4FsOGPN>|R zD`mSXbY!0U9pC2o>^@pBCxY!=i_?R*eTsW&e^c6WHgP)plAuaKw?gj{j$o;weXm%khLZRqW| zu;H|L5-+@p4lg~oSGCw^vxW-DFp4Zr-`sX=hu>Gnn}ceWGxHtdGd-lNj19{Br_uC`Z#!= zv8dvBad-P(8!c>OQ}|WV!^38O

#k?Xv%8;#L%>;g(Gkw;HE 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 literal 0 HcmV?d00001 diff --git a/negotiation/message/diagram/contract-negotiation.puml b/negotiation/message/diagram/contract-negotiation.puml new file mode 100644 index 00000000..d5fc003f --- /dev/null +++ b/negotiation/message/diagram/contract-negotiation.puml @@ -0,0 +1,29 @@ +@startuml "contract-negotiation" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:ContractNegotiation" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:ContractNegotiation" + ids:processId : String + ids:state : ids:ContractNegotiationState +} + +enum ids:ContractNegotiationState { + "ids:CONSUMER_REQUESTED" + "ids:PROVIDER_OFFERED" + "ids:CONSUMER_AGREED" + "ids:PROVIDER_AGREED" + "ids:CONSUMER_VERIFIED" + "ids:PROVIDER_FINALIZED" + "ids:TERMINATED" + "..." +} + +"ids:ContractNegotiation" "1" *-- "1" "ids:ContractNegotiationState" : "ids:contractNegotiationState" + +@enduml \ No newline at end of file diff --git a/negotiation/message/diagram/contract-request-message.png b/negotiation/message/diagram/contract-request-message.png new file mode 100644 index 0000000000000000000000000000000000000000..598f287b2305469574b1e73cdd67b91f39133142 GIT binary patch literal 16399 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 literal 0 HcmV?d00001 diff --git a/negotiation/message/diagram/contract-request-message.puml b/negotiation/message/diagram/contract-request-message.puml new file mode 100644 index 00000000..bf6545a1 --- /dev/null +++ b/negotiation/message/diagram/contract-request-message.puml @@ -0,0 +1,26 @@ +@startuml "contract-request-message" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:ContractRequestMessage" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : ids:ContractRequestMessage + ids:dataSet : String + ids:processId : String + ids:offer : odrl:Offer + ids:callbackAddress : xsd:anyURI +} + +class odrl:Offer { + @type : odrl:Offer, + @id: String + odrl:target : xsd:anyURI +} + +"ids:ContractRequestMessage" "1" *-- "1" "odrl:Offer" : "ids:offer" + +@enduml \ No newline at end of file diff --git a/negotiation/message/schema/contract-agreement-message-schema.json b/negotiation/message/schema/contract-agreement-message-schema.json new file mode 100644 index 00000000..a75248a4 --- /dev/null +++ b/negotiation/message/schema/contract-agreement-message-schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "ContractAgreementMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ContractAgreementMessage" + } + ], + "$id": "https://w3id.org/idsa/schemas/v5/ContractAgreementMessageSchema", + "definitions": { + "ContractAgreementMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:ContractAgreementMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "odrl:agreement": { + "$ref": "https://w3id.org/idsa/schemas/v5/AgreementSchema#definitions/Agreement", + "required": true + } + } + } + } +} \ No newline at end of file diff --git a/negotiation/message/schema/contract-agreement-verification-message-schema.json b/negotiation/message/schema/contract-agreement-verification-message-schema.json new file mode 100644 index 00000000..9cc8b497 --- /dev/null +++ b/negotiation/message/schema/contract-agreement-verification-message-schema.json @@ -0,0 +1,67 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "ContractAgreementVerificationMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ContractAgreementVerificationMessage" + } + ], + "$id": "https://w3id.org/idsa/schemas/v5/ContractAgreementVerificationMessageSchema", + "definitions": { + "ContractAgreementVerificationMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json" + }, + "@type": { + "type": "string", + "const": "ids:ContractAgreementVerificationMessage" + }, + "ids:processId": { + "type": "string" + }, + "cred:subject": { + "type": "object", + "properties": { + "ids:hash": { + "type": "string" + }, + "required": [ "ids:hash" ] + } + }, + "sec:proof": { + "type": "array", + "items": { + "@type": { + "enum": ["sec:EcdsaSecp256k1Signature2019", "sec:EcdsaSecp256k1RecoverySignature2020", "sec:RsaSignature2018", "sec:SchnorrSecp256k1Signature2019", "sec:MerkleProof2019", "sec:Ed25519Signature2020", "sec:JsonWebSignature2020", "sec:BbsBlsSignature2020", "sec:BbsBlsSignatureProof2020" ] + }, + "dct:created" : { + "type": "object", + "properties": { + "@type" : { + "type": "string", + "const" : "xsd:dateTime" + }, + "@value" : { + "type": "string", + "const": "todo" + } + }, + "required": [ "@type", "@value"] + }, + "sec:jws": { + "type": "string" + }, + "required": [ "@type", "dct:created", "sec:jws"] + }, + "minItems": 0, + "maxItems": 2 + } + }, + "required": [ "@context", "@type", "ids:processId", "cred:credentialSubject", "sec:proof" ] + } + } +} \ No newline at end of file diff --git a/negotiation/message/schema/contract-negotiation-error-schema.json b/negotiation/message/schema/contract-negotiation-error-schema.json new file mode 100644 index 00000000..6a18ecda --- /dev/null +++ b/negotiation/message/schema/contract-negotiation-error-schema.json @@ -0,0 +1,46 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "ContractNegotiationErrorSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ContractNegotiationError" + } + ], + "$id": "https://w3id.org/idsa/core/v5/ContractNegotiationErrorSchema", + "definitions": { + "ContractNegotiationError": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:ContractNegotiationError", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:reason": { + "type": "array", + "minItems": 1, + "items": { + + }, + "required": false + }, + "dct:description": { + "type": "array", + "items": { + "type": "string" + } + } + } + } + } +} \ No newline at end of file diff --git a/negotiation/message/schema/contract-negotiation-event-message-schema.json b/negotiation/message/schema/contract-negotiation-event-message-schema.json new file mode 100644 index 00000000..7ed25ce6 --- /dev/null +++ b/negotiation/message/schema/contract-negotiation-event-message-schema.json @@ -0,0 +1,44 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "ContractNegotiationEventMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ContractNegotiationEventMessage" + } + ], + "$id": "https://w3id.org/idsa/core/v5/ContractNegotiationEventMessageSchema", + "definitions": { + "ContractNegotiationEventMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:ContractNegotiationEventMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:eventType": { + "type": "string", + "enum": [ + "ids:ACCEPTED", + "ids:FINALIZED" + ], + "required": true + }, + "ids:checksum": { + "type": "string", + "required": true + } + } + } + } +} \ No newline at end of file diff --git a/negotiation/message/schema/contract-negotiation-schema.json b/negotiation/message/schema/contract-negotiation-schema.json new file mode 100644 index 00000000..b9f2a65a --- /dev/null +++ b/negotiation/message/schema/contract-negotiation-schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "ContractNegotiationSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ContractNegotiation" + } + ], + "$id": "https://w3id.org/idsa/core/v5/ContractNegotiationSchema", + "definitions": { + "ContractNegotiation": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:ContractNegotiation", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:negotiationId": { + "type": "string", + "required": true + } + } + } + } +} \ No newline at end of file diff --git a/negotiation/message/schema/contract-negotiation-termination-message-schema.json b/negotiation/message/schema/contract-negotiation-termination-message-schema.json new file mode 100644 index 00000000..a6e6bcd4 --- /dev/null +++ b/negotiation/message/schema/contract-negotiation-termination-message-schema.json @@ -0,0 +1,44 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "ContractNegotiationTerminationMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ContractNegotiationTerminationMessage" + } + ], + "$id": "https://w3id.org/idsa/core/v5/ContractNegotiationTerminationMessageSchema", + "definitions": { + "ContractNegotiationTerminationMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:ContractNegotiationTerminationMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:code": { + "type": "string", + "required": true + }, + "ids:reason": { + "type": "array", + "required": false, + "minItems": 1, + "items": { + + } + } + } + } + } +} \ No newline at end of file diff --git a/negotiation/message/schema/contract-request-message-schema.json b/negotiation/message/schema/contract-request-message-schema.json new file mode 100644 index 00000000..3159827f --- /dev/null +++ b/negotiation/message/schema/contract-request-message-schema.json @@ -0,0 +1,40 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "ContractRequestMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/ContractRequestMessage" + } + ], + "$id": "https://w3id.org/idsa/schemas/v5/ContractRequestMessageSchema", + "definitions": { + "ContractRequestMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:ContractRequestMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "odrl:offer": { + "$ref": "https://w3id.org/idsa/schemas/v5/OfferSchema#definitions/Offer", + "required": true + }, + "ids:callbackAddress": { + "type" : "string", + "required": true + } + } + } + } +} \ No newline at end of file diff --git a/negotiation/message/shape/contract-agreement-message-shape.ttl b/negotiation/message/shape/contract-agreement-message-shape.ttl new file mode 100644 index 00000000..490e637f --- /dev/null +++ b/negotiation/message/shape/contract-agreement-message-shape.ttl @@ -0,0 +1,42 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractAgreementMessageShape + a sh:NodeShape ; + sh:targetClass ids:ContractAgreementMessage ; + rdfs:subClassOf shapes:ContractNegotiationMessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path odrl:agreement ; + sh:class odrl:Agreement ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractAgreementMessageShape): An odrl:agreement property must point to exactly one odrl:Agreement."@en ; + ] ; +. \ No newline at end of file diff --git a/negotiation/message/shape/contract-agreement-verification-message-shape.ttl b/negotiation/message/shape/contract-agreement-verification-message-shape.ttl new file mode 100644 index 00000000..8ff74d6f --- /dev/null +++ b/negotiation/message/shape/contract-agreement-verification-message-shape.ttl @@ -0,0 +1,52 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractAgreementVerificationMessageShape + a sh:NodeShape ; + sh:targetClass ids:ContractAgreementVerificationMessage ; + rdfs:subClassOf shapes:ContractNegotiationMessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path cred:credentialSubject ; + sh:class ids:ContractAgreementMessage ; # TODO: Having the ContractAgreementMessage class(!) here but only with the property ids:hash is a bad idea, not safe for the schema engine. + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractAgreementVerificationMessageShape): An cred:credentialSubject property must point to exactly one ids:ContractAgreementMessage."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path sec:proof ; + sh:class sec:Proof ; + sh:maxCount 2 ; + sh:minCount 0 ; + sh:severity sh:Violation ; + sh:message " (ContractAgreementVerificationMessageShape): An sec:proof property must point to zero, one, or two sec:Proof classes."@en ; + ] ; +. \ No newline at end of file diff --git a/negotiation/message/shape/contract-negotiation-error-shape.ttl b/negotiation/message/shape/contract-negotiation-error-shape.ttl new file mode 100644 index 00000000..3cf0e6ce --- /dev/null +++ b/negotiation/message/shape/contract-negotiation-error-shape.ttl @@ -0,0 +1,40 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractNegotiationErrorShape + a sh:NodeShape ; + rdfs:subClassOf ids:ContractNegotiationMessageShape ; # TODO: Is a ContractNegotiationError really a Message? + sh:targetClass ids:ContractNegotiationError ; + + sh:property [ + a sh:PropertyShape ; + sh:path dct:description ; + sh:datatype rdf:langString ; + sh:severity sh:Violation ; + sh:message " (ContractNegotiationErrorShape): A dct:description property must point from an ids:ContractNegotiationError to zero or more rdf:langString values."@en ; + ] +. \ No newline at end of file diff --git a/negotiation/message/shape/contract-negotiation-event-message-shape.ttl b/negotiation/message/shape/contract-negotiation-event-message-shape.ttl new file mode 100644 index 00000000..bc5fad1e --- /dev/null +++ b/negotiation/message/shape/contract-negotiation-event-message-shape.ttl @@ -0,0 +1,53 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractNegotiationEventMessageShape + a sh:NodeShape ; + sh:targetClass ids:ContractNegotiationEventMessage ; + rdfs:subClassOf ids:ContractNegotiationMessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:eventType ; + sh:class ids:NegotiationEvent ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractNegotiationEventMessageShape): An ids:eventType property must point from an ids:ContractNegotiationEventMessage to exactly one ids:NegotiationEvent."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:checksum ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractNegotiationEventMessageShape): An ids:checksum property must point from an ids:ContractNegotiationEventMessage to exactly one xsd:string."@en ; + ] ; + +. \ No newline at end of file diff --git a/negotiation/message/shape/contract-negotiation-message-shape.ttl b/negotiation/message/shape/contract-negotiation-message-shape.ttl new file mode 100644 index 00000000..0b1107bd --- /dev/null +++ b/negotiation/message/shape/contract-negotiation-message-shape.ttl @@ -0,0 +1,41 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractNegotiationMessageShape + a sh:NodeShape ; + sh:targetClass ids:ContractNegotiationMessage ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:processId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractNegotiationMessageShape): An ids:processId property must point to exactly one xsd:string."@en ; + ] ; +. \ No newline at end of file diff --git a/negotiation/message/shape/contract-negotiation-shape.ttl b/negotiation/message/shape/contract-negotiation-shape.ttl new file mode 100644 index 00000000..79b25af1 --- /dev/null +++ b/negotiation/message/shape/contract-negotiation-shape.ttl @@ -0,0 +1,52 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractNegotiationShape + a sh:NodeShape ; + sh:targetClass ids:ContractNegotiation ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:processId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractNegotiationShape): An ids:processId property must point from an ids:ContractNegotiation to exactly one xsd:string field."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:negotiationId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractNegotiationShape): An ids:checksum property must point from an ids:negotiationId to exactly one xsd:string field."@en ; + ] ; + +. \ No newline at end of file diff --git a/negotiation/message/shape/contract-negotiation-termination-message-shape.ttl b/negotiation/message/shape/contract-negotiation-termination-message-shape.ttl new file mode 100644 index 00000000..42ff6494 --- /dev/null +++ b/negotiation/message/shape/contract-negotiation-termination-message-shape.ttl @@ -0,0 +1,33 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractNegotiationTerminationMessageShape + a sh:NodeShape ; + sh:targetClass ids:ContractNegotiationTerminationMessage ; + rdfs:subClassOf ids:ContractNegotiationMessageShape ; + +. \ No newline at end of file diff --git a/negotiation/message/shape/contract-request-message-shape.ttl b/negotiation/message/shape/contract-request-message-shape.ttl new file mode 100644 index 00000000..176f3b62 --- /dev/null +++ b/negotiation/message/shape/contract-request-message-shape.ttl @@ -0,0 +1,52 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:ContractRequestMessageShape + a sh:NodeShape ; + sh:targetClass ids:ContractRequestMessage ; + rdfs:subClassOf ids:ContractNegotiationMessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:offer ; + sh:class odrl:Offer ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractRequestMessageShape): An ids:offer property must point to exactly one odrl:Offer class."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:callbackAddress ; + sh:datatype xsd:anyURI ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (ContractRequestMessageShape): An ids:callbackAddress property must point to exactly one xsd:anyURI value."@en ; + ] ; +. \ No newline at end of file diff --git a/schemas/contract-agreement-message-shape.ttl b/schemas/contract-agreement-message-shape.ttl deleted file mode 100644 index 30404ce4..00000000 --- a/schemas/contract-agreement-message-shape.ttl +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/schemas/contract-agreement-verification-message-shape.ttl b/schemas/contract-agreement-verification-message-shape.ttl deleted file mode 100644 index 30404ce4..00000000 --- a/schemas/contract-agreement-verification-message-shape.ttl +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/schemas/contract-negotiation-event-message-shape.ttl b/schemas/contract-negotiation-event-message-shape.ttl deleted file mode 100644 index 30404ce4..00000000 --- a/schemas/contract-negotiation-event-message-shape.ttl +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/schemas/contract-negotiation-termination-message-shape.ttl b/schemas/contract-negotiation-termination-message-shape.ttl deleted file mode 100644 index 30404ce4..00000000 --- a/schemas/contract-negotiation-termination-message-shape.ttl +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/schemas/contract-request-message-shape.ttl b/schemas/contract-request-message-shape.ttl deleted file mode 100644 index 30404ce4..00000000 --- a/schemas/contract-request-message-shape.ttl +++ /dev/null @@ -1 +0,0 @@ -TODO \ No newline at end of file diff --git a/transfer/message/diagram/transfer-completion-message.png b/transfer/message/diagram/transfer-completion-message.png new file mode 100644 index 0000000000000000000000000000000000000000..811ed63423703200bded6f2070312d6cdd4560e0 GIT binary patch literal 10057 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 EAG#HrjsO4v literal 0 HcmV?d00001 diff --git a/transfer/message/diagram/transfer-completion-message.puml b/transfer/message/diagram/transfer-completion-message.puml new file mode 100644 index 00000000..28934c76 --- /dev/null +++ b/transfer/message/diagram/transfer-completion-message.puml @@ -0,0 +1,16 @@ +@startuml "transfer-completion-message" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:TransferCompletionMessage" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:TransferCompletionMessage" + ids:processId : String + ids:correlationId : String +} + +@enduml \ No newline at end of file diff --git a/transfer/message/diagram/transfer-error.png b/transfer/message/diagram/transfer-error.png new file mode 100644 index 0000000000000000000000000000000000000000..eb839124a3ba9960658ec486a56ed3d528827ca4 GIT binary patch literal 8343 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 literal 0 HcmV?d00001 diff --git a/transfer/message/diagram/transfer-error.puml b/transfer/message/diagram/transfer-error.puml new file mode 100644 index 00000000..6e9c5d0f --- /dev/null +++ b/transfer/message/diagram/transfer-error.puml @@ -0,0 +1,18 @@ +@startuml "transfer-error" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:TransferError" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:TransferError" + ids:processId : String + ids:correlationId : String + ids:code : String + ids:reason : Array +} + +@enduml \ No newline at end of file diff --git a/transfer/message/diagram/transfer-process.png b/transfer/message/diagram/transfer-process.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b3b188661c68c0864ff3335efa12c179007681 GIT binary patch literal 14787 zcmbumby!v3w>OF)oze{=NVkM;5KtNcr8}i#(;dZs{&56*jTyz63jV}-nxlfXnHMT3Kb!<3Q~Re*zgAbt0T0uMYnlJNl^ zz%e?AsW}*eZCovlj2+-4jI539^c{@eQyaKan>skyykKXyvDCMAaI~^yGXz^b;&@ID z2ZxYorljWZ*K@cBz%(u?(0I+5F%J9>%b*VL;6)-wV;`qkbOEcMV%qv$tc4@xm^ihv z=Ft^dYumF1LjqYr)OcGl0I_wf)#hCGY-z(!2#;WJ~_Zu)_L8Z;N`-)4j% z@{sQt!G|76VR+EzSUp@(vtZ%c`IvN^4mv+h_8W)#8PQ;8ynOXlW|nvO^acp8IuQc# zd>G$FM-Yle+Gngqe%h=@uUtUbul(}hTnjlCD!ks zAPL-yr75_A>GZs)3NfE!!H?)r84MYG`*WN#J3ZSt)OXjpBwpn+S{zKONnBQkKZtr( z5{iDxedxT~<363<7@!7eKHIsN?zuOzph-_QNNy&VW&LC2 z_@~)P;dIJG=v8oko`Q3@WFl*Z({+MTh37fKQ`A_a2mBZDG`R1R%89>x;tgj&SVKX= zrm*rQGWA6zRV1XTAvmtgrHxsS9*y;a_kLslKvD6Bxzpxg{O?WDeimyY_a|7lB#&N(sw+nYLp@&BM{heQs}FHrzx2~*a3|up zWMv~1wvuNdBRoAsD}3tgZysznKru{~nN^{Xww)T@^!3b0i{P6QIH$NsPm)Sm4W0M^ z=~LzGApsU;u%&uyUbk1Fz%077+uC!vxWjeTCamp7^MSZ8V14PrdJ77=WdxsTHA@XV z9jSQp`4Ps}Fc9P!$y#B&H?eK{P8A%JFx9PaE5|KI71B}J2%=MOuJ3bl4Uy->-LV3> z_Io3yu&NrWNyjyk24_oki|e;;-y`tjic2)(BUMw_^Yczy1^3m^M-oq9SKfPd}x*1xXJ z-sz!frO?Io~>X(oDci3X5RAP=MArC#qJLRI5?hi zDNzw67agcJvWrp|p^giVTX@tr#8^TUNeMSaVH|=;dKKZHl5cz>-{z=_;D|EPFtMVd zNWW{P&�B6cEiuR1=1mE{_&<2?_&~n`{m)HL2?joVVN#@VO5s+3gK`?=1}NlJsE0 z`>f>J^dbTO*r{FdP`uEi`FvJt|8>dHcX@G4HsEZ6p%wM=8KdVJGKnb7Xd%CYPLWp8(Y)#7{)PWNy2F(XdKVEPZlRcv~=U*nnbG4Tl&@1K;vnnS+3&71whKe^`z%0 zSeYa`@)#DOL8pqvkS5nuW4(6L`?w>y+ESSn;$~`Us^)V1l~q%`69WO{GRY+Ronq_9 zr=mX4Q;`x9{x@2UIZ~B`$7Fmvf>p~$ag~JD>d|#z)~f&*`s>RHE2Wlq<6luNYV!y} zIza>F+r_NI2#QPe-e=bvKk6>GCn%qv5=1`heq`S>k*96{RtclCFdQeu`6DejHe-@) zG0iPc@$%HE=q(-VBLfXb%R|%Yl5Cr-)5!I3*v5~unp8@iIEXkwWjqcl8Wk}~F|Qcy z(xYg|vHuoS!*LsOnX`RaBN>ccs%(HhJQH+BvV0c?K1=_D>4PpW6pc7Zo>fz}^`R#1{+u_-Z!@Hr?*4^Mtu< zOTwl&%zJ|$*!n43sbZAUO8x{(MzLc-xjC4mt)|c@c4a2S3CJE=v8zSf{JNqlK>xyD z_PU2%F70KlVJ@3F@xfHoda-_}iq+TBM7ofZz6bJc9;|A0E0L-}td}qJcO}3z&?y~e zaNc~Kt75f!l*g~!luKyRmV3|w1*rz4)53mv)5)oJFpl~3x_X`5c5B@Y8h*dcwV|Wkf2M3su~`gch(q6Fp>(A|MHa8Y4>@5dqnzq{UM(G#!zyp zLR{H#`p$~1nY(IGI0-@!Ef}*fAc%e8B7$}eZW6~6^B=u?@;dO3R4~!EPLkc+-6#8~ywY1t&jmM_@>ug^L*jcHoq~8< zmfXp8R0?(Muhyqm=oVfDb+^DXeb>h%uo;|gItu%@6CVBYfqo&1k8kDg35I?ZSpu0*aEXP)e07JQJZxBJB6 z9%sGSbhzG^Yt%&`*%uX|ut2ZBhyG(W3D!)NH-z*Hr#BQN6;C@iGf)NcYg zc65h5cm+6cQhJJnWR@pHl_)VbV2=rxlhb@OS4JQ4#{BzE!_c;Jo?9t?(s^Hf=w8Xe zxpt+>;yPHq5{A58n;$(>w!u8fpl~crSZ5DA7Aop4?oEETqj40dTzH@i<78B`60yRu zSH^D9)k^6YN{Q3A9R{DJsO_c9aew8x5Cm4){C4m9Mzyf&mbh@dC=Fjd_gzypS<%h1 z`_y*mns}Iy-7i>#poIBk{s@$#a*Nf4YS#=so^~I*scK!B1AU<(lc;X34WCG;DW-i; zJG2cicQ_=R3cVdc7AxF4$96p4JnUj@8%zSq+z;0WI+|x;mhZ7SK5`PaR6iXCCw{Z> zV^w(OveTKg(CpOV6ls7ZylK*6&T6HoA@jYVn1ER|AQ#Tm<^)2=wgIiMP~*TR7I=t+ z5xT{TEeP3a@n*#=LsFJzGc8+gWpK%3Q>yEI^2zBMmb{llF|pL#VYu(0UF%st4@KnXd0HtP!M%d1hteaP~h zAYS9aG%;AF0o2eb;aR%B;H}`#GkO*khlGYtdL0|3lsrHBHm5?6#~;)neCsYjVQO9G4XXQ*)5 z@u4Tqpd1CL_AP_zjZQNnJOjDhmkE}d>paPhMr!NtsA1$>S(2kGxO6hIiCmhNAF=0+ zTIOOtSn2g^=v-MVlz;nfGr!W^!6>9$q=eY;0hPmT;h8m2U(osxp1eEn0%@{hQVA|} z;PS8(d$LG50s06brbwnX7oCs^WBkPnC;UNFj)>%E+oL^=<$6$+PczMtSns!_58jy7 zhWOL_?tiXU9KJ#0hLd~PSeLgoJqT&Y(Bfm#Cn ztjtSF%gc9BfzBceop^Gv82QtM(?ybeM%x*-%gMBdmO$tPYiSh1MlcjN+5Bu|^PU`E zL+H#V#<*D6>@6aTz-THzEqjW~X65ScO!iNv(PoJLK}Sg{GFG}@vgSfB>i!P$i=a@W zNraEC^0$@S;rWM|@<@@zwBh?s}oJ zRK53*{0Vd8LV?{d*`C1M`LY7ZZp_H>4mzSs^1Q&2O^=**#?`u_;Md`l5$5({?6fBR z@-qDa)xq{2KPw@ov3<7SWS4f-TZ3umB8c5_59GH{j;^?!m~UJMl3y+&!W(Z>N8*G< zTD^MMEj6x#3<^eDa(0o6WqQ$M_dRJOu+flvycx3EdA&7&@Ybb9f~s!a2BZbL#0>L= z*IGTxMV~9CEcbj&(K{UX{jvVM=qvVpBzz{VhjQT>14x+-{B}^iY*?*?qB==-D8Dt=AtYi%`D1ZFNo zov9ZYj5iq%YSouw`7IN!4d_K0ee!4Qnl8fi%+L_OAuLq6iplYB8SOEasvNb4^g!qC z)?%=V9qf|kbL_`$AM~R6Q5g4O-yPZxCxaY4hff2>tdE1C=!}@DE%?wG-YA>T8dc`# zG8Ag!1=W_{`T@IIKE^tN!%J<%&{S@B{cudnAi~rkjX~+Gf8Oek=`D0|CgVaFR{-MP z;%iBS9T3-0ZB(7H;WMZO50It#C#jMbsC9iSb;GS9OO$3E(cFKTN3^6>SI_F|jR_9N z)7nvzA!xGsN5%T&mIMz>-d?RE#7Ak?(1Ezwv#z3~8YiFBu+uuxW>L&P#hsEY)AQpg z9^i=<(;x{`(zzb>RwEJ5lYZBzyivfD-Wn69fmCBYPN}kHslEijoE6pXL;Co7=~$L7 zdH9sR=p5-vF7Wck$rrhSy;sl%%(E%oknI|-(q~HB*B^iDbb@Q}?Av#`?yz*MP-QmN zx|xGZv|uz!*yKkY{sW~(7v2SmEw7ld1vVR`LA1#*G%M(r1A7Rq_nMZjnBoD|VaRfsVAJsQA)LvA)4 zc|<(l8l3qiUQSh08SqO^SRAAIY|{B&NQ#Ka&g<&YwXbbo7zZD3`i^6@*=(xoUbPT= zM9!RipeNrfhI*0itC*Fs%L%bu^UUGrh`lk>BX#^=2 z6(I@-$;{Rx1+l*z_P3GT&M1EKZn@3W4wA6n8dhv>_bjt9pU6fmnio0r@LBJyb(`2l z51~LkLSaTUO_@}#4e`j+?m1QQ>h)dLE-!H%2+G!&GajnqA}+^xkl`QM_}Zt*4f}g7 z767>r9+#A*n!^kYC*zk1uZWBKGBLa<+9g=ZGy)~8`B805{7h7v^YD6#7QK|h%Fo!~ zkR`ea*c7VXB)NZWzChBlP3ixaNU2G+T>O1kg`nXHoQ*}SY0&gWdgVb57_!l(v<1V42N@_W$6gc_aI79xG zJqs(1iF6QNoQE)u_$B<^H7?tF!HPY0_-W1VA;h-6?l#^@l$lBXWY=V3)|`iMd+poc(UE9?4;&&o%;SzHA zkk>_J)$zSHew)1BnJ*LZ_)+pR^CbcmNn84a;2PV>A7>`kcq|AZ2z~XLPD3Nadou2n z*rd$)+)WWS^`@B1tYejA=D(z&_&|c@c-?#J@q0lg*1efR-f- z_B}44sG0iDc~86BjbxK+H^V<*Oj*wi!&gbkm8}!=_V(z35>RqgmJF=%q70C5k)!Qj z&sWc&I|1BwG3{qOYzWAS{EulRAy59|wa2S&U{if8DE(uL^Z3)}ZPA7^)Kq?r^`c5J zrYy0GxE9`f1>7B+K-dZ`0&s-4HdfG^H|#etJdFS5_3ugf{gX(azwgAm^_ogb+Vi<} znDwFkYhulM(JK5xQ`R{QTJywui_y?jPvuc)v+VpT4EKWa?xPXUu?;$ zu!*Kt!D}{!=Id&KMcWs``#ew(mcMy7$)q~7dKHP}1c&{!0f!Ui?|A&Lg$0g&PYxo! zHA5Err)Z2yB()k5jmhK}wg*!@=4k2X)`@X3?Mcxq(_}>F>&#-RQhxY>Cr`mn zUtOf^=;?jf9^&kOvXL5R$!at2-;mYC!5$)-B{-K*J8oS=sMg&w<81SO5M@*n_7qoe zn5A#tj9C+%WuKJS-0A3u;Lqct{$xp7H&&@7(X8d@by?br|GaFDV(6zwk~-oAY<$MM zlH-yhbD%9aBufj)u#?Hai4~io<;|njL{bVEATB9oPFxyFzpWVNMxX z_YY;f;SD`4B(=v=D8|zj9Zynw!qUC=dtKii`*du%orV%~xCDng1&emG^d*lxpZ^(N zmG509Ac94A5P3EhLW}Wz(F~9F`NQD0Ku*(2#)FSD`8fGJ@R_ARUg0}?40akC7MA|O z7r+rA{$CZcJ_1({GPL3fIvm9 z+-|Zi3h(UGdogLhiKlw)-AE>DeYx(tm%Cx%j~{t{PK&CA9*NIQ2&tt}2SvL`dW6tn zj13zzis05BR_J5QSxU3X2N0AjLn`0Q+LhIr&NeL8NmWi2-G()0i=p%WH@l-N~!o#(`wTOQ+K+7a-RD zx@`_~Uf*`K%5|Ikxm_!o?`)2U^p+1%m7(9`gXNRfvDQU^!-TYiTFt+-HwKB-F+lZm zNsN0a1=-mpE=oajPC8o670AhUiX4*})XC6$%(k~Dca<0i3=RFaaF!Qb|1mNh4Z+Xv zb!Ymwc0(bCn7C>`VCIuKN3wlOOdtkm;GxZuALoYEq%KJ&Umy?Q`OE5xv*_bsci_^7 zgk;r?E^^iZ>gDG!U=RRV&czmvoHO+;UE$XB@S*;A!t~fvjPLqtzOv-i*+-S0go z(XBQbA&=eYflV+>J!M&?Kr^Hd&8iCgP5p!o@d6R4;2EEwp;H9jaDD9%Kef5h zy3qrkb5C{-PMJPT?IQt;d?6WV z@<`52XUW>gViYNOvN-!UkC_r!BIan7YR?IO=FC;cA*f2w;L5-o8oB(D3d$vh8V^WC zEv_L|?z>@D{tBDY_g5T?N`#o_&rW$PrxgWs!kAVy63VG3qaeWH3>l@hjPEEUNfq6b z_^k%CO1&Q6KF#@R;xLN3i3~t>Gy4LL1tGQRfM?)Iz5C9k8Okd>_{M;)3oSlZEW1E( z(s~c4O4f{Zrd$u^G|K}J@&gFzb=aRO;WY)R16d8pBjadDh-eF4U$W$p=Kp-z@OUpN zd3=Q(_%Z76+)e~!(gNY{fjP>q62;LLxFMqKKn9b{>+eN%*6E!Vb9m%ddUChJdwMYD)-v**@Q!?vf5fbp38X%|~D z=wrA}eV72IEvMEMk%qjK#ratoILAx_=#cBoKZ+F-C) zS%n#2Jl`C}jB|xf3-%Uoay!N%=ZAx(@w%%Yp@=L!+58ZY)^tq?yzBldo4mr_d)fXe z!LaAb6CsGp)9#)qz&%m?cgqmD0a)vUzWLj>bxfIqWSOJYDi&<&NXRwSn>I3CK%e2 ztnigxIN@F)Y&O<9x-L6TYghE)^(Jv|{hBN+)oy$W!gqkqIgVvZC9rA3E9*jBIJvmE zczNUNwIYU$J}kHXnwQ$gc9CA1da~$yYz(BK4-ZGY_ZsbY7wRJ;aa5dUg9qSRL^8Xi1iDy}TaJV&6`Zg23@j3UGxqum#q9!WutAkeoXo43%zNnV!D1*?@(L+Cd z+CsO(Dvu&-IFNiW7jcCIDAbo}Pp8SP&2Jmra*c#&{cv?C6-3loX+Fv1Qeh8-P^KZ{r%emtXlKf$isBqoa>)l#dFlG{^iy~^ zV*b(g^e3`HmEs12E;P033hdUzcMpkyT2fDcmWHsQ4Rf=@Plb^*!D>4$=e8!#i=){_ zXZEmP;e1P`Gi90Uh(|w04LgG$A!Cul>34K=t@p*O3Ma~tCp!rkeE6I9OCa|OID0@c zad0@Yzt1^~J_W zdW%Z21~N8fEQF6sXdgUXqP^N4P-!xvQ>0ej+bgMt!jZtw3w7y)yIX*0XT7#7Z?JE= z&pL$~wJS3Iov_i)!v9~l(5~gdnLr&zZH^PdVn5Xd+WDOQFaG`|JyAxA@CO9N)O-)nEAil zHg+Fx^TqEC6W7srnkroEV{>_YrUp;`uqSVL;kjQB*10YeC5wsT?XwPrH(}THHrID+ zFL}0wnB{Ccly;Q1_dffkNtQtbsc+stER0N^^$o~FJWWlMeRb6SXH&fKH$id);FYuU zSNh%PT>R0(IxlZ=1z0)^B+>g2c(JtiHB~Nd3vaa0<#(wX#Ja zQr(u>>&YI+?K(%bmRq^tW)63Jpk6(b3*sx(Emg0K5BXiMrrer2uHv5thWe`9RjdUo z~E~mj_kX9Ys+EiPiqS!_c`lL9NtSQTeF#a36pg?cU^G zagl2E*g<~D-aO4G`OremTsFa=Yti4G_7FL>zYBJ;wTcv0qb%4k<7&V`hSy0JbvP;z@+v_07pnFO-Y z+l%Z5K%HdJ$Y@Z-fLLmYSaRuUFw9!Hb}D|x3(2+P6@~RC5f}L9+xT`~dE(KmNk0hB zOJ~L5>yyF5rq{bzn5;VAtLwq`phnHj{sa6Z znn#{@`f#$!=BC@#9~%Gkpsa6v3nOSwDoM6rA+nFJPBrzsTWTCEujbGWtH>F!uI?ZDdZEw=wC zKj*qRp1iWfHN-b+WlgSyzI)=+Gjf%}s>w@P<9Ml4PRM*0Q2R7q0Og{y0cquSm#~?= ziy_cJEGzQqIuIU(CqJ_ox)`Y{4v7uyfvSB9qXlEog7J!$o7hn-?3$&CLjI{e2lgmg zdtWw9zAe$pnHw1G7+U`LE(bo|aJVoFF`M8K!E(7G(KoVBLG2;jEqTy8!i;Kp93XQf zweCaWd|ek6-9~-TLQFC*IQ5A{#5=>>g5u`~s|Rp@OAVBo$yi#4@Qz28vLO0C{ZQdL zJT~p-8tW!xogas|dRub^fsH+t8+ z)>{jIm6YQnBMm&Ru?uZ?4lHC?jvrVwhO@r9LLT(&lQ0Dv~{Ukem?|p4`|}BYKwk&lbH|?K{NJo ze{uxxEEHLI_A?dVcvk}h=w6VsyqWG11**dYiE_HF7HA2%M2Pk+!4$K+XWTSbhESfOD*NN|X+RN)UBdPwXSor&Ru! z`PC?b%@+ct6(i-78gpN(;yWER^_4N?AADQcah1{PpEsJ`7Zudo$04?9_BaPBLHlX9 zH;#L8r2bncKW5%#ECFeAn-6zqX+&PF(G2S)$a%`ye&;_HJLWtbvm{@3ka}o1zV;Ke zRU3P6NzYn{-4DcSy*a0v1+NWu;-l}uk!kO)Zd~V?AbwnQy#y+;*Su&tWu^ZMe&yne zbHLu{vl?#G#mdPQ)eA`XI{wz5%xQc4)fn>^U!#y#j0H5QM0R^RSIeR{{GJ>J%n9}; z|IujiXI@Nf^u{E{YK>|YR*iRGC+6SWL#eSVUX%a*k0qC0irhb>1*cQr(~ho{2fC5~ z{D$v!-`sq5CUc}QJog4BE&}6y9JssGEd2jIpl_c3-r#^u6z?8pgkdMB_nZUU_rrUH zjD&dl{#W`Mu9aHeYOh`~4x&-O+pYK7I+uT!f4O)Fw67E-_)QA}1z#CFatR@E@84HyWQH-=ud)&9(%hZ zM+!~2K=o52*Scfrnx@99c`xzs*X}i=VYfVX>AO(yLhjTC;bfQD%&ekSk6xP=&|Z^7 zFRxQ#6S_72M{s~s?c<52W6Qnc{9#KR<+fJ=oa|e9<%+9QOe8&W9z0x|rPsI<4Jzy5 z&>cpF;t~xEHrt+8KRxFD@Kp?<+M7$gbwsnDKG8}4wIgJ^NmRlxIlyQw)LU;j5(V^1 z7&;dB&X-lv=W1wICu%P+q{@@st1~06R`jK;)!s4VuouoG&}8!@>$`h1f26xIhbmyU zlT#~Wtx$pJ7|nG;?l!H!RKZCn(NHuNV(z&o_p4jGZslG&;*HY2%AnjZxYEnt>`V`q zFajD@Cc>;GwaDD{2+Z9YIhtB5k{09T_qbTN< zV?_i4ITlU0t7hrmACU^YY9!LNFXbFuvJcmP+9#E39Dgnw+dSA7nti16g^-!-GtbUW zU%rYeD-zLV-MjEAiF-S=?wbd+IJScv(tdFjs=aL1M3Xs$g#9e_xyd7z(N*510@=%j z`omTl`0iHtr*f%^jn;nhEi>MOuE%S)JAsWCVYBF3ycRRFF^a%aaS){hCEpTX-fsG< z|MA7zb!b)NbS_gEP@Gb0(Z_RvGu9yxfB}Z-i7eXwon&hDRJjOafDF|6Yl%Uj#_pYGkum%!DXY*p?hP_~`i?YUpxl~5R# z@c)Us{7>%sxA%!KgHNn54?tw*VQnR2I!^fFC+>01@t)MAU3#@+Exl83OtmRT>Y@q$ ztSb#Tj17SwY9yg=dHAh^TKmAlT%qjqjTl*=I!8hecgg#JdvC3Row(Exy3f8#Nm`Z* zYQF1+1JcQFc^`)U)Wy&*=vskUcE=U{kxpfaa%9SY9fZcgWh@G~E0BPO4-_N4_o_GwqtUVK3(VyGgtvhaE@dc;*P)rRlLk&^;kD`aY+L@WN#L>? zOPEc5ZK7UHHoacyP$=X5Z$Dg!u7z5%@>YEDi1P^Z%yfy%F#S2Vb5_bCw?%>R*>4$^6viSMDkx9NahvV^)9sm*YXJ zl8d_*cNlQ63!QB%A9ug*VQbBK2q}>6I$}>TPkfDBJh1kUI#kwWA#4A482Y~&#Xpdo z5yy8)lW^w9#?!5*dOot}ca2!9W!{}rX3k?gtWN9rZ2P!tvS50B()GcP0kJb@!{BM> zYRP~iNvh=U09P%FPaG)!O)?dTZ7XoI`S3x+i~S^q4-& z$ygJ%;Xa0BNa#24~B%u-*g|HW9dc5kwutXpO6<^=#x zO>huq7nf1zXC$6V*jwc|8w|@TzdG4~~Af5jjirF+$1*U1EguiqMVAL0jMQXyM7 zmWxz>E9v;ctm@68aW~wxtnJPct^Y(PR<83h-Pv*ulUWT_BngSmK=1|x`3l3=D&=;{ zPIxNHtThNS4hLJ`13lywB#iH1^B=Hy;r>T@M$OO zFAo2x8_eSWu#SU>nEL?YZ$$dX`2J7hfq!hd7&4pith3ZSj}xge9;iq_C*9wMMCaH6 zT?NH%vSzPGfOzqkj99tAAt@t6%cwto`&J?BEC7!=M4h<8XyC4&4d}mK@;+m6mLkYu zq7nE3Q%WQJbIbrX=}{v%`b(xCGa=kS&FlpbXH@uOcFDx1aCwEilrYc&>&3!B_sw4pJH!vU+uhUrvI*zx$ckXNwPa4>`(*EZxIR+aA zRJSIz?*&rb!U^=CP436&#!;r5|n%_4F4#0rd0X+bGZs><0O!>lgymVY>4O3Dh`@tNw(9z|IPc z#9is z%?cRM^EZi~Q#$174m5}{AM$EHHGUUT&(Zk&4u&cF#@qir8U`JmfD!DH0Vb|Rfkn~6 z@4ggGBjz^^)EQm%#rB2QHuqa0K(E*{_<FZ`CJta(#646;l5n<3wNfw z6ly4$YNz%8&D%#vh;zz+4R-%A?tg;q|7%~Vf*CJ&;tj{%PyYR$CqZP{(Gn^PC-}6<}OZH^|ZunoRjr4y~8){D$49erXc4P*X zbIgx{(lRdVoW`7zw1!5$X`Xe|KY;<)S0Ks?&XRuV!o<%niW$Q)Wue~J+^Mxj-@?m4 zqf(_;-Kiv9kf7-3%7KjcC$uVtfW^4J0@dYC-4L4s*b3oxbpF`dtqJ zNkU>|<|IdkU5KIfYFQm|y)1f_(<@`7m45=9JAdN(y0Q|vX5zKUF4BRBMrg2MK55ZT zlhQclUGW4W&YDnN)l|1ZO3dld9y^QlAT&Q#i9PohOb_d+++X|8-8S$|K~(7~-m34d z^XW}2puV*2*@XK47TcC6)~?ptT_r5Gha1E75{{r@sL!f7|u2> z{ufRYz=sFx7-+t~fFtgQ#QM`XRPI&+{MbURbNAfAM3bC&bud#^^<99_AS#(3OUv#z zwJ}Tn=8tU`^(MRY+(%~rf3QCCba2RQKjBApN_EnDxG#|G#8_i>*5>ePmL(6|u@%_T&|z6rG# z1Tu8lCR#vxcW#v%7E9xX`YA84?PPF8ep6~wyz=cMx literal 0 HcmV?d00001 diff --git a/transfer/message/diagram/transfer-process.puml b/transfer/message/diagram/transfer-process.puml new file mode 100644 index 00000000..22695bcd --- /dev/null +++ b/transfer/message/diagram/transfer-process.puml @@ -0,0 +1,27 @@ +@startuml "transfer-process" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:TransferProcess" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:TransferProcess" + ids:correlationId : String + ids:state : ids:TransferState +} + + +enum ids:TransferState { + "ids:REQUESTED" + "ids:STARTED" + "ids:TERMINATED" + "ids:COMPLETED" + "ids:SUSPENDED" +} + +"ids:TransferProcess" "1" *-- "1" "ids:TransferState" : "ids:transferState" + +@enduml \ No newline at end of file diff --git a/transfer/message/diagram/transfer-request-message.png b/transfer/message/diagram/transfer-request-message.png new file mode 100644 index 0000000000000000000000000000000000000000..d5c011a8b30b4ea216687b844a7e445ed0e3a9f3 GIT binary patch literal 9547 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 literal 0 HcmV?d00001 diff --git a/transfer/message/diagram/transfer-request-message.puml b/transfer/message/diagram/transfer-request-message.puml new file mode 100644 index 00000000..c6cc2a89 --- /dev/null +++ b/transfer/message/diagram/transfer-request-message.puml @@ -0,0 +1,18 @@ +@startuml "transfer-request-message" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:TransferRequestMessage" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:TransferRequestMessage" + ids:agreementId : String + dct:format : String + ids:dataAddress : String + ids:callbackAddress : String +} + +@enduml \ No newline at end of file diff --git a/transfer/message/diagram/transfer-start-message.png b/transfer/message/diagram/transfer-start-message.png new file mode 100644 index 0000000000000000000000000000000000000000..f8be5cd9ef01e4c16fbf8edda8ea00813a2bb450 GIT binary patch literal 8540 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 literal 0 HcmV?d00001 diff --git a/transfer/message/diagram/transfer-suspension-message.puml b/transfer/message/diagram/transfer-suspension-message.puml new file mode 100644 index 00000000..8285938d --- /dev/null +++ b/transfer/message/diagram/transfer-suspension-message.puml @@ -0,0 +1,18 @@ +@startuml "transfer-suspension-message" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:TransferSuspensionMessage" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:TransferSuspensionMessage" + ids:processId : String + ids:correlationId : String + ids:code : String + ids:reason : Array +} + +@enduml \ No newline at end of file diff --git a/transfer/message/diagram/transfer-termination-message.png b/transfer/message/diagram/transfer-termination-message.png new file mode 100644 index 0000000000000000000000000000000000000000..2d819eea8ea326ef509cd87db01cf436c5419bcf GIT binary patch literal 9072 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 literal 0 HcmV?d00001 diff --git a/transfer/message/diagram/transfer-termination-message.puml b/transfer/message/diagram/transfer-termination-message.puml new file mode 100644 index 00000000..89ab651d --- /dev/null +++ b/transfer/message/diagram/transfer-termination-message.puml @@ -0,0 +1,18 @@ +@startuml "transfer-termination-message" +!pragma layout smetana + +!include ../../../common/style/diagram.styles.puml + +hide empty description + + +class "ids:TransferTerminationMessage" { + @context : "https://w3id.org/idsa/v5/context.json" + @type : "ids:TransferTerminationMessage" + ids:processId : String + ids:correlationId : String + ids:code : String + ids:reason : Array +} + +@enduml \ No newline at end of file diff --git a/transfer/message/schema/transfer-completion-message-schema.json b/transfer/message/schema/transfer-completion-message-schema.json new file mode 100644 index 00000000..db7bf7ad --- /dev/null +++ b/transfer/message/schema/transfer-completion-message-schema.json @@ -0,0 +1,36 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "TransferCompletionMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/TransferCompletionMessage" + } + ], + "$id": "https://w3id.org/idsa/core/v5/TransferCompletionMessageSchema", + "definitions": { + "TransferCompletionMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:TransferCompletionMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:correlationId": { + "type": "string", + "required": true + } + } + } + } +} \ No newline at end of file diff --git a/transfer/message/schema/transfer-error-schema.json b/transfer/message/schema/transfer-error-schema.json new file mode 100644 index 00000000..e4c3d7f2 --- /dev/null +++ b/transfer/message/schema/transfer-error-schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "TransferErrorSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/TransferError" + } + ], + "$id": "https://w3id.org/idsa/core/v5/TransferErrorSchema", + "definitions": { + "TransferError": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:TransferError", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:correlationId": { + "type": "string", + "required": true + }, + "ids:code": { + "type": "string", + "required": true + }, + "ids:reason": { + "type": "array", + "required": false, + "minItems": 1, + "items": { + + } + } + } + } + } +} \ No newline at end of file diff --git a/transfer/message/schema/transfer-process-schema.json b/transfer/message/schema/transfer-process-schema.json new file mode 100644 index 00000000..ece3aa68 --- /dev/null +++ b/transfer/message/schema/transfer-process-schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "TransferProcessSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/TransferProcess" + } + ], + "$id": "https://w3id.org/idsa/core/v5/TransferProcessSchema", + "definitions": { + "TransferProcess": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:TransferProcess", + "required": true + }, + "ids:correlationId": { + "type": "string", + "required": true + }, + "ids:transferState": { + "type": "object", + "properties": { + "@id": { + "type": "string", + "enum": [ + "ids:REQUESTED", + "ids:STARTED", + "ids:TERMINATED", + "ids:COMPLETED", + "ids:SUSPENDED" + ] + }, + "required": true + } + } + } + } + } +} \ No newline at end of file diff --git a/transfer/message/schema/transfer-request-message-schema.json b/transfer/message/schema/transfer-request-message-schema.json new file mode 100644 index 00000000..d7649dc0 --- /dev/null +++ b/transfer/message/schema/transfer-request-message-schema.json @@ -0,0 +1,77 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "TransferRequestMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/TransferRequestMessage" + } + ], + "$id": "https://w3id.org/idsa/core/v5/TransferRequestMessageSchema", + "definitions": { + "TransferRequestMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:TransferRequestMessage", + "required": true + }, + "ids:agreementId": { + "type": "object", + "properties": { + "@value": { + "type": "string", + "required": true + }, + "@type": { + "type": "string", + "const": "xsd:anyURI", + "required": true + } + }, + "required": true + }, + "dct:format": { + "type": "string", + "required": true + }, + "ids:dataAddress": { + "type": "object", + "properties": { + "@value": { + "type": "string", + "required": true + }, + "@type": { + "type": "string", + "const": "xsd:anyURI", + "required": true + } + }, + "required": false + }, + "ids:callbackAddress": { + "type": "object", + "properties": { + "@value": { + "type": "string", + "required": true + }, + "@type": { + "type": "string", + "const": "xsd:anyURI", + "required": true + } + }, + "required": true + } + } + } + } +} \ No newline at end of file diff --git a/transfer/message/schema/transfer-start-message-schema.json b/transfer/message/schema/transfer-start-message-schema.json new file mode 100644 index 00000000..d700d7b9 --- /dev/null +++ b/transfer/message/schema/transfer-start-message-schema.json @@ -0,0 +1,51 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "TransferStartMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/TransferStartMessage" + } + ], + "$id": "https://w3id.org/idsa/core/v5/TransferStartMessageSchema", + "definitions": { + "TransferStartMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:TransferStartMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:correlationId": { + "type": "string", + "required": true + }, + "ids:dataAddress": { + "type": "object", + "properties": { + "@value": { + "type": "string", + "required": true + }, + "@type": { + "type": "string", + "const": "xsd:anyURI", + "required": true + } + }, + "required": false + } + } + } + } +} \ No newline at end of file diff --git a/transfer/message/schema/transfer-suspension-message-schema.json b/transfer/message/schema/transfer-suspension-message-schema.json new file mode 100644 index 00000000..d54567ca --- /dev/null +++ b/transfer/message/schema/transfer-suspension-message-schema.json @@ -0,0 +1,44 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "TransferSuspensionMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/TransferSuspensionMessage" + } + ], + "$id": "https://w3id.org/idsa/core/v5/TransferSuspensionMessageSchema", + "definitions": { + "TransferSuspensionMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:TransferSuspensionMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:correlationId": { + "type": "string", + "required": true + }, + "ids:reason": { + "type": "array", + "required": false, + "minItems": 1, + "items": { + + } + } + } + } + } +} \ No newline at end of file diff --git a/transfer/message/schema/transfer-termination-message-schema.json b/transfer/message/schema/transfer-termination-message-schema.json new file mode 100644 index 00000000..df29e602 --- /dev/null +++ b/transfer/message/schema/transfer-termination-message-schema.json @@ -0,0 +1,48 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "title": "TransferTerminationMessageSchema", + "type": "object", + "allOf": [ + { + "$ref": "#/definitions/TransferTerminationMessage" + } + ], + "$id": "https://w3id.org/idsa/core/v5/TransferTerminationMessageSchema", + "definitions": { + "TransferTerminationMessage": { + "type": "object", + "properties": { + "@context": { + "type": "string", + "const": "https://w3id.org/idsa/v5/context.json", + "required": true + }, + "@type": { + "type": "string", + "const": "ids:TransferTerminationMessage", + "required": true + }, + "ids:processId": { + "type": "string", + "required": true + }, + "ids:correlationId": { + "type": "string", + "required": true + }, + "ids:code": { + "type": "string", + "required": true + }, + "ids:reason": { + "type": "array", + "required": false, + "minItems": 1, + "items": { + + } + } + } + } + } +} \ No newline at end of file diff --git a/transfer/message/shape/transfer-completion-message-shape.ttl b/transfer/message/shape/transfer-completion-message-shape.ttl new file mode 100644 index 00000000..a06ec081 --- /dev/null +++ b/transfer/message/shape/transfer-completion-message-shape.ttl @@ -0,0 +1,42 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:TransferCompletionMessageShape + a sh:NodeShape ; + sh:targetClass ids:TransferCompletionMessage ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:correlationId ; + sh:datatype xsd:string ; + sh:severity sh:Violation ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:message " (TransferCompletionMessageShape): An ids:correlationId property must point exactly one xsd:string field."@en ; + ] ; + +. \ No newline at end of file diff --git a/transfer/message/shape/transfer-error-shape.ttl b/transfer/message/shape/transfer-error-shape.ttl new file mode 100644 index 00000000..e68c5122 --- /dev/null +++ b/transfer/message/shape/transfer-error-shape.ttl @@ -0,0 +1,53 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:TransferErrorShape + a sh:NodeShape ; + sh:targetClass ids:TransferError ; + rdfs:subClassOf ids:MessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:correlationId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (TransferErrorShape): An ids:correlationId property must point from an ids:TransferError to exactly one xsd:string field."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:code ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (TransferErrorShape): An ids:code property must point from an ids:TransferError to exactly one ids:TerminationCode."@en ; + ] ; + +. \ No newline at end of file diff --git a/transfer/message/shape/transfer-process-shape.ttl b/transfer/message/shape/transfer-process-shape.ttl new file mode 100644 index 00000000..09c920dd --- /dev/null +++ b/transfer/message/shape/transfer-process-shape.ttl @@ -0,0 +1,52 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:TransferProcessShape + a sh:NodeShape ; + sh:targetClass ids:TransferProcess ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:correlationId ; + sh:datatype xsd:string ; + sh:severity sh:Violation ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:message " (TransferProcessShape): An ids:correlationId property must point exactly one xsd:string field."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:transferState ; + sh:class ids:TransferState ; + sh:severity sh:Violation ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:message " (TransferProcessShape): An ids:state property must point exactly one ids:TransferState entity."@en ; + ] ; + +. \ No newline at end of file diff --git a/transfer/message/shape/transfer-request-message-shape.ttl b/transfer/message/shape/transfer-request-message-shape.ttl new file mode 100644 index 00000000..fbc5b90b --- /dev/null +++ b/transfer/message/shape/transfer-request-message-shape.ttl @@ -0,0 +1,71 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:TransferRequestMessageShape + a sh:NodeShape ; + sh:targetClass ids:TransferRequestMessage ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:agreementId ; + sh:datatype xsd:anyURI ; + sh:severity sh:Violation ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:message " (TransferRequestMessageShape): An ids:agreementId property must point exactly one xsd:anyURI field."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path dct:format ; + sh:datatype xsd:string ; + sh:severity sh:Violation ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:message " (TransferRequestMessageShape): A dct:format property must point exactly one entity."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:dataAddress ; + sh:datatype xsd:anyURI ; + sh:severity sh:Violation ; + sh:maxCount 1 ; + sh:minCount 0 ; + sh:message " (TransferRequestMessageShape): An ids:dataAddress property must point zero or one xsd:anyURI field."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:callbackAddress ; + sh:datatype xsd:anyURI ; + sh:severity sh:Violation ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:message " (TransferRequestMessageShape): An ids:callbackAddress property must point exactly one xsd:anyURI field."@en ; + ] ; +. \ No newline at end of file diff --git a/transfer/message/shape/transfer-start-message-shape.ttl b/transfer/message/shape/transfer-start-message-shape.ttl new file mode 100644 index 00000000..7d01d7d0 --- /dev/null +++ b/transfer/message/shape/transfer-start-message-shape.ttl @@ -0,0 +1,53 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:TransferStartMessageShape + a sh:NodeShape ; + sh:targetClass ids:TransferStartMessage ; + rdfs:subClassOf ids:MessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:correlationId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (TransferStartMessageShape): An ids:correlationId property must point from an ids:TransferStartMessage to exactly one xsd:string field."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:dataAddress ; + sh:datatype xsd:anyURI ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (TransferStartMessageShape): An ids:dataAddress property must point from an ids:TransferStartMessage to exactly one xsd:anyURI field."@en ; + ] ; + +. \ No newline at end of file diff --git a/transfer/message/shape/transfer-suspension-message-shape.ttl b/transfer/message/shape/transfer-suspension-message-shape.ttl new file mode 100644 index 00000000..17b6c96b --- /dev/null +++ b/transfer/message/shape/transfer-suspension-message-shape.ttl @@ -0,0 +1,43 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:TransferSuspensionMessageShape + a sh:NodeShape ; + sh:targetClass ids:TransferSuspensionMessage ; + rdfs:subClassOf ids:MessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:correlationId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (TransferSuspensionMessageShape): An ids:correlationId property must point from an ids:TransferSuspensionMessage to exactly one xsd:string field."@en ; + ] ; + +. \ No newline at end of file diff --git a/transfer/message/shape/transfer-termination-message-shape.ttl b/transfer/message/shape/transfer-termination-message-shape.ttl new file mode 100644 index 00000000..636f0f10 --- /dev/null +++ b/transfer/message/shape/transfer-termination-message-shape.ttl @@ -0,0 +1,53 @@ +@prefix owl: . +@prefix rdf: . +@prefix rdfs: . +@prefix xsd: . +@prefix dct: . +@prefix dcat: . +@prefix odrl: . +@prefix cred: . +@prefix sec: . + +@prefix ids: . +@prefix ids_shapes: . + +@prefix sh: . + +shapes: + a owl:Ontology ; + sh:declare [ + sh:prefix "rdf" ; + sh:namespace "http://www.w3.org/1999/02/22-rdf-syntax-ns#"^^xsd:anyURI ; + ] ; + sh:declare [ + sh:prefix "ids" ; + sh:namespace "https://w3id.org/idsa/v5/"^^xsd:anyURI ; + ] ; +. + +shapes:TransferTerminationMessageShape + a sh:NodeShape ; + sh:targetClass ids:TransferTerminationMessage ; + rdfs:subClassOf ids:MessageShape ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:correlationId ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (TransferTerminationMessageShape): An ids:correlationId property must point from an ids:TransferTerminationMessage to exactly one xsd:string field."@en ; + ] ; + + sh:property [ + a sh:PropertyShape ; + sh:path ids:code ; + sh:datatype xsd:string ; + sh:maxCount 1 ; + sh:minCount 1 ; + sh:severity sh:Violation ; + sh:message " (TransferTerminationMessageShape): An ids:code property must point from an ids:TransferTerminationMessage to exactly one entity."@en ; + ] ; + +. \ No newline at end of file diff --git a/transfer/message/transfer.completion.message.json b/transfer/message/transfer-completion-message.json similarity index 100% rename from transfer/message/transfer.completion.message.json rename to transfer/message/transfer-completion-message.json diff --git a/transfer/message/transfer.error.json b/transfer/message/transfer-error.json similarity index 93% rename from transfer/message/transfer.error.json rename to transfer/message/transfer-error.json index 28455a9c..166d9cef 100644 --- a/transfer/message/transfer.error.json +++ b/transfer/message/transfer-error.json @@ -4,7 +4,7 @@ "ids:processId": "urn:uuid:71f8dfab-9337-4e9d-a4c7-524e04443f16", "ids:correlationId": "urn:uuid:4a3ad65e-d78a-4200-a666-fc47aec32f2f", "ids:code": "...", - "ids:reasons": [ + "ids:reason": [ {}, {} ] diff --git a/transfer/message/transfer.process.json b/transfer/message/transfer-process.json similarity index 100% rename from transfer/message/transfer.process.json rename to transfer/message/transfer-process.json diff --git a/transfer/message/transfer.request.message.json b/transfer/message/transfer-request-message.json similarity index 89% rename from transfer/message/transfer.request.message.json rename to transfer/message/transfer-request-message.json index c80867f1..77515d54 100644 --- a/transfer/message/transfer.request.message.json +++ b/transfer/message/transfer-request-message.json @@ -3,7 +3,7 @@ "@id": "urn:uuid:4a3ad65e-d78a-4200-a666-fc47aec32f2f", "@type": "ids:TransferRequestMessage", "ids:agreementId": "urn:uuid:e8dc8655-44c2-46ef-b701-4cffdc2faa44", - "dct:format": "ids:s3+push", + "dct:format": "ids:S3_AWS_PUSH", "ids:dataAddress": {}, "ids:callbackAddress": "https://......" } diff --git a/transfer/message/transfer.start.message.json b/transfer/message/transfer-start-message.json similarity index 100% rename from transfer/message/transfer.start.message.json rename to transfer/message/transfer-start-message.json diff --git a/transfer/message/transfer.suspension.message.json b/transfer/message/transfer-suspension-message.json similarity index 94% rename from transfer/message/transfer.suspension.message.json rename to transfer/message/transfer-suspension-message.json index 4b03f9f1..bf271684 100644 --- a/transfer/message/transfer.suspension.message.json +++ b/transfer/message/transfer-suspension-message.json @@ -5,7 +5,7 @@ "ids:processId": "urn:uuid:24a62493-06eb-45e4-a41c-6de091b51da5", "ids:correlationId": "urn:uuid:4a3ad65e-d78a-4200-a666-fc47aec32f2f", "ids:code": "...", - "ids:reasons": [ + "ids:reason": [ {}, {} ] diff --git a/transfer/message/transfer.termination.message.json b/transfer/message/transfer-termination-message.json similarity index 94% rename from transfer/message/transfer.termination.message.json rename to transfer/message/transfer-termination-message.json index 843821ed..f958cc5f 100644 --- a/transfer/message/transfer.termination.message.json +++ b/transfer/message/transfer-termination-message.json @@ -5,7 +5,7 @@ "ids:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", "ids:correlationId": "urn:uuid:4a3ad65e-d78a-4200-a666-fc47aec32f2f", "ids:code": "...", - "ids:reasons": [ + "ids:reason": [ {}, {} ] diff --git a/transfer/transfer.process.state.machine.png b/transfer/transfer-process-state-machine.png similarity index 93% rename from transfer/transfer.process.state.machine.png rename to transfer/transfer-process-state-machine.png index 7cf211e65dcd910a423309c40770a6e717ac38bb..e83c3980568fbb9139d61731407231a79492d72c 100644 GIT binary patch delta 1000 zcmVuz zm7qXqO3_7QWi+}VYLqvdw@~w8Sl(EEnV$*?~K7<;|oOEr^N^X=XWmuGsok( z5fX73hXK5n98s~vycKcgVIf+|BylT5-kMPSx?#MEI9i1W0<>X&u>=ufi709q%0j3Y z#6E_0`<;6G1g$sUTIbWEwdcV2Wd*o$(nM}t{y`ROxD8RbT za z^OwJ%)%uw2qSY|=zY^P_QPYO8`@S_~dNF-x9T_uPx5o5$Vm`#wwtXONQ#I+*GGevE z?%x|s{bVwXoBw1Qx0iS#G(u|nKHfQ7E^y~Z<^P(WxEaI-+ZPW!YSs^?c{Bl%*_w|57u?RVEqjvzmlk|B}Mb; ztboOSfpz=td-uA?Wwb-{dSG6fqXOhIDtE}Pb$J1jERiSANV!KdS@%hEY1KW)D5k}r zPTv{1W;vUGjoP`ovMacQoDwxQlIRhMVzVvR9obGPn$6qm+m_WW!)nt`)$|jOMChc9 zEP1*)^W7bAtFR~+**5i6$?A#3{7`dqpw?-STg?&sK1IGy=n8tBiV{Vezioa#{5iOlCC?TSumLPm*UMHG=L}%N)h|uL zB#-BM#M$Sm0JOk4`GKL^d!e)vw7%vPtE(wx>ZPTWO;E__IXm~UM_HwX`%#}2&WL?r zvr&tG52ZbKVyLVD31Ldf$zv>wd*BgxY70-8>hXN}@p4!53lEpaUgsSxkG)=Suq-4z z>sZ-z)w9U5psChbA8Vj8-v91AIStgq=V3C2XUuh*pxf?sdcF4G%{-=Rr;nib9=hFO zr!%~~1WV}wZGUULxt)$du$Ze;qff+kZdHI3I9>9v z+ZkAJXf|OwI{{zPrjSq|+lNjc6kC8Mw&a!MY-y+8y^@W=#uv!+t?^6-IKOlGA011& z6%uh7hXK6X#Lpd$zs6X|PQ;mqg&=hOu4Q}|akLH*1Zc}*2_nRQ5>eDLl!Z_)h6WAnT2sV;|ZV&y4$8qz?^YmzalyB3X?4`}co9 zr}H`AMXP1(za_Rqqh>8*_c=A>dNKQG9T{_4Q)Bi$F&|=T+dh!CshV_YIkDPd_vrWW@wM1<#8Cpzd1uXVU ztUGXjaBs?7PCK-3u1A-naS3u6l{;kDx}pF{R>+fQq}-#qtox*ewCY`B6w`80XW)$8 zQ8k;7+Pk`cvTL}5oC-BIlIR(Ua)I)%j${5{7`fITCLM{VKv9>&l&Q4^-_Y_t0^%9O7FzFVsU@l5Q$Gx z6)ID%xo?!o!b-W0dpUNi^ebHj(9}<1TiGC=ebcgkRwxh^6(`=y4e?&6+O?ox)c&9= zITEF+ac#TEx$0ke4$E&<%H`G9FuBz{Y#q7UJxN}P+}1X{&@6p+oil(5*Ss_dlN`&< zh_laA189K@@)w4_`9^6KXmiaO)>Ko*G)v1Uo1l=WYvr!yH(n}_z0SK*9(%pvLRm_9)^)P& zsjX!1XWIjZR&Uc diff --git a/transfer/transfer.process.state.machine.puml b/transfer/transfer-process-state-machine.puml similarity index 86% rename from transfer/transfer.process.state.machine.puml rename to transfer/transfer-process-state-machine.puml index 81b02f6f..1e5981e2 100644 --- a/transfer/transfer.process.state.machine.puml +++ b/transfer/transfer-process-state-machine.puml @@ -1,7 +1,7 @@ -@startuml "hub-request-processing" +@startuml "transfer-process-state-machine" !pragma layout smetana -!include ../diagrams/diagram.styles.puml +!include ../../diagrams/diagram.styles.puml hide empty description diff --git a/transfer/transfer.process.binding.https.md b/transfer/transfer.process.binding.https.md index e0ce76ce..519cc889 100644 --- a/transfer/transfer.process.binding.https.md +++ b/transfer/transfer.process.binding.https.md @@ -18,7 +18,7 @@ The OpenAPI definitions for this specification can be accessed [here](TBD). ### 2.2 TransferError In the event of a client request error, the connector must return an appropriate HTTP 4xxx client error code. If an error body is returned it must be -a [TransferError](./message/transfer.error.json) with the following properties: +a [TransferError](./message/transfer-error.json) with the following properties: | Field | Type | Description | |-------------------|---------------|---------------------------------------------------------------------| @@ -139,7 +139,7 @@ process state is successfully transitioned, the provider must return HTTP code 2 #### 2.9.1 POST -The consumer connector can POST a [TransferSuspensionMessage](./message/transfer.suspension.message.json) to suspend a transfer process. If the transfer +The consumer connector can POST a [TransferSuspensionMessage](./message/transfer-suspension-message.json) to suspend a transfer process. If the transfer process state is successfully transitioned, the producer must return HTTP code 200 (OK). The response body is not specified and clients are not required to process it. ## 3 Consumer Callback Path Bindings @@ -175,5 +175,5 @@ process state is successfully transitioned, the consumer must return HTTP code 2 #### 3.5.1 POST -The provider connector can POST a [TransferSuspensionMessage](./message/transfer.suspension.message.json) to suspend a transfer process. If the transfer +The provider connector can POST a [TransferSuspensionMessage](./message/transfer-suspension-message.json) to suspend a transfer process. If the transfer process state is successfully transitioned, the consumer must return HTTP code 200 (OK). The response body is not specified and clients are not required to process it. diff --git a/transfer/transfer.process.protocol.md b/transfer/transfer.process.protocol.md index bed5ad54..0280a8d2 100644 --- a/transfer/transfer.process.protocol.md +++ b/transfer/transfer.process.protocol.md @@ -38,14 +38,14 @@ Asset transfers are characterized as `push` or `pull` transfers and asset data i A push transfer is when the producer data plane initiates sending of asset data to a consumer endpoint. For example, after the consumer has issued an `TransferRequestMessage,` the producer begins data transmission to an endpoint specified by the consumer using an agreed-upon wire protocol. -<< Include example diagram >> +<< TODO: Include example diagram >> #### Pull Transfer A pull transfer is when the consumer data plane initiates retrieval of asset data from a producer endpoint. For example, after the consumer has issued an `TransferProcessStart,` message, the consumer requests the data from the producer-specified endpoint. -<< Include example diagram >> +<< TODO: Include example diagram >> #### Finite and Non-Finite Asset Data @@ -65,21 +65,25 @@ The TP states are: ### Transfer Process State Machine -![](./transfer.process.state.machine.png) +![](./transfer-process-state-machine.png) ## Message Types -### 1. TransferRequestMessage +### 1. Transfer Request Message + +![](./message/diagram/transfer-request-message.png) **Sent by**: Consumer **Resulting State**: REQUESTED -**Example**: [TransferRequestMessage](./message/transfer.request.message.json) +**Example**: [TransferRequestMessage](./message/transfer-request-message.json) + +**Response**: [TransferProcess](./message/transfer-process.json) containing the transfer process id or ERROR. -**Response**: [TransferProcess](./message/transfer.process.json) containing the transfer process id or ERROR. +![](./message/diagram/transfer-process.png) -**Schema**: (xx)[] +**Schema**: [TransferRequestMessage](./message/shape/transfer-request-message-shape.ttl), [TransferRequestMessage JSON Schema](./message/schema/transfer-request-message-schema.json), [TransferProcess Shape](./message/shape/transfer-process-shape.ttl) and the [TransferProcess JSON Schema](./message/schema/transfer-process-schema.json) #### Description @@ -103,18 +107,23 @@ Providers must include a `correlationId` property in the `TransferProcessMessage #### Notes - The 'dataAddress' contains a transport-specific endpoint address for pushing the asset. It may include a temporary authorization token. +- Valid states of a `TransferProcess` are `REQUESTED`, `STARTED`, `TERMINATED`, `COMPLETED`, and `SUSPENDED`. + + +### 2. Transfer Start Message -### 2. TransferStartMessage +![](./message/diagram/transfer-start-message.png) **Sent by**: Provider **Resulting State**: STARTED -**Example**: [TransferStartMessage](./message/transfer.start.message.json) +**Example**: [TransferStartMessage](./message/transfer-start-message.json) **Response**: ACK or ERROR. -**Schema**: (xx)[] +**Schema**: [TransferStartMessageShape](./message/shape/transfer-start-message-shape.ttl) and the [TransferStartMessage JSON Schema](./message/schema/transfer-start-message-schema.json) + #### Description @@ -125,14 +134,56 @@ The _TransferStartMessage_ is sent by the provider to indicate the asset transfe - The 'dataAddress' is only provided if the current transfer is a pull transfer and contains a transport-specific endpoint address for obtaining the asset. It may include a temporary authorization token. -### 3. TransferCompletionMessage +### 3. Transfer Suspension Message + +![](./message/diagram/transfer-suspension-message.png) + +**Sent by**: Provider or Consumer + +**Resulting State**: SUSPENDED + +**Example**: [TransferSuspensionMessage](./message/transfer-suspension-message.json) + +**Response**: ACK or ERROR. + +**Schema**: [TransferSuspensionMessageShape](./message/shape/transfer-suspension-message-shape.ttl) and the [TransferSuspensionMessage JSON Schema](./message/schema/transfer-suspension-message-schema.json) + +#### Description + +The _TransferSuspensionMessage_ is sent by the provider or consumer when either of them needs to temporarily suspend the data transfer. + +### 4. Transfer Completion Message + +![](./message/diagram/transfer-completion-message.png) + +**Sent by**: + +**Resulting State**: + +**Example**: [TransferCompletionMessage](./message/transfer-completion-message.json) + +**Response**: ACK or ERROR. + +**Schema**: [TransferCompletionMessageShape](./message/shape/transfer-completion-message-shape.ttl) and the [TransferCompletionMessage JSON Schema](./message/schema/transfer-completion-message-schema.json) #### Description The _TransferCompletionMessage_ is sent by the provider or consumer when asset transfer has completed. Note that some data plane implementations may optimize completion notification by performing it as part of its wire protocol. In those cases, a _TransferCompletionMessage_ message does not need to be sent. -### 4. TransferTerminationMessage +### 5. Transfer Termination Message + +![](./message/diagram/transfer-termination-message.png) + +**Sent by**: Provider or Consumer + +**Resulting State**: TERMINATED + +**Example**: [TransferTerminationMessage](./message/transfer-termination-message.json) + +**Response**: ACK or ERROR. + +**Schema**: [TransferTerminationMessageShape](./message/shape/transfer-termination-message-shape.ttl) and the [TransferTerminationMessage JSON Schema](./message/schema/transfer-termination-message-schema.json) #### Description @@ -141,11 +192,13 @@ a terminal state. If the termination was due to an error, the sender may include ## TransferError +![](./message/diagram/transfer-error.png) + **Sent by**: Consumer or Provider -**Example**: [TransferError](./message/transfer.error.json) +**Example**: [TransferError](./message/transfer-error.json) -**Schema**: [TransferErrorShape](../../schemas/transfer-error-shape.ttl) +**Schema**: [TransferErrorShape](./message/shape/transfer-error-shape.ttl) and the [TransferError JSON Schema](./message/schema/transfer-error-schema.json) #### Description