From b64a9045673f3ce88f211b01971f791697db5ecc Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Mon, 4 Nov 2024 16:49:52 +0100 Subject: [PATCH 01/36] Add files and Update README for the Data-Exchange tutorial --- .github/workflows/helm-checks.yaml | 12 +- charts/umbrella/Chart.yaml | 10 +- charts/umbrella/README.md | 25 +- ...alues-adopter-data-exchange-iatp-mock.yaml | 244 +++++ .../values-adopter-data-exchange.yaml | 153 +-- charts/umbrella/values-adopter-portal.yaml | 7 +- charts/umbrella/values.yaml | 164 ++- .../values-test-data-exchange-iatp-mock.yaml | 131 +++ charts/values-test-data-exchange.yaml | 55 +- charts/values-test-shared-services-1.yaml | 9 +- docs/README.md | 17 + docs/api/API_Doc.md | 21 + docs/api/curl/UmbrellaConectorDataExchange.md | 221 ++++ ...ectorData-Exchange.postman_collection.json | 984 ++++++++++++++++++ 14 files changed, 1830 insertions(+), 223 deletions(-) create mode 100644 charts/umbrella/values-adopter-data-exchange-iatp-mock.yaml create mode 100644 charts/values-test-data-exchange-iatp-mock.yaml create mode 100644 docs/README.md create mode 100644 docs/api/API_Doc.md create mode 100644 docs/api/curl/UmbrellaConectorDataExchange.md create mode 100644 docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json diff --git a/.github/workflows/helm-checks.yaml b/.github/workflows/helm-checks.yaml index 43c0e357..8734d8a7 100644 --- a/.github/workflows/helm-checks.yaml +++ b/.github/workflows/helm-checks.yaml @@ -183,13 +183,21 @@ jobs: helm dep up charts/tx-data-provider helm dep up charts/umbrella helm install umbrella charts/umbrella --namespace data-exchange --create-namespace --debug --timeout 10m \ - -f charts/values-test-data-exchange.yaml -f charts/values-test-iam-init-container.yaml \ + -f charts/values-test-data-exchange.yaml + helm uninstall umbrella --namespace data-exchange + + - name: Install chart for data exchange with iatp-mock (umbrella) + run: | + helm dep up charts/tx-data-provider + helm dep up charts/umbrella + helm install umbrella charts/umbrella --namespace data-exchange --create-namespace --debug --timeout 10m \ + -f charts/values-test-data-exchange-iatp-mock.yaml -f charts/values-test-iam-init-container.yaml \ --set iatpmock.image.repository=kind-registry:5000/iatp-mock --set iatpmock.image.tag=testing helm uninstall umbrella --namespace data-exchange - name: Install chart for shared services one (umbrella) run: | - helm install umbrella charts/umbrella -f charts/values-test-shared-services-1.yaml -f charts/values-test-iam-init-container.yaml --namespace shared-services --create-namespace --debug --timeout 10m --set iatpmock.image.repository=kind-registry:5000/iatp-mock --set iatpmock.image.tag=testing + helm install umbrella charts/umbrella -f charts/values-test-shared-services-1.yaml -f charts/values-test-iam-init-container.yaml --namespace shared-services --create-namespace --debug --timeout 10m helm uninstall umbrella --namespace shared-services - name: Install chart for shared services two (umbrella) diff --git a/charts/umbrella/Chart.yaml b/charts/umbrella/Chart.yaml index 3073bb2d..edfb27a4 100644 --- a/charts/umbrella/Chart.yaml +++ b/charts/umbrella/Chart.yaml @@ -28,8 +28,7 @@ sources: - https://github.com/eclipse-tractusx/tractus-x-umbrella type: application - -version: 1.1.1 +version: 2.0.0 # when adding or updating versions of dependencies, also update list under README.md#Install dependencies: @@ -37,7 +36,7 @@ dependencies: - condition: portal.enabled name: portal repository: https://eclipse-tractusx.github.io/charts/dev - version: 2.0.0 + version: 2.2.0 # cx-iam - condition: centralidp.enabled name: centralidp @@ -110,3 +109,8 @@ dependencies: version: 0.1.0 repository: file://charts/iatpmock condition: iatpmock.enabled + # ssi-dim-wallet-stub + - name: ssi-dim-wallet-stub + repository: https://eclipse-tractusx.github.io/charts/dev + version: 0.1.2 + condition: ssi-dim-wallet-stub.enabled diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index ea95f5f8..348ac6cf 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -42,7 +42,7 @@ The Chart aims for a completely automated setup of a fully functional network, t The versions of integrated components correspond to the **overarching [Release 24.05](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.05/CHANGELOG.md#2405---2024-05-29)**. -:warning: The 24.05 Release does not include a Managed Identity Wallet (MIW) - aka the FOSS Wallet of Tractus-X - as it was not yet able to cover functionalities required for the Self-Sovereign Identity Flow introduced with R24.05. To test and ship R24.05, a commercial solution was used: the Decentralized Identity Management (DIM) Wallet. To cover the wallet functionalities in the [E2E Adopter Journey Data exchange](#data-exchange) the [iatp-mock](https://github.com/eclipse-tractusx/tractus-x-umbrella/tree/main/charts/umbrella/charts/iatpmock/Chart.yaml) was added to the umbrella helm chart, please also see [Precondition for IATP Mock](#precondition-for-iatp-mock). For the [E2E Adopter Journey Portal](#portal), there isn't a mock available yet to cover the wallet functionalities. +:warning: The 24.05 Release does not include a Managed Identity Wallet (MIW) - aka the FOSS Wallet of Tractus-X - as it was not yet able to cover functionalities required for the Self-Sovereign Identity Flow introduced with R24.05. To test and ship R24.05, a commercial solution was used: the Decentralized Identity Management (DIM) Wallet. To cover the wallet functionalities in the [E2E Adopter Journey Data exchange](#data-exchange) and [E2E Adopter Journey Portal](#portal), the [SSI DIM WALLET STUB](https://github.com/eclipse-tractusx/ssi-dim-wallet-stub/tree/main/charts/ssi-dim-wallet-stub) was added to the umbrella helm chart. ## Usage @@ -256,6 +256,7 @@ Collection of hosts to be added to the `/etc/hosts` (Linux and Mac) or the `C:\W 192.168.49.2 iatpmock.tx.test 192.168.49.2 business-partners.tx.test 192.168.49.2 pgadmin4.tx.test +192.168.49.2 ssi-dim-wallet-stub.tx.test ``` Replace `192.168.49.2` with your `minikube ip` if it differs. @@ -287,6 +288,7 @@ The currently available components are following: - [bdrs](https://github.com/eclipse-tractusx/bpn-did-resolution-service/tree/0.0.4) (**in memory** - no persistance possible) - [iatp-mock](https://github.com/eclipse-tractusx/tractus-x-umbrella/tree/main/charts/umbrella/charts/iatpmock/Chart.yaml) - [bpdm](https://github.com/eclipse-tractusx/bpdm/tree/release/6.0.x) +- [ssi-dim-wallet-stub](https://github.com/eclipse-tractusx/ssi-dim-wallet-stub/releases/tag/ssi-dim-wallet-stub-0.1.2) > :warning: **Note** > @@ -449,6 +451,12 @@ dataconsumerTwo: helm upgrade -f values-adopter-data-exchange.yaml umbrella . --namespace umbrella ``` +*iatp-mock Version* + +```bash +helm install -f values-adopter-data-exchange-iatp-mock.yaml umbrella . --namespace umbrella --create-namespace +``` + **Portal Subset** ```bash @@ -463,9 +471,19 @@ helm install -f values-adopter-portal.yaml umbrella . --namespace umbrella --cre Involved components: -EDC, MIW, DTR, Vault (data provider and consumer in tx-data-provider), CentralIdP. +CentralIdP, DBRS-Server-Memory, Data Consumer, Data Provider, SSI Credential Issuer, SSI Dim Wallet Stub. + +To start the Data Exchange, it is necessary to execute the involved components: +``` +helm install -f values-adopter-data-exchange.yaml umbrella . --namespace umbrella --create-namespace +``` +There are two ways to test and execute the Data Exchange: + +**1. Postman** +You can import the Umbrella [Postman Collection](../../docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json) -TBD. +**2. Curl** +You can follow the [Curl Steps](../../docs/api/curl/UmbrellaConectorDataExchange.md) #### Get to know the Portal @@ -587,6 +605,7 @@ Currently enabled ingresses: - http://bdrs-server.tx.test - http://iatpmock.tx.test - http://pgadmin4.tx.test +- http://ssi-dim-wallet-stub.tx.test ### Database Access diff --git a/charts/umbrella/values-adopter-data-exchange-iatp-mock.yaml b/charts/umbrella/values-adopter-data-exchange-iatp-mock.yaml new file mode 100644 index 00000000..8c6223a3 --- /dev/null +++ b/charts/umbrella/values-adopter-data-exchange-iatp-mock.yaml @@ -0,0 +1,244 @@ +# ############################################################################# +# Copyright (c) 2024 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0. +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +# ############################################################################# +--- + +centralidp: + enabled: true + +iatpmock: + enabled: true + ingress: + enabled: true + hosts: + - host: iatpmock.tx.test + paths: + - path: / + pathType: ImplementationSpecific + +bdrs-server-memory: + enabled: true + seeding: + bpnList: + - bpn: "BPNL00000003B3NX" + did: "did:web:mock-util-service/BPNL00000003B3NX" + - bpn: "BPNL00000003CSGV" + did: "did:web:mock-util-service/BPNL00000003CSGV" + - bpn: "BPNL00000003B6LU" + did: "did:web:mock-util-service/BPNL00000003B6LU" + - bpn: "BPNL00000003AXS3" + did: "did:web:mock-util-service/BPNL00000003AXS3" + - bpn: "BPNL00000003AZQP" + did: "did:web:mock-util-service/BPNL00000003AZQP" + - bpn: "BPNL00000003AWSS" + did: "did:web:mock-util-service/BPNL00000003AWSS" + - bpn: "BPNL00000003AYRE" + did: "did:web:mock-util-service/BPNL00000003AYRE" + - bpn: "BPNL00000003AVTH" + did: "did:web:mock-util-service/BPNL00000003AVTH" + - bpn: "BPNL00000000BJTL" + did: "did:web:mock-util-service/BPNL00000000BJTL" + - bpn: "BPNL00000003CML1" + did: "did:web:mock-util-service/BPNL00000003CML1" + - bpn: "BPNL00000003B2OM" + did: "did:web:mock-util-service/BPNL00000003B2OM" + - bpn: "BPNL00000003B0Q0" + did: "did:web:mock-util-service/BPNL00000003B0Q0" + - bpn: "BPNL00000003B5MJ" + did: "did:web:mock-util-service/BPNL00000003B5MJ" + - bpn: "BPNS0000000008ZZ" + did: "did:web:mock-util-service/BPNS0000000008ZZ" + - bpn: "BPNL00000003CNKC" + did: "did:web:mock-util-service/BPNL00000003CNKC" + - bpn: "BPNS00000008BDFH" + did: "did:web:mock-util-service/BPNS00000008BDFH" + + hostname: &hostname bdrs-server.tx.test + server: + trustedIssuers: + - did:web:mock-util-service/trusted-issuer + ingresses: + - enabled: true + hostname: *hostname + endpoints: + - directory + - management + tls: + enabled: false + +dataconsumerOne: + enabled: true + secrets: + edc-wallet-secret: UbfW4CR1xH4OskkovqJ2JzcwnQIrG7oj + tractusx-connector: + participant: + id: BPNL00000003AZQP + iatp: + id: did:web:mock-util-service/BPNL00000003AZQP + trustedIssuers: + - did:web:mock-util-service/trusted-issuer + sts: + dim: + url: http://mock-util-service/sts + oauth: + token_url: http://centralidp.tx.test/auth/realms/CX-Central/protocol/openid-connect/token + client: + id: satest01 + controlplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + endpoints: + management: + authKey: TEST1 + ingresses: + - enabled: true + hostname: "dataconsumer-1-controlplane.tx.test" + endpoints: + - default + - protocol + - management + tls: + enabled: false + dataplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + ingresses: + - enabled: true + hostname: "dataconsumer-1-dataplane.tx.test" + endpoints: + - default + - public + tls: + enabled: false + # -- uncomment the following for persistence + # postgresql: + # primary: + # persistence: + # enabled: true + +tx-data-provider: + seedTestdata: true + enabled: true + secrets: + edc-wallet-secret: pyFUZP2L9UCSVJUScHcN3ZEgy2PGyEpg + tractusx-connector: + participant: + id: BPNL00000003AYRE + iatp: + id: did:web:mock-util-service/BPNL00000003AYRE + trustedIssuers: + - did:web:mock-util-service/trusted-issuer + sts: + dim: + url: http://mock-util-service/sts + oauth: + token_url: http://centralidp.tx.test/auth/realms/CX-Central/protocol/openid-connect/token + client: + id: satest02 + controlplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + endpoints: + management: + authKey: TEST2 + ingresses: + - enabled: true + hostname: "dataprovider-controlplane.tx.test" + endpoints: + - default + - protocol + - management + tls: + enabled: false + dataplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + ingresses: + - enabled: true + hostname: "dataprovider-dataplane.tx.test" + endpoints: + - default + - public + tls: + enabled: false + # -- uncomment the following for persistence + # postgresql: + # primary: + # persistence: + # enabled: true + # digital-twin-registry: + # postgresql: + # primary: + # persistence: + # enabled: true + +dataconsumerTwo: + enabled: false + secrets: + edc-wallet-secret: tPwy4exxH1sXBRQouobSA2nNVaaPuwCs + tractusx-connector: + participant: + id: BPNL00000003AVTH + iatp: + id: did:web:mock-util-service/BPNL00000003AVTH + trustedIssuers: + - did:web:mock-util-service/trusted-issuer + sts: + dim: + url: http://mock-util-service/sts + oauth: + token_url: http://centralidp.tx.test/auth/realms/CX-Central/protocol/openid-connect/token + client: + id: satest03 + controlplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + endpoints: + management: + authKey: TEST3 + ingresses: + - enabled: true + hostname: "dataconsumer-2-controlplane.tx.test" + endpoints: + - default + - protocol + - management + tls: + enabled: false + dataplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + ingresses: + - enabled: true + hostname: "dataconsumer-2-dataplane.tx.test" + endpoints: + - default + - public + tls: + enabled: false + # -- uncomment the following for persistence + # postgresql: + # primary: + # persistence: + # enabled: true + +pgadmin4: + enabled: true + # -- uncomment the following for persistence + # persistentVolume: + # enabled: true diff --git a/charts/umbrella/values-adopter-data-exchange.yaml b/charts/umbrella/values-adopter-data-exchange.yaml index 7d19c2d2..f54a3c27 100644 --- a/charts/umbrella/values-adopter-data-exchange.yaml +++ b/charts/umbrella/values-adopter-data-exchange.yaml @@ -19,88 +19,13 @@ --- centralidp: - enabled: true - keycloak: - ingress: - enabled: true - ingressClassName: "nginx" - hostname: "centralidp.tx.test" - annotations: - nginx.ingress.kubernetes.io/cors-allow-credentials: "true" - nginx.ingress.kubernetes.io/cors-allow-methods: "PUT, GET, POST, OPTIONS" - nginx.ingress.kubernetes.io/cors-allow-origin: "http://centralidp.tx.test" - nginx.ingress.kubernetes.io/enable-cors: "true" - nginx.ingress.kubernetes.io/proxy-buffer-size: "128k" - nginx.ingress.kubernetes.io/proxy-buffering: "on" - nginx.ingress.kubernetes.io/proxy-buffers-number: "20" - nginx.ingress.kubernetes.io/use-regex: "true" - tls: false - # -- uncomment the following for persistence - # postgresql: - # primary: - # persistence: - # enabled: true - -iatpmock: - enabled: true - ingress: - enabled: true - hosts: - - host: iatpmock.tx.test - paths: - - path: / - pathType: ImplementationSpecific + enabled: false bdrs-server-memory: enabled: true - hostname: &hostname bdrs-server.tx.test - server: - ingresses: - - enabled: true - hostname: *hostname - endpoints: - - directory - - management - tls: - enabled: false dataconsumerOne: enabled: true - secrets: - edc-miw-keycloak-secret: UbfW4CR1xH4OskkovqJ2JzcwnQIrG7oj - tractusx-connector: - participant: - id: BPNL00000003AZQP - iatp: - id: did:web:mock-util-service/BPNL00000003AZQP - trustedIssuers: - - did:web:mock-util-service/trusted-issuer - sts: - oauth: - client: - id: satest01 - controlplane: - endpoints: - management: - authKey: TEST1 - ingresses: - - enabled: true - hostname: "dataconsumer-1-controlplane.tx.test" - endpoints: - - default - - protocol - - management - tls: - enabled: false - dataplane: - ingresses: - - enabled: true - hostname: "dataconsumer-1-dataplane.tx.test" - endpoints: - - default - - public - tls: - enabled: false # -- uncomment the following for persistence # postgresql: # primary: @@ -110,41 +35,6 @@ dataconsumerOne: tx-data-provider: seedTestdata: true enabled: true - secrets: - edc-miw-keycloak-secret: pyFUZP2L9UCSVJUScHcN3ZEgy2PGyEpg - tractusx-connector: - participant: - id: BPNL00000003AYRE - iatp: - id: did:web:mock-util-service/BPNL00000003AYRE - trustedIssuers: - - did:web:mock-util-service/trusted-issuer - sts: - oauth: - client: - id: satest02 - controlplane: - endpoints: - management: - authKey: TEST2 - ingresses: - - enabled: true - hostname: "dataprovider-controlplane.tx.test" - endpoints: - - default - - protocol - - management - tls: - enabled: false - dataplane: - ingresses: - - enabled: true - hostname: "dataprovider-dataplane.tx.test" - endpoints: - - default - - public - tls: - enabled: false # -- uncomment the following for persistence # postgresql: # primary: @@ -158,41 +48,6 @@ tx-data-provider: dataconsumerTwo: enabled: false - secrets: - edc-miw-keycloak-secret: tPwy4exxH1sXBRQouobSA2nNVaaPuwCs - tractusx-connector: - participant: - id: BPNL00000003AVTH - iatp: - id: did:web:mock-util-service/BPNL00000003AVTH - trustedIssuers: - - did:web:mock-util-service/trusted-issuer - sts: - oauth: - client: - id: satest03 - controlplane: - endpoints: - management: - authKey: TEST3 - ingresses: - - enabled: true - hostname: "dataconsumer-2-controlplane.tx.test" - endpoints: - - default - - protocol - - management - tls: - enabled: false - dataplane: - ingresses: - - enabled: true - hostname: "dataconsumer-2-dataplane.tx.test" - endpoints: - - default - - public - tls: - enabled: false # -- uncomment the following for persistence # postgresql: # primary: @@ -204,3 +59,9 @@ pgadmin4: # -- uncomment the following for persistence # persistentVolume: # enabled: true + +ssi-credential-issuer: + enabled: false + +ssi-dim-wallet-stub: + enabled: true diff --git a/charts/umbrella/values-adopter-portal.yaml b/charts/umbrella/values-adopter-portal.yaml index aa17bc10..030380e0 100644 --- a/charts/umbrella/values-adopter-portal.yaml +++ b/charts/umbrella/values-adopter-portal.yaml @@ -52,6 +52,7 @@ pgadmin4: # Interfaces are disabled by default (other than IAM) +# Set 'enabled' to true if onboarding is required bpdm: enabled: false @@ -64,8 +65,10 @@ bpndiscovery: discoveryfinder: enabled: false -iatpmock: +# Set 'enabled' to true if onboarding is required +ssi-credential-issuer: enabled: false -ssi-credential-issuer: +# Set 'enabled' to true if onboarding is required +ssi-dim-wallet-stub: enabled: false diff --git a/charts/umbrella/values.yaml b/charts/umbrella/values.yaml index 283d64d9..1daaca38 100644 --- a/charts/umbrella/values.yaml +++ b/charts/umbrella/values.yaml @@ -42,7 +42,11 @@ portal: poolApiPath: "/pool/v6" portalGateAddress: "http://business-partners.tx.test" portalGateApiPath: "/gate/v6" - custodianAddress: "http://managed-identity-wallets.tx.test" + custodianAddress: "http://ssi-dim-wallet-stub.tx.test" + dimWrapper: + baseAddress: "http://ssi-dim-wallet-stub.tx.test" + apiPath: "/api/dim" + decentralIdentityManagementAuthAddress: "http://ssi-dim-wallet-stub.tx.test/api/sts" sdfactoryAddress: "http://sdfactory.tx.test" clearinghouseAddress: "http://validation.tx.test" clearinghouseTokenAddress: "http://keycloak.tx.test/realms/example/protocol/openid-connect/token" @@ -111,7 +115,7 @@ portal: encryptionConfigs: index0: encryptionKey: "deb8261ec7b89c344f1c5ef5a11606e305f14e0d231b1357d90ad0180c5081d3" - issuerdid: "did:web:managed-identity-wallets.tx.test:BPNL00000003CRHK" + issuerdid: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CRHK" swaggerEnabled: true appmarketplace: logging: @@ -128,6 +132,7 @@ portal: default: "Debug" swaggerEnabled: true processesworker: + clearinghouseConnectDisabled: true logging: default: "Debug" processesLibrary: "Debug" @@ -155,8 +160,11 @@ portal: clientId: "sa-cl2-03" clientSecret: "changeme" dim: - clientId: "dim-client-id" - clientSecret: "" + clientId: "sa-cl2-05" + clientSecret: "changeme" + grantType: "client_credentials" + scope: "openid" + baseAddress: "http://ssi-dim-wallet-stub.tx.test" universalResolverAddress: "https://dev.uniresolver.io/" encryptionConfigs: index0: @@ -688,11 +696,11 @@ iatpmock: nameOverride: mock-util-service fullnameOverride: mock-util-service # -- see README ## Precondition for IATP Mock - image: - # override with locally built image if needed, default "tractusx/iatp-mock" - repository: "" - # override tag if needed, default "testing" - tag: "" + # image: + # # override with locally built image if needed, default "tractusx/iatp-mock" + # repository: "" + # # override tag if needed, default "testing" + # tag: "" ingress: enabled: true hosts: @@ -704,8 +712,8 @@ iatpmock: ssi-credential-issuer: enabled: false portalBackendAddress: "http://portal-backend.tx.test" - walletAddress: "http://iatpmock.tx.test" - walletTokenAddress: "https://iatpmock-token-address.tx.test/oauth/token" + walletAddress: "http://ssi-dim-wallet-stub.tx.test" + walletTokenAddress: "http://ssi-dim-wallet-stub.tx.test/oauth/token" issuer: swaggerEnabled: true logging: @@ -718,9 +726,9 @@ ssi-credential-issuer: # -- Client-secret for portal client-id. Secret-key 'portal-client-secret'. clientSecret: "changeme" credential: - issuerDid: "did:web:managed-identity-wallets.tx.test:BPNL00000003CRHK" + issuerDid: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CRHK" issuerBpn: "BPNL00000003CRHK" - # statusListUrl: "https://example.org/statuslist" + statusListUrl: "http://ssi-dim-wallet-stub.tx.test/status-list/BPNL00000003CRHK/8a6c7486-1e1f-4555-bdd2-1a178182651e" encryptionConfigIndex: 0 encryptionConfigs: index0: @@ -769,6 +777,8 @@ ssi-credential-issuer: centralidp: # -- Provide centralidp base address (CX IAM), without trailing '/auth'. address: "http://centralidp.tx.test" + jwtBearerOptions: + requireHttpsMetadata: "false" ingress: enabled: true className: "nginx" @@ -985,26 +995,26 @@ dataconsumerOne: seedTestdata: false nameOverride: dataconsumer-1 secrets: - edc-wallet-secret: UbfW4CR1xH4OskkovqJ2JzcwnQIrG7oj + edc-wallet-secret: changeme tractusx-connector: nameOverride: dataconsumer-1-edc participant: id: BPNL00000003AZQP iatp: - id: did:web:mock-util-service/BPNL00000003AZQP + id: did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AZQP trustedIssuers: - - did:web:mock-util-service/trusted-issuer + - did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CRHK sts: dim: - url: http://mock-util-service/sts + url: http://ssi-dim-wallet-stub.tx.test/api/sts oauth: - token_url: http://centralidp.tx.test/auth/realms/CX-Central/protocol/openid-connect/token + token_url: http://ssi-dim-wallet-stub.tx.test/oauth/token client: - id: satest01 + id: BPNL00000003AZQP secret_alias: edc-wallet-secret controlplane: env: - TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-stub.tx.test/api EDC_IAM_DID_WEB_USE_HTTPS: false bdrs: server: @@ -1024,7 +1034,7 @@ dataconsumerOne: enabled: false dataplane: env: - TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-stub.tx.test/api EDC_IAM_DID_WEB_USE_HTTPS: false ingresses: - enabled: true @@ -1077,26 +1087,26 @@ tx-data-provider: dataplaneUrl: http://{{ .Release.Name }}-dataprovider-edc-dataplane:8081 nameOverride: dataprovider secrets: - edc-wallet-secret: pyFUZP2L9UCSVJUScHcN3ZEgy2PGyEpg + edc-wallet-secret: changeme tractusx-connector: nameOverride: dataprovider-edc participant: id: BPNL00000003AYRE iatp: - id: did:web:mock-util-service/BPNL00000003AYRE + id: did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AYRE trustedIssuers: - - did:web:mock-util-service/trusted-issuer + - did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CRHK sts: dim: - url: http://mock-util-service/sts + url: http://ssi-dim-wallet-stub.tx.test/api/sts oauth: - token_url: http://centralidp.tx.test/auth/realms/CX-Central/protocol/openid-connect/token + token_url: http://ssi-dim-wallet-stub.tx.test/oauth/token client: - id: satest02 + id: BPNL00000003AYRE secret_alias: edc-wallet-secret controlplane: env: - TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-stub.tx.test/api EDC_IAM_DID_WEB_USE_HTTPS: false bdrs: server: @@ -1116,7 +1126,7 @@ tx-data-provider: enabled: false dataplane: env: - TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-stub.tx.test/api EDC_IAM_DID_WEB_USE_HTTPS: false ingresses: - enabled: true @@ -1208,26 +1218,26 @@ dataconsumerTwo: seedTestdata: false nameOverride: dataconsumer-2 secrets: - edc-wallet-secret: tPwy4exxH1sXBRQouobSA2nNVaaPuwCs + edc-wallet-secret: changeme tractusx-connector: nameOverride: dataconsumer-2-edc participant: id: BPNL00000003AVTH iatp: - id: did:web:mock-util-service/BPNL00000003AVTH + id: did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AVTH trustedIssuers: - - did:web:mock-util-service/trusted-issuer + - did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CRHK sts: dim: - url: http://mock-util-service/sts + url: http://ssi-dim-wallet-stub.tx.test/api/sts oauth: - token_url: http://centralidp.tx.test/auth/realms/CX-Central/protocol/openid-connect/token + token_url: http://ssi-dim-wallet-stub.tx.test/oauth/token client: - id: satest03 + id: BPNL00000003AVTH secret_alias: edc-wallet-secret controlplane: env: - TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-stub.tx.test/api EDC_IAM_DID_WEB_USE_HTTPS: false bdrs: server: @@ -1247,7 +1257,7 @@ dataconsumerTwo: enabled: false dataplane: env: - TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-stub.tx.test/api EDC_IAM_DID_WEB_USE_HTTPS: false ingresses: - enabled: true @@ -1314,45 +1324,46 @@ bdrs-server-memory: url: "http://bdrs-server:8081" enabled: true bpnList: + - bpn: "BPNL00000003CRHK" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CRHK" - bpn: "BPNL00000003B3NX" - did: "did:web:mock-util-service/BPNL00000003B3NX" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003B3NX" - bpn: "BPNL00000003CSGV" - did: "did:web:mock-util-service/BPNL00000003CSGV" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CSGV" - bpn: "BPNL00000003B6LU" - did: "did:web:mock-util-service/BPNL00000003B6LU" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003B6LU" - bpn: "BPNL00000003AXS3" - did: "did:web:mock-util-service/BPNL00000003AXS3" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AXS3" - bpn: "BPNL00000003AZQP" - did: "did:web:mock-util-service/BPNL00000003AZQP" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AZQP" - bpn: "BPNL00000003AWSS" - did: "did:web:mock-util-service/BPNL00000003AWSS" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AWSS" - bpn: "BPNL00000003AYRE" - did: "did:web:mock-util-service/BPNL00000003AYRE" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AYRE" - bpn: "BPNL00000003AVTH" - did: "did:web:mock-util-service/BPNL00000003AVTH" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003AVTH" - bpn: "BPNL00000000BJTL" - did: "did:web:mock-util-service/BPNL00000000BJTL" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000000BJTL" - bpn: "BPNL00000003CML1" - did: "did:web:mock-util-service/BPNL00000003CML1" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CML1" - bpn: "BPNL00000003B2OM" - did: "did:web:mock-util-service/BPNL00000003B2OM" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003B2OM" - bpn: "BPNL00000003B0Q0" - did: "did:web:mock-util-service/BPNL00000003B0Q0" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003B0Q0" - bpn: "BPNL00000003B5MJ" - did: "did:web:mock-util-service/BPNL00000003B5MJ" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003B5MJ" - bpn: "BPNS0000000008ZZ" - did: "did:web:mock-util-service/BPNS0000000008ZZ" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNS0000000008ZZ" - bpn: "BPNL00000003CNKC" - did: "did:web:mock-util-service/BPNL00000003CNKC" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CNKC" - bpn: "BPNS00000008BDFH" - did: "did:web:mock-util-service/BPNS00000008BDFH" + did: "did:web:ssi-dim-wallet-stub.tx.test:BPNS00000008BDFH" server: trustedIssuers: - - did:web:mock-util-service/trusted-issuer + - did:web:ssi-dim-wallet-stub.tx.test:BPNL00000003CRHK env: EDC_IAM_DID_WEB_USE_HTTPS: false - endpoints: management: authKey: TEST @@ -1365,3 +1376,46 @@ bdrs-server-memory: className: "nginx" tls: enabled: false + +ssi-dim-wallet-stub: + enabled: false + wallet: + replicaCount: 1 + host: ssi-dim-wallet-stub.tx.test + nameSpace: "umbrella" + appName: "ssi-dim-wallet-stub" + configName: "ssi-dim-wallet-config" + serviceName: "ssi-dim-wallet-service" + secretName: "ssi-dim-wallet-secret" + ingressName: "ssi-dim-wallet-ingress" + ingress: + enabled: true + tls: false + urlPrefix: / + className: nginx + annotations: {} + swagger: + ui: + status: true + apiDoc: + status: true + logLevel: "debug" + environment: "default" + baseWalletBpn: "BPNL00000003CRHK" + didHost: "ssi-dim-wallet-stub.tx.test" + stubUrl: "http://ssi-dim-wallet-stub.tx.test" + statusListVcId: "8a6c7486-1e1f-4555-bdd2-1a178182651e" + tokenExpiryTime: "5" + portal: + waitTime: "60" + host: "http://portal-backend.tx.test" + clientId: "sa-cl2-05" + clientSecret: "changeme" + keycloak: + realm: "CX-Central" + authServerUrl: "http://centralidp.tx.test/auth" + service: + type: ClusterIP + port: 8080 + keycloak: + enabled: false diff --git a/charts/values-test-data-exchange-iatp-mock.yaml b/charts/values-test-data-exchange-iatp-mock.yaml new file mode 100644 index 00000000..5331095e --- /dev/null +++ b/charts/values-test-data-exchange-iatp-mock.yaml @@ -0,0 +1,131 @@ +############################################################### +# Copyright (c) 2024 Contributors to the Eclipse Foundation +# +# See the NOTICE file(s) distributed with this work for additional +# information regarding copyright ownership. +# +# This program and the accompanying materials are made available under the +# terms of the Apache License, Version 2.0 which is available at +# https://www.apache.org/licenses/LICENSE-2.0. +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +# License for the specific language governing permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +############################################################### + +centralidp: + enabled: true + realmSeeding: + initContainer: + image: + name: kind-registry:5000/init-container:testing + pullPolicy: Always + +iatpmock: + enabled: true + +bdrs-server-memory: + enabled: true + seeding: + bpnList: + - bpn: "BPNL00000003B3NX" + did: "did:web:mock-util-service/BPNL00000003B3NX" + - bpn: "BPNL00000003CSGV" + did: "did:web:mock-util-service/BPNL00000003CSGV" + - bpn: "BPNL00000003B6LU" + did: "did:web:mock-util-service/BPNL00000003B6LU" + - bpn: "BPNL00000003AXS3" + did: "did:web:mock-util-service/BPNL00000003AXS3" + - bpn: "BPNL00000003AZQP" + did: "did:web:mock-util-service/BPNL00000003AZQP" + - bpn: "BPNL00000003AWSS" + did: "did:web:mock-util-service/BPNL00000003AWSS" + - bpn: "BPNL00000003AYRE" + did: "did:web:mock-util-service/BPNL00000003AYRE" + - bpn: "BPNL00000003AVTH" + did: "did:web:mock-util-service/BPNL00000003AVTH" + - bpn: "BPNL00000000BJTL" + did: "did:web:mock-util-service/BPNL00000000BJTL" + - bpn: "BPNL00000003CML1" + did: "did:web:mock-util-service/BPNL00000003CML1" + - bpn: "BPNL00000003B2OM" + did: "did:web:mock-util-service/BPNL00000003B2OM" + - bpn: "BPNL00000003B0Q0" + did: "did:web:mock-util-service/BPNL00000003B0Q0" + - bpn: "BPNL00000003B5MJ" + did: "did:web:mock-util-service/BPNL00000003B5MJ" + - bpn: "BPNS0000000008ZZ" + did: "did:web:mock-util-service/BPNS0000000008ZZ" + - bpn: "BPNL00000003CNKC" + did: "did:web:mock-util-service/BPNL00000003CNKC" + - bpn: "BPNS00000008BDFH" + did: "did:web:mock-util-service/BPNS00000008BDFH" + + hostname: &hostname bdrs-server.tx.test + server: + trustedIssuers: + - did:web:mock-util-service/trusted-issuer + ingresses: + - enabled: true + hostname: *hostname + endpoints: + - directory + - management + tls: + enabled: false + +dataconsumerOne: + enabled: true + secrets: + edc-wallet-secret: UbfW4CR1xH4OskkovqJ2JzcwnQIrG7oj + tractusx-connector: + iatp: + id: did:web:mock-util-service/BPNL00000003AZQP + trustedIssuers: + - did:web:mock-util-service/trusted-issuer + sts: + dim: + url: http://mock-util-service/sts + oauth: + token_url: http://umbrella-centralidp:80/auth/realms/CX-Central/protocol/openid-connect/token + client: + id: satest01 + controlplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + bdrs: + server: + url: http://bdrs-server:8082/api/directory + dataplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + +tx-data-provider: + enabled: true + secrets: + edc-wallet-secret: pyFUZP2L9UCSVJUScHcN3ZEgy2PGyEpg + tractusx-connector: + iatp: + id: did:web:mock-util-service/BPNL00000003AYRE + trustedIssuers: + - did:web:mock-util-service/trusted-issuer + sts: + dim: + url: http://mock-util-service/sts + oauth: + token_url: http://umbrella-centralidp:80/auth/realms/CX-Central/protocol/openid-connect/token + client: + id: satest02 + controlplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service + bdrs: + server: + url: http://bdrs-server:8082/api/directory + dataplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://mock-util-service diff --git a/charts/values-test-data-exchange.yaml b/charts/values-test-data-exchange.yaml index 876f720f..358fdccf 100644 --- a/charts/values-test-data-exchange.yaml +++ b/charts/values-test-data-exchange.yaml @@ -17,40 +17,73 @@ # SPDX-License-Identifier: Apache-2.0 ############################################################### -centralidp: - enabled: true - realmSeeding: - initContainer: - image: - name: kind-registry:5000/init-container:testing - pullPolicy: Always - -iatpmock: +ssi-dim-wallet-stub: enabled: true + wallet: + nameSpace: "data-exchange" + didHost: "ssi-dim-wallet-service" + stubUrl: "http://ssi-dim-wallet-service" + service: + type: ClusterIP + port: 80 bdrs-server-memory: enabled: true + seeding: + url: "http://bdrs-server:8081" + enabled: true + bpnList: + - bpn: "BPNL00000003CRHK" + did: "did:web:ssi-dim-wallet-service:BPNL00000003CRHK" + - bpn: "BPNL00000003AZQP" + did: "did:web:ssi-dim-wallet-service:BPNL00000003AZQP" + - bpn: "BPNL00000003AYRE" + did: "did:web:ssi-dim-wallet-service:BPNL00000003AYRE" + + server: + trustedIssuers: + - did:web:ssi-dim-wallet-service:BPNL00000003CRHK dataconsumerOne: enabled: true tractusx-connector: iatp: + id: did:web:ssi-dim-wallet-service:BPNL00000003AZQP + trustedIssuers: + - did:web:ssi-dim-wallet-service:BPNL00000003CRHK sts: + dim: + url: http://ssi-dim-wallet-service/api/sts oauth: - token_url: http://umbrella-centralidp:80/auth/realms/CX-Central/protocol/openid-connect/token + token_url: http://ssi-dim-wallet-service/oauth/token controlplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-stub/api bdrs: server: url: http://bdrs-server:8082/api/directory + dataplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-service/api tx-data-provider: enabled: true tractusx-connector: iatp: + id: did:web:ssi-dim-wallet-service:BPNL00000003AYRE + trustedIssuers: + - did:web:ssi-dim-wallet-service:BPNL00000003CRHK sts: + dim: + url: http://ssi-dim-wallet-service/api/sts oauth: - token_url: http://umbrella-centralidp:80/auth/realms/CX-Central/protocol/openid-connect/token + token_url: http://ssi-dim-wallet-service/oauth/token controlplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-service/api bdrs: server: url: http://bdrs-server:8082/api/directory + dataplane: + env: + TX_IAM_IATP_CREDENTIALSERVICE_URL: http://ssi-dim-wallet-service/api diff --git a/charts/values-test-shared-services-1.yaml b/charts/values-test-shared-services-1.yaml index b5851bba..fe4f6457 100644 --- a/charts/values-test-shared-services-1.yaml +++ b/charts/values-test-shared-services-1.yaml @@ -34,8 +34,15 @@ sharedidp: selfdescription: enabled: true -iatpmock: +ssi-dim-wallet-stub: enabled: true + wallet: + nameSpace: "shared-services" + didHost: "ssi-dim-wallet-service" + stubUrl: "http://ssi-dim-wallet-service" + service: + type: ClusterIP + port: 80 bdrs-server-memory: enabled: true diff --git a/docs/README.md b/docs/README.md new file mode 100644 index 00000000..4dea08c9 --- /dev/null +++ b/docs/README.md @@ -0,0 +1,17 @@ +# Introduction + +This repository provides the API Documentation for the Umbrella. + +The following table links you to the respective documentations. + +| Documentation | Purpose | +|------------------------------------------------------------------|-----------------------------------------------------------------------------------------| +| [API Documentation](api/API_Doc.md) | Information about the endpoints. | + +## NOTICE + +This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). + +- SPDX-License-Identifier: Apache-2.0 +- SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +- Source URL: \ No newline at end of file diff --git a/docs/api/API_Doc.md b/docs/api/API_Doc.md new file mode 100644 index 00000000..f0845647 --- /dev/null +++ b/docs/api/API_Doc.md @@ -0,0 +1,21 @@ +# API Documentation + +This document provides information on the endpoints. + +## Postman + +There is a [postman collection](./postman) containing information on how to exchange data between provider and consumer. + +⚠️ _Change de webhook.site variable value to your respective one._ + +## Curl + +There is a [curl tutorial](./curl) containing step by step tutorial on how to exchange data between provider and consumer, using the console. + +## NOTICE + +This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). + +* SPDX-License-Identifier: Apache-2.0 +* SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +* Source URL: diff --git a/docs/api/curl/UmbrellaConectorDataExchange.md b/docs/api/curl/UmbrellaConectorDataExchange.md new file mode 100644 index 00000000..40f4387a --- /dev/null +++ b/docs/api/curl/UmbrellaConectorDataExchange.md @@ -0,0 +1,221 @@ +## Data Exchange Tutorial +In order to start exchanging data, it will be necessary to install the subset with the necessary components for data exchange: +``` +helm install umbrella -f ./charts/umbrella/values-adopter-data-exchange.yaml ./charts/umbrella/ --namespace umbrella +``` + +#### Prerequisites +As a Backend Service, we are using [Webhook.site](https://webhook.site/), as it is easier to work with. In the variables {{webhook}}, use your own one. +> But you can also use the one given in the MXD [Backend-service](https://github.com/eclipse-tractusx/tutorial-resources/tree/main/mxd/backend-service) + + +### Steps +Once the data space has been launched, we will execute the following calls to perform the communication between the components + +> Variables enclosed in {{ }} mean that they are whose content has been obtained from the answers of previous calls. + +1. Create Asset +``` +curl -L -X POST "http://dataprovider-controlplane.tx.test/management/v3/assets" \ + -H "X-Api-Key: TEST2" \ + -H "Content-Type: application/json" \ + --data-raw '{ + "@context": {}, + "@id": "200", + "properties": { + "description": "Product EDC Demo Asset" + }, + "dataAddress": { + "@type": "DataAddress", + "type": "HttpData", + "baseUrl": "{{webhook}}/api/v1/contents" + } + }' +``` + +2. Get Asset by ID +To check if the asset is correctly created. +``` +curl -L -X GET 'http://dataprovider-controlplane.tx.test/management/v3/assets/200' \ +-H 'X-Api-Key: TEST2' +``` + +3. Create Policy +``` +curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v2/policydefinitions' \ +-H 'Content-Type: application/json' \ +-H 'X-Api-Key: TEST2' \ +--data-raw '{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/" + }, + "@type": "PolicyDefinitionRequestDto", + "@id": "200", + "policy": { + "@type": "odrl:Set", + "odrl:permission": [ + { + "odrl:action": "USE", + "odrl:constraint": { + "@type": "LogicalConstraint", + "odrl:or": [ + { + "@type": "Constraint", + "odrl:leftOperand": "BusinessPartnerNumber", + "odrl:operator": { + "@id": "odrl:eq" + }, + "odrl:rightOperand": "BPNL00000003AZQP" + } + ] + } + } + ] + } +}' +``` + + +4. Get Policies by ID +To check if the Policies are correctly created. +``` +curl -L -X GET 'http://dataprovider-controlplane.tx.test/management/v2/policydefinitions/200' \ +-H 'X-Api-Key: TEST2' +``` + +5. Create Contract Definition +``` +curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v2/contractdefinitions' \ +-H 'Content-Type: application/json' \ +-H 'X-Api-Key: TEST2' \ +--data-raw '{ + "@context": {}, + "@id": "200", + "@type": "ContractDefinition", + "accessPolicyId": "200", + "contractPolicyId": "200", + "assetsSelector": { + "@type": "CriterionDto", + "operandLeft": "https://w3id.org/edc/v0.0.1/ns/id", + "operator": "=", + "operandRight": "200" + } +}' +``` + +6. Get Contract Definition by ID +To check if the Contract Definition is correctly executed +``` +curl -L -X GET 'http://dataprovider-controlplane.tx.test/management/v2/contractdefinitions/200' \ +-H 'X-Api-Key: TEST2' +``` + +7. Query Catalog +``` +curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/catalog/request' \ +-H 'Content-Type: application/json' \ +-H 'X-Api-Key: TEST1' \ +--data-raw '{ + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "CatalogRequest", + "counterPartyAddress": "http://dataprovider-controlplane.tx.test/api/v1/dsp", + "counterPartyId": "BPNL00000003AYRE", + "protocol": "dataspace-protocol-http", + "querySpec": { + "offset": 0, + "limit": 50 + } +}' +``` +We get the {{offer_id}} from the response. + +8. Initiate Negotiation +``` +curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations' \ +-H 'Content-Type: application/json' \ +-H 'X-Api-Key: TEST1' \ +--data-raw '{ + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "NegotiationInitiateRequestDto", + "counterPartyAddress": "http://dataprovider-controlplane.tx.test/api/v1/dsp", + "protocol": "dataspace-protocol-http", + "policy": { + "@context": "http://www.w3.org/ns/odrl.jsonld", + "@type": "odrl:Offer", + "@id": "{{offer_id}}", + "assigner": "BPNL00000003AYRE", + "permission": { + "odrl:target": "200", + "odrl:action": { + "odrl:type": "USE" + }, + "odrl:constraint": { + "odrl:or": { + "odrl:leftOperand": "BusinessPartnerNumber", + "odrl:operator": { + "@id": "odrl:eq" + }, + "odrl:rightOperand": "BPNL00000003AZQP" + } + } + }, + "prohibition": [], + "obligation": [], + "target": "200" + } +}' +``` +We get {{negotiation_id}} from the response. +9. Get Negotiation By ID +``` +curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations/{{negotiation_id}} \ +-H 'X-Api-Key: TEST1' +``` +We get {{contractagreement_id}} from the response. + +10. Initiate Transfer +``` +curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/transferprocesses' \ +-H 'Content-Type: application/json' \ +-H 'X-Api-Key: TEST1' \ +--data-raw '{ + "@context": { + "@vocab": "https://w3id.org/edc/v0.0.1/ns/" + }, + "@type": "TransferRequest", + "protocol": "dataspace-protocol-http", + "counterPartyAddress": "http://dataprovider-controlplane.tx.test/api/v1/dsp", + "contractId": "{{contractagreement_id}}", + "assetId": "200", + "transferType": "HttpData-PULL", + "dataDestination": { + "type": "HttpProxy" + }, + "connectorId": "BPNL00000003AZQP", + "callbackAddresses": [ + { + "transactional": true, + "uri": "{{webhook}}/api/v1/transfers" + } + ] +}' +``` +We get {{transfer_id}} from the response + +11. Get Transfer by ID +``` +curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/transferprocesses/{{transfer_id}}' \ +-H 'X-Api-Key: TEST1' +``` + +12. Validate Transfer +``` +curl -L -X POST 'http://webhook.site/e443ea0e-365a-436e-8f84-fad002e630e1/api/v1/contents' \ +-H 'Content-Type: application/json' \ +-H 'Cookie: XSRF-TOKEN=eyJpdiI6IjRyVklnVGltRE1XT3Jsbk03Yng1dnc9PSIsInZhbHVlIjoidHFCTSt0b1N3TzBkZmwvaGpmRTlCNEpNa3Z3TXRFa29jMmtwZ083RU1GV3h5MHlweWFPbjFDajNJMnFpSTdvV2hZY2tXSVpBQ05Vb29ueG5VM05mNHhEUzNwemZrcnMvRWxsOEtXZng1L1UraVNZYnhiTndXTFlkSDNlUHBHOFIiLCJtYWMiOiJjOTVkY2YzOTYyMDE2MTVhNGY2Zjc1NGU3NzUxZGQzMDVhYzIzY2E4NDNiNmJiMTY4MjFjMGRjYjM0MDBlYjEwIiwidGFnIjoiIn0%3D; webhooksite_session=Bm6cSCI0WnXRAoVUByiyoJrZiVlMrVPfYvqkkVXG' \ +-d '{"userId": 918704604,"title": "agwng","text": "oz"}' +``` diff --git a/docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json b/docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json new file mode 100644 index 00000000..67007aff --- /dev/null +++ b/docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json @@ -0,0 +1,984 @@ +{ + "info": { + "_postman_id": "973c3d8e-28f2-4667-95bf-f75a9492b425", + "name": "Umbrella Connector Data-Exchange", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "31338309", + "_collection_link": "https://web.postman.co/workspace/LKSNext-Umbrella~f4be5514-1d11-45aa-8480-95f8eaef5027/collection/31338309-973c3d8e-28f2-4667-95bf-f75a9492b425?action=share&source=collection_link&creator=31338309" + }, + "item": [ + { + "name": "Post Contents", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Post Content\", function () {\r", + " pm.collectionVariables.set('CONTENT_ID', pm.response.json().id);\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{{JSON_CONTENT}}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{BACKEND_SERVICE}}/api/v1/contents", + "host": [ + "{{BACKEND_SERVICE}}" + ], + "path": [ + "api", + "v1", + "contents" + ] + } + }, + "response": [] + }, + { + "name": "Create Asset", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "pm.test(\"Asset Created\", function () {", + " var jsonData = pm.response.json();", + " var expectedId = pm.collectionVariables.get(\"ASSET_ID\");", + " pm.expect(jsonData[\"@id\"]).to.eql(expectedId)", + "});" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + }, + { + "key": "value", + "value": "{{API_KEY_PASSWORD_CONSUMER}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"@context\": {},\n \"@id\": \"{{ASSET_ID}}\",\n \"properties\": {\n \"description\": \"Product EDC Demo Asset\"\n },\n \"dataAddress\": {\n \"@type\": \"DataAddress\",\n \"type\": \"HttpData\",\n \"baseUrl\": \"{{BACKEND_SERVICE_PROTOCOL}}/api/v1/contents/{{CONTENT_ID}}\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{PROVIDER_MANAGEMENT_URL}}/v3/assets", + "host": [ + "{{PROVIDER_MANAGEMENT_URL}}" + ], + "path": [ + "v3", + "assets" + ] + } + }, + "response": [] + }, + { + "name": "Get Asset by ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status Code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "\r", + "pm.test(\"Get Asset by ID\", function () {\r", + " var jsonData = pm.response.json();\r", + " var expectedId = pm.collectionVariables.get(\"ASSET_ID\");\r", + " pm.expect(jsonData[\"@id\"]).to.eql(expectedId)\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + }, + { + "key": "value", + "value": "{{API_KEY_PASSWORD_CONSUMER}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{PROVIDER_MANAGEMENT_URL}}/v3/assets/{{ASSET_ID}}", + "host": [ + "{{PROVIDER_MANAGEMENT_URL}}" + ], + "path": [ + "v3", + "assets", + "{{ASSET_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Policy", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status Code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Policy Created\", function () {\r", + " var jsonData = pm.response.json();\r", + " var expectedId = pm.collectionVariables.get(\"POLICY_ID\");\r", + " pm.expect(jsonData[\"@id\"]).to.eql(expectedId)\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + }, + { + "key": "value", + "value": "{{API_KEY_PASSWORD_CONSUMER}}", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"@context\": {\n \"odrl\": \"http://www.w3.org/ns/odrl/2/\"\n },\n \"@type\": \"PolicyDefinitionRequestDto\",\n \"@id\": \"{{POLICY_ID}}\",\n \"policy\": {\n \"@type\": \"odrl:Set\",\n \"odrl:permission\": [\n {\n \"odrl:action\": \"USE\",\n \"odrl:constraint\": {\n \"@type\": \"LogicalConstraint\",\n \"odrl:or\": [\n {\n \"@type\": \"Constraint\",\n \"odrl:leftOperand\": \"BusinessPartnerNumber\",\n \"odrl:operator\": {\n \"@id\": \"odrl:eq\"\n },\n \"odrl:rightOperand\": \"{{CONSUMER_ID}}\"\n }\n ]\n }\n }\n ]\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{PROVIDER_MANAGEMENT_URL}}/v2/policydefinitions", + "host": [ + "{{PROVIDER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "policydefinitions" + ] + } + }, + "response": [] + }, + { + "name": "Get Policies by ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Get Policy by ID\", function () {\r", + " var jsonData = pm.response.json();\r", + " var expectedId = pm.collectionVariables.get(\"POLICY_ID\");\r", + " pm.expect(jsonData[\"@id\"]).to.eql(expectedId)\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + }, + { + "key": "value", + "value": "{{API_KEY_PASSWORD_CONSUMER}}", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{PROVIDER_MANAGEMENT_URL}}/v2/policydefinitions/{{POLICY_ID}}", + "host": [ + "{{PROVIDER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "policydefinitions", + "{{POLICY_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Create Contract Definition", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "\r", + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Contract Definition Created\", function () {\r", + " var jsonData = pm.response.json();\r", + " var expectedId = pm.collectionVariables.get(\"CONTRACT_DEFINITION_ID\");\r", + " pm.expect(jsonData[\"@id\"]).to.eql(expectedId)\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY_PASSWORD_CONSUMER}}", + "type": "string" + }, + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"@context\": {},\n \"@id\": \"{{CONTRACT_DEFINITION_ID}}\",\n \"@type\": \"ContractDefinition\",\n \"accessPolicyId\": \"{{POLICY_ID}}\",\n \"contractPolicyId\": \"{{POLICY_ID}}\",\n \"assetsSelector\": {\n \"@type\": \"CriterionDto\",\n \"operandLeft\": \"{{EDC_NAMESPACE}}id\",\n \"operator\": \"=\",\n \"operandRight\": \"{{ASSET_ID}}\"\n }\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{PROVIDER_MANAGEMENT_URL}}/v2/contractdefinitions", + "host": [ + "{{PROVIDER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "contractdefinitions" + ] + } + }, + "response": [] + }, + { + "name": "Get Contract Definitiion by ID", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "pm.test(\"Get Contract Definition by ID\", function () {\r", + " var jsonData = pm.response.json();\r", + " var expectedId = pm.collectionVariables.get(\"CONTRACT_DEFINITION_ID\");\r", + " pm.expect(jsonData[\"@id\"]).to.eql(expectedId)\r", + "});\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY_PASSWORD_CONSUMER}}", + "type": "string" + }, + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{PROVIDER_MANAGEMENT_URL}}/v2/contractdefinitions/{{CONTRACT_DEFINITION_ID}}", + "host": [ + "{{PROVIDER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "contractdefinitions", + "{{CONTRACT_DEFINITION_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Query Catalog", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Status code is 200', function () {", + " pm.response.to.have.status(200);", + "})", + "", + "pm.test(\"Query Catalog \", function () {", + " var jsonData = pm.response.json();", + "", + " var offer = jsonData['dcat:dataset'].find(dataset => dataset[\"@id\"] === pm.collectionVariables.get(\"ASSET_ID\"));", + " pm.expect(offer).to.not.be.null;", + " pm.collectionVariables.set(\"OFFER_ID\", offer[\"odrl:hasPolicy\"][\"@id\"]);", + "});", + "", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "protocolProfileBehavior": { + "disabledSystemHeaders": {} + }, + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY_PASSWORD_PROVIDER}}", + "type": "string" + }, + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"@context\": {\r\n \"@vocab\": \"https://w3id.org/edc/v0.0.1/ns/\"\r\n },\r\n \"@type\": \"CatalogRequest\",\r\n \"counterPartyAddress\": \"{{PROVIDER_PROTOCOL_URL}}\",\r\n \"counterPartyId\": \"{{PROVIDER_ID}}\",\r\n \"protocol\": \"dataspace-protocol-http\",\r\n \"querySpec\": {\r\n \"offset\": 0,\r\n \"limit\": 50\r\n }\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{CONSUMER_MANAGEMENT_URL}}/v2/catalog/request", + "host": [ + "{{CONSUMER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "catalog", + "request" + ] + } + }, + "response": [] + }, + { + "name": "Initiate Negotation", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "var jsonData = pm.response.json();", + "pm.test(\"Initiated Negotiation\", function () {", + " pm.collectionVariables.set(\"NEGOTIATION_ID\", jsonData[\"@id\"]);", + "});" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY_PASSWORD_PROVIDER}}", + "type": "string" + }, + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\"@context\": {\n\t\t\"@vocab\": \"https://w3id.org/edc/v0.0.1/ns/\"\n\t},\n\t\"@type\": \"NegotiationInitiateRequestDto\",\n\t\"counterPartyAddress\": \"{{PROVIDER_PROTOCOL_URL}}\",\n\t\"protocol\": \"dataspace-protocol-http\",\n\t\"policy\": {\n\t\t\"@context\": \"http://www.w3.org/ns/odrl.jsonld\",\n\t\t\"@type\": \"odrl:Offer\",\n\t\t\"@id\": \"{{OFFER_ID}}\",\n \"assigner\": \"{{PROVIDER_ID}}\",\n\t\t\"permission\": {\n\t\t\t\"odrl:target\": \"{{ASSET_ID}}\",\n\t\t\t\"odrl:action\": {\n\t\t\t\t\"odrl:type\": \"USE\"\n\t\t\t},\n\t\t\t\"odrl:constraint\": {\n\t\t\t\t\"odrl:or\": {\n\t\t\t\t\t\"odrl:leftOperand\": \"BusinessPartnerNumber\",\n\t\t\t\t\t\"odrl:operator\": {\n\t\t\t\t\t\t\"@id\": \"odrl:eq\"\n\t\t\t\t\t},\n\t\t\t\t\t\"odrl:rightOperand\": \"{{CONSUMER_ID}}\"\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t\"prohibition\": [],\n\t\t\"obligation\": [],\n\t\t\"target\": \"{{ASSET_ID}}\"\n\t}\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{CONSUMER_MANAGEMENT_URL}}/v2/contractnegotiations", + "host": [ + "{{CONSUMER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "contractnegotiations" + ] + } + }, + "response": [] + }, + { + "name": "Get Negotations By ID", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "const API_KEY_HEADER = 'X-Api-Key';\r", + "const URL=`${pm.collectionVariables.get(\"CONSUMER_MANAGEMENT_URL\")}/v2/contractnegotiations/${pm.collectionVariables.get(\"NEGOTIATION_ID\")}/state`;\r", + "function delay(ms) {\r", + " return new Promise(resolve => setTimeout(resolve, ms));\r", + "}\r", + "\r", + "async function makeRequests() {\r", + " for (let i = 0; i < 10; i++) {\r", + " const response = await new Promise(resolve => {\r", + " pm.sendRequest({\r", + " url: URL,\r", + " method: 'GET',\r", + " header: {\r", + " ...pm.request.headers.toObject(),\r", + " [API_KEY_HEADER]: pm.collectionVariables.get(\"API_KEY_PASSWORD\"),\r", + " },\r", + " }, (error, response) => {\r", + " resolve(response);\r", + " });\r", + " });\r", + "\r", + " var data = response.json();\r", + " if (data[\"state\"] === \"FINALIZED\") {\r", + " break;\r", + " }\r", + " else {\r", + " await delay(500);\r", + " }\r", + " }\r", + "}\r", + "makeRequests();\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "var jsonData = pm.response.json();\r", + "pm.test(\"Get Negotiation \", function () {\r", + " pm.expect(jsonData[\"state\"]).to.eql(\"FINALIZED\");\r", + " pm.collectionVariables.set(\"CONTRACT_AGREEMENT_ID\", jsonData[\"contractAgreementId\"]);\r", + " \r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY_PASSWORD_PROVIDER}}", + "type": "string" + }, + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{CONSUMER_MANAGEMENT_URL}}/v2/contractnegotiations/{{NEGOTIATION_ID}}", + "host": [ + "{{CONSUMER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "contractnegotiations", + "{{NEGOTIATION_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Initiate Transfer", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + "});", + "var jsonData = pm.response.json();", + "pm.test(\"Initiated Transfer \" , function () {", + " pm.collectionVariables.set(\"TRANSFER_ID\", jsonData[\"@id\"]);", + "});", + "" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY_PASSWORD_PROVIDER}}", + "type": "string" + }, + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n \"@context\": {\n \"@vocab\": \"https://w3id.org/edc/v0.0.1/ns/\"\n },\n \"@type\": \"TransferRequest\",\n \"protocol\": \"dataspace-protocol-http\",\n \"counterPartyAddress\": \"{{PROVIDER_PROTOCOL_URL}}\",\n \"contractId\": \"{{CONTRACT_AGREEMENT_ID}}\",\n \"assetId\": \"{{ASSET_ID}}\",\n \"transferType\": \"HttpData-PULL\",\n \"dataDestination\": {\n \"type\": \"HttpProxy\"\n },\n \"connectorId\": \"{{CONSUMER_ID}}\",\n// \"privateProperties\": {\n// \"receiverHttpEndpoint\": \"{{BACKEND_SERVICE_PROTOCOL}}/api/v1/transfers\"\n// },\n \"callbackAddresses\": [\n {\n \"transactional\": true,\n \"uri\": \"{{BACKEND_SERVICE_PROTOCOL}}/api/v1/transfers\"\n }\n ]\n}\n", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{CONSUMER_MANAGEMENT_URL}}/v2/transferprocesses", + "host": [ + "{{CONSUMER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "transferprocesses" + ] + } + }, + "response": [] + }, + { + "name": "Get Transfer by ID", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "const API_KEY_HEADER = 'X-Api-Key';\r", + "const URL=`${pm.collectionVariables.get(\"CONSUMER_MANAGEMENT_URL\")}/v2/transferprocesses/${pm.collectionVariables.get(\"TRANSFER_ID\")}/state`;\r", + "function delay(ms) {\r", + " return new Promise(resolve => setTimeout(resolve, ms));\r", + "}\r", + "\r", + "async function makeRequests() {\r", + " for (let i = 0; i < 10; i++) {\r", + " const response = await new Promise(resolve => {\r", + " pm.sendRequest({\r", + " url: URL,\r", + " method: 'GET',\r", + " header: {\r", + " ...pm.request.headers.toObject(),\r", + " [API_KEY_HEADER]: pm.collectionVariables.get(\"API_KEY_PASSWORD\"),\r", + " },\r", + " }, (error, response) => {\r", + " resolve(response);\r", + " });\r", + " });\r", + "\r", + " var data = response.json();\r", + " if (data[\"state\"] === \"STARTED\") {\r", + " break;\r", + " }\r", + " else {\r", + " await delay(500);\r", + " }\r", + " }\r", + "}\r", + "makeRequests();\r", + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test(\"Status Code is 200\", function () {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "var jsonData = pm.response.json();\r", + "pm.test(\"Get Transfer \", function () {\r", + " pm.expect(jsonData[\"state\"]).to.eql(\"STARTED\");\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "apikey", + "apikey": [ + { + "key": "value", + "value": "{{API_KEY_PASSWORD_PROVIDER}}", + "type": "string" + }, + { + "key": "key", + "value": "X-Api-Key", + "type": "string" + } + ] + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{CONSUMER_MANAGEMENT_URL}}/v2/transferprocesses/{{TRANSFER_ID}}", + "host": [ + "{{CONSUMER_MANAGEMENT_URL}}" + ], + "path": [ + "v2", + "transferprocesses", + "{{TRANSFER_ID}}" + ] + } + }, + "response": [] + }, + { + "name": "Validate Transfer", + "event": [ + { + "listen": "prerequest", + "script": { + "exec": [ + "" + ], + "type": "text/javascript", + "packages": {} + } + }, + { + "listen": "test", + "script": { + "exec": [ + "pm.test('Response status code is 200', () => {\r", + " pm.response.to.have.status(200);\r", + "});\r", + "var expected = JSON.stringify(JSON.parse(pm.collectionVariables.get('JSON_CONTENT')));\r", + "var actual = JSON.stringify(pm.response.json());\r", + "\r", + "pm.test('Validation Transfer ', () => {\r", + " pm.expect(expected).to.eql(actual);\r", + "});" + ], + "type": "text/javascript", + "packages": {} + } + } + ], + "request": { + "auth": { + "type": "noauth" + }, + "method": "GET", + "header": [], + "url": { + "raw": "{{BACKEND_SERVICE}}/api/v1/transfers/{{TRANSFER_ID}}/contents", + "host": [ + "{{BACKEND_SERVICE}}" + ], + "path": [ + "api", + "v1", + "transfers", + "{{TRANSFER_ID}}", + "contents" + ] + } + }, + "response": [] + } + ], + "auth": { + "type": "apikey" + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "CONSUMER_MANAGEMENT_URL", + "value": "http://dataconsumer-1-controlplane.tx.test/management" + }, + { + "key": "PROVIDER_PROTOCOL_URL", + "value": "http://dataprovider-controlplane.tx.test/api/v1/dsp" + }, + { + "key": "PROVIDER_MANAGEMENT_URL", + "value": "http://dataprovider-controlplane.tx.test/management" + }, + { + "key": "ASSET_ID", + "value": "200", + "type": "default" + }, + { + "key": "POLICY_ID", + "value": "200", + "type": "default" + }, + { + "key": "CONTRACT_DEFINITION_ID", + "value": "200", + "type": "default" + }, + { + "key": "CONSUMER_ID", + "value": "BPNL00000003AZQP", + "type": "default" + }, + { + "key": "PROVIDER_ID", + "value": "BPNL00000003AYRE", + "type": "string" + }, + { + "key": "EDC_NAMESPACE", + "value": "https://w3id.org/edc/v0.0.1/ns/", + "type": "string" + }, + { + "key": "API_KEY_PASSWORD_PROVIDER", + "value": "TEST1", + "type": "string" + }, + { + "key": "BACKEND_SERVICE", + "value": "https://webhook.site/03e288ed-1045-4a1e-94c9-992677294cdb", + "type": "string" + }, + { + "key": "BACKEND_SERVICE_PROTOCOL", + "value": "https://webhook.site/03e288ed-1045-4a1e-94c9-992677294cdb", + "type": "string" + }, + { + "key": "JSON_CONTENT", + "value": "{\"userId\": 918704604,\"title\": \"agwng\",\"text\": \"oz\"}" + }, + { + "key": "CONTENT_ID", + "value": "DATA" + }, + { + "key": "OFFER_ID", + "value": "" + }, + { + "key": "NEGOTIATION_ID", + "value": "" + }, + { + "key": "TRANSFER_ID", + "value": "" + }, + { + "key": "CONTRACT_AGREEMENT_ID", + "value": "" + }, + { + "key": "API_KEY_PASSWORD_CONSUMER", + "value": "TEST2", + "type": "string" + }, + { + "key": "API_KEY_PASSWORD", + "value": "TEST1" + } + ] +} From 7cb2c34427ab816bc8cb48c82aa48817ce4d61df Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 09:52:49 +0100 Subject: [PATCH 02/36] Update Chart version --- charts/umbrella/Chart.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/umbrella/Chart.yaml b/charts/umbrella/Chart.yaml index edfb27a4..aa4771be 100644 --- a/charts/umbrella/Chart.yaml +++ b/charts/umbrella/Chart.yaml @@ -28,7 +28,7 @@ sources: - https://github.com/eclipse-tractusx/tractus-x-umbrella type: application -version: 2.0.0 +version: 2.0.1 # when adding or updating versions of dependencies, also update list under README.md#Install dependencies: From bd806ba7d5f9fac13fb9819c2b343d953ab1acd6 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 10:12:02 +0100 Subject: [PATCH 03/36] Update docs/api/curl/UmbrellaConectorDataExchange.md Co-authored-by: Carlos Diez <137300347+CDiezRodriguez@users.noreply.github.com> --- docs/api/curl/UmbrellaConectorDataExchange.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api/curl/UmbrellaConectorDataExchange.md b/docs/api/curl/UmbrellaConectorDataExchange.md index 40f4387a..22497aec 100644 --- a/docs/api/curl/UmbrellaConectorDataExchange.md +++ b/docs/api/curl/UmbrellaConectorDataExchange.md @@ -170,6 +170,7 @@ curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/contra }' ``` We get {{negotiation_id}} from the response. + 9. Get Negotiation By ID ``` curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations/{{negotiation_id}} \ From ff4422b7efad7e070bf388d1edc3294c7b3df7d9 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 10:16:26 +0100 Subject: [PATCH 04/36] Update UmbrellaConectorDataExchange.md --- docs/api/curl/UmbrellaConectorDataExchange.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/api/curl/UmbrellaConectorDataExchange.md b/docs/api/curl/UmbrellaConectorDataExchange.md index 22497aec..8307d946 100644 --- a/docs/api/curl/UmbrellaConectorDataExchange.md +++ b/docs/api/curl/UmbrellaConectorDataExchange.md @@ -8,7 +8,6 @@ helm install umbrella -f ./charts/umbrella/values-adopter-data-exchange.yaml ./c As a Backend Service, we are using [Webhook.site](https://webhook.site/), as it is easier to work with. In the variables {{webhook}}, use your own one. > But you can also use the one given in the MXD [Backend-service](https://github.com/eclipse-tractusx/tutorial-resources/tree/main/mxd/backend-service) - ### Steps Once the data space has been launched, we will execute the following calls to perform the communication between the components @@ -75,7 +74,6 @@ curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v2/policyde }' ``` - 4. Get Policies by ID To check if the Policies are correctly created. ``` @@ -176,6 +174,8 @@ We get {{negotiation_id}} from the response. curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations/{{negotiation_id}} \ -H 'X-Api-Key: TEST1' ``` +You should be able to see in the response, that the _state_ value is equal to _FINALIZED_. + We get {{contractagreement_id}} from the response. 10. Initiate Transfer @@ -212,6 +212,7 @@ We get {{transfer_id}} from the response curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/transferprocesses/{{transfer_id}}' \ -H 'X-Api-Key: TEST1' ``` +You should be able to see in the response that the _state_ value is equal to _STARTED_. 12. Validate Transfer ``` From dc0b6f3f06fbabdd722b18fb33323dfe9b4947ea Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:07:28 +0100 Subject: [PATCH 05/36] Update docs/api/curl/UmbrellaConectorDataExchange.md Co-authored-by: Evelyn Gurschler --- docs/api/curl/UmbrellaConectorDataExchange.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api/curl/UmbrellaConectorDataExchange.md b/docs/api/curl/UmbrellaConectorDataExchange.md index 8307d946..9d1e6502 100644 --- a/docs/api/curl/UmbrellaConectorDataExchange.md +++ b/docs/api/curl/UmbrellaConectorDataExchange.md @@ -1,4 +1,5 @@ ## Data Exchange Tutorial + In order to start exchanging data, it will be necessary to install the subset with the necessary components for data exchange: ``` helm install umbrella -f ./charts/umbrella/values-adopter-data-exchange.yaml ./charts/umbrella/ --namespace umbrella From 58189982a21a6903f1132886274204bfd45dae0a Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:07:35 +0100 Subject: [PATCH 06/36] Update charts/umbrella/README.md Co-authored-by: Evelyn Gurschler --- charts/umbrella/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 348ac6cf..7fc251e6 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -480,6 +480,7 @@ helm install -f values-adopter-data-exchange.yaml umbrella . --namespace umbrell There are two ways to test and execute the Data Exchange: **1. Postman** + You can import the Umbrella [Postman Collection](../../docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json) **2. Curl** From 9fc08a9d3edf737f90deb8c42425ead5f942a23a Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:07:42 +0100 Subject: [PATCH 07/36] Update charts/umbrella/README.md Co-authored-by: Evelyn Gurschler --- charts/umbrella/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 7fc251e6..1acc7099 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -477,7 +477,7 @@ To start the Data Exchange, it is necessary to execute the involved components: ``` helm install -f values-adopter-data-exchange.yaml umbrella . --namespace umbrella --create-namespace ``` -There are two ways to test and execute the Data Exchange: +There are two ways to test and execute the Data Exchange tutorial: **1. Postman** From 0255f92dc6801c59d50119ad2796485a51a16348 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:07:48 +0100 Subject: [PATCH 08/36] Update charts/umbrella/README.md Co-authored-by: Evelyn Gurschler --- charts/umbrella/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 1acc7099..5f5feb09 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -484,6 +484,7 @@ There are two ways to test and execute the Data Exchange tutorial: You can import the Umbrella [Postman Collection](../../docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json) **2. Curl** + You can follow the [Curl Steps](../../docs/api/curl/UmbrellaConectorDataExchange.md) #### Get to know the Portal From 467555966fdea657915814c8a9ce351262c76309 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:08:04 +0100 Subject: [PATCH 09/36] Update charts/umbrella/README.md Co-authored-by: Evelyn Gurschler --- charts/umbrella/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 5f5feb09..136a2fa1 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -42,7 +42,9 @@ The Chart aims for a completely automated setup of a fully functional network, t The versions of integrated components correspond to the **overarching [Release 24.05](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.05/CHANGELOG.md#2405---2024-05-29)**. -:warning: The 24.05 Release does not include a Managed Identity Wallet (MIW) - aka the FOSS Wallet of Tractus-X - as it was not yet able to cover functionalities required for the Self-Sovereign Identity Flow introduced with R24.05. To test and ship R24.05, a commercial solution was used: the Decentralized Identity Management (DIM) Wallet. To cover the wallet functionalities in the [E2E Adopter Journey Data exchange](#data-exchange) and [E2E Adopter Journey Portal](#portal), the [SSI DIM WALLET STUB](https://github.com/eclipse-tractusx/ssi-dim-wallet-stub/tree/main/charts/ssi-dim-wallet-stub) was added to the umbrella helm chart. +:warning: The 24.05 Release does not include a Managed Identity Wallet (MIW) - aka the FOSS Wallet of Eclipse Tractus-X - as it was not - yet - able to cover functionalities required for the Self-Sovereign Identity Flow introduced with R24.05. To test and ship R24.05, a commercial solution was used: the Decentralized Identity Management (DIM) Wallet. To cover the wallet functionalities in the [E2E Adopter Journey Data exchange](#data-exchange) and [E2E Adopter Journey Portal](#portal), the [SSI DIM Wallet Stub](https://github.com/eclipse-tractusx/ssi-dim-wallet-stub) was added to the umbrella helm chart. + +As an intermediate solution - before the SSI DIM Wallet Stub - the [iatp-mock](https://github.com/eclipse-tractusx/tractus-x-umbrella/tree/main/charts/umbrella/charts/iatpmock/Chart.yaml) was added, please see [Precondition for IATP Mock](#precondition-for-iatp-mock) if you'd still like to use it. Please be aware that it doesn't cover the wallet functionalities needed for the [E2E Adopter Journey Portal](#portal) for instance during the onboarding process of a company. ## Usage From f973aea78aec5ed32efb9a67d5637b3172f5e34e Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:08:12 +0100 Subject: [PATCH 10/36] Update docs/api/curl/UmbrellaConectorDataExchange.md Co-authored-by: Evelyn Gurschler --- docs/api/curl/UmbrellaConectorDataExchange.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api/curl/UmbrellaConectorDataExchange.md b/docs/api/curl/UmbrellaConectorDataExchange.md index 9d1e6502..23f85804 100644 --- a/docs/api/curl/UmbrellaConectorDataExchange.md +++ b/docs/api/curl/UmbrellaConectorDataExchange.md @@ -10,6 +10,7 @@ As a Backend Service, we are using [Webhook.site](https://webhook.site/), as it > But you can also use the one given in the MXD [Backend-service](https://github.com/eclipse-tractusx/tutorial-resources/tree/main/mxd/backend-service) ### Steps + Once the data space has been launched, we will execute the following calls to perform the communication between the components > Variables enclosed in {{ }} mean that they are whose content has been obtained from the answers of previous calls. From 88fdbf6fad326531188113047ed86a959c584188 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:08:27 +0100 Subject: [PATCH 11/36] Update docs/README.md Co-authored-by: Evelyn Gurschler --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 4dea08c9..bf92be41 100644 --- a/docs/README.md +++ b/docs/README.md @@ -14,4 +14,4 @@ This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LIC - SPDX-License-Identifier: Apache-2.0 - SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation -- Source URL: \ No newline at end of file +- Source URL: \ No newline at end of file From adab48411a7be67217951124cdc938bd2d58cd60 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:08:36 +0100 Subject: [PATCH 12/36] Update docs/README.md Co-authored-by: Evelyn Gurschler --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index bf92be41..2a4a3bb2 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ # Introduction -This repository provides the API Documentation for the Umbrella. +This repository provides the API requests to provide a tutorial for the Data exchange. The following table links you to the respective documentations. From 4a552658689516bfe70dc2f3157f82d53424d825 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:08:47 +0100 Subject: [PATCH 13/36] Update docs/api/curl/UmbrellaConectorDataExchange.md Co-authored-by: Evelyn Gurschler --- docs/api/curl/UmbrellaConectorDataExchange.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/api/curl/UmbrellaConectorDataExchange.md b/docs/api/curl/UmbrellaConectorDataExchange.md index 23f85804..6fc6c227 100644 --- a/docs/api/curl/UmbrellaConectorDataExchange.md +++ b/docs/api/curl/UmbrellaConectorDataExchange.md @@ -6,6 +6,7 @@ helm install umbrella -f ./charts/umbrella/values-adopter-data-exchange.yaml ./c ``` #### Prerequisites + As a Backend Service, we are using [Webhook.site](https://webhook.site/), as it is easier to work with. In the variables {{webhook}}, use your own one. > But you can also use the one given in the MXD [Backend-service](https://github.com/eclipse-tractusx/tutorial-resources/tree/main/mxd/backend-service) From 7302081bdc65e597ef0cc6069a87bea3150f2f25 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:08:56 +0100 Subject: [PATCH 14/36] Update docs/api/API_Doc.md Co-authored-by: Evelyn Gurschler --- docs/api/API_Doc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/API_Doc.md b/docs/api/API_Doc.md index f0845647..7a991397 100644 --- a/docs/api/API_Doc.md +++ b/docs/api/API_Doc.md @@ -18,4 +18,4 @@ This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LIC * SPDX-License-Identifier: Apache-2.0 * SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation -* Source URL: +* Source URL: From 5d23e599789a7f2d1c6b57eebc85ad12c97925e2 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:14:31 +0100 Subject: [PATCH 15/36] Update README.md --- charts/umbrella/README.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 136a2fa1..b5e479ed 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -469,16 +469,12 @@ helm install -f values-adopter-portal.yaml umbrella . --namespace umbrella --cre #### Data exchange -:warning: Please be aware of [Note for R24.05](#note-for-r2405) - Involved components: CentralIdP, DBRS-Server-Memory, Data Consumer, Data Provider, SSI Credential Issuer, SSI Dim Wallet Stub. -To start the Data Exchange, it is necessary to execute the involved components: -``` -helm install -f values-adopter-data-exchange.yaml umbrella . --namespace umbrella --create-namespace -``` +To start the Data Exchange, it is necessary to execute the [involved components](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) + There are two ways to test and execute the Data Exchange tutorial: **1. Postman** @@ -544,8 +540,6 @@ In case that you have TLS enabled (see [Self-signed TLS setup (Optional)](#self- - - -:warning: Please be aware of [Note for R24.05](#note-for-r2405) - ##### Note for onboarding process Since the onboarding process requires the [Clearinghouse](https://github.com/eclipse-tractusx/portal-assets/blob/v2.1.0/docs/developer/Technical%20Documentation/Interface%20Contracts/Clearinghouse.md) to work properly, but ClearingHouse currently isn't available as a FOSS application you can skip the step with the following SQL Script which must be executed against the portal database. From 023a40c4ecfb763f70cdc66008d45fff788680f5 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:16:18 +0100 Subject: [PATCH 16/36] Update README.md involved components --- charts/umbrella/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index b5e479ed..04822e8a 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -471,7 +471,7 @@ helm install -f values-adopter-portal.yaml umbrella . --namespace umbrella --cre Involved components: -CentralIdP, DBRS-Server-Memory, Data Consumer, Data Provider, SSI Credential Issuer, SSI Dim Wallet Stub. +> DBRS-Server-Memory, Data Consumer, Data Provider, SSI Dim Wallet Stub. To start the Data Exchange, it is necessary to execute the [involved components](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) From 3d74cfc372550252f360c6f8363bfe298b2b0880 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:24:42 +0100 Subject: [PATCH 17/36] Update README.md get to know the portal --- charts/umbrella/README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 04822e8a..88f33361 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -473,7 +473,7 @@ Involved components: > DBRS-Server-Memory, Data Consumer, Data Provider, SSI Dim Wallet Stub. -To start the Data Exchange, it is necessary to execute the [involved components](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) +To start the Data Exchange, it is necessary to execute the [Data Exchange Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) There are two ways to test and execute the Data Exchange tutorial: @@ -487,6 +487,16 @@ You can follow the [Curl Steps](../../docs/api/curl/UmbrellaConectorDataExchange #### Get to know the Portal +Involved components: + +> Portal, Centralidp, sharedidp, pgadmin4 + +Some components are disabled, as they are not necessary for the exclusive use of the portal. If you want to perform the onboarding of a participant, it would be necessary to enable the following components: + +> BPDM, SSI-Credential-Issuer, SSI-DIM-WALLET-STUB + +To start the Portal, it is necessary to execute the [Portal Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) + Perform first login and send out an invitation to a company to join the network (SMTP account required to be configured in custom values.yaml file). Proceed with the login to the to verify that everything is setup as expected. From 4f43a87c8332574a55888ceb88491c513d552f79 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:25:35 +0100 Subject: [PATCH 18/36] Rename UmbrellaConectorDataExchange.md to UmbrellaConnectorDataExchange.md --- ...laConectorDataExchange.md => UmbrellaConnectorDataExchange.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs/api/curl/{UmbrellaConectorDataExchange.md => UmbrellaConnectorDataExchange.md} (100%) diff --git a/docs/api/curl/UmbrellaConectorDataExchange.md b/docs/api/curl/UmbrellaConnectorDataExchange.md similarity index 100% rename from docs/api/curl/UmbrellaConectorDataExchange.md rename to docs/api/curl/UmbrellaConnectorDataExchange.md From 5ea9152163b51ff2db6ebbaaf6c5c4fcc6a56443 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Tue, 5 Nov 2024 14:27:08 +0100 Subject: [PATCH 19/36] Update UmbrellaConnectorDataExchange.md --- docs/api/curl/UmbrellaConnectorDataExchange.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/docs/api/curl/UmbrellaConnectorDataExchange.md b/docs/api/curl/UmbrellaConnectorDataExchange.md index 6fc6c227..219050d2 100644 --- a/docs/api/curl/UmbrellaConnectorDataExchange.md +++ b/docs/api/curl/UmbrellaConnectorDataExchange.md @@ -1,9 +1,6 @@ ## Data Exchange Tutorial -In order to start exchanging data, it will be necessary to install the subset with the necessary components for data exchange: -``` -helm install umbrella -f ./charts/umbrella/values-adopter-data-exchange.yaml ./charts/umbrella/ --namespace umbrella -``` +In order to start exchanging data, it will be necessary to install the subset with the necessary components for data exchange with the [Data Exchange Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1): #### Prerequisites From 9e572ea6d4d05c0554490cae94384b4435192f0d Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:25:41 +0100 Subject: [PATCH 20/36] Update charts/umbrella/README.md Co-authored-by: Evelyn Gurschler --- charts/umbrella/README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 80975b4a..f405c40e 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -471,7 +471,12 @@ helm install -f values-adopter-portal.yaml umbrella . --namespace umbrella --cre Involved components: -> DBRS-Server-Memory, Data Consumer, Data Provider, SSI Dim Wallet Stub. +- Data Provider +- Data Consumer 1 +- Data Consumer 2 (Optional) +- BPN-DID-Resolution-Service (BDRS) +- SSI DIM Wallet Stub +- pgadmin4 To start the Data Exchange, it is necessary to execute the [Data Exchange Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) From 6cccd2be2233e946c1c10b06eb8f039bef0a6fb0 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:25:50 +0100 Subject: [PATCH 21/36] Update charts/umbrella/README.md Co-authored-by: Evelyn Gurschler --- charts/umbrella/README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index f405c40e..b554300d 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -494,7 +494,10 @@ You can follow the [Curl Steps](../../docs/api/curl/UmbrellaConectorDataExchange Involved components: -> Portal, Centralidp, sharedidp, pgadmin4 +- Portal +- CentralIdP (Keycloak) +- SharedIdP (Keycloak) +- pgadmin4 Some components are disabled, as they are not necessary for the exclusive use of the portal. If you want to perform the onboarding of a participant, it would be necessary to enable the following components: From db1d96da1fd6ac303e34141fe33814c4a45b5d08 Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Thu, 7 Nov 2024 09:27:45 +0100 Subject: [PATCH 22/36] Involved components at the end --- charts/umbrella/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index b554300d..9f347b53 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -469,15 +469,6 @@ helm install -f values-adopter-portal.yaml umbrella . --namespace umbrella --cre #### Data exchange -Involved components: - -- Data Provider -- Data Consumer 1 -- Data Consumer 2 (Optional) -- BPN-DID-Resolution-Service (BDRS) -- SSI DIM Wallet Stub -- pgadmin4 - To start the Data Exchange, it is necessary to execute the [Data Exchange Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) There are two ways to test and execute the Data Exchange tutorial: @@ -490,6 +481,15 @@ You can import the Umbrella [Postman Collection](../../docs/api/postman/Umbrella You can follow the [Curl Steps](../../docs/api/curl/UmbrellaConectorDataExchange.md) +Involved components: + +- Data Provider +- Data Consumer 1 +- Data Consumer 2 (Optional) +- BPN-DID-Resolution-Service (BDRS) +- SSI DIM Wallet Stub +- pgadmin4 + #### Get to know the Portal Involved components: From 69c9b5512e51eb6b053c301202f9743bb28ed39b Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Thu, 7 Nov 2024 09:31:28 +0100 Subject: [PATCH 23/36] onboarding componentes enabled and disabled --- charts/umbrella/values-adopter-portal.yaml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/charts/umbrella/values-adopter-portal.yaml b/charts/umbrella/values-adopter-portal.yaml index 030380e0..9ea0f62a 100644 --- a/charts/umbrella/values-adopter-portal.yaml +++ b/charts/umbrella/values-adopter-portal.yaml @@ -56,6 +56,11 @@ pgadmin4: bpdm: enabled: false +# Set 'enabled' to true if onboarding is required +bdrs-server-memory: + enabled: true + +# Set 'enabled' to true if onboarding is required selfdescription: enabled: false From 49e08138c9fbcf62b3f1ab289effdcfd768f8a44 Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Thu, 7 Nov 2024 09:33:06 +0100 Subject: [PATCH 24/36] portal list of disabled components --- charts/umbrella/README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 9f347b53..ea8b53e7 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -501,7 +501,13 @@ Involved components: Some components are disabled, as they are not necessary for the exclusive use of the portal. If you want to perform the onboarding of a participant, it would be necessary to enable the following components: -> BPDM, SSI-Credential-Issuer, SSI-DIM-WALLET-STUB +- BPDM +- SSI DIM Wallet Stub +- BPN-DID-Resolution-Service (BDRS) +- SSI-Credential-Issuer +- Self Description Factory +- Discovery Finder +- BPN Discovery To start the Portal, it is necessary to execute the [Portal Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) From 375d959c3979680aa1c35cd7dce743976f748a43 Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Thu, 7 Nov 2024 09:34:12 +0100 Subject: [PATCH 25/36] portal list at the end --- charts/umbrella/README.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index ea8b53e7..dd9b1045 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -492,23 +492,6 @@ Involved components: #### Get to know the Portal -Involved components: - -- Portal -- CentralIdP (Keycloak) -- SharedIdP (Keycloak) -- pgadmin4 - -Some components are disabled, as they are not necessary for the exclusive use of the portal. If you want to perform the onboarding of a participant, it would be necessary to enable the following components: - -- BPDM -- SSI DIM Wallet Stub -- BPN-DID-Resolution-Service (BDRS) -- SSI-Credential-Issuer -- Self Description Factory -- Discovery Finder -- BPN Discovery - To start the Portal, it is necessary to execute the [Portal Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) Perform first login and send out an invitation to a company to join the network (SMTP account required to be configured in custom values.yaml file). @@ -550,6 +533,23 @@ tractusx-umbr3lla! linkStyle 0,1 stroke:lightblue ``` +Involved components: + +- Portal +- CentralIdP (Keycloak) +- SharedIdP (Keycloak) +- pgadmin4 + +Some components are disabled, as they are not necessary for the exclusive use of the portal. If you want to perform the onboarding of a participant, it would be necessary to enable the following components: + +- BPDM +- SSI DIM Wallet Stub +- BPN-DID-Resolution-Service (BDRS) +- SSI-Credential-Issuer +- Self Description Factory +- Discovery Finder +- BPN Discovery + The relevant hosts are the following: - From d60d46b952510ef59c4f72571a47760379d8d823 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:34:55 +0100 Subject: [PATCH 26/36] Update docs/README.md Co-authored-by: Evelyn Gurschler --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 2a4a3bb2..8f15bcdb 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,6 +1,6 @@ # Introduction -This repository provides the API requests to provide a tutorial for the Data exchange. +This repository provides the API requests to provide a tutorial for the Data Exchange. The following table links you to the respective documentations. From b0e6b8902791d923f7a03f493acf3ae523023732 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:35:05 +0100 Subject: [PATCH 27/36] Update docs/api/API_Doc.md Co-authored-by: Evelyn Gurschler --- docs/api/API_Doc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/API_Doc.md b/docs/api/API_Doc.md index 7a991397..4e8a4ab9 100644 --- a/docs/api/API_Doc.md +++ b/docs/api/API_Doc.md @@ -1,4 +1,4 @@ -# API Documentation +# API Requests for Data Exchange This document provides information on the endpoints. From 3a68b323d53f9aeca1cc35ec928b09fdb9000d9a Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:35:12 +0100 Subject: [PATCH 28/36] Update docs/README.md Co-authored-by: Evelyn Gurschler --- docs/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/README.md b/docs/README.md index 8f15bcdb..e39da650 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ The following table links you to the respective documentations. | Documentation | Purpose | |------------------------------------------------------------------|-----------------------------------------------------------------------------------------| -| [API Documentation](api/API_Doc.md) | Information about the endpoints. | +| [API Requests](api/API_Doc.md) | API Requests for Data Exchange. | ## NOTICE From 402dde318763d98345d146c821b3597d9db038c7 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Thu, 7 Nov 2024 09:35:21 +0100 Subject: [PATCH 29/36] Update docs/api/API_Doc.md Co-authored-by: Evelyn Gurschler --- docs/api/API_Doc.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/API_Doc.md b/docs/api/API_Doc.md index 4e8a4ab9..36d3fd39 100644 --- a/docs/api/API_Doc.md +++ b/docs/api/API_Doc.md @@ -1,6 +1,6 @@ # API Requests for Data Exchange -This document provides information on the endpoints. +This document provides about API requests for the Data Exchange. ## Postman From ae3a6282266cd1ee141c79ed3066be0d382640c4 Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Thu, 7 Nov 2024 09:39:24 +0100 Subject: [PATCH 30/36] Add simple data backend --- charts/umbrella/README.md | 3 +++ charts/umbrella/values-adopter-data-exchange.yaml | 3 +++ charts/umbrella/values.yaml | 9 +++++++++ 3 files changed, 15 insertions(+) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index dd9b1045..9bccaab0 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -486,9 +486,12 @@ Involved components: - Data Provider - Data Consumer 1 - Data Consumer 2 (Optional) +- BDRS Server Memory - BPN-DID-Resolution-Service (BDRS) - SSI DIM Wallet Stub +- SSI Credential Issuer - pgadmin4 +- Simple Data Backend #### Get to know the Portal diff --git a/charts/umbrella/values-adopter-data-exchange.yaml b/charts/umbrella/values-adopter-data-exchange.yaml index f54a3c27..2927f4ed 100644 --- a/charts/umbrella/values-adopter-data-exchange.yaml +++ b/charts/umbrella/values-adopter-data-exchange.yaml @@ -65,3 +65,6 @@ ssi-credential-issuer: ssi-dim-wallet-stub: enabled: true + +simple-data-backend: + enabled: true diff --git a/charts/umbrella/values.yaml b/charts/umbrella/values.yaml index 0c12073c..0637d8cb 100644 --- a/charts/umbrella/values.yaml +++ b/charts/umbrella/values.yaml @@ -1064,6 +1064,15 @@ dataconsumerOne: simple-data-backend: enabled: false + nameOverride: dataprovider-submodelserver + ingress: + enabled: true + className: "nginx" + hosts: + - host: "dataprovider-submodelserver.tx.test" + paths: + - path: "/" + pathType: "Prefix" tx-data-provider: enabled: false From d6e1b49a4048fafbdbeedc7575eed02818c0ae2d Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Thu, 7 Nov 2024 10:21:17 +0100 Subject: [PATCH 31/36] Add simpleDataBackend --- charts/umbrella/README.md | 1 - .../umbrella/values-adopter-data-exchange.yaml | 5 +---- charts/umbrella/values.yaml | 17 +++++++---------- 3 files changed, 8 insertions(+), 15 deletions(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 9bccaab0..9c1a0a0d 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -491,7 +491,6 @@ Involved components: - SSI DIM Wallet Stub - SSI Credential Issuer - pgadmin4 -- Simple Data Backend #### Get to know the Portal diff --git a/charts/umbrella/values-adopter-data-exchange.yaml b/charts/umbrella/values-adopter-data-exchange.yaml index 2927f4ed..0ce1bd17 100644 --- a/charts/umbrella/values-adopter-data-exchange.yaml +++ b/charts/umbrella/values-adopter-data-exchange.yaml @@ -64,7 +64,4 @@ ssi-credential-issuer: enabled: false ssi-dim-wallet-stub: - enabled: true - -simple-data-backend: - enabled: true + enabled: true \ No newline at end of file diff --git a/charts/umbrella/values.yaml b/charts/umbrella/values.yaml index 0637d8cb..41f55c93 100644 --- a/charts/umbrella/values.yaml +++ b/charts/umbrella/values.yaml @@ -1064,15 +1064,6 @@ dataconsumerOne: simple-data-backend: enabled: false - nameOverride: dataprovider-submodelserver - ingress: - enabled: true - className: "nginx" - hosts: - - host: "dataprovider-submodelserver.tx.test" - paths: - - path: "/" - pathType: "Prefix" tx-data-provider: enabled: false @@ -1173,7 +1164,13 @@ tx-data-provider: simple-data-backend: nameOverride: dataprovider-submodelserver ingress: - enabled: false + enabled: true + className: "nginx" + hosts: + - host: "dataprovider-submodelserver.tx.test" + paths: + - path: "/" + pathType: "Prefix" semantic-hub: enabled: false From 75535a7bd6269d2aaad2628aa7bbbf74c871c47b Mon Sep 17 00:00:00 2001 From: mgarciaLKS Date: Thu, 7 Nov 2024 10:38:38 +0100 Subject: [PATCH 32/36] enable data exchange new backend --- .../api/curl/UmbrellaConnectorDataExchange.md | 48 ++++++++----------- ...ectorData-Exchange.postman_collection.json | 25 ++++------ 2 files changed, 30 insertions(+), 43 deletions(-) diff --git a/docs/api/curl/UmbrellaConnectorDataExchange.md b/docs/api/curl/UmbrellaConnectorDataExchange.md index 219050d2..bcf9b787 100644 --- a/docs/api/curl/UmbrellaConnectorDataExchange.md +++ b/docs/api/curl/UmbrellaConnectorDataExchange.md @@ -2,11 +2,6 @@ In order to start exchanging data, it will be necessary to install the subset with the necessary components for data exchange with the [Data Exchange Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1): -#### Prerequisites - -As a Backend Service, we are using [Webhook.site](https://webhook.site/), as it is easier to work with. In the variables {{webhook}}, use your own one. -> But you can also use the one given in the MXD [Backend-service](https://github.com/eclipse-tractusx/tutorial-resources/tree/main/mxd/backend-service) - ### Steps Once the data space has been launched, we will execute the following calls to perform the communication between the components @@ -15,21 +10,21 @@ Once the data space has been launched, we will execute the following calls to pe 1. Create Asset ``` -curl -L -X POST "http://dataprovider-controlplane.tx.test/management/v3/assets" \ - -H "X-Api-Key: TEST2" \ - -H "Content-Type: application/json" \ - --data-raw '{ - "@context": {}, - "@id": "200", - "properties": { - "description": "Product EDC Demo Asset" - }, - "dataAddress": { - "@type": "DataAddress", - "type": "HttpData", - "baseUrl": "{{webhook}}/api/v1/contents" - } - }' +curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v3/assets' \ +-H 'Content-Type: application/json' \ +-H 'X-Api-Key: TEST2' \ +--data-raw '{ + "@context": {}, + "@id": "200", + "properties": { + "description": "Product EDC Demo Asset" + }, + "dataAddress": { + "@type": "DataAddress", + "type": "HttpData", + "baseUrl": "http://dataprovider-submodelserver.tx.test/200" + } +}' ``` 2. Get Asset by ID @@ -144,7 +139,7 @@ curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/contra "policy": { "@context": "http://www.w3.org/ns/odrl.jsonld", "@type": "odrl:Offer", - "@id": "{{offer_id}}", + "@id": "", "assigner": "BPNL00000003AYRE", "permission": { "odrl:target": "200", @@ -171,7 +166,7 @@ We get {{negotiation_id}} from the response. 9. Get Negotiation By ID ``` -curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations/{{negotiation_id}} \ +curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations/' \ -H 'X-Api-Key: TEST1' ``` You should be able to see in the response, that the _state_ value is equal to _FINALIZED_. @@ -190,7 +185,7 @@ curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/transf "@type": "TransferRequest", "protocol": "dataspace-protocol-http", "counterPartyAddress": "http://dataprovider-controlplane.tx.test/api/v1/dsp", - "contractId": "{{contractagreement_id}}", + "contractId": "", "assetId": "200", "transferType": "HttpData-PULL", "dataDestination": { @@ -200,7 +195,7 @@ curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/transf "callbackAddresses": [ { "transactional": true, - "uri": "{{webhook}}/api/v1/transfers" + "uri": "http://dataprovider-submodelserver.tx.test/api/v1/transfers" } ] }' @@ -216,8 +211,5 @@ You should be able to see in the response that the _state_ value is equal to _ST 12. Validate Transfer ``` -curl -L -X POST 'http://webhook.site/e443ea0e-365a-436e-8f84-fad002e630e1/api/v1/contents' \ --H 'Content-Type: application/json' \ --H 'Cookie: XSRF-TOKEN=eyJpdiI6IjRyVklnVGltRE1XT3Jsbk03Yng1dnc9PSIsInZhbHVlIjoidHFCTSt0b1N3TzBkZmwvaGpmRTlCNEpNa3Z3TXRFa29jMmtwZ083RU1GV3h5MHlweWFPbjFDajNJMnFpSTdvV2hZY2tXSVpBQ05Vb29ueG5VM05mNHhEUzNwemZrcnMvRWxsOEtXZng1L1UraVNZYnhiTndXTFlkSDNlUHBHOFIiLCJtYWMiOiJjOTVkY2YzOTYyMDE2MTVhNGY2Zjc1NGU3NzUxZGQzMDVhYzIzY2E4NDNiNmJiMTY4MjFjMGRjYjM0MDBlYjEwIiwidGFnIjoiIn0%3D; webhooksite_session=Bm6cSCI0WnXRAoVUByiyoJrZiVlMrVPfYvqkkVXG' \ --d '{"userId": 918704604,"title": "agwng","text": "oz"}' +curl -L -X GET 'http://dataprovider-submodelserver.tx.test/api/v1/transfers/TEST1/contents' ``` diff --git a/docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json b/docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json index 67007aff..7aa3600e 100644 --- a/docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json +++ b/docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json @@ -1,10 +1,10 @@ { "info": { - "_postman_id": "973c3d8e-28f2-4667-95bf-f75a9492b425", - "name": "Umbrella Connector Data-Exchange", + "_postman_id": "f50a31fa-39cd-476b-a0f4-25b77299da8e", + "name": "Tractus-X Connector Data Exchange", "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", "_exporter_id": "31338309", - "_collection_link": "https://web.postman.co/workspace/LKSNext-Umbrella~f4be5514-1d11-45aa-8480-95f8eaef5027/collection/31338309-973c3d8e-28f2-4667-95bf-f75a9492b425?action=share&source=collection_link&creator=31338309" + "_collection_link": "https://bold-desert-566723.postman.co/workspace/LKSNext-Umbrella~f4be5514-1d11-45aa-8480-95f8eaef5027/collection/31338309-f50a31fa-39cd-476b-a0f4-25b77299da8e?action=share&source=collection_link&creator=31338309" }, "item": [ { @@ -42,14 +42,12 @@ } }, "url": { - "raw": "{{BACKEND_SERVICE}}/api/v1/contents", + "raw": "{{BACKEND_SERVICE}}/{{CONTENT_ID}}", "host": [ "{{BACKEND_SERVICE}}" ], "path": [ - "api", - "v1", - "contents" + "{{CONTENT_ID}}" ] } }, @@ -106,7 +104,7 @@ "header": [], "body": { "mode": "raw", - "raw": "{\n \"@context\": {},\n \"@id\": \"{{ASSET_ID}}\",\n \"properties\": {\n \"description\": \"Product EDC Demo Asset\"\n },\n \"dataAddress\": {\n \"@type\": \"DataAddress\",\n \"type\": \"HttpData\",\n \"baseUrl\": \"{{BACKEND_SERVICE_PROTOCOL}}/api/v1/contents/{{CONTENT_ID}}\"\n }\n}", + "raw": "{\n \"@context\": {},\n \"@id\": \"{{ASSET_ID}}\",\n \"properties\": {\n \"description\": \"Product EDC Demo Asset\"\n },\n \"dataAddress\": {\n \"@type\": \"DataAddress\",\n \"type\": \"HttpData\",\n \"baseUrl\": \"{{BACKEND_SERVICE_PROTOCOL}}/{{CONTENT_ID}}\"\n }\n}", "options": { "raw": { "language": "json" @@ -438,9 +436,6 @@ } } ], - "protocolProfileBehavior": { - "disabledSystemHeaders": {} - }, "request": { "auth": { "type": "apikey", @@ -939,12 +934,12 @@ }, { "key": "BACKEND_SERVICE", - "value": "https://webhook.site/03e288ed-1045-4a1e-94c9-992677294cdb", + "value": "http://dataprovider-submodelserver.tx.test", "type": "string" }, { "key": "BACKEND_SERVICE_PROTOCOL", - "value": "https://webhook.site/03e288ed-1045-4a1e-94c9-992677294cdb", + "value": "http://dataprovider-submodelserver.tx.test", "type": "string" }, { @@ -953,7 +948,7 @@ }, { "key": "CONTENT_ID", - "value": "DATA" + "value": "200" }, { "key": "OFFER_ID", @@ -981,4 +976,4 @@ "value": "TEST1" } ] -} +} \ No newline at end of file From 53aae26853f65f618e3468d3fd7a8c1c754f4ce1 Mon Sep 17 00:00:00 2001 From: Mikel Garcia <122596907+mgarciaLKS@users.noreply.github.com> Date: Thu, 7 Nov 2024 16:20:24 +0100 Subject: [PATCH 33/36] Update API_Doc.md --- docs/api/API_Doc.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/api/API_Doc.md b/docs/api/API_Doc.md index 36d3fd39..a449b328 100644 --- a/docs/api/API_Doc.md +++ b/docs/api/API_Doc.md @@ -6,8 +6,6 @@ This document provides about API requests for the Data Exchange. There is a [postman collection](./postman) containing information on how to exchange data between provider and consumer. -⚠️ _Change de webhook.site variable value to your respective one._ - ## Curl There is a [curl tutorial](./curl) containing step by step tutorial on how to exchange data between provider and consumer, using the console. From cfbfba03711cd222d29ad67d0beebb50d1a2cf38 Mon Sep 17 00:00:00 2001 From: Evelyn Gurschler Date: Thu, 7 Nov 2024 17:57:45 +0100 Subject: [PATCH 34/36] docs: do final adjustments --- charts/umbrella/README.md | 27 +++++------ docs/README.md | 2 +- .../api/curl/UmbrellaConnectorDataExchange.md | 46 ++++++++++++------- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 9c1a0a0d..8d2ee98a 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -15,9 +15,14 @@ - [Use released chart](#use-released-chart) - [Install selected components](#option-1) - [Install predefined subsets of components](#option-2) + - [Data Exchange](#data-exchange-subset) + - [Portal](#portal-subset) + - [BPDM](#bpdm-subset) - [Use local repository](#use-local-repository) - [Install selected components](#option-1-1) - [Install predefined subsets of components](#option-2-1) + - [Data Exchange](#data-exchange-subset-1) + - [Portal](#portal-subset-1) - [E2E Adopter Journeys](#e2e-adopter-journeys) - [Data exchange](#data-exchange) - [Get to know the Portal](#get-to-know-the-portal) @@ -38,9 +43,9 @@ This umbrella chart provides a basis for running end-to-end tests or creating a The Chart aims for a completely automated setup of a fully functional network, that does not require manual setup steps. -## Note for R24.05 +The versions of integrated components correspond to the **overarching [Release 24.05](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.05/CHANGELOG.md#2405---2024-05-29)**. The upgrade to [Release 24.08](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.08/CHANGELOG.md#2408---2024-08-05)** is currently in progress, some components have already been upgraded. -The versions of integrated components correspond to the **overarching [Release 24.05](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.05/CHANGELOG.md#2405---2024-05-29)**. +## Note from R24.05 onwards :warning: The 24.05 Release does not include a Managed Identity Wallet (MIW) - aka the FOSS Wallet of Eclipse Tractus-X - as it was not - yet - able to cover functionalities required for the Self-Sovereign Identity Flow introduced with R24.05. To test and ship R24.05, a commercial solution was used: the Decentralized Identity Management (DIM) Wallet. To cover the wallet functionalities in the [E2E Adopter Journey Data exchange](#data-exchange) and [E2E Adopter Journey Portal](#portal), the [SSI DIM Wallet Stub](https://github.com/eclipse-tractusx/ssi-dim-wallet-stub) was added to the umbrella helm chart. @@ -339,7 +344,7 @@ helm install \ Choose to install one of the predefined subsets (currently in focus of the **E2E Adopter Journey**): -**Data Exchange Subset** +###### **Data Exchange Subset** ```bash helm install \ @@ -360,7 +365,7 @@ helm install \ --namespace umbrella ``` -**Portal Subset** +###### **Portal Subset** ```bash helm install \ @@ -370,7 +375,7 @@ helm install \ --create-namespace ``` -**BPDM Subset** +###### **BPDM Subset** ```bash helm install \ --set bpdm.enabled=true,centralidp.enabled=true \ @@ -434,7 +439,7 @@ helm install -f your-values.yaml umbrella . --namespace umbrella --create-namesp Choose to install one of the predefined subsets (currently in focus of the **E2E Adopter Journey**): -**Data Exchange Subset** +###### **Data Exchange Subset** ```bash helm install -f values-adopter-data-exchange.yaml umbrella . --namespace umbrella --create-namespace @@ -459,7 +464,7 @@ helm upgrade -f values-adopter-data-exchange.yaml umbrella . --namespace umbrell helm install -f values-adopter-data-exchange-iatp-mock.yaml umbrella . --namespace umbrella --create-namespace ``` -**Portal Subset** +###### **Portal Subset** ```bash helm install -f values-adopter-portal.yaml umbrella . --namespace umbrella --create-namespace @@ -469,17 +474,15 @@ helm install -f values-adopter-portal.yaml umbrella . --namespace umbrella --cre #### Data exchange -To start the Data Exchange, it is necessary to execute the [Data Exchange Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) - There are two ways to test and execute the Data Exchange tutorial: **1. Postman** -You can import the Umbrella [Postman Collection](../../docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json) +You can import the Umbrella [Postman Collection](../../docs/api/postman/UmbrellaConnectorData-Exchange.postman_collection.json). **2. Curl** -You can follow the [Curl Steps](../../docs/api/curl/UmbrellaConectorDataExchange.md) +You can follow the [Curl Steps](../../docs/api/curl/UmbrellaConnectorDataExchange.md). Involved components: @@ -494,8 +497,6 @@ Involved components: #### Get to know the Portal -To start the Portal, it is necessary to execute the [Portal Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1) - Perform first login and send out an invitation to a company to join the network (SMTP account required to be configured in custom values.yaml file). Proceed with the login to the to verify that everything is setup as expected. diff --git a/docs/README.md b/docs/README.md index e39da650..0f88dcf3 100644 --- a/docs/README.md +++ b/docs/README.md @@ -6,7 +6,7 @@ The following table links you to the respective documentations. | Documentation | Purpose | |------------------------------------------------------------------|-----------------------------------------------------------------------------------------| -| [API Requests](api/API_Doc.md) | API Requests for Data Exchange. | +| [API Requests](api/API_Doc.md) | API Requests for Data Exchange. | ## NOTICE diff --git a/docs/api/curl/UmbrellaConnectorDataExchange.md b/docs/api/curl/UmbrellaConnectorDataExchange.md index bcf9b787..94cc0e79 100644 --- a/docs/api/curl/UmbrellaConnectorDataExchange.md +++ b/docs/api/curl/UmbrellaConnectorDataExchange.md @@ -1,14 +1,11 @@ ## Data Exchange Tutorial -In order to start exchanging data, it will be necessary to install the subset with the necessary components for data exchange with the [Data Exchange Subset](https://github.com/eclipse-tractusx/tractus-x-umbrella/blob/umbrella-2.0.0/charts/umbrella/README.md#option-2-1): - -### Steps - -Once the data space has been launched, we will execute the following calls to perform the communication between the components +Once the data space has been launched (please see [charts/umbrella/README.md](../../../charts/umbrella/README.md) until **Install --> Data Exchange Subset**), we will execute the following steps/calls to perform the communication between the components. > Variables enclosed in {{ }} mean that they are whose content has been obtained from the answers of previous calls. -1. Create Asset +### 1. Create Asset + ``` curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v3/assets' \ -H 'Content-Type: application/json' \ @@ -27,14 +24,17 @@ curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v3/assets' }' ``` -2. Get Asset by ID +### 2. Get Asset by ID + To check if the asset is correctly created. + ``` curl -L -X GET 'http://dataprovider-controlplane.tx.test/management/v3/assets/200' \ -H 'X-Api-Key: TEST2' ``` -3. Create Policy +### 3. Create Policy + ``` curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v2/policydefinitions' \ -H 'Content-Type: application/json' \ @@ -69,14 +69,16 @@ curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v2/policyde }' ``` -4. Get Policies by ID +### 4. Get Policies by ID + To check if the Policies are correctly created. ``` curl -L -X GET 'http://dataprovider-controlplane.tx.test/management/v2/policydefinitions/200' \ -H 'X-Api-Key: TEST2' ``` -5. Create Contract Definition +### 5. Create Contract Definition + ``` curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v2/contractdefinitions' \ -H 'Content-Type: application/json' \ @@ -96,14 +98,16 @@ curl -L -X POST 'http://dataprovider-controlplane.tx.test/management/v2/contract }' ``` -6. Get Contract Definition by ID +### 6. Get Contract Definition by ID + To check if the Contract Definition is correctly executed ``` curl -L -X GET 'http://dataprovider-controlplane.tx.test/management/v2/contractdefinitions/200' \ -H 'X-Api-Key: TEST2' ``` -7. Query Catalog +### 7. Query Catalog + ``` curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/catalog/request' \ -H 'Content-Type: application/json' \ @@ -122,9 +126,10 @@ curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/catalo } }' ``` + We get the {{offer_id}} from the response. -8. Initiate Negotiation +### 8. Initiate Negotiation ``` curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations' \ -H 'Content-Type: application/json' \ @@ -162,9 +167,11 @@ curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/contra } }' ``` + We get {{negotiation_id}} from the response. -9. Get Negotiation By ID +### 9. Get Negotiation By ID + ``` curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/contractnegotiations/' \ -H 'X-Api-Key: TEST1' @@ -173,7 +180,8 @@ You should be able to see in the response, that the _state_ value is equal to _F We get {{contractagreement_id}} from the response. -10. Initiate Transfer +### 10. Initiate Transfer + ``` curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/transferprocesses' \ -H 'Content-Type: application/json' \ @@ -200,16 +208,20 @@ curl -L -X POST 'http://dataconsumer-1-controlplane.tx.test/management/v2/transf ] }' ``` + We get {{transfer_id}} from the response -11. Get Transfer by ID +### 11. Get Transfer by ID + ``` curl -L -X GET 'http://dataconsumer-1-controlplane.tx.test/management/v2/transferprocesses/{{transfer_id}}' \ -H 'X-Api-Key: TEST1' ``` + You should be able to see in the response that the _state_ value is equal to _STARTED_. -12. Validate Transfer +### 12. Validate Transfer + ``` curl -L -X GET 'http://dataprovider-submodelserver.tx.test/api/v1/transfers/TEST1/contents' ``` From 393ee2cfbbbe1a71c6742ffe3ee006d78445eb9f Mon Sep 17 00:00:00 2001 From: Evelyn Gurschler Date: Thu, 7 Nov 2024 17:59:41 +0100 Subject: [PATCH 35/36] docs: add footer --- docs/api/curl/UmbrellaConnectorDataExchange.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/docs/api/curl/UmbrellaConnectorDataExchange.md b/docs/api/curl/UmbrellaConnectorDataExchange.md index 94cc0e79..1b6bf578 100644 --- a/docs/api/curl/UmbrellaConnectorDataExchange.md +++ b/docs/api/curl/UmbrellaConnectorDataExchange.md @@ -225,3 +225,11 @@ You should be able to see in the response that the _state_ value is equal to _ST ``` curl -L -X GET 'http://dataprovider-submodelserver.tx.test/api/v1/transfers/TEST1/contents' ``` + +## NOTICE + +This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). + +* SPDX-License-Identifier: Apache-2.0 +* SPDX-FileCopyrightText: 2024 Contributors to the Eclipse Foundation +* Source URL: From 65d85a368920329970111280d059950c8c414909 Mon Sep 17 00:00:00 2001 From: Evelyn Gurschler Date: Thu, 7 Nov 2024 18:01:16 +0100 Subject: [PATCH 36/36] docs: fix bold --- charts/umbrella/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/umbrella/README.md b/charts/umbrella/README.md index 8d2ee98a..dd7d3e3c 100644 --- a/charts/umbrella/README.md +++ b/charts/umbrella/README.md @@ -43,7 +43,7 @@ This umbrella chart provides a basis for running end-to-end tests or creating a The Chart aims for a completely automated setup of a fully functional network, that does not require manual setup steps. -The versions of integrated components correspond to the **overarching [Release 24.05](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.05/CHANGELOG.md#2405---2024-05-29)**. The upgrade to [Release 24.08](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.08/CHANGELOG.md#2408---2024-08-05)** is currently in progress, some components have already been upgraded. +The versions of integrated components correspond to the **overarching [Release 24.05](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.05/CHANGELOG.md#2405---2024-05-29)**. The upgrade to **[Release 24.08](https://github.com/eclipse-tractusx/tractus-x-release/blob/24.08/CHANGELOG.md#2408---2024-08-05)** is currently in progress, some components have already been upgraded. ## Note from R24.05 onwards