├── artifacts
├── settings.gradle.kts
├── README.md
├── gradle
│ └── wrapper
│ │ ├── gradle-wrapper.jar
│ │ └── gradle-wrapper.properties
├── src
│ ├── main
│ │ └── resources
│ │ │ ├── catalog
│ │ │ ├── example
│ │ │ │ ├── catalog-request-message.json
│ │ │ │ ├── dataset-request-message.json
│ │ │ │ ├── catalog-error.json
│ │ │ │ ├── nested-catalog.json
│ │ │ │ ├── dataset.json
│ │ │ │ └── catalog.json
│ │ │ ├── catalog-request-message-schema.json
│ │ │ ├── catalog-error-schema.json
│ │ │ ├── dataset-request-message-schema.json
│ │ │ ├── catalog-schema.json
│ │ │ └── dataset-schema.json
│ │ │ ├── common
│ │ │ ├── example
│ │ │ │ ├── catalogservice-did-service.json
│ │ │ │ ├── dataservice-did-service.json
│ │ │ │ └── protocol-version.json
│ │ │ ├── context-schema.json
│ │ │ ├── did-service-schema.json
│ │ │ └── protocol-version-schema.json
│ │ │ ├── transfer
│ │ │ ├── example
│ │ │ │ ├── transfer-completion-message.json
│ │ │ │ ├── transfer-process.json
│ │ │ │ ├── transfer-error.json
│ │ │ │ ├── transfer-suspension-message.json
│ │ │ │ ├── transfer-termination-message.json
│ │ │ │ ├── transfer-start-message.json
│ │ │ │ └── transfer-request-message.json
│ │ │ ├── transfer-termination-message-schema.json
│ │ │ ├── transfer-error-schema.json
│ │ │ ├── transfer-completion-message-schema.json
│ │ │ ├── transfer-suspension-message-schema.json
│ │ │ ├── transfer-schema.json
│ │ │ ├── transfer-start-message-schema.json
│ │ │ ├── transfer-process-schema.json
│ │ │ ├── transfer-request-message-schema.json
│ │ │ └── data-address-schema.json
│ │ │ ├── negotiation
│ │ │ ├── example
│ │ │ │ ├── contract-agreement-verification-message.json
│ │ │ │ ├── contract-negotiation.json
│ │ │ │ ├── contract-negotiation-event-message.json
│ │ │ │ ├── contract-negotiation-error.json
│ │ │ │ ├── contract-negotiation-termination-message.json
│ │ │ │ ├── contract-offer-message_initial.json
│ │ │ │ ├── contract-request-message_initial.json
│ │ │ │ ├── contract-offer-message.json
│ │ │ │ ├── contract-request-message.json
│ │ │ │ ├── contract-agreement-message.json
│ │ │ │ └── contract-agreement-message-full.json
│ │ │ ├── contract-agreement-verification-message-schema.json
│ │ │ ├── contract-agreement-message-schema.json
│ │ │ ├── contract-negotiation-error-schema.json
│ │ │ ├── contract-negotiation-event-message-schema.json
│ │ │ ├── contract-negotiation-termination-message-schema.json
│ │ │ ├── contract-negotiation-schema.json
│ │ │ ├── contract-request-message-schema.json
│ │ │ └── contract-offer-message-schema.json
│ │ │ └── context
│ │ │ └── odrl.jsonld
│ └── test
│ │ └── java
│ │ └── org
│ │ └── eclipse
│ │ └── dsp
│ │ ├── DspConstants.java
│ │ ├── schema
│ │ ├── catalog
│ │ │ ├── DatasetResponseTest.java
│ │ │ ├── NestedCatalogSchemaTest.java
│ │ │ ├── CatalogRequestMessageSchemaTest.java
│ │ │ ├── DatasetRequestMessageSchemaTest.java
│ │ │ ├── CatalogSchemaTest.java
│ │ │ ├── DatasetSchemaTest.java
│ │ │ └── CatalogErrorSchemaTest.java
│ │ ├── common
│ │ │ ├── VersionSchemaTest.java
│ │ │ └── CommonSchemaTest.java
│ │ ├── transfer
│ │ │ ├── TransferProcessSchemaTest.java
│ │ │ ├── TransferCompletionMessageSchemaTest.java
│ │ │ ├── TransferErrorSchemaTest.java
│ │ │ ├── TransferStartMessageSchemaTest.java
│ │ │ ├── TransferSuspensionMessageSchemaTest.java
│ │ │ ├── TransferTerminationMessageSchemaTest.java
│ │ │ ├── InvalidTransferSchemaTest.java
│ │ │ ├── TransferSchemaTest.java
│ │ │ ├── InvalidTransferStartMessageSchemaTest.java
│ │ │ ├── InvalidTransferSuspensionMessageSchemaTest.java
│ │ │ ├── InvalidTransferTerminationMessageSchemaTest.java
│ │ │ ├── TransferRequestMessageSchemaTest.java
│ │ │ ├── InvalidTransferErrorSchemaTest.java
│ │ │ ├── InvalidTransferCompletionMessageSchemaTest.java
│ │ │ └── InvalidTransferProcessSchemaTest.java
│ │ ├── negotiation
│ │ │ ├── ContractNegotiationSchemaTest.java
│ │ │ ├── ContractAgreementMessageSchemaTest.java
│ │ │ ├── ContractAgreementVerificationMessageSchemaTest.java
│ │ │ ├── ContractOfferMessageSchemaTest.java
│ │ │ ├── ContractRequestMessageSchemaTest.java
│ │ │ ├── ContractNegotiationErrorSchemaTest.java
│ │ │ ├── ContractNegotiationTerminationMessageSchemaTest.java
│ │ │ ├── ContractNegotiationEventMessageSchemaTest.java
│ │ │ ├── InvalidContractOfferMessageSchemaTest.java
│ │ │ ├── InvalidContractNegotiationErrorSchemaTest.java
│ │ │ ├── InvalidContractAgreementVerificationMessageSchemaTest.java
│ │ │ └── InvalidContractNegotiationTerminationMessageSchemaTest.java
│ │ └── fixtures
│ │ │ └── AbstractSchemaTest.java
│ │ └── context
│ │ ├── catalog
│ │ └── CatalogContextTest.java
│ │ ├── transfer
│ │ └── TransferContextTest.java
│ │ └── negotiation
│ │ └── ContractNegotiationContextTest.java
├── .gitignore
├── config
│ └── checkstyle
│ │ └── suppressions.xml
├── buildSrc
│ ├── src
│ │ ├── main
│ │ │ └── java
│ │ │ │ └── org
│ │ │ │ └── eclipse
│ │ │ │ └── dsp
│ │ │ │ └── generation
│ │ │ │ ├── transformer
│ │ │ │ └── SchemaTypeTransformer.java
│ │ │ │ ├── jsom
│ │ │ │ ├── SchemaModel.java
│ │ │ │ ├── JsonTypes.java
│ │ │ │ ├── JsonSchemaKeywords.java
│ │ │ │ ├── ElementDefinition.java
│ │ │ │ ├── SchemaPropertyReference.java
│ │ │ │ └── JsonTypeMappings.java
│ │ │ │ ├── SchemaTableGeneratorPluginExtension.java
│ │ │ │ └── SchemaTableGeneratorPlugin.java
│ │ └── test
│ │ │ └── java
│ │ │ └── org
│ │ │ └── eclipse
│ │ │ └── dsp
│ │ │ └── generation
│ │ │ ├── jsom
│ │ │ ├── JsonTypesTest.java
│ │ │ ├── JsomParserTest.java
│ │ │ └── SchemaTypeTest.java
│ │ │ └── transformer
│ │ │ └── HtmlTableTransformerTest.java
│ ├── build.gradle.kts
│ └── README.md
├── build.gradle.kts
└── gradlew.bat
├── specifications
├── catalog
│ └── README.md
├── transfer
│ ├── README.md
│ └── figures
│ │ ├── pull-transfer-process.png
│ │ ├── push-transfer-process.png
│ │ ├── transfer-process-state-machine.png
│ │ ├── transfer-process-state-machine.puml
│ │ ├── push-transfer-process.puml
│ │ └── pull-transfer-process.puml
├── negotiation
│ ├── README.md
│ └── figures
│ │ ├── contract.negotiation.state.machine.png
│ │ └── contract.negotiation.state.machine.puml
└── common
│ ├── scope.md
│ ├── type.definitions.md
│ ├── style
│ └── diagram.styles.puml
│ └── introduction.md
├── CODE_OF_CONDUCT.md
├── .gitattributes
├── .gitignore
├── .github
├── actions
│ └── setup-java
│ │ └── action.yaml
├── ISSUE_TEMPLATE
│ ├── config.yml
│ ├── feature-request.md
│ └── bug-report.md
├── scripts
│ ├── index.html
│ └── checkout-tags.sh
├── workflows
│ ├── pr-check.yml
│ └── autopublish.yaml
└── PULL_REQUEST_TEMPLATE.md
├── README.md
├── PR_ETIQUETTE.md
└── WEBSITE.md
/artifacts/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | rootProject.name = "artifacts"
2 |
--------------------------------------------------------------------------------
/artifacts/README.md:
--------------------------------------------------------------------------------
1 | # dsp-schemas
2 | Tools for defining and generating DSP schemas
3 |
--------------------------------------------------------------------------------
/specifications/catalog/README.md:
--------------------------------------------------------------------------------
1 | Please find the schema files and examples [here](../../artifacts/src/main/resources/catalog/).
--------------------------------------------------------------------------------
/specifications/transfer/README.md:
--------------------------------------------------------------------------------
1 | Please find the schema files and examples [here](../../artifacts/src/main/resources/transfer/).
--------------------------------------------------------------------------------
/specifications/negotiation/README.md:
--------------------------------------------------------------------------------
1 | Please find the schema files and examples [here](../../artifacts/src/main/resources/negotiation/).
--------------------------------------------------------------------------------
/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Code of Conduct
2 |
3 | See the [Eclipse Code Of Conduct](https://www.eclipse.org/org/documents/Community_Code_of_Conduct.php).
--------------------------------------------------------------------------------
/artifacts/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eclipse-dataspace-protocol-base/DataspaceProtocol/HEAD/artifacts/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | #
2 | # https://help.github.com/articles/dealing-with-line-endings/
3 | #
4 | # These are explicitly windows files and should use crlf
5 | *.bat text eol=crlf
6 |
7 |
--------------------------------------------------------------------------------
/specifications/transfer/figures/pull-transfer-process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eclipse-dataspace-protocol-base/DataspaceProtocol/HEAD/specifications/transfer/figures/pull-transfer-process.png
--------------------------------------------------------------------------------
/specifications/transfer/figures/push-transfer-process.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eclipse-dataspace-protocol-base/DataspaceProtocol/HEAD/specifications/transfer/figures/push-transfer-process.png
--------------------------------------------------------------------------------
/specifications/transfer/figures/transfer-process-state-machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eclipse-dataspace-protocol-base/DataspaceProtocol/HEAD/specifications/transfer/figures/transfer-process-state-machine.png
--------------------------------------------------------------------------------
/artifacts/src/main/resources/catalog/example/catalog-request-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "CatalogRequestMessage",
6 | "filter": []
7 | }
8 |
--------------------------------------------------------------------------------
/specifications/negotiation/figures/contract.negotiation.state.machine.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eclipse-dataspace-protocol-base/DataspaceProtocol/HEAD/specifications/negotiation/figures/contract.negotiation.state.machine.png
--------------------------------------------------------------------------------
/artifacts/src/main/resources/catalog/example/dataset-request-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "DatasetRequestMessage",
6 | "dataset": "urn:uuid:3afeadd8-ed2d-569e-d634-8394a8836d57"
7 | }
8 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/catalog/example/catalog-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "CatalogError",
6 | "code": "123-A",
7 | "reason": [
8 | "Catalog not provisioned for this requester."
9 | ]
10 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | *.log
2 | # Package Files #
3 | *.jar
4 | *.war
5 | *.nar
6 | *.ear
7 | *.zip
8 | *.tar.gz
9 | *.rar
10 |
11 | .idea
12 | *.iml
13 | .vs
14 | .vscode
15 |
16 | /secrets
17 | **/secrets
18 |
19 | .DS_Store
20 | .env
21 |
22 | /message
23 | /2024-1
24 | /v0.8
25 | /figures
26 | /HEAD
--------------------------------------------------------------------------------
/artifacts/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | #Fri Oct 25 08:20:36 CEST 2024
2 | distributionBase=GRADLE_USER_HOME
3 | distributionPath=wrapper/dists
4 | distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-bin.zip
5 | zipStoreBase=GRADLE_USER_HOME
6 | zipStorePath=wrapper/dists
7 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/common/example/catalogservice-did-service.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld",
4 | "https://www.w3.org/ns/did/v1"
5 | ],
6 | "id":"some:id",
7 | "type": "CatalogService",
8 | "serviceEndpoint": "https://bar.example.com/some/path/catalog"
9 | }
--------------------------------------------------------------------------------
/.github/actions/setup-java/action.yaml:
--------------------------------------------------------------------------------
1 | name: "Setup JDK 17"
2 | description: "Setup JDK 17"
3 | runs:
4 | using: "composite"
5 | steps:
6 | - name: Setup JDK 17
7 | uses: actions/setup-java@v4.1.0
8 | with:
9 | java-version: '17'
10 | distribution: 'temurin'
11 | cache: 'gradle'
12 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/common/example/dataservice-did-service.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld",
4 | "https://www.w3.org/ns/did/v1"
5 | ],
6 | "id":"some:id",
7 | "type": "DataService",
8 | "serviceEndpoint": "https://bar.example.com/some/path/.well-known/dspace-version"
9 | }
--------------------------------------------------------------------------------
/artifacts/src/main/resources/transfer/example/transfer-completion-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "TransferCompletionMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833"
8 | }
9 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/transfer/example/transfer-process.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "TransferProcess",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "state": "REQUESTED"
9 | }
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-agreement-verification-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractAgreementVerificationMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833"
8 | }
9 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-negotiation.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractNegotiation",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "state": "REQUESTED"
9 | }
10 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-negotiation-event-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractNegotiationEventMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "eventType": "ACCEPTED"
9 | }
10 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/transfer/example/transfer-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "TransferError",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "code": "99",
9 | "reason": [
10 | "Internal error"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/transfer/example/transfer-suspension-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"],
4 | "@type": "TransferSuspensionMessage",
5 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
6 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
7 | "code": "99",
8 | "reason": [
9 | "Policy violation"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/transfer/example/transfer-termination-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "TransferTerminationMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "code": "99",
9 | "reason": [
10 | "Policy violation"
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-negotiation-error.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractNegotiationError",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "code": "99",
9 | "reason": [
10 | "Catalog not provisioned for this requester."
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-negotiation-termination-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractNegotiationTerminationMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "code": "99",
9 | "reason": [
10 | "License model does not fit."
11 | ]
12 | }
13 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/config.yml:
--------------------------------------------------------------------------------
1 | ---
2 | blank_issues_enabled: false
3 | contact_links:
4 | - name: Ask a question or get support
5 | url: https://github.com/eclipse-dataspace-protocol-base/DataspaceProtocol/discussions
6 | about: Ask a question or request support for using the Dataspace Protocol
7 | - name: Take a look at the best practices
8 | url: https://github.com/eclipse-dataspace-protocol-base/dsp_best_practices
9 | about: Browse the best practices documents for more information
--------------------------------------------------------------------------------
/.github/scripts/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
8 |
9 |
10 |
11 | This redirects to the latest Release Candidate here
12 |
13 |
14 |
--------------------------------------------------------------------------------
/.github/workflows/pr-check.yml:
--------------------------------------------------------------------------------
1 | name: Check Pull Request
2 |
3 | on:
4 | pull_request:
5 | branches: [ main ]
6 | types: [opened, edited, synchronize, reopened]
7 |
8 | jobs:
9 | trigger-workflow:
10 | uses: eclipse-dataspace-protocol-base/.github/.github/workflows/scan-pr-title.yml@main
11 | run-tests:
12 | name: gradle
13 | runs-on: ubuntu-22.04
14 | steps:
15 | - uses: actions/checkout@v4
16 | - uses: ./.github/actions/setup-java
17 | - name: run
18 | run: |
19 | cd artifacts
20 | chmod +x ./gradlew
21 | ./gradlew build
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-offer-message_initial.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractOfferMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "offer": {
8 | "@type": "Offer",
9 | "@id": "urn:uuid:d526561f-528e-4d5a-ae12-9a9dd9b7a518",
10 | "target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88",
11 | "permission": [
12 | {
13 | "action": "use"
14 | }
15 | ]
16 | },
17 | "callbackAddress": "https://example.com/callback"
18 | }
19 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-request-message_initial.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractRequestMessage",
6 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
7 | "offer": {
8 | "@type": "Offer",
9 | "@id": "urn:uuid:2828282:3dd1add8-4d2d-569e-d634-8394a8836a89",
10 | "target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88",
11 | "permission": [
12 | {
13 | "action": "use"
14 | }
15 | ]
16 | },
17 | "callbackAddress": "https://example.com/callback"
18 | }
19 |
--------------------------------------------------------------------------------
/.github/PULL_REQUEST_TEMPLATE.md:
--------------------------------------------------------------------------------
1 | ## What this PR changes/adds
2 |
3 | _Briefly describe WHAT your PR changes, which features it adds/modifies._
4 |
5 | ## Why it does that
6 |
7 | _Briefly state why the change was necessary._
8 |
9 | ## Further notes
10 |
11 | _List other areas of the documents that have changed but are not necessarily linked to the main feature. This could be editorial changes or mistakes in example files that were encountered and were fixed inline, etc._
12 |
13 | ## Linked Issue(s)
14 |
15 | Closes # <-- _insert issue number if one exists_
16 |
17 | _Please be sure to take a look at the [contributing guidelines](../CONTRIBUTING.md#submit-a-pull-request) and our [etiquette for pull requests](../PR_ETIQUETTE.md)._
--------------------------------------------------------------------------------
/artifacts/src/main/resources/common/context-schema.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://json-schema.org/draft/2019-09/schema",
3 | "title": "ContextSchema",
4 | "type": "array",
5 | "items": {
6 | "type": "string"
7 | },
8 | "allOf": [
9 | {
10 | "$ref": "#/definitions/ContextSchema"
11 | }
12 | ],
13 | "$id": "https://w3id.org/dspace/2025/1/common/context-schema.json",
14 | "definitions": {
15 | "ContextSchema": {
16 | "type": "array",
17 | "items": {
18 | "type": "string",
19 | "items": {
20 | "type": "string"
21 | }
22 | },
23 | "contains": {
24 | "const": "https://w3id.org/dspace/2025/1/context.jsonld"
25 | }
26 | }
27 | }
28 | }
--------------------------------------------------------------------------------
/artifacts/.gitignore:
--------------------------------------------------------------------------------
1 | .gradle
2 | build/
3 | !gradle/wrapper/gradle-wrapper.jar
4 | !**/src/main/**/build/
5 | !**/src/test/**/build/
6 |
7 | ### IntelliJ IDEA ###
8 | .idea/modules.xml
9 | .idea/jarRepositories.xml
10 | .idea/compiler.xml
11 | .idea/libraries/
12 | *.iws
13 | *.iml
14 | *.ipr
15 | .idea
16 | out/
17 | !**/src/main/**/out/
18 | !**/src/test/**/out/
19 |
20 | ### Eclipse ###
21 | .apt_generated
22 | .classpath
23 | .factorypath
24 | .project
25 | .settings
26 | .springBeans
27 | .sts4-cache
28 | bin/
29 | !**/src/main/**/bin/
30 | !**/src/test/**/bin/
31 |
32 | ### NetBeans ###
33 | /nbproject/private/
34 | /nbbuild/
35 | /dist/
36 | /nbdist/
37 | /.nb-gradle/
38 |
39 | ### VS Code ###
40 | .vscode/
41 |
42 | ### Mac OS ###
43 | .DS_Store
44 |
45 |
46 |
--------------------------------------------------------------------------------
/artifacts/config/checkstyle/suppressions.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
16 |
17 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/transfer/example/transfer-start-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "TransferStartMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "dataAddress": {
9 | "@type": "DataAddress",
10 | "endpointType": "https://w3id.org/idsa/v4.1/HTTP",
11 | "endpoint": "http://example.com",
12 | "endpointProperties": [
13 | {
14 | "@type": "EndpointProperty",
15 | "name": "authorization",
16 | "value": "TOKEN-ABCDEFG"
17 | },
18 | {
19 | "@type": "EndpointProperty",
20 | "name": "authType",
21 | "value": "bearer"
22 | }
23 | ]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-offer-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractOfferMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "offer": {
9 | "@type": "Offer",
10 | "@id": "urn:uuid:6bcea82e-c509-443d-ba8c-8eef25984c07",
11 | "target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88",
12 | "permission": [
13 | {
14 | "action": "use",
15 | "constraint": [
16 | {
17 | "leftOperand": "dateTime",
18 | "operator": "lteq",
19 | "rightOperand": "2023-12-31T06:00Z"
20 | }
21 | ]
22 | }
23 | ]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/negotiation/example/contract-request-message.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@type": "ContractRequestMessage",
6 | "providerPid": "urn:uuid:a343fcbf-99fc-4ce8-8e9b-148c97605aab",
7 | "consumerPid": "urn:uuid:32541fe6-c580-409e-85a8-8a9a32fbe833",
8 | "offer": {
9 | "@type": "Offer",
10 | "@id": "urn:uuid:d526561f-528e-4d5a-ae12-9a9dd9b7a815",
11 | "target": "urn:uuid:3dd1add8-4d2d-569e-d634-8394a8836a88",
12 | "permission": [
13 | {
14 | "action": "use",
15 | "constraint": [
16 | {
17 | "leftOperand": "dateTime",
18 | "operator": "lteq",
19 | "rightOperand": "2023-12-31T06:00Z"
20 | }
21 | ]
22 | }
23 | ]
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/feature-request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature Request
3 | about: Help us with new ideas
4 | title: ''
5 | labels: [ "feature_request", "triage" ]
6 | assignees: ''
7 |
8 | ---
9 |
10 | # Feature Request
11 |
12 | _If you are missing a feature or have an idea how to improve this project that should first be discussed, please feel free to open up a [discussion](https://github.com/eclipse-dataspace-protocol-base/DataspaceProtocol/discussions/new)._
13 |
14 | ## Which Areas Would Be Affected?
15 |
16 | _e.g., data offering, policy negotiation, data transfer, etc._
17 |
18 | **Type**: `normative` / `non-normative` _<-- please specify the affected scope_
19 |
20 | ## Why Is the Feature Desired?
21 |
22 | _Are there any requirements?_
23 |
24 | ## Solution Proposal
25 |
26 | _If possible, provide a (brief!) solution proposal._
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/bug-report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug Report
3 | about: Create a report to help us improve
4 | title: ''
5 | labels: [ "bug_report", "triage" ]
6 | assignees: ''
7 |
8 | ---
9 |
10 | # Bug Report
11 |
12 | ## Describe the Bug
13 |
14 | _A clear and concise description of the bug._
15 |
16 | **Type**: `normative` / `non-normative` _<-- please specify the affected scope_
17 |
18 | ### Expected Behavior
19 |
20 | _A clear and concise description of what you expected to happen._
21 |
22 | ### Observed Behavior
23 |
24 | _A clear and concise description of what happened instead._
25 |
26 | ### Detailed Description
27 |
28 | _If applicable, add some context information to help explain your problem._
29 |
30 | ## Possible Implementation
31 |
32 | _You already know the root cause of the erroneous state and how to fix it? Feel free to share your thoughts._
--------------------------------------------------------------------------------
/artifacts/src/test/java/org/eclipse/dsp/DspConstants.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2024 Metaform Systems, Inc.
3 | *
4 | * This program and the accompanying materials are made available under the
5 | * terms of the Apache License, Version 2.0 which is available at
6 | * https://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * SPDX-License-Identifier: Apache-2.0
9 | *
10 | * Contributors:
11 | * Metaform Systems, Inc. - initial API and implementation
12 | *
13 | */
14 |
15 | package org.eclipse.dsp;
16 |
17 | /**
18 | * Defines constants for schema validation.
19 | */
20 | public interface DspConstants {
21 |
22 | String DSP_CONTEXT = "https://w3id.org/dspace/2025/1/context.jsonld";
23 | String ODRL_PROFILE_CONTEXT = "https://w3id.org/dspace/2025/1/odrl-profile.jsonld";
24 | String DSP_PREFIX = "https://w3id.org/dspace/2025/1/";
25 |
26 |
27 | }
28 |
--------------------------------------------------------------------------------
/artifacts/src/main/resources/catalog/example/nested-catalog.json:
--------------------------------------------------------------------------------
1 | {
2 | "@context": [
3 | "https://w3id.org/dspace/2025/1/context.jsonld"
4 | ],
5 | "@id": "urn:uuid:3afeadd8-ed2d-569e-d634-8394a8836d57",
6 | "@type": "Catalog",
7 | "participantId": "urn:example:DataProviderA",
8 | "catalog": [
9 | {
10 | "@id": "02e83f88-f025-4a1c-89f2-8723c98fa92b",
11 | "@type": "Catalog",
12 | "distribution": [
13 | {
14 | "@type": "Distribution",
15 | "format": "Catalog",
16 | "accessService": "urn:uuid:4aa2dcc8-4d2d-569e-d634-8394a8834d77"
17 | }
18 | ],
19 | "service": [
20 | {
21 | "@id": "urn:uuid:4aa2dcc8-4d2d-569e-d634-8394a8834d77",
22 | "@type": "DataService",
23 | "endpointURL": "https://provder-a.com/subcatalog"
24 | }
25 | ]
26 | }
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/specifications/common/scope.md:
--------------------------------------------------------------------------------
1 | # Scope
2 |
3 | Sharing data between autonomous entities requires the provision of metadata to facilitate the transfer of [=Datasets=] by making use of a data transfer (or application layer) protocol.
4 |
5 | This document gives guidance of how this metadata is provisioned:
6 |
7 | * This document specifies how [=Datasets=] are advertised via [=Catalogs=] (reusing terminology from [[?vocab-dcat-3]]).
8 | * This document specifies how data usage requirements are expressed as [=Policies=] (reusing terminology from [[?odrl-model]] vocabulary).
9 | * This document specifies how [=Agreements=] that govern data usage are syntactically expressed and electronically negotiated during a [=Contract Negotiation=].
10 | * This document specifies how [=Datasets=] are accessed using [=Transfer Process Protocols=].
11 |
12 | This document does not apply to the [=Data Transfer Protocol=].
--------------------------------------------------------------------------------
/artifacts/buildSrc/src/main/java/org/eclipse/dsp/generation/transformer/SchemaTypeTransformer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (c) 2024 Metaform Systems, Inc.
3 | *
4 | * This program and the accompanying materials are made available under the
5 | * terms of the Apache License, Version 2.0 which is available at
6 | * https://www.apache.org/licenses/LICENSE-2.0
7 | *
8 | * SPDX-License-Identifier: Apache-2.0
9 | *
10 | * Contributors:
11 | * Metaform Systems, Inc. - initial API and implementation
12 | *
13 | */
14 |
15 | package org.eclipse.dsp.generation.transformer;
16 |
17 | import org.eclipse.dsp.generation.jsom.SchemaType;
18 | import org.jetbrains.annotations.NotNull;
19 |
20 | /**
21 | * Transforms a {@link SchemaType} to an output format.
22 | */
23 | public interface SchemaTypeTransformer