diff --git a/negotiation/contract.negotiation.binding.https.md b/negotiation/contract.negotiation.binding.https.md index 84349bf5..98bf6a4f 100644 --- a/negotiation/contract.negotiation.binding.https.md +++ b/negotiation/contract.negotiation.binding.https.md @@ -231,7 +231,9 @@ Authorization: ... "dspace:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", "dspace:agreement": { "@type": "odrl:Agreement", - "@id": "e8dc8655-44c2-46ef-b701-4cffdc2faa44" + "@id": "e8dc8655-44c2-46ef-b701-4cffdc2faa44", + "dspace:consumerId": "...", + "dspace:providerId": "...", } } } diff --git a/negotiation/contract.negotiation.protocol.md b/negotiation/contract.negotiation.protocol.md index 8f56f857..853dbc3a 100644 --- a/negotiation/contract.negotiation.protocol.md +++ b/negotiation/contract.negotiation.protocol.md @@ -125,6 +125,11 @@ A `ContractAgreementMessage` must contain an ODRL `Agreement`. An `Agreement` must contain a `dspace:timestamp` property defined as an XSD DateTime type. +An `Agreement` must contain a `dspace:consumerId` and `dspace:providerId`. The contents of these +properties are a dataspace-specific unique identifier of the contract agreement parties. Note that these +identifiers are not necessarily the same as the identifiers of the participant agents negotiating the +contract (i.e. the "connectors"). + ### 4. ContractAgreementVerificationMessage diff --git a/negotiation/message/contract-agreement-message.json b/negotiation/message/contract-agreement-message.json index 74884688..e4c37681 100644 --- a/negotiation/message/contract-agreement-message.json +++ b/negotiation/message/contract-agreement-message.json @@ -9,6 +9,8 @@ "@value": "2023-01-01T01:00:00Z", "@type": "xsd:dateTime" }, + "dspace:consumerId": "...", + "dspace:providerId": "...", "odrl:permission": { ... } diff --git a/negotiation/message/diagram/contract-agreement-message.png b/negotiation/message/diagram/contract-agreement-message.png index e1f75def..584371fe 100644 Binary files a/negotiation/message/diagram/contract-agreement-message.png and b/negotiation/message/diagram/contract-agreement-message.png differ diff --git a/negotiation/message/diagram/contract-agreement-message.puml b/negotiation/message/diagram/contract-agreement-message.puml index 49a707f4..4531f193 100644 --- a/negotiation/message/diagram/contract-agreement-message.puml +++ b/negotiation/message/diagram/contract-agreement-message.puml @@ -19,6 +19,8 @@ class odrl:Agreement { @id: String odrl:target : xsd:anyURI dspace:timestamp : xsd:dateTime + dspace:consumerId : String + dspace:providerId : String } "dspace:ContractAgreementMessage" "1" *-- "1" "odrl:Agreement" : "odrl:agreement" diff --git a/negotiation/message/example/contract.agreement.message.http.transfer.json b/negotiation/message/example/contract.agreement.message.http.transfer.json index 6a97919a..3c67f216 100644 --- a/negotiation/message/example/contract.agreement.message.http.transfer.json +++ b/negotiation/message/example/contract.agreement.message.http.transfer.json @@ -3,6 +3,8 @@ "@id": "some-id", "@type": ["dspace:ContractAgreementMessage"], "dspace:processId": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab", + "dspace:consumerId": "...", + "dspace:providerId": "...", "dspace:agreement": { "@type": "odrl:Agreement", "@id": "some-other-id", diff --git a/negotiation/message/schema/contract-agreement-message-schema.json b/negotiation/message/schema/contract-agreement-message-schema.json index cbb6664c..7dab4f35 100644 --- a/negotiation/message/schema/contract-agreement-message-schema.json +++ b/negotiation/message/schema/contract-agreement-message-schema.json @@ -54,10 +54,18 @@ "required": true } } + }, + "dspace:consumerId": { + "type": "string", + "required": true + }, + "dspace:providerId": { + "type": "string", + "required": true } } } } } } -} +} \ No newline at end of file