diff --git a/CHANGELOG.md b/CHANGELOG.md index beab4203c..7a36c2a1f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,20 @@ The changelog format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [released] +## [1.1.0] - 19-10-2023 + +## Added +- Added loading screen functionality in the frontend +- Create IRS component configuration for the integration with the backend application in next versions +- Created IRS postman collection for testing the APIs. +- Added the QR code scanning button in the main search view (welcome screen) +- Added support for the new dDTR lookup shells version which is (AAS 3.0) compliant. + +## Updated +- Updated the digital twin test payloads to match AAS 3.0 payloads which should be used for version `>v1.0.0` of the DPP +- Updated the main readme fixing notable mistakes. + ## [released] ## [1.0.1] - 31-08-2023 diff --git a/DEPENDENCIES_FRONTEND b/DEPENDENCIES_FRONTEND index cb8f19050..374507842 100644 --- a/DEPENDENCIES_FRONTEND +++ b/DEPENDENCIES_FRONTEND @@ -134,7 +134,7 @@ npm/npmjs/-/fs-extra/11.1.0, MIT, approved, #5742 npm/npmjs/-/fs-extra/9.1.0, MIT, approved, clearlydefined npm/npmjs/-/fs.realpath/1.0.0, ISC, approved, clearlydefined npm/npmjs/-/fsevents/2.3.2, MIT, approved, #2967 -npm/npmjs/-/function-bind/1.1.1, MIT, approved, clearlydefined +npm/npmjs/-/function-bind/1.1.1, MIT, approved, #11063 npm/npmjs/-/functional-red-black-tree/1.0.1, MIT, approved, clearlydefined npm/npmjs/-/gensync/1.0.0-beta.2, MIT, approved, clearlydefined npm/npmjs/-/get-caller-file/2.0.5, ISC, approved, clearlydefined @@ -151,7 +151,7 @@ npm/npmjs/-/graceful-fs/4.2.10, ISC, approved, #7413 npm/npmjs/-/has-flag/3.0.0, MIT, approved, clearlydefined npm/npmjs/-/has-flag/4.0.0, MIT, approved, clearlydefined npm/npmjs/-/has-symbols/1.0.3, MIT, approved, clearlydefined -npm/npmjs/-/has/1.0.3, MIT, approved, clearlydefined +npm/npmjs/-/has/1.0.3, MIT, approved, #10930 npm/npmjs/-/he/1.2.0, MIT, approved, clearlydefined npm/npmjs/-/http-signature/1.3.6, MIT, approved, clearlydefined npm/npmjs/-/human-signals/1.1.1, Apache-2.0, approved, clearlydefined @@ -426,7 +426,7 @@ npm/npmjs/@nodelib/fs.stat/2.0.5, MIT, approved, clearlydefined npm/npmjs/@nodelib/fs.walk/1.2.8, MIT, approved, clearlydefined npm/npmjs/@popperjs/core/2.11.2, MIT, approved, clearlydefined npm/npmjs/@types/node/14.18.36, MIT, approved, #4611 -npm/npmjs/@types/sinonjs__fake-timers/8.1.1, MIT, approved, clearlydefined +npm/npmjs/@types/sinonjs__fake-timers/8.1.1, MIT, approved, #11000 npm/npmjs/@types/sizzle/2.3.3, MIT, approved, clearlydefined npm/npmjs/@types/yauzl/2.10.0, MIT, approved, clearlydefined npm/npmjs/@vitejs/plugin-vue/4.0.0, MIT, approved, clearlydefined diff --git a/README.md b/README.md index 6337638db..ce867581e 100644 --- a/README.md +++ b/README.md @@ -35,9 +35,9 @@ In particular, the appliction is used to access the battery passport data provid ### Software Version #### Helm Chart Version -
1.0.1
+
1.1.0
#### Application Version -
v1.0.1
+
v1.1.0
## Application Preview @@ -46,29 +46,29 @@ Here is a preview from the DPP App UI, where we visualize a test battery passpor ![General Info View](./docs/arc42/GraphicBatteryPassportViewGeneralInfo.png) -> **Note**: For more information check the [documentation section](./docs/) +> **Note**: For more information check the [documentation section](./docs/README.md) ## Getting Started To get started you can have a look into our documentation: -| Name | Description | -| ---------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Arc42](./docs/arc42/Arc42.md) | Arc42 of Digital Product Pass | -| [Administration Guide](./docs/admin%20guide/Admin_Guide.md) | Administration Guide explaining the infrastructure and how to configure the application | -| [Backend Documentation](./consumer-backend/productpass/readme.md) | Backend documentation Product Passport App | -| [Deployment in Hotel Budapest](./deployment/README.md) | Technical Guide - Deployment in ArgoCD Hotel Budapest (integration environment) | -| [Docker Overview](./docker/README.md) | Overview on general docker commands | -| [Keycloak Overview](./docker/local/Keycloak/README.md) | This guide describes how to setup a keycloak instance in local docker container and import existing realm.json file. | -| [Short Introduction into the project](./docs/GETTING-STARTED.md) | Battery Pass Allpication infrastructure, installation guide, technical usage guide | -| [Code Scaning with Kics and Trivy](./docs/IaC.md) | Infrastructure As Code (IaC) with KICS intends to find security vulnerabilities by scanning the code and upload results to the security dashboard in github | -| [Release Guidelines](./docs/RELEASE.md) | Product Battery Pass Consumer App Release Guide | -| [Secret Management](./docs/SECRETS_MANAGEMENT.md) | Secrets management with CX HashiCorp Vault and ArgoCD Vault Plugin (AVP) - client credentials, database passwords, access tokens | -| [Cypress Overview](./docs/cypress/CYPRESS.md) | Documentation for Battery Passport App E2E Cypress test | -| [End User Manual](./docs/user%20manual/User%20Manual%20Product%20Viewer%20App.md) | End User Manual Product Viewer App | -| [Postman Overview](./postman/README.md) | Technical guide depicts the battery pass end-to-end API calls through the postman REST client | -| [Changelog](./CHANGELOG.md) | Changelog | -| [Helm Charts](https://github.com/eclipse-tractusx/digital-product-pass/tree/main/charts/digital-product-pass) | Project's Helm Charts | +| Name | Description | +| ---------------------------------------------------------------- |-------------------------------------------------------------------------------------------------------------------------------------------------------------| +| [Arc42](./docs/arc42/Arc42.md) | Main Architecture Document (Arc42) of Digital Product Pass Application | +| [Administration Guide](./docs/admin%20guide/Admin_Guide.md) | Administration Guide explaining the infrastructure and how to configure the application | +| [Backend Documentation](./consumer-backend/productpass/readme.md) | Backend documentation Product Passport App | +| [Deployment in Hotel Budapest](./deployment/README.md) | Technical Guide - Deployment in ArgoCD Hotel Budapest (integration environment) | +| [Docker Overview](./docker/README.md) | Overview on general docker commands | +| [Keycloak Overview](./docker/local/Keycloak/README.md) | This guide describes how to setup a keycloak instance in local docker container and import existing realm.json file. | +| [Short Introduction into the project](./docs/GETTING-STARTED.md) | Digital Product Pass App infrastructure, helm installation guide, technical usage guide | +| [Code Scaning with Kics and Trivy](./docs/IaC.md) | Infrastructure As Code (IaC) with KICS intends to find security vulnerabilities by scanning the code and upload results to the security dashboard in github | +| [Release Guidelines](./docs/RELEASE.md) | Digital Product Pass App Release Guide | +| [Secret Management](./docs/SECRETS_MANAGEMENT.md) | Secrets management with CX HashiCorp Vault and ArgoCD Vault Plugin (AVP) - client credentials, database passwords, access tokens | +| [Cypress Overview](./docs/cypress/CYPRESS.md) | Documentation for Battery Passport App E2E Cypress test | +| [End User Manual](./docs/user%20manual/User%20Manual%20Product%20Viewer%20App.md) | End User Manual Product Viewer App | +| [Postman Overview](./postman/README.md) | Technical guide depicts the battery pass end-to-end API calls through the postman REST client | +| [Changelog](./CHANGELOG.md) | Changelog | +| [Helm Charts](https://github.com/eclipse-tractusx/digital-product-pass/tree/main/charts/digital-product-pass) | Project's Helm Charts | @@ -80,7 +80,7 @@ To get started you can have a look into our documentation: ## Installation -[INSTALL](./INSTALL.md) +For installing the Digital Product Pass application please consult our [Intallation Guide](./INSTALL.md). ## License diff --git a/charts/digital-product-pass/Chart.yaml b/charts/digital-product-pass/Chart.yaml index 461fc888c..69fb313aa 100644 --- a/charts/digital-product-pass/Chart.yaml +++ b/charts/digital-product-pass/Chart.yaml @@ -40,11 +40,11 @@ type: application # to the chart and its templates, including the app version. # Versions are expected to follow Semantic Versioning (https://semver.org/) -version: 1.0.1 +version: 1.1.0 # This is the version number of the application being deployed. This version number should be # incremented each time you make changes to the application. Versions are not expected to # follow Semantic Versioning. They should reflect the version the application is using. # It is recommended to use it with quotes. -appVersion: "1.0.1" +appVersion: "1.1.0" diff --git a/charts/digital-product-pass/README.md b/charts/digital-product-pass/README.md index b33a7183e..c3dab99d6 100644 --- a/charts/digital-product-pass/README.md +++ b/charts/digital-product-pass/README.md @@ -1,6 +1,6 @@ # digital-product-pass -![Version: 1.0.0](https://img.shields.io/badge/Version-1.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) +![Version: 1.1.0](https://img.shields.io/badge/Version-1.1.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 1.1.0](https://img.shields.io/badge/AppVersion-1.1.0-informational?style=flat-square) A Helm chart for Tractus-X Digital Product Pass Kubernetes @@ -15,8 +15,8 @@ A Helm chart for Tractus-X Digital Product Pass Kubernetes | Key | Type | Default | Description | |-----|------|---------|-------------| | affinity | object | `{}` | | -| backend | object | `{"application":{"yml":"# -- spring boot configuration\nspring:\n name: \"Catena-X Product Passport Consumer Backend\"\n main:\n allow-bean-definition-overriding: true\n devtools:\n add-properties: false\n jackson:\n serialization:\n indent_output: true\nlogging:\n level:\n # -- general logging level\n root: INFO\n # -- logging for the util components\n utils: INFO\nconfiguration:\n # -- max retries for the backend services\n maxRetries: 5\n # -- keycloak configuration\n keycloak:\n realm: CX-Central\n resource: Cl13-CX-Battery\n tokenUri: 'https:///auth/realms//protocol/openid-connect/token'\n userInfoUri: 'https:///auth/realms//protocol/openid-connect/userinfo'\n # -- edc consumer connection configuration\n edc:\n endpoint: 'https://'\n management: '/management/v2'\n catalog: '/catalog/request'\n negotiation: '/contractnegotiations'\n transfer: '/transferprocesses'\n receiverEndpoint: 'https:///endpoint'\n delay: 100 # -- Negotiation status Delay in milliseconds in between async requests [<= 500]\n # -- security configuration\n security:\n check:\n enabled: false\n bpn: false\n edc: false\n # -- digital twin registry configuration\n dtr:\n central: false\n # -- central digital twin registry url\n centralUrl: 'https://'\n # -- asset id to search for the registry in the edc\n assetId: 'digital-twin-registry'\n # -- submodel endpoint interface to search\n endpointInterface: 'SUBMODEL-3.0'\n # -- dsp endpoint key inside submodel body\n dspEndpointKey: 'dspEndpoint'\n internalDtr: \"\" # -- ff there is an internal DTR available it can be referenced here and will be injected in the list of DTRs\n # -- decentral digital twin apis\n decentralApis:\n search: \"/lookup/shells/query\"\n digitalTwin: \"/shell-descriptors\"\n subModel: \"/submodel-descriptors\"\n # -- timeouts for the digital twin registry async negotiation\n timeouts:\n search: 10\n negotiation: 40\n transfer: 10\n digitalTwin: 20\n # -- temporary storage of dDTRs for optimization\n temporaryStorage: true\n # -- discovery configuration\n discovery:\n # -- discovery finder configuration\n endpoint: \"https:///discoveryfinder/api/administration/connectors/discovery/search\"\n # -- bpn discovery configuration\n bpn:\n key: \"manufacturerPartId\"\n searchPath: \"/api/administration/connectors/bpnDiscovery/search\"\n # -- edc discovery configuration\n edc:\n key: \"bpn\"\n # -- process configuration\n process:\n # -- directory for storing the contract negotiation files\n dir: \"process\"\n # -- indent the process negotiation files\n indent: true\n # -- unique sha512 hash key used for the passport encryption\n signKey: \"\"\n # -- passport data transfer configuration\n passport:\n # -- configure the data transfer\n dataTransfer:\n # -- encrypt the passport when he arrives from the edc data plane\n encrypt: true\n # -- the indent from the passport\n indent: true\n # -- directory to store the passport when is not linked to a process\n dir: \"data/transfer\"\n # -- passport versions allowed\n versions:\n - 'v3.0.1'\n# -- configuration of the spring boot server\nserver:\n # -- configuration of backend errors\n error:\n include-message: ALWAYS\n include-binding-errors: ALWAYS\n include-stacktrace: ON_PARAM\n include-exception: false\n # -- listening port for the backend\n port: 8888\n # -- maximum allowed connections\n tomcat:\n max-connections: 10000"},"avp":{"helm":{"clientId":"","clientSecret":"","participantId":"","xApiKey":""}},"image":{"pullPolicy":"Always","repository":"docker.io/tractusx/digital-product-pass-backend"},"imagePullSecrets":[],"ingress":{"enabled":false},"name":"dpp-backend","service":{"port":8888,"type":"ClusterIP"}}` | Backend configuration | -| backend.application | object | `{"yml":"# -- spring boot configuration\nspring:\n name: \"Catena-X Product Passport Consumer Backend\"\n main:\n allow-bean-definition-overriding: true\n devtools:\n add-properties: false\n jackson:\n serialization:\n indent_output: true\nlogging:\n level:\n # -- general logging level\n root: INFO\n # -- logging for the util components\n utils: INFO\nconfiguration:\n # -- max retries for the backend services\n maxRetries: 5\n # -- keycloak configuration\n keycloak:\n realm: CX-Central\n resource: Cl13-CX-Battery\n tokenUri: 'https:///auth/realms//protocol/openid-connect/token'\n userInfoUri: 'https:///auth/realms//protocol/openid-connect/userinfo'\n # -- edc consumer connection configuration\n edc:\n endpoint: 'https://'\n management: '/management/v2'\n catalog: '/catalog/request'\n negotiation: '/contractnegotiations'\n transfer: '/transferprocesses'\n receiverEndpoint: 'https:///endpoint'\n delay: 100 # -- Negotiation status Delay in milliseconds in between async requests [<= 500]\n # -- security configuration\n security:\n check:\n enabled: false\n bpn: false\n edc: false\n # -- digital twin registry configuration\n dtr:\n central: false\n # -- central digital twin registry url\n centralUrl: 'https://'\n # -- asset id to search for the registry in the edc\n assetId: 'digital-twin-registry'\n # -- submodel endpoint interface to search\n endpointInterface: 'SUBMODEL-3.0'\n # -- dsp endpoint key inside submodel body\n dspEndpointKey: 'dspEndpoint'\n internalDtr: \"\" # -- ff there is an internal DTR available it can be referenced here and will be injected in the list of DTRs\n # -- decentral digital twin apis\n decentralApis:\n search: \"/lookup/shells/query\"\n digitalTwin: \"/shell-descriptors\"\n subModel: \"/submodel-descriptors\"\n # -- timeouts for the digital twin registry async negotiation\n timeouts:\n search: 10\n negotiation: 40\n transfer: 10\n digitalTwin: 20\n # -- temporary storage of dDTRs for optimization\n temporaryStorage: true\n # -- discovery configuration\n discovery:\n # -- discovery finder configuration\n endpoint: \"https:///discoveryfinder/api/administration/connectors/discovery/search\"\n # -- bpn discovery configuration\n bpn:\n key: \"manufacturerPartId\"\n searchPath: \"/api/administration/connectors/bpnDiscovery/search\"\n # -- edc discovery configuration\n edc:\n key: \"bpn\"\n # -- process configuration\n process:\n # -- directory for storing the contract negotiation files\n dir: \"process\"\n # -- indent the process negotiation files\n indent: true\n # -- unique sha512 hash key used for the passport encryption\n signKey: \"\"\n # -- passport data transfer configuration\n passport:\n # -- configure the data transfer\n dataTransfer:\n # -- encrypt the passport when he arrives from the edc data plane\n encrypt: true\n # -- the indent from the passport\n indent: true\n # -- directory to store the passport when is not linked to a process\n dir: \"data/transfer\"\n # -- passport versions allowed\n versions:\n - 'v3.0.1'\n# -- configuration of the spring boot server\nserver:\n # -- configuration of backend errors\n error:\n include-message: ALWAYS\n include-binding-errors: ALWAYS\n include-stacktrace: ON_PARAM\n include-exception: false\n # -- listening port for the backend\n port: 8888\n # -- maximum allowed connections\n tomcat:\n max-connections: 10000"}` | specific backend and spring boot configurations | +| backend | object | `{"application":{"yml":"# -- spring boot configuration\nspring:\n name: \"Catena-X Product Passport Consumer Backend\"\n main:\n allow-bean-definition-overriding: true\n devtools:\n add-properties: false\n jackson:\n serialization:\n indent_output: true\nlogging:\n level:\n # -- general logging level\n root: INFO\n # -- logging for the util components\n utils: INFO\nconfiguration:\n # -- max retries for the backend services\n maxRetries: 5\n # -- keycloak configuration\n keycloak:\n realm: CX-Central\n resource: Cl13-CX-Battery\n tokenUri: 'https:///auth/realms//protocol/openid-connect/token'\n userInfoUri: 'https:///auth/realms//protocol/openid-connect/userinfo'\n # -- edc consumer connection configuration\n edc:\n endpoint: 'https://'\n management: '/management/v2'\n catalog: '/catalog/request'\n negotiation: '/contractnegotiations'\n transfer: '/transferprocesses'\n receiverEndpoint: 'https:///endpoint'\n delay: 100 # -- Negotiation status Delay in milliseconds in between async requests [<= 500]\n # -- security configuration\n security:\n check:\n enabled: false\n bpn: false\n edc: false\n # -- digital twin registry configuration\n dtr:\n central: false\n # -- central digital twin registry url\n centralUrl: 'https://'\n # -- asset id to search for the registry in the edc\n assetId: 'digital-twin-registry'\n # -- submodel endpoint interface to search\n endpointInterface: 'SUBMODEL-3.0'\n # -- dsp endpoint key inside submodel body\n dspEndpointKey: 'dspEndpoint'\n internalDtr: \"\" # -- ff there is an internal DTR available it can be referenced here and will be injected in the list of DTRs\n # -- decentral digital twin apis\n decentralApis:\n search: \"/lookup/shells\"\n digitalTwin: \"/shell-descriptors\"\n subModel: \"/submodel-descriptors\"\n # -- timeouts for the digital twin registry async negotiation\n timeouts:\n search: 10\n negotiation: 40\n transfer: 10\n digitalTwin: 20\n # -- temporary storage of dDTRs for optimization\n temporaryStorage: true\n # -- discovery configuration\n discovery:\n # -- discovery finder configuration\n endpoint: \"https:///discoveryfinder/api/administration/connectors/discovery/search\"\n # -- bpn discovery configuration\n bpn:\n key: \"manufacturerPartId\"\n searchPath: \"/api/administration/connectors/bpnDiscovery/search\"\n # -- edc discovery configuration\n edc:\n key: \"bpn\"\n # -- process configuration\n process:\n # -- directory for storing the contract negotiation files\n dir: \"process\"\n # -- indent the process negotiation files\n indent: true\n # -- unique sha512 hash key used for the passport encryption\n signKey: \"\"\n # -- passport data transfer configuration\n passport:\n # -- configure the data transfer\n dataTransfer:\n # -- encrypt the passport when he arrives from the edc data plane\n encrypt: true\n # -- the indent from the passport\n indent: true\n # -- directory to store the passport when is not linked to a process\n dir: \"data/transfer\"\n # -- passport versions allowed\n versions:\n - 'v3.0.1'\n# -- configuration of the spring boot server\nserver:\n # -- configuration of backend errors\n error:\n include-message: ALWAYS\n include-binding-errors: ALWAYS\n include-stacktrace: ON_PARAM\n include-exception: false\n # -- listening port for the backend\n port: 8888\n # -- maximum allowed connections\n tomcat:\n max-connections: 10000"},"avp":{"helm":{"clientId":"","clientSecret":"","participantId":"","xApiKey":""}},"image":{"pullPolicy":"Always","repository":"docker.io/tractusx/digital-product-pass-backend"},"imagePullSecrets":[],"ingress":{"enabled":false},"name":"dpp-backend","service":{"port":8888,"type":"ClusterIP"}}` | Backend configuration | +| backend.application | object | `{"yml":"# -- spring boot configuration\nspring:\n name: \"Catena-X Product Passport Consumer Backend\"\n main:\n allow-bean-definition-overriding: true\n devtools:\n add-properties: false\n jackson:\n serialization:\n indent_output: true\nlogging:\n level:\n # -- general logging level\n root: INFO\n # -- logging for the util components\n utils: INFO\nconfiguration:\n # -- max retries for the backend services\n maxRetries: 5\n # -- keycloak configuration\n keycloak:\n realm: CX-Central\n resource: Cl13-CX-Battery\n tokenUri: 'https:///auth/realms//protocol/openid-connect/token'\n userInfoUri: 'https:///auth/realms//protocol/openid-connect/userinfo'\n # -- edc consumer connection configuration\n edc:\n endpoint: 'https://'\n management: '/management/v2'\n catalog: '/catalog/request'\n negotiation: '/contractnegotiations'\n transfer: '/transferprocesses'\n receiverEndpoint: 'https:///endpoint'\n delay: 100 # -- Negotiation status Delay in milliseconds in between async requests [<= 500]\n # -- security configuration\n security:\n check:\n enabled: false\n bpn: false\n edc: false\n # -- digital twin registry configuration\n dtr:\n central: false\n # -- central digital twin registry url\n centralUrl: 'https://'\n # -- asset id to search for the registry in the edc\n assetId: 'digital-twin-registry'\n # -- submodel endpoint interface to search\n endpointInterface: 'SUBMODEL-3.0'\n # -- dsp endpoint key inside submodel body\n dspEndpointKey: 'dspEndpoint'\n internalDtr: \"\" # -- ff there is an internal DTR available it can be referenced here and will be injected in the list of DTRs\n # -- decentral digital twin apis\n decentralApis:\n search: \"/lookup/shells\"\n digitalTwin: \"/shell-descriptors\"\n subModel: \"/submodel-descriptors\"\n # -- timeouts for the digital twin registry async negotiation\n timeouts:\n search: 10\n negotiation: 40\n transfer: 10\n digitalTwin: 20\n # -- temporary storage of dDTRs for optimization\n temporaryStorage: true\n # -- discovery configuration\n discovery:\n # -- discovery finder configuration\n endpoint: \"https:///discoveryfinder/api/administration/connectors/discovery/search\"\n # -- bpn discovery configuration\n bpn:\n key: \"manufacturerPartId\"\n searchPath: \"/api/administration/connectors/bpnDiscovery/search\"\n # -- edc discovery configuration\n edc:\n key: \"bpn\"\n # -- process configuration\n process:\n # -- directory for storing the contract negotiation files\n dir: \"process\"\n # -- indent the process negotiation files\n indent: true\n # -- unique sha512 hash key used for the passport encryption\n signKey: \"\"\n # -- passport data transfer configuration\n passport:\n # -- configure the data transfer\n dataTransfer:\n # -- encrypt the passport when he arrives from the edc data plane\n encrypt: true\n # -- the indent from the passport\n indent: true\n # -- directory to store the passport when is not linked to a process\n dir: \"data/transfer\"\n # -- passport versions allowed\n versions:\n - 'v3.0.1'\n# -- configuration of the spring boot server\nserver:\n # -- configuration of backend errors\n error:\n include-message: ALWAYS\n include-binding-errors: ALWAYS\n include-stacktrace: ON_PARAM\n include-exception: false\n # -- listening port for the backend\n port: 8888\n # -- maximum allowed connections\n tomcat:\n max-connections: 10000"}` | specific backend and spring boot configurations | | backend.avp | object | `{"helm":{"clientId":"","clientSecret":"","participantId":"","xApiKey":""}}` | in this section we configure the values that are inserted as secrets in the backend | | backend.avp.helm.clientId | string | `""` | note: this credentials need to have access to the Discovery Finder, BPN Discovery and EDC Discovery | | backend.avp.helm.participantId | string | `""` | BPN Number | diff --git a/charts/digital-product-pass/values-dev.yaml b/charts/digital-product-pass/values-dev.yaml index 87f8c71ee..ecd2d910d 100644 --- a/charts/digital-product-pass/values-dev.yaml +++ b/charts/digital-product-pass/values-dev.yaml @@ -122,7 +122,7 @@ backend: security: check: enabled: true - bpn: true + bpn: false edc: true dtr: @@ -133,11 +133,14 @@ backend: endpointInterface: 'SUBMODEL-3.0' internalDtr: "https://materialpass.dev.demo.catena-x.net/BPNL000000000000" # -- If there is an internal DTR available it can be referenced here and will be injected in the list of DTRs decentralApis: - prefix: "/api/v3.0" - search: "/lookup/shells/query" + search: "/lookup/shells" digitalTwin: "/shell-descriptors" subModel: "/submodel-descriptors" - transferTimeout: 10000 + timeouts: + search: 10 + negotiation: 40 + transfer: 10 + digitalTwin: 20 temporaryStorage: true discovery: diff --git a/consumer-backend/productpass/pom.xml b/consumer-backend/productpass/pom.xml index d1b67a64e..87e550318 100644 --- a/consumer-backend/productpass/pom.xml +++ b/consumer-backend/productpass/pom.xml @@ -33,7 +33,7 @@ org.eclipse.tractusx productpass - 1.0.0 + 1.1.0 jar Catena-X Digital Product Passport Backend Product Passport Consumer Backend System for Product Passport Consumer Frontend Application diff --git a/deployment/helm/edc-consumer/Chart.yaml b/deployment/helm/edc-consumer/Chart.yaml index 86a6fbac1..d4df94224 100644 --- a/deployment/helm/edc-consumer/Chart.yaml +++ b/deployment/helm/edc-consumer/Chart.yaml @@ -42,3 +42,7 @@ dependencies: version: 12.1.6 repository: https://charts.bitnami.com/bitnami condition: postgresql.enabled + - name: irs-helm + repository: https://eclipse-tractusx.github.io/item-relationship-service + version: 6.7.0 + condition: irs-helm.enabled diff --git a/deployment/helm/edc-consumer/values-int.yaml b/deployment/helm/edc-consumer/values-int.yaml index c48c37cb5..9c920f2bf 100644 --- a/deployment/helm/edc-consumer/values-int.yaml +++ b/deployment/helm/edc-consumer/values-int.yaml @@ -169,7 +169,7 @@ tractusx-connector: postgresql: username: - password: + password: vault: hashicorp: @@ -190,3 +190,64 @@ postgresql: auth: username: password: + +irs-helm: + enabled: true + bpn: + + + irsUrl: "https://materialpass-irs.int.demo.catena-x.net" + + ingress: + enabled: true + annotations: + ingressClassName: nginx + nginx.ingress.kubernetes.io/backend-protocol: HTTP + nginx.ingress.kubernetes.io/force-ssl-redirect: 'true' + nginx.ingress.kubernetes.io/ssl-passthrough: 'false' + hosts: + - host: "materialpass-irs.int.demo.catena-x.net" + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - "materialpass-irs.int.demo.catena-x.net" + secretName: tls-secret + + digitalTwinRegistry: + type: decentral + url: https://materialpass.int.demo.catena-x.net/semantics/registry/api/v3.0 + discoveryFinderUrl: https://semantics.int.demo.catena-x.net/discoveryfinder/api/administration/connectors/discovery/search + semanticshub: + url: https://semantics.int.demo.catena-x.net/hub/api/v1/models + bpdm: + url: https://partners-pool.int.demo.catena-x.net + bpnEndpoint: >- + {{- if .Values.bpdm.url }} + {{- tpl (.Values.bpdm.url | default "") . }}/api/catena/legal-entities/{partnerId}?idType={idType} + {{- end }} + + minioUser: + minioPassword: + minioUrl: "http://{{ .Release.Name }}-minio:9000" + + keycloak: + oauth2: + clientId: + clientSecret: + clientTokenUri: https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token + jwkSetUri: https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/certs + + edc: + controlplane: + endpoint: + data: https://materialpass.int.demo.catena-x.net/consumer/management + apikey: + secret: + + minio: + serviceAccount: + create: false + rootUser: + rootPassword: diff --git a/deployment/helm/edc-consumer/values.yaml b/deployment/helm/edc-consumer/values.yaml index 2d32a7a76..17c1e57a3 100644 --- a/deployment/helm/edc-consumer/values.yaml +++ b/deployment/helm/edc-consumer/values.yaml @@ -143,7 +143,7 @@ tractusx-connector: url: "" authorityId: "" oauth: - tokenurl: "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token" + tokenurl: "https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token" client: id: "" secretAlias: "dev-client-secret" @@ -519,11 +519,11 @@ tractusx-connector: jdbcUrl: "jdbc:postgresql://postgresql:5432/edc" fullnameOverride: "postgresql" username: - password: + password: auth: database: "edc" username: - password: + password: vault: fullnameOverride: "vault" @@ -595,4 +595,7 @@ postgresql: auth: database: "edc" username: - password: \ No newline at end of file + password: + +irs-helm: + enabled: true diff --git a/deployment/helm/edc-provider/values.yaml b/deployment/helm/edc-provider/values.yaml index 8a39e3a1f..4a1675cf8 100644 --- a/deployment/helm/edc-provider/values.yaml +++ b/deployment/helm/edc-provider/values.yaml @@ -139,7 +139,7 @@ tractusx-connector: url: "" authorityId: "" oauth: - tokenurl: "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token" + tokenurl: "https://centralidp.dev.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token" client: id: "" secretAlias: "dev-client-secret" diff --git a/deployment/helm/irs/.helmignore b/deployment/helm/irs/.helmignore new file mode 100644 index 000000000..0e8a0eb36 --- /dev/null +++ b/deployment/helm/irs/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deployment/helm/irs/Chart.yaml b/deployment/helm/irs/Chart.yaml new file mode 100644 index 000000000..5bb43c3b6 --- /dev/null +++ b/deployment/helm/irs/Chart.yaml @@ -0,0 +1,41 @@ +################################################################################# +# Catena-X - Product Passport Consumer Application +# +# Copyright (c) 2022, 2023 BASF SE, BMW AG, Henkel AG & Co. KGaA +# +# 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 govern in permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# + +apiVersion: v2 +name: irs +description: A Helm chart for Kubernetes +type: application +version: 0.1.0 +appVersion: "3.5.0" +dependencies: + - name: irs-helm + repository: https://eclipse-tractusx.github.io/item-relationship-service + version: 6.7.0 + condition: irs-helm.enabled + - name: tractusx-connector + repository: https://eclipse-tractusx.github.io/charts/dev + version: 0.5.0 + - condition: postgresql.enabled + alias: edc-postgresql + name: postgresql + repository: https://charts.bitnami.com/bitnami + version: 12.1.6 diff --git a/deployment/helm/irs/values-int.yaml b/deployment/helm/irs/values-int.yaml new file mode 100644 index 000000000..51ef35121 --- /dev/null +++ b/deployment/helm/irs/values-int.yaml @@ -0,0 +1,257 @@ +################################################################################# +# Catena-X - Product Passport Consumer Application +# +# Copyright (c) 2022, 2023 BASF SE, BMW AG, Henkel AG & Co. KGaA +# +# 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 govern in permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# + +### The fully configuration is available in https://github.com/eclipse-tractusx/item-relationship-service/tree/main/charts/irs-helm + +--- + +irs-helm: + enabled: true + bpn: + + nameOverride: "dpp-irs" + fullnameOverride: "dpp-irs" + + # namespace: product-material-pass + + irsUrl: "https://materialpass-irs.int.demo.catena-x.net" + + ingress: + enabled: true + annotations: + ingressClassName: nginx + nginx.ingress.kubernetes.io/backend-protocol: HTTP + nginx.ingress.kubernetes.io/force-ssl-redirect: 'true' + nginx.ingress.kubernetes.io/ssl-passthrough: 'false' + hosts: + - host: "materialpass-irs.int.demo.catena-x.net" + paths: + - path: / + pathType: Prefix + tls: + - hosts: + - "materialpass-irs.int.demo.catena-x.net" + secretName: tls-secret + + digitalTwinRegistry: + type: decentral + url: https://materialpass.int.demo.catena-x.net/semantics/registry/api/v3.0 + discoveryFinderUrl: https://semantics.int.demo.catena-x.net/discoveryfinder/api/administration/connectors/discovery/search + semanticshub: + url: https://semantics.int.demo.catena-x.net/hub/api/v1/models + bpdm: + url: https://partners-pool.int.demo.catena-x.net + bpnEndpoint: >- + {{- if .Values.bpdm.url }} + {{- tpl (.Values.bpdm.url | default "") . }}/api/catena/legal-entities/{partnerId}?idType={idType} + {{- end }} + + minioUser: + minioPassword: + minioUrl: "http://{{ .Release.Name }}-minio:9000" + + keycloak: + oauth2: + clientId: + clientSecret: + clientTokenUri: https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token + jwkSetUri: https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/certs + # portal: + # oauth2: + # clientId: # + # clientSecret: # + + edc: + controlplane: + endpoint: + data: https://materialpass-irs.int.demo.catena-x.net/consumer/management + apikey: + secret: + + minio: + nameOverride: "dpp-irs-minio" + fullnameOverride: "dpp-irs-minio" + serviceAccount: + create: false + rootUser: + rootPassword: + +tractusx-connector: + enabled: true + participant: + id: "" + + controlplane: + enabled: true + endpoints: + # -- default api for health checks, should not be added to any ingress + default: + # -- port for incoming api calls + port: 8080 + # -- path for incoming api calls + path: /consumer/api + # -- data management api, used by internal users, can be added to an ingress and must not be internet facing + management: + # -- port for incoming api calls + port: 8081 + # -- path for incoming api calls + path: /consumer/management + # -- authentication key, must be attached to each 'X-Api-Key' request header + authKey: + # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not + control: + # -- port for incoming api calls + port: 8083 + # -- path for incoming api calls + path: /consumer/control + # -- ids api, used for inter connector communication and must be internet facing + protocol: + # -- port for incoming api calls + port: 8084 + # -- path for incoming api calls + path: /consumer/api/v1/dsp + # -- metrics api, used for application metrics, must not be internet facing + metrics: + # -- port for incoming api calls + port: 9090 + # -- path for incoming api calls + path: /consumer/metrics + # -- observability api with unsecured access, must not be internet facing + observability: + # -- port for incoming API calls + port: 8085 + # -- observability api, provides /health /readiness and /liveness endpoints + path: /consumer/observability + # -- allow or disallow insecure access, i.e. access without authentication + insecure: true + + ssi: + miw: + url: "" + authorityId: "" + oauth: + tokenurl: "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token" + client: + id: "" + secretAlias: "int-client-secret" + endpoint: + audience: https://materialpass-irs.int.demo.catena-x.net/consumer + + ## Ingress declaration to expose the network service. + ingresses: + ## Public / Internet facing Ingress + - enabled: true + # -- The hostname to be used to precisely map incoming traffic onto the underlying network service + hostname: "materialpass-irs.int.demo.catena-x.net" + # -- Additional ingress annotations to add + annotations: {} + # -- EDC endpoints exposed by this ingress resource + endpoints: + - default + - management + - control + - protocol + - metrics + - observability + # -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use + className: "nginx" + # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource + tls: + # -- Enables TLS on the ingress resource + enabled: true + # -- If present overwrites the default secret name + secretName: "tls-secret" + dataplane: + enabled: true + endpoints: + default: + port: 8080 + path: /consumer/api + public: + port: 8081 + path: /consumer/api/public + control: + port: 8083 + path: /consumer/api/dataplane/control + proxy: + port: 8186 + path: /consumer/proxy + observability: + # -- port for incoming API calls + port: 8085 + # -- observability api, provides /health /readiness and /liveness endpoints + path: /consumer/observability + # -- allow or disallow insecure access, i.e. access without authentication + insecure: true + metrics: + port: 9090 + path: /consumer/metrics + + ## Ingress declaration to expose the network service. + ingresses: + ## Public / Internet facing Ingress + - enabled: true + # -- The hostname to be used to precisely map incoming traffic onto the underlying network service + hostname: "materialpass-irs.int.demo.catena-x.net" + # -- Additional ingress annotations to add + annotations: {} + # -- EDC endpoints exposed by this ingress resource + endpoints: + - public + # -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use + className: "nginx" + # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource + tls: + # -- Enables TLS on the ingress resource + enabled: true + # -- If present overwrites the default secret name + secretName: "tls-secret" + ## Adds [cert-manager](https://cert-manager.io/docs/) annotations to the ingress resource + certManager: + # -- If preset enables certificate generation via cert-manager namespace scoped issuer + issuer: "" + # -- If preset enables certificate generation via cert-manager cluster-wide issuer + clusterIssuer: "" + + postgresql: + username: + password: + + vault: + hashicorp: + url: + token: + paths: + secret: + health: /v1/sys/health + secretNames: + transferProxyTokenSignerPrivateKey: ids-daps_key + transferProxyTokenSignerPublicKey: ids-daps_crt + transferProxyTokenEncryptionAesKey: edc-encryption-key + + # backendService: + # httpProxyTokenReceiverUrl: "https://materialpass-irs.int.demo.catena-x.net/endpoint" + +postgresql: + auth: + username: + password: diff --git a/deployment/helm/irs/values.yaml b/deployment/helm/irs/values.yaml new file mode 100644 index 000000000..71ab07d07 --- /dev/null +++ b/deployment/helm/irs/values.yaml @@ -0,0 +1,596 @@ +################################################################################# +# Catena-X - Product Passport Consumer Application +# +# Copyright (c) 2022, 2023 BASF SE, BMW AG, Henkel AG & Co. KGaA +# +# 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 govern in permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# + +### The fully configuration is available in https://github.com/eclipse-tractusx/item-relationship-service/tree/main/charts/irs-helm + +--- + +irs-helm: + enabled: true + +tractusx-connector: + enabled: true + install: + daps: false + postgresql: false + vault: false + fullnameOverride: "irs-edc-consumer" + nameOverride: "" + # -- Existing image pull secret to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) + imagePullSecrets: [] + customLabels: {} + + + participant: + id: "" + + controlplane: + enabled: true + image: + # -- Which derivate of the control plane to use. when left empty the deployment will select the correct image automatically + repository: "tractusx/edc-controlplane-postgresql-hashicorp-vault" + # -- [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use + pullPolicy: IfNotPresent + # -- Overrides the image tag whose default is the chart appVersion + tag: "0.5.0" + initContainers: [] + debug: + enabled: false + port: 1044 + suspendOnStart: false + internationalDataSpaces: + id: TXDC + description: Tractus-X Eclipse IDS Data Space Connector + title: "" + maintainer: "" + curator: "" + catalogId: TXDC-Catalog + livenessProbe: + # -- Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) + enabled: true + # -- seconds to wait before performing the first liveness check + initialDelaySeconds: 30 + # -- this fields specifies that kubernetes should perform a liveness check every 10 seconds + periodSeconds: 10 + # -- number of seconds after which the probe times out + timeoutSeconds: 5 + # -- when a probe fails kubernetes will try 6 times before giving up + failureThreshold: 6 + # -- number of consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + readinessProbe: + # -- Whether to enable kubernetes [readiness-probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) + enabled: true + # -- seconds to wait before performing the first readiness check + initialDelaySeconds: 30 + # -- this fields specifies that kubernetes should perform a readiness check every 10 seconds + periodSeconds: 10 + # -- number of seconds after which the probe times out + timeoutSeconds: 5 + # -- when a probe fails kubernetes will try 6 times before giving up + failureThreshold: 6 + # -- number of consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + # -- endpoints of the control plane + endpoints: + # -- default api for health checks, should not be added to any ingress + default: + # -- port for incoming api calls + port: 8080 + # -- path for incoming api calls + path: /consumer/api + # -- data management api, used by internal users, can be added to an ingress and must not be internet facing + management: + # -- port for incoming api calls + port: 8081 + # -- path for incoming api calls + path: /consumer/management + # -- authentication key, must be attached to each 'X-Api-Key' request header + authKey: + # -- control api, used for internal control calls. can be added to the internal ingress, but should probably not + control: + # -- port for incoming api calls + port: 8083 + # -- path for incoming api calls + path: /consumer/control + # -- ids api, used for inter connector communication and must be internet facing + protocol: + # -- port for incoming api calls + port: 8084 + # -- path for incoming api calls + path: /consumer/api/v1/dsp + # -- metrics api, used for application metrics, must not be internet facing + metrics: + # -- port for incoming api calls + port: 9090 + # -- path for incoming api calls + path: /consumer/metrics + # -- observability api with unsecured access, must not be internet facing + observability: + # -- port for incoming API calls + port: 8085 + # -- observability api, provides /health /readiness and /liveness endpoints + path: /consumer/observability + # -- allow or disallow insecure access, i.e. access without authentication + insecure: true + businessPartnerValidation: + log: + agreementValidation: true + # SSI configuration + ssi: + miw: + url: "" + authorityId: "" + oauth: + tokenurl: "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token" + client: + id: "" + secretAlias: "dev-client-secret" + endpoint: + audience: https://materialpass.dev.demo.catena-x.net/consumer + + service: + # -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. + type: ClusterIP + annotations: {} + # -- additional labels for the pod + podLabels: {} + # -- additional annotations for the pod + podAnnotations: {} + # -- The [pod security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod) defines privilege and access control settings for a Pod within the deployment + podSecurityContext: + seccompProfile: + # -- Restrict a Container's Syscalls with seccomp + type: RuntimeDefault + # -- Runs all processes within a pod with a special uid + runAsUser: 10001 + # -- Processes within a pod will belong to this guid + runAsGroup: 10001 + # -- The owner for volumes and any files created within volumes will belong to this guid + fsGroup: 10001 + # The [container security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) defines privilege and access control settings for a Container within a pod + securityContext: + capabilities: + # -- Specifies which capabilities to drop to reduce syscall attack surface + drop: + - ALL + # -- Specifies which capabilities to add to issue specialized syscalls + add: [] + # -- Whether the root filesystem is mounted in read-only mode + readOnlyRootFilesystem: true + # -- Controls [Privilege Escalation](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privilege-escalation) enabling setuid binaries changing the effective user ID + allowPrivilegeEscalation: false + # -- Requires the container to run without root privileges + runAsNonRoot: true + # -- The container's process will run with the specified uid + runAsUser: 10001 + # Extra environment variables that will be pass onto deployment pods + env: {} + # ENV_NAME: value + + # "valueFrom" environment variable references that will be added to deployment pods. Name is templated. + # ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core + envValueFrom: {} + # ENV_NAME: + # configMapKeyRef: + # name: configmap-name + # key: value_key + # secretKeyRef: + # name: secret-name + # key: value_key + + # [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from + envSecretNames: [] + # - first-secret + # - second-secret + + # [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from + envConfigMapNames: [] + # - first-config-map + # - second-config-map + + ## Ingress declaration to expose the network service. + ingresses: + ## Public / Internet facing Ingress + - enabled: true + # -- The hostname to be used to precisely map incoming traffic onto the underlying network service + hostname: "materialpass-irs.dev.demo.catena-x.net" + # -- Additional ingress annotations to add + annotations: {} + # -- EDC endpoints exposed by this ingress resource + endpoints: + - default + - management + - control + - protocol + - metrics + - observability + # -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use + className: "nginx" + # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource + tls: + # -- Enables TLS on the ingress resource + enabled: true + # -- If present overwrites the default secret name + secretName: "tls-secret" + ## Adds [cert-manager](https://cert-manager.io/docs/) annotations to the ingress resource + certManager: + # -- If preset enables certificate generation via cert-manager namespace scoped issuer + issuer: "" + # -- If preset enables certificate generation via cert-manager cluster-wide issuer + clusterIssuer: "" + ## Private / Intranet facing Ingress + - enabled: false + # -- The hostname to be used to precisely map incoming traffic onto the underlying network service + hostname: "edc-control.intranet" + # -- Additional ingress annotations to add + annotations: {} + # -- EDC endpoints exposed by this ingress resource + endpoints: + - management + - control + # -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use + className: "nginx" + # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource + tls: + # -- Enables TLS on the ingress resource + enabled: true + # -- If present overwrites the default secret name + secretName: "tls-secret" + ## Adds [cert-manager](https://cert-manager.io/docs/) annotations to the ingress resource + certManager: + # -- If preset enables certificate generation via cert-manager namespace scoped issuer + issuer: "" + # -- If preset enables certificate generation via cert-manager cluster-wide issuer + clusterIssuer: "" + # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container + volumeMounts: [] + # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories + volumes: [] + # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + replicaCount: 1 + autoscaling: + # -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) + enabled: false + # -- Minimal replicas if resource consumption falls below resource threshholds + minReplicas: 1 + # -- Maximum replicas if resource consumption exceeds resource threshholds + maxReplicas: 100 + # -- targetAverageUtilization of cpu provided to a pod + targetCPUUtilizationPercentage: 80 + # -- targetAverageUtilization of memory provided to a pod + targetMemoryUtilizationPercentage: 80 + # -- configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics + opentelemetry: |- + otel.javaagent.enabled=false + otel.javaagent.debug=false + # -- configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) + logging: |- + .level=INFO + org.eclipse.edc.level=ALL + handlers=java.util.logging.ConsoleHandler + java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter + java.util.logging.ConsoleHandler.level=ALL + java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n + # [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes + nodeSelector: {} + # [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes + tolerations: [] + # [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on + affinity: {} + url: + # -- Explicitly declared url for reaching the ids api (e.g. if ingresses not used) + ids: "" + dataplane: + enabled: true + image: + # -- Which derivate of the data plane to use. when left empty the deployment will select the correct image automatically + repository: "tractusx/edc-dataplane-hashicorp-vault" + # -- [Kubernetes image pull policy](https://kubernetes.io/docs/concepts/containers/images/#image-pull-policy) to use + pullPolicy: IfNotPresent + # -- Overrides the image tag whose default is the chart appVersion + tag: "0.5.0" + initContainers: [] + debug: + enabled: false + port: 1044 + suspendOnStart: false + livenessProbe: + # -- Whether to enable kubernetes [liveness-probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) + enabled: true + # -- seconds to wait before performing the first liveness check + initialDelaySeconds: 30 + # -- this fields specifies that kubernetes should perform a liveness check every 10 seconds + periodSeconds: 10 + # -- number of seconds after which the probe times out + timeoutSeconds: 5 + # -- when a probe fails kubernetes will try 6 times before giving up + failureThreshold: 6 + # -- number of consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + readinessProbe: + # -- Whether to enable kubernetes [readiness-probes](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) + enabled: true + # -- seconds to wait before performing the first readiness check + initialDelaySeconds: 30 + # -- this fields specifies that kubernetes should perform a liveness check every 10 seconds + periodSeconds: 10 + # -- number of seconds after which the probe times out + timeoutSeconds: 5 + # -- when a probe fails kubernetes will try 6 times before giving up + failureThreshold: 6 + # -- number of consecutive successes for the probe to be considered successful after having failed + successThreshold: 1 + service: + # -- [Service type](https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types) to expose the running application on a set of Pods as a network service. + type: ClusterIP + port: 80 + endpoints: + default: + port: 8080 + path: /consumer/api + public: + port: 8081 + path: /consumer/api/public + control: + port: 8083 + path: /consumer/api/dataplane/control + proxy: + port: 8186 + path: /consumer/proxy + observability: + # -- port for incoming API calls + port: 8085 + # -- observability api, provides /health /readiness and /liveness endpoints + path: /consumer/observability + # -- allow or disallow insecure access, i.e. access without authentication + insecure: true + metrics: + port: 9090 + path: /consumer/metrics + aws: + endpointOverride: "" + accessKeyId: "" + secretAccessKey: "" + # -- additional labels for the pod + podLabels: {} + # -- additional annotations for the pod + podAnnotations: {} + # -- The [pod security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-pod) defines privilege and access control settings for a Pod within the deployment + podSecurityContext: + seccompProfile: + # -- Restrict a Container's Syscalls with seccomp + type: RuntimeDefault + # -- Runs all processes within a pod with a special uid + runAsUser: 10001 + # -- Processes within a pod will belong to this guid + runAsGroup: 10001 + # -- The owner for volumes and any files created within volumes will belong to this guid + fsGroup: 10001 + # The [container security context](https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-the-security-context-for-a-container) defines privilege and access control settings for a Container within a pod + securityContext: + capabilities: + # -- Specifies which capabilities to drop to reduce syscall attack surface + drop: + - ALL + # -- Specifies which capabilities to add to issue specialized syscalls + add: [] + # -- Whether the root filesystem is mounted in read-only mode + readOnlyRootFilesystem: true + # -- Controls [Privilege Escalation](https://kubernetes.io/docs/concepts/security/pod-security-policy/#privilege-escalation) enabling setuid binaries changing the effective user ID + allowPrivilegeEscalation: false + # -- Requires the container to run without root privileges + runAsNonRoot: true + # -- The container's process will run with the specified uid + runAsUser: 10001 + # Extra environment variables that will be pass onto deployment pods + env: {} + # ENV_NAME: value + + # "valueFrom" environment variable references that will be added to deployment pods. Name is templated. + # ref: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#envvarsource-v1-core + envValueFrom: {} + # ENV_NAME: + # configMapKeyRef: + # name: configmap-name + # key: value_key + # secretKeyRef: + # name: secret-name + # key: value_key + + # [Kubernetes Secret Resource](https://kubernetes.io/docs/concepts/configuration/secret/) names to load environment variables from + envSecretNames: [] + # - first-secret + # - second-secret + + # [Kubernetes ConfigMap Resource](https://kubernetes.io/docs/concepts/configuration/configmap/) names to load environment variables from + envConfigMapNames: [] + # - first-config-map + # - second-config-map + + ## Ingress declaration to expose the network service. + ingresses: + ## Public / Internet facing Ingress + - enabled: true + # -- The hostname to be used to precisely map incoming traffic onto the underlying network service + hostname: "materialpass-irs.dev.demo.catena-x.net" + # -- Additional ingress annotations to add + annotations: {} + # -- EDC endpoints exposed by this ingress resource + endpoints: + - public + # -- Defines the [ingress class](https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class) to use + className: "nginx" + # -- TLS [tls class](https://kubernetes.io/docs/concepts/services-networking/ingress/#tls) applied to the ingress resource + tls: + # -- Enables TLS on the ingress resource + enabled: true + # -- If present overwrites the default secret name + secretName: "tls-secret" + ## Adds [cert-manager](https://cert-manager.io/docs/) annotations to the ingress resource + certManager: + # -- If preset enables certificate generation via cert-manager namespace scoped issuer + issuer: "" + # -- If preset enables certificate generation via cert-manager cluster-wide issuer + clusterIssuer: "" + # -- declare where to mount [volumes](https://kubernetes.io/docs/concepts/storage/volumes/) into the container + volumeMounts: [] + # -- [volume](https://kubernetes.io/docs/concepts/storage/volumes/) directories + volumes: [] + # -- [resource management](https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/) for the container + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + replicaCount: 1 + autoscaling: + # -- Enables [horizontal pod autoscaling](https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/) + enabled: false + # -- Minimal replicas if resource consumption falls below resource threshholds + minReplicas: 1 + # -- Maximum replicas if resource consumption exceeds resource threshholds + maxReplicas: 100 + # -- targetAverageUtilization of cpu provided to a pod + targetCPUUtilizationPercentage: 80 + # -- targetAverageUtilization of memory provided to a pod + targetMemoryUtilizationPercentage: 80 + # -- configuration of the [Open Telemetry Agent](https://opentelemetry.io/docs/instrumentation/java/automatic/agent-config/) to collect and expose metrics + opentelemetry: |- + otel.javaagent.enabled=false + otel.javaagent.debug=false + # -- configuration of the [Java Util Logging Facade](https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html) + logging: |- + .level=INFO + org.eclipse.edc.level=ALL + handlers=java.util.logging.ConsoleHandler + java.util.logging.ConsoleHandler.formatter=java.util.logging.SimpleFormatter + java.util.logging.ConsoleHandler.level=ALL + java.util.logging.SimpleFormatter.format=[%1$tY-%1$tm-%1$td %1$tH:%1$tM:%1$tS] [%4$-7s] %5$s%6$s%n + # [node selector](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodeselector) to constrain pods to nodes + nodeSelector: {} + # [tolerations](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) to configure preferred nodes + tolerations: [] + # [affinity](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) to configure which nodes the pods can be scheduled on + affinity: {} + url: + # -- Explicitly declared url for reaching the public api (e.g. if ingresses not used) + public: "" + + postgresql: + jdbcUrl: "jdbc:postgresql://postgresql:5432/edc" + fullnameOverride: "postgresql" + username: + password: + auth: + database: "edc" + username: + password: + + vault: + fullnameOverride: "vault" + injector: + enabled: false + server: + dev: + enabled: true + devRootToken: "root" + # Must be the same certificate that is configured in section 'daps' + postStart: # must be set externally! + hashicorp: + url: + token: + timeout: 30 + healthCheck: + enabled: true + standbyOk: true + paths: + secret: + health: /v1/sys/health + secretNames: + transferProxyTokenSignerPrivateKey: daps-key-dev + transferProxyTokenSignerPublicKey: daps-crt-dev + transferProxyTokenEncryptionAesKey: edc-encryption-key + + backendService: + httpProxyTokenReceiverUrl: "https://materialpass.dev.demo.catena-x.net/endpoint" + + networkPolicy: + # -- If `true` network policy will be created to restrict access to control- and dataplane + enabled: false + # -- Configuration of the controlplane component + controlplane: + # -- Specify from rule network policy for cp (defaults to all namespaces) + from: + - namespaceSelector: {} + # -- Configuration of the dataplane component + dataplane: + # -- Specify from rule network policy for dp (defaults to all namespaces) + from: + - namespaceSelector: {} + + serviceAccount: + # Specifies whether a service account should be created + create: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + # -- Existing image pull secret bound to the service account to use to [obtain the container image from private registries](https://kubernetes.io/docs/concepts/containers/images/#using-a-private-registry) + imagePullSecrets: [] + + # -- Configurations for Helm tests + tests: + # -- Configure the hook-delete-policy for Helm tests + hookDeletePolicy: before-hook-creation,hook-succeeded + +postgresql: + jdbcUrl: "jdbc:postgresql://postgresql:5432/edc" + fullnameOverride: "postgresql" + primary: + persistence: + enabled: true + readReplicas: + persistence: + enabled: true + auth: + database: "edc" + username: + password: diff --git a/deployment/infrastructure/delete-provider-dtr.sh b/deployment/infrastructure/delete-provider-dtr.sh index 970ce5c6c..995b906d3 100644 --- a/deployment/infrastructure/delete-provider-dtr.sh +++ b/deployment/infrastructure/delete-provider-dtr.sh @@ -40,7 +40,8 @@ DIGITAL_TWIN_4='1f0ef836-40b7-4f31-a9bd-cb6a8960779e' DIGITAL_TWIN_SUBMODEL_ID_4='26bf39c5-68a5-43a1-8db7-d33e116a6f61' SERVER_URL='' -REGISTRY_URL='' +REGISTRY_URL='/api/v3.0/shell-descriptors' + # put access token without 'Bearer ' prefix BEARER_TOKEN='' @@ -58,17 +59,17 @@ echo # Delete a contract definition echo "Delete contract definition for asset 1 - DTR..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/10 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/10 echo # Delete a asset echo "Delete asset 1 - DTR..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_DTR} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_DTR} echo # Delete a general policy echo "Delete policy for asset 1 - DTR..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/4b480f48-79a0-4851-a56c-6ef71e19ebc4 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/4b480f48-79a0-4851-a56c-6ef71e19ebc4 echo @@ -76,29 +77,29 @@ echo '**************************Asset 2 **********************' echo # Delete Submodel data echo "Delete sample data for asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} echo # Delete a contract definition echo "Delete contract definition for asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/1 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/1 echo # Delete a asset echo "Delete asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_1} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_1} echo # Delete a general policy echo "Delete policy for asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/ad8d2c57-cf32-409c-96a8-be59675b6ae5 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/ad8d2c57-cf32-409c-96a8-be59675b6ae5 echo # Delete a digital twin and register from the registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 2 and register it devo CX registry..." -curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL/${DIGITAL_TWIN_1} +curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL/${DIGITAL_TWIN_1} echo echo @@ -110,30 +111,30 @@ echo # Delete a contract definition echo "Delete contract definition for asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/2 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/2 echo # Delete Submodel data echo "Delete sample data for asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} echo # Delete a asset echo "Delete asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_2} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_2} echo # Delete a general policy echo "Delete policy for asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/f873e234-112c-4598-893b-eda0671b7402 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/f873e234-112c-4598-893b-eda0671b7402 echo # Delete a digital twin and register from the registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 3 and register it devo CX registry..." -curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/NCR186850B.json" $REGISTRY_URL/${DIGITAL_TWIN_2} +curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/NCR186850B.json" $REGISTRY_URL/${DIGITAL_TWIN_2} echo echo @@ -142,23 +143,23 @@ echo echo '**************************Asset 4 **********************' # Delete Submodel data echo "Delete sample data for asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} echo # Delete a contract definition echo "Delete contract definition for asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/3 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/3 echo # Delete a asset echo "Delete asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_3} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_3} echo # Delete a general policy echo "Delete policy for asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/4b480f48-79a0-4851-a56c-6ef71e19ebb3 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/4b480f48-79a0-4851-a56c-6ef71e19ebb3 echo @@ -166,30 +167,30 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 4 and register it devo CX registry..." -curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/IMR18650V1.json" $REGISTRY_URL/${DIGITAL_TWIN_3} +curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/IMR18650V1.json" $REGISTRY_URL/${DIGITAL_TWIN_3} echo echo '**************************Asset 5 **********************' # Delete Submodel data echo "Delete sample data for asset 5..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} echo # Delete a contract definition echo "Delete contract definition for asset 5..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/131 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/131 echo # Delete a asset echo "Delete asset 5..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_4} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_4} echo # Delete a general policy echo "Delete policy for asset 5..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/0a216bb0-934d-4c93-8e92-ca3b4f862e33 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/0a216bb0-934d-4c93-8e92-ca3b4f862e33 echo @@ -198,7 +199,7 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 5 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL/${DIGITAL_TWIN_4} +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL/${DIGITAL_TWIN_4} echo echo 'Provider setup completed...' diff --git a/deployment/infrastructure/delete-provider.sh b/deployment/infrastructure/delete-provider.sh index 4436b18f6..3c704e408 100644 --- a/deployment/infrastructure/delete-provider.sh +++ b/deployment/infrastructure/delete-provider.sh @@ -39,8 +39,8 @@ DIGITAL_TWIN_SUBMODEL_ID_3='61125dc3-5e6f-4f4b-838d-447432b97918' DIGITAL_TWIN_4='1f0ef836-40b7-4f31-a9bd-cb6a8960779e' DIGITAL_TWIN_SUBMODEL_ID_4='26bf39c5-68a5-43a1-8db7-d33e116a6f61' -SERVER_URL='' -REGISTRY_URL='' +SERVER_URL='' +REGISTRY_URL='/api/v3.0/shell-descriptors' # put access token without 'Bearer ' prefix @@ -57,29 +57,29 @@ echo '**************************Asset 1 **********************' echo # Delete Submodel data echo "Delete sample data for asset 1..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} echo # Delete a contract definition echo "Delete contract definition for asset 1..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/1 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/1 echo # Delete a asset echo "Delete asset 1..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_1} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_1} echo # Delete a general policy echo "Delete policy for asset 1..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/ad8d2c57-cf32-409c-96a8-be59675b6ae5 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/ad8d2c57-cf32-409c-96a8-be59675b6ae5 echo # Delete a digital twin and register from CX registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 1 and register it devo CX registry..." -curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL/${DIGITAL_TWIN_1} +curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL/${DIGITAL_TWIN_1} echo echo @@ -91,30 +91,30 @@ echo # Delete a contract definition echo "Delete contract definition for asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/2 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/2 echo # Delete Submodel data echo "Delete sample data for asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} echo # Delete a asset echo "Delete asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_2} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_2} echo # Delete a general policy echo "Delete policy for asset 2..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/f873e234-112c-4598-893b-eda0671b7402 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/f873e234-112c-4598-893b-eda0671b7402 echo # Delete a digital twin and register from CX registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 2 and register it devo CX registry..." -curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/NCR186850B.json" $REGISTRY_URL/${DIGITAL_TWIN_2} +curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/NCR186850B.json" $REGISTRY_URL/${DIGITAL_TWIN_2} echo echo @@ -123,23 +123,23 @@ echo echo '**************************Asset 3 **********************' # Delete Submodel data echo "Delete sample data for asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} echo # Delete a contract definition echo "Delete contract definition for asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/3 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/3 echo # Delete a asset echo "Delete asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_3} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_3} echo # Delete a general policy echo "Delete policy for asset 3..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/4b480f48-79a0-4851-a56c-6ef71e19ebb3 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/4b480f48-79a0-4851-a56c-6ef71e19ebb3 echo @@ -147,30 +147,30 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 3 and register it devo CX registry..." -curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/IMR18650V1.json" $REGISTRY_URL/${DIGITAL_TWIN_3} +curl -X DELETE -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/IMR18650V1.json" $REGISTRY_URL/${DIGITAL_TWIN_3} echo echo '**************************Asset 4 **********************' # Delete Submodel data echo "Delete sample data for asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} echo # Delete a contract definition echo "Delete contract definition for asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/131 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions/131 echo # Delete a asset echo "Delete asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_4} +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets/${ASSET_ID_4} echo # Delete a general policy echo "Delete policy for asset 4..." -curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/0a216bb0-934d-4c93-8e92-ca3b4f862e33 +curl -X DELETE -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions/0a216bb0-934d-4c93-8e92-ca3b4f862e33 echo @@ -179,7 +179,7 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Delete a DT for asset 4 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL/${DIGITAL_TWIN_4} +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL/${DIGITAL_TWIN_4} echo echo 'Provider setup completed...' diff --git a/deployment/infrastructure/init-provider-dtr-irs.sh b/deployment/infrastructure/init-provider-dtr-irs.sh new file mode 100644 index 000000000..f3ffc70e6 --- /dev/null +++ b/deployment/infrastructure/init-provider-dtr-irs.sh @@ -0,0 +1,157 @@ +#!/bin/bash +################################################################################# +# Catena-X - Product Passport Consumer Application +# +# Copyright (c) 2022, 2023 BASF SE, BMW AG, Henkel AG & Co. KGaA +# +# 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 govern in permissions and limitations +# under the License. +# +# SPDX-License-Identifier: Apache-2.0 +################################################################################# + +set -o errexit +set -o errtrace +set -o pipefail +set -o nounset + +DIGITAL_TWIN_1='urn:uuid:3d050cd8-cdc7-4d65-9f37-70a65d5f53f5' +DT1_SUBMODEL_ID_1='urn:uuid:777a3f0a-6d29-4fcd-81ea-1c27c1b870cc' +DT1_SUBMODEL_ID_2='urn:uuid:09d5d8a9-9073-47b6-93c6-80caff176dca' + +DIGITAL_TWIN_2='urn:uuid:ace301f6-92c5-4623-a022-c2a30dfee0e2' +DT2_SUBMODEL_ID_1='urn:uuid:754b6c6c-d74a-4dd0-a62c-f07959f15332' +DT2_SUBMODEL_ID_2='urn:uuid:25ea2646-d57f-4b31-97a0-d0d7b3b35d37' +DT2_SUBMODEL_ID_3='urn:uuid:c216bece-b17f-4679-8b62-ec25810ca1c4' + +DIGITAL_TWIN_3='urn:uuid:d3e7cc6c-0e9b-49db-8d0d-25c6a1e68690' +DT3_SUBMODEL_ID_1='urn:uuid:0f8eb434-32af-48cb-8dc2-6391fb3d8aa8' +DT3_SUBMODEL_ID_2='urn:uuid:7e3f0673-fa92-43c3-af0d-e86485a97bda' +DT3_SUBMODEL_ID_3='urn:uuid:d7f23694-6d38-44ca-8ba5-3256e3b4b219' + +SERVER_URL='' +REGISTRY_URL='/api/v3.0/shell-descriptors' +SUBMODEL_SERVER='' + +API_KEY='' + +DPP_ASSET='urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195' +REGISTRY_ASSET='registry-asset' + +echo '**************************Asset 1 - Digital Twin Registry **********************' +echo + +# Create a asset +echo "Create asset 1 - DTR..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/assets/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +echo + +# Create a general policy +echo "Create policy for asset 1 - DTR..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/contractpolicies/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +echo + +# Create a contract definition +echo "Create contract definition for asset 1 - DTR..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/contractdefinitions/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +echo +echo + + +echo '**************************Battery**********************' +echo +# Create Submodel data +echo "Create battery sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/BAT-XYZ789.json" $SUBMODEL_SERVER/provider_backend/data/${DT1_SUBMODEL_ID_1} +echo + +echo "Create Battery BomAsBuilt sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/singleLevelBomAsBuilt-BAT-XYZ789.json" $SUBMODEL_SERVER/provider_backend/data/${DT1_SUBMODEL_ID_2} +echo + +# Create a asset +echo "Create asset 2..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/assets/DT-BAT-XYZ789.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +echo + +# Create a general policy +echo "Create policy for asset 2..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/contractpolicies/DT-BAT-XYZ789.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +echo + +# Create a contract definition +echo "Create contract definition for asset 2..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/contractdefinitions/DT-BAT-XYZ789.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +echo + +# Create a digital twin and register inside CX registry +# To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret +echo "Create a DT for asset 2 and register it devo CX registry..." + +curl -X POST -s -H 'Content-Type: application/json' --data "@resources/irs/digitaltwins/DT-BAT-XYZ789+BOMAsBuilt.json" $REGISTRY_URL +echo +echo + + + +echo '**************************Battery Pack**********************' + +echo +# Create Submodel data +echo "Create Battery pack sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/EVPACK-TRJ712.json" $SUBMODEL_SERVER/provider_backend/data/${DT2_SUBMODEL_ID_1} +echo + +echo "Create Battery pack BomAsBuilt sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/singleLevelUsageAsBuilt-EVPACK-TRJ712.json" $SUBMODEL_SERVER/provider_backend/data/${DT2_SUBMODEL_ID_2} +echo + +echo "Create Battery pack BomAsUsage sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/singleLevelBomAsBuilt-EVPACK-TRJ712.json" $SUBMODEL_SERVER/provider_backend/data/${DT2_SUBMODEL_ID_3} +echo + + +# Create a digital twin and register inside CX registry +# To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret +echo "Create a DT for asset 3 and register it devo CX registry..." + +curl -X POST -s -H 'Content-Type: application/json' --data "@resources/irs/digitaltwins/DT-EVPACK-TRJ712+BOMAsBuilt.json" $REGISTRY_URL +echo +echo + + + +echo '**************************Battery Cell**********************' +# Create Submodel data +echo "Create Battery Cell sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/singleLevelBOMAsBuilt-CTA-13123.json" $SUBMODEL_SERVER/provider_backend/data/${DT3_SUBMODEL_ID_1} +echo + +echo "Create Battery Cell BomAsBuilt sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/CTA-13123.json" $SUBMODEL_SERVER/provider_backend/data/${DT3_SUBMODEL_ID_2} +echo + +echo "Create Battery Cell BomAsUsage sample data..." +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/irs/payloads/singleLevelUsageAsBuilt-CTA-13123.json" $SUBMODEL_SERVER/provider_backend/data/${DT2_SUBMODEL_ID_3} +echo + +# Create a digital twin and register inside CX registry +# To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret +echo "Create a DT for asset 4 and register it devo CX registry..." + +curl -X POST -s -H 'Content-Type: application/json' --data "@resources/irs/digitaltwins/DT-CTA-13123+BOMAsBuilt.json" $REGISTRY_URL +echo + +echo 'Provider setup completed...' +echo 'Done' diff --git a/deployment/infrastructure/init-provider-dtr.sh b/deployment/infrastructure/init-provider-dtr.sh index fd06d9da4..1c0c479fe 100644 --- a/deployment/infrastructure/init-provider-dtr.sh +++ b/deployment/infrastructure/init-provider-dtr.sh @@ -39,7 +39,8 @@ DIGITAL_TWIN_4='1f0ef836-40b7-4f31-a9bd-cb6a8960779e' DIGITAL_TWIN_SUBMODEL_ID_4='26bf39c5-68a5-43a1-8db7-d33e116a6f61' SERVER_URL='' -REGISTRY_URL='' +REGISTRY_URL='/api/v3.0/shell-descriptors' + # put access token without 'Bearer ' prefix BEARER_TOKEN='' @@ -56,17 +57,17 @@ echo # Create a asset echo "Create asset 1 - DTR..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 1 - DTR..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 1 - DTR..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/digital-twin-registry.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo echo @@ -75,29 +76,29 @@ echo '**************************Asset 2 **********************' echo # Create Submodel data echo "Create sample data for asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} echo # Create a asset echo "Create asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo # Create a digital twin and register inside CX registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 2 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL echo echo @@ -108,22 +109,22 @@ echo '**************************Asset 3 **********************' echo # Create Submodel data echo "Create sample data for asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} echo # Create a asset echo "Create asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo @@ -131,7 +132,7 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 3 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/NCR186850B.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/NCR186850B.json" $REGISTRY_URL echo echo @@ -140,51 +141,51 @@ echo echo '**************************Asset 4 **********************' # Create Submodel data echo "Create sample data for asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} echo # Create a asset echo "Create asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo # Create a digital twin and register inside CX registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 4 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/IMR18650V1.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/IMR18650V1.json" $REGISTRY_URL echo echo '**************************Asset 5 **********************' # Create Submodel data echo "Create sample data for asset 5..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} echo # Create a asset echo "Create asset 5..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 5..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 5..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo @@ -192,7 +193,7 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 5 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL echo echo 'Provider setup completed...' diff --git a/deployment/infrastructure/init-provider.sh b/deployment/infrastructure/init-provider.sh index bfc8d4827..ce969090a 100644 --- a/deployment/infrastructure/init-provider.sh +++ b/deployment/infrastructure/init-provider.sh @@ -39,8 +39,8 @@ DIGITAL_TWIN_SUBMODEL_ID_3='61125dc3-5e6f-4f4b-838d-447432b97918' DIGITAL_TWIN_4='1f0ef836-40b7-4f31-a9bd-cb6a8960779e' DIGITAL_TWIN_SUBMODEL_ID_4='26bf39c5-68a5-43a1-8db7-d33e116a6f61' -SERVER_URL='' -REGISTRY_URL='' +SERVER_URL='' +REGISTRY_URL='/api/v3.0/shell-descriptors' # put access token without 'Bearer ' prefix @@ -58,29 +58,29 @@ echo '**************************Asset 1 **********************' echo # Create Submodel data echo "Create sample data for asset 1..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/X123456789012X12345678901234566.json" $SERVER_URL/provider_backend/data/${ASSET_ID_1} echo # Create a asset echo "Create asset 1..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 1..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 1..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/X123456789012X12345678901234566.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo # Create a digital twin and register inside CX registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 1 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/X123456789012X12345678901234566.json" $REGISTRY_URL echo echo @@ -91,22 +91,22 @@ echo '**************************Asset 2 **********************' echo # Create Submodel data echo "Create sample data for asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/NCR186850B.json" $SERVER_URL/provider_backend/data/${ASSET_ID_2} echo # Create a asset echo "Create asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 2..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/NCR186850B.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo @@ -114,7 +114,7 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 2 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/NCR186850B.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/NCR186850B.json" $REGISTRY_URL echo echo @@ -123,51 +123,51 @@ echo echo '**************************Asset 3 **********************' # Create Submodel data echo "Create sample data for asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/IMR18650V1.json" $SERVER_URL/provider_backend/data/${ASSET_ID_3} echo # Create a asset echo "Create asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 3..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/IMR18650V1.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo # Create a digital twin and register inside CX registry # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 3 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/IMR18650V1.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/IMR18650V1.json" $REGISTRY_URL echo echo '**************************Asset 4 **********************' # Create Submodel data echo "Create sample data for asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/payloads/Y792927456954B81677903848654570.json" $SERVER_URL/provider_backend/data/${ASSET_ID_4} echo # Create a asset echo "Create asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/assets/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/assets echo # Create a general policy echo "Create policy for asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractpolicies/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/policydefinitions echo # Create a contract definition echo "Create contract definition for asset 4..." -curl -X POST -H 'Content-Type: application/json' -s --data "@resources/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions +curl -X POST -H 'Content-Type: application/json' -s --data "@resources/dpp/contractdefinitions/Y792927456954B81677903848654570.json" --header 'X-Api-Key: '${API_KEY} $SERVER_URL/management/v2/contractdefinitions echo @@ -175,7 +175,7 @@ echo # To authenticate against CX registry, one needs a valid bearer token which can be issued through postman given the clientId and clientSecret echo "Create a DT for asset 4 and register it devo CX registry..." -curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL +curl -X POST -s --header 'Content-Type: application/json' --header "Authorization: Bearer ${BEARER_TOKEN//[$'\t\r\n ']}" --data "@resources/dpp/digitaltwins/Y792927456954B81677903848654570.json" $REGISTRY_URL echo echo 'Provider setup completed...' diff --git a/deployment/infrastructure/resources/assets/IMR18650V1.json b/deployment/infrastructure/resources/dpp/assets/IMR18650V1.json similarity index 100% rename from deployment/infrastructure/resources/assets/IMR18650V1.json rename to deployment/infrastructure/resources/dpp/assets/IMR18650V1.json diff --git a/deployment/infrastructure/resources/assets/NCR186850B.json b/deployment/infrastructure/resources/dpp/assets/NCR186850B.json similarity index 100% rename from deployment/infrastructure/resources/assets/NCR186850B.json rename to deployment/infrastructure/resources/dpp/assets/NCR186850B.json diff --git a/deployment/infrastructure/resources/assets/X123456789012X12345678901234566.json b/deployment/infrastructure/resources/dpp/assets/X123456789012X12345678901234566.json similarity index 100% rename from deployment/infrastructure/resources/assets/X123456789012X12345678901234566.json rename to deployment/infrastructure/resources/dpp/assets/X123456789012X12345678901234566.json diff --git a/deployment/infrastructure/resources/assets/Y792927456954B81677903848654570.json b/deployment/infrastructure/resources/dpp/assets/Y792927456954B81677903848654570.json similarity index 100% rename from deployment/infrastructure/resources/assets/Y792927456954B81677903848654570.json rename to deployment/infrastructure/resources/dpp/assets/Y792927456954B81677903848654570.json diff --git a/deployment/infrastructure/resources/assets/digital-twin-registry.json b/deployment/infrastructure/resources/dpp/assets/digital-twin-registry.json similarity index 90% rename from deployment/infrastructure/resources/assets/digital-twin-registry.json rename to deployment/infrastructure/resources/dpp/assets/digital-twin-registry.json index a6a5dc1cc..5b9db9c51 100644 --- a/deployment/infrastructure/resources/assets/digital-twin-registry.json +++ b/deployment/infrastructure/resources/dpp/assets/digital-twin-registry.json @@ -5,7 +5,7 @@ "@id": "digital-twin-registry", "properties": { "type": "data.core.digitalTwinRegistry", - "description": "Battery Passport test data", + "description": "Digital Twin Registry for DPP", "contenttype": "application/json" } }, diff --git a/deployment/infrastructure/resources/contractdefinitions/IMR18650V1.json b/deployment/infrastructure/resources/dpp/contractdefinitions/IMR18650V1.json similarity index 100% rename from deployment/infrastructure/resources/contractdefinitions/IMR18650V1.json rename to deployment/infrastructure/resources/dpp/contractdefinitions/IMR18650V1.json diff --git a/deployment/infrastructure/resources/contractdefinitions/NCR186850B.json b/deployment/infrastructure/resources/dpp/contractdefinitions/NCR186850B.json similarity index 100% rename from deployment/infrastructure/resources/contractdefinitions/NCR186850B.json rename to deployment/infrastructure/resources/dpp/contractdefinitions/NCR186850B.json diff --git a/deployment/infrastructure/resources/contractdefinitions/X123456789012X12345678901234566.json b/deployment/infrastructure/resources/dpp/contractdefinitions/X123456789012X12345678901234566.json similarity index 100% rename from deployment/infrastructure/resources/contractdefinitions/X123456789012X12345678901234566.json rename to deployment/infrastructure/resources/dpp/contractdefinitions/X123456789012X12345678901234566.json diff --git a/deployment/infrastructure/resources/contractdefinitions/Y792927456954B81677903848654570.json b/deployment/infrastructure/resources/dpp/contractdefinitions/Y792927456954B81677903848654570.json similarity index 100% rename from deployment/infrastructure/resources/contractdefinitions/Y792927456954B81677903848654570.json rename to deployment/infrastructure/resources/dpp/contractdefinitions/Y792927456954B81677903848654570.json diff --git a/deployment/infrastructure/resources/contractdefinitions/digital-twin-registry.json b/deployment/infrastructure/resources/dpp/contractdefinitions/digital-twin-registry.json similarity index 100% rename from deployment/infrastructure/resources/contractdefinitions/digital-twin-registry.json rename to deployment/infrastructure/resources/dpp/contractdefinitions/digital-twin-registry.json diff --git a/deployment/infrastructure/resources/contractpolicies/IMR18650V1.json b/deployment/infrastructure/resources/dpp/contractpolicies/IMR18650V1.json similarity index 100% rename from deployment/infrastructure/resources/contractpolicies/IMR18650V1.json rename to deployment/infrastructure/resources/dpp/contractpolicies/IMR18650V1.json diff --git a/deployment/infrastructure/resources/contractpolicies/NCR186850B.json b/deployment/infrastructure/resources/dpp/contractpolicies/NCR186850B.json similarity index 100% rename from deployment/infrastructure/resources/contractpolicies/NCR186850B.json rename to deployment/infrastructure/resources/dpp/contractpolicies/NCR186850B.json diff --git a/deployment/infrastructure/resources/contractpolicies/X123456789012X12345678901234566.json b/deployment/infrastructure/resources/dpp/contractpolicies/X123456789012X12345678901234566.json similarity index 100% rename from deployment/infrastructure/resources/contractpolicies/X123456789012X12345678901234566.json rename to deployment/infrastructure/resources/dpp/contractpolicies/X123456789012X12345678901234566.json diff --git a/deployment/infrastructure/resources/contractpolicies/Y792927456954B81677903848654570.json b/deployment/infrastructure/resources/dpp/contractpolicies/Y792927456954B81677903848654570.json similarity index 100% rename from deployment/infrastructure/resources/contractpolicies/Y792927456954B81677903848654570.json rename to deployment/infrastructure/resources/dpp/contractpolicies/Y792927456954B81677903848654570.json diff --git a/deployment/infrastructure/resources/contractpolicies/digital-twin-registry.json b/deployment/infrastructure/resources/dpp/contractpolicies/digital-twin-registry.json similarity index 100% rename from deployment/infrastructure/resources/contractpolicies/digital-twin-registry.json rename to deployment/infrastructure/resources/dpp/contractpolicies/digital-twin-registry.json diff --git a/deployment/infrastructure/resources/digitaltwins/IMR18650V1.json b/deployment/infrastructure/resources/dpp/digitaltwins/IMR18650V1.json similarity index 100% rename from deployment/infrastructure/resources/digitaltwins/IMR18650V1.json rename to deployment/infrastructure/resources/dpp/digitaltwins/IMR18650V1.json diff --git a/deployment/infrastructure/resources/digitaltwins/NCR186850B.json b/deployment/infrastructure/resources/dpp/digitaltwins/NCR186850B.json similarity index 100% rename from deployment/infrastructure/resources/digitaltwins/NCR186850B.json rename to deployment/infrastructure/resources/dpp/digitaltwins/NCR186850B.json diff --git a/deployment/infrastructure/resources/digitaltwins/X123456789012X12345678901234566.json b/deployment/infrastructure/resources/dpp/digitaltwins/X123456789012X12345678901234566.json similarity index 100% rename from deployment/infrastructure/resources/digitaltwins/X123456789012X12345678901234566.json rename to deployment/infrastructure/resources/dpp/digitaltwins/X123456789012X12345678901234566.json diff --git a/deployment/infrastructure/resources/digitaltwins/Y792927456954B81677903848654570.json b/deployment/infrastructure/resources/dpp/digitaltwins/Y792927456954B81677903848654570.json similarity index 100% rename from deployment/infrastructure/resources/digitaltwins/Y792927456954B81677903848654570.json rename to deployment/infrastructure/resources/dpp/digitaltwins/Y792927456954B81677903848654570.json diff --git a/deployment/infrastructure/resources/payloads/IMR18650V1.json b/deployment/infrastructure/resources/dpp/payloads/IMR18650V1.json similarity index 100% rename from deployment/infrastructure/resources/payloads/IMR18650V1.json rename to deployment/infrastructure/resources/dpp/payloads/IMR18650V1.json diff --git a/deployment/infrastructure/resources/payloads/NCR186850B.json b/deployment/infrastructure/resources/dpp/payloads/NCR186850B.json similarity index 100% rename from deployment/infrastructure/resources/payloads/NCR186850B.json rename to deployment/infrastructure/resources/dpp/payloads/NCR186850B.json diff --git a/deployment/infrastructure/resources/payloads/X123456789012X12345678901234566.json b/deployment/infrastructure/resources/dpp/payloads/X123456789012X12345678901234566.json similarity index 100% rename from deployment/infrastructure/resources/payloads/X123456789012X12345678901234566.json rename to deployment/infrastructure/resources/dpp/payloads/X123456789012X12345678901234566.json diff --git a/deployment/infrastructure/resources/payloads/Y792927456954B81677903848654570.json b/deployment/infrastructure/resources/dpp/payloads/Y792927456954B81677903848654570.json similarity index 100% rename from deployment/infrastructure/resources/payloads/Y792927456954B81677903848654570.json rename to deployment/infrastructure/resources/dpp/payloads/Y792927456954B81677903848654570.json diff --git a/deployment/infrastructure/resources/irs/assets/DT-BAT-XYZ789.json b/deployment/infrastructure/resources/irs/assets/DT-BAT-XYZ789.json new file mode 100644 index 000000000..90baa3a17 --- /dev/null +++ b/deployment/infrastructure/resources/irs/assets/DT-BAT-XYZ789.json @@ -0,0 +1,22 @@ +{ + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + }, + "asset": { + "@type": "Asset", + "@id": "urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195", + "properties": { + "description": "DPP EDC Test Asset" + } + }, + "dataAddress": { + "@type": "DataAddress", + "type": "HttpData", + "baseUrl": "https://materialpass.int.demo.catena-x.net/provider_backend/data/urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195" + } +} diff --git a/deployment/infrastructure/resources/irs/assets/digital-twin-registry.json b/deployment/infrastructure/resources/irs/assets/digital-twin-registry.json new file mode 100644 index 000000000..afb91e454 --- /dev/null +++ b/deployment/infrastructure/resources/irs/assets/digital-twin-registry.json @@ -0,0 +1,28 @@ +{ + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + }, + "asset": { + "@type": "data.core.digitalTwinRegistry", + "@id": "registry-asset", + "properties": { + "type": "data.core.digitalTwinRegistry", + "description": "Digital Twin Registry for DPP-IRS", + "contenttype": "application/json" + } + }, + "dataAddress": { + "@type": "DataAddress", + "type": "HttpData", + "proxyPath": "true", + "proxyBody": "true", + "proxyMethod": "true", + "proxyQueryParams": "true", + "baseUrl": "https://materialpass.int.demo.catena-x.net/semantics/registry/api/v3.0" + } +} diff --git a/deployment/infrastructure/resources/irs/contractdefinitions/DT-BAT-XYZ789.json b/deployment/infrastructure/resources/irs/contractdefinitions/DT-BAT-XYZ789.json new file mode 100644 index 000000000..4be1f5fe8 --- /dev/null +++ b/deployment/infrastructure/resources/irs/contractdefinitions/DT-BAT-XYZ789.json @@ -0,0 +1,20 @@ +{ + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + }, + "@id": "6289e746-0390-4a4a-8cd3-3c10fb701bd7", + "@type": "ContractDefinition", + "accessPolicyId": "e3ffbbcb-1e6c-406c-91e8-cf0bf191b807", + "contractPolicyId": "e3ffbbcb-1e6c-406c-91e8-cf0bf191b807", + "assetsSelector" : { + "@type" : "CriterionDto", + "operandLeft": "https://w3id.org/edc/v0.0.1/ns/id", + "operator": "=", + "operandRight": "urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195" + } +} diff --git a/deployment/infrastructure/resources/irs/contractdefinitions/digital-twin-registry.json b/deployment/infrastructure/resources/irs/contractdefinitions/digital-twin-registry.json new file mode 100644 index 000000000..1a639aa5c --- /dev/null +++ b/deployment/infrastructure/resources/irs/contractdefinitions/digital-twin-registry.json @@ -0,0 +1,20 @@ +{ + "@context": { + "dct": "https://purl.org/dc/terms/", + "tx": "https://w3id.org/tractusx/v0.0.1/ns/", + "edc": "https://w3id.org/edc/v0.0.1/ns/", + "dcat": "https://www.w3.org/ns/dcat/", + "odrl": "http://www.w3.org/ns/odrl/2/", + "dspace": "https://w3id.org/dspace/v0.8/" + }, + "@id": "aead5322-5c42-4954-bb78-4319638923cd", + "@type": "ContractDefinition", + "accessPolicyId": "4b480f48-79a0-4851-a56c-6ef71e19ebc4", + "contractPolicyId": "4b480f48-79a0-4851-a56c-6ef71e19ebc4", + "assetsSelector" : { + "@type" : "CriterionDto", + "operandLeft": "https://w3id.org/edc/v0.0.1/ns/id", + "operator": "=", + "operandRight": "registry-asset" + } +} diff --git a/deployment/infrastructure/resources/irs/contractpolicies/DT-BAT-XYZ789.json b/deployment/infrastructure/resources/irs/contractpolicies/DT-BAT-XYZ789.json new file mode 100644 index 000000000..8b9e6525a --- /dev/null +++ b/deployment/infrastructure/resources/irs/contractpolicies/DT-BAT-XYZ789.json @@ -0,0 +1,26 @@ +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/leftOperand" + }, + "@type": "PolicyDefinitionRequestDto", + "@id": "e3ffbbcb-1e6c-406c-91e8-cf0bf191b807", + "policy": { + "@type": "Policy", + "odrl:permission" : [{ + "odrl:action": "USE", + "odrl:constraint": { + "odrl:constraint": { + "@type": "LogicalConstraint", + "odrl:or": [ + { + "@type": "Contraint", + "odrl:leftOperand": "BusinessPartnerNumber", + "odrl:operator": "EQ", + "odrl:rightOperand": "BPNL00000000CBA5" + } + ] + } + } + }] + } +} diff --git a/deployment/infrastructure/resources/irs/contractpolicies/digital-twin-registry.json b/deployment/infrastructure/resources/irs/contractpolicies/digital-twin-registry.json new file mode 100644 index 000000000..2ca5c3403 --- /dev/null +++ b/deployment/infrastructure/resources/irs/contractpolicies/digital-twin-registry.json @@ -0,0 +1,26 @@ +{ + "@context": { + "odrl": "http://www.w3.org/ns/odrl/2/leftOperand" + }, + "@type": "PolicyDefinitionRequestDto", + "@id": "4b480f48-79a0-4851-a56c-6ef71e19ebc4", + "policy": { + "@type": "Policy", + "odrl:permission" : [{ + "odrl:action": "USE", + "odrl:constraint": { + "odrl:constraint": { + "@type": "LogicalConstraint", + "odrl:or": [ + { + "@type": "Contraint", + "odrl:leftOperand": "BusinessPartnerNumber", + "odrl:operator": "EQ", + "odrl:rightOperand": "BPNL00000000CBA5" + } + ] + } + } + }] + } +} diff --git a/deployment/infrastructure/resources/irs/digitaltwins/DT-BAT-XYZ789+BOMAsBuilt.json b/deployment/infrastructure/resources/irs/digitaltwins/DT-BAT-XYZ789+BOMAsBuilt.json new file mode 100644 index 000000000..3cc0dcef7 --- /dev/null +++ b/deployment/infrastructure/resources/irs/digitaltwins/DT-BAT-XYZ789+BOMAsBuilt.json @@ -0,0 +1,108 @@ +{ + "description": [ + { + "language": "en", + "text": "Battery Digital Twin" + } + ], + "displayName": [], + "globalAssetId": "urn:uuid:efcb5f8d-f31c-4b1f-b090-9c878054554d", + "idShort": "Battery_BAT-XYZ789", + "id": "urn:uuid:3d050cd8-cdc7-4d65-9f37-70a65d5f53f5", + "specificAssetIds": [ + { + "name": "partInstanceId", + "value": "BAT-XYZ789", + "externalSubjectId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "BPNL00000000CBA5" + } + ] + } + } + ], + "submodelDescriptors": [ + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:777a3f0a-6d29-4fcd-81ea-1c27c1b870cc", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000/", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "digitalProductPass", + "id": "urn:uuid:777a3f0a-6d29-4fcd-81ea-1c27c1b870cc", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Digital Product Passport Submodel" + } + ], + "displayName": [] + }, + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:09d5d8a9-9073-47b6-93c6-80caff176dca", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "singleLevelBomAsBuilt", + "id": "urn:uuid:09d5d8a9-9073-47b6-93c6-80caff176dca", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.single_level_bom_as_built:1.0.0#SingleLevelBomAsBuilt" + } + ] + }, + "description": [], + "displayName": [] + } + ] +} diff --git a/deployment/infrastructure/resources/irs/digitaltwins/DT-CTA-13123+BOMAsBuilt.json b/deployment/infrastructure/resources/irs/digitaltwins/DT-CTA-13123+BOMAsBuilt.json new file mode 100644 index 000000000..d1ef662e1 --- /dev/null +++ b/deployment/infrastructure/resources/irs/digitaltwins/DT-CTA-13123+BOMAsBuilt.json @@ -0,0 +1,155 @@ +{ + "description": [ + { + "language": "en", + "text": "Battery Cell Digital Twin" + } + ], + "displayName": [], + "globalAssetId": "urn:uuid:63b95496-86ed-4762-b248-491d5c1242e1", + "idShort": "BatteryCell_CTA-13123", + "id": "urn:uuid:d3e7cc6c-0e9b-49db-8d0d-25c6a1e68690", + "specificAssetIds": [ + { + "name": "partInstanceId", + "value": "CTA-13123", + "externalSubjectId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "BPNL00000000CBA5" + } + ] + } + } + ], + "submodelDescriptors": [ + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:0f8eb434-32af-48cb-8dc2-6391fb3d8aa8", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000/", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "singleLevelBomAsBuilt", + "id": "urn:uuid:0f8eb434-32af-48cb-8dc2-6391fb3d8aa8", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.single_level_bom_as_built:1.0.0#SingleLevelBomAsBuilt" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Digital Product Passport Submodel" + } + ], + "displayName": [] + }, + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:7e3f0673-fa92-43c3-af0d-e86485a97bda", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000/", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "digitalProductPass", + "id": "urn:uuid:7e3f0673-fa92-43c3-af0d-e86485a97bda", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Digital Product Passport Submodel" + } + ], + "displayName": [] + }, + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:d7f23694-6d38-44ca-8ba5-3256e3b4b219", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000/", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "singleLevelUsageAsBuilt", + "id": "urn:uuid:d7f23694-6d38-44ca-8ba5-3256e3b4b219", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.single_level_usage_as_built:1.0.1#SingleLevelUsageAsBuilt" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Digital Product Passport Submodel" + } + ], + "displayName": [] + } + ] +} diff --git a/deployment/infrastructure/resources/irs/digitaltwins/DT-EVPACK-TRJ712+BOMAsBuilt.json b/deployment/infrastructure/resources/irs/digitaltwins/DT-EVPACK-TRJ712+BOMAsBuilt.json new file mode 100644 index 000000000..90a94a9cc --- /dev/null +++ b/deployment/infrastructure/resources/irs/digitaltwins/DT-EVPACK-TRJ712+BOMAsBuilt.json @@ -0,0 +1,155 @@ +{ + "description": [ + { + "language": "en", + "text": "Battery Pack Digital Twin" + } + ], + "displayName": [], + "globalAssetId": "urn:uuid:d8ec6acc-1ad7-47b4-bc7e-612122d9d552", + "idShort": "BatteryPack_EVPACK-TRJ712", + "id": "urn:uuid:ace301f6-92c5-4623-a022-c2a30dfee0e2", + "specificAssetIds": [ + { + "name": "partInstanceId", + "value": "EVPACK-TRJ712", + "externalSubjectId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "BPNL00000000CBA5" + } + ] + } + } + ], + "submodelDescriptors": [ + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:754b6c6c-d74a-4dd0-a62c-f07959f15332", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000/", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "digitalProductPass", + "id": "urn:uuid:754b6c6c-d74a-4dd0-a62c-f07959f15332", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.generic.digital_product_passport:1.0.0#DigitalProductPassport" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Digital Product Passport Submodel" + } + ], + "displayName": [] + }, + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:25ea2646-d57f-4b31-97a0-d0d7b3b35d37", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000/", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "SingleLevelUsageAsBuilt", + "id": "urn:uuid:25ea2646-d57f-4b31-97a0-d0d7b3b35d37", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.single_level_usage_as_built:1.0.1#SingleLevelUsageAsBuilt" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Digital Product Passport Submodel" + } + ], + "displayName": [] + }, + { + "endpoints": [ + { + "interface": "SUBMODEL-3.0", + "protocolInformation": { + "href": "https://materialpass.int.demo.catena-x.net/BPNL000000000000/api/public/data/urn:uuid:c216bece-b17f-4679-8b62-ec25810ca1c4", + "endpointProtocol": "HTTP", + "endpointProtocolVersion": [ + "1.1" + ], + "subprotocol": "DSP", + "subprotocolBody": "id=urn:uuid:3e4a5957-f226-478a-ab18-79ced49d6195;dspEndpoint=https://materialpass.int.demo.catena-x.net/BPNL000000000000/", + "subprotocolBodyEncoding": "plain", + "securityAttributes": [ + { + "type": "NONE", + "key": "NONE", + "value": "NONE" + } + ] + } + } + ], + "idShort": "singleLevelBomAsBuilt", + "id": "urn:uuid:c216bece-b17f-4679-8b62-ec25810ca1c4", + "semanticId": { + "type": "ExternalReference", + "keys": [ + { + "type": "GlobalReference", + "value": "urn:bamm:io.catenax.single_level_bom_as_built:1.0.0#SingleLevelBomAsBuilt" + } + ] + }, + "description": [ + { + "language": "en", + "text": "Digital Product Passport Submodel" + } + ], + "displayName": [] + } + ] +} diff --git a/deployment/infrastructure/resources/irs/payloads/BAT-XYZ789.json b/deployment/infrastructure/resources/irs/payloads/BAT-XYZ789.json new file mode 100644 index 000000000..2bf5d3518 --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/BAT-XYZ789.json @@ -0,0 +1,130 @@ +{ + "catenaXId": "urn:uuid:efcb5f8d-f31c-4b1f-b090-9c878054554d", + "serialization": { + "manufacturingInformation": { + "date": "2023-08-30T10:30:00", + "country": "USA" + }, + "registration": { + "customerPartId": "PRT-67890", + "manufacturerPartId": "HV-SPORT-123" + }, + "quantity": { + "value": 1.0, + "unit": "unit:piece" + } + }, + "typology": { + "name": "High Voltage Battery for Sports Car", + "description": "High performance battery for electric sports cars", + "class": { + "definition": "High Voltage Battery", + "code": "33-06-01-01" + }, + "nameAtManufacturer": "Performance Battery Pack", + "nameAtCustomer": "High-Performance Energy Source" + }, + "metadata": { + "issueDate": "2023-08-30", + "version": "2.0.0", + "validityDate": "2023-08-30", + "economicOperator": { + "eori": "US987654321000", + "id": "BPNL000000000000" + }, + "status": "Approved" + }, + "characteristics": { + "physicalDimensionsProperty": { + "width": 800.0, + "length": 1200.0, + "weight": 300.5, + "height": 150.0 + }, + "energyCapacity": { + "value": 85.0, + "unit": "unit:kWh" + }, + "voltage": { + "value": 400.0, + "unit": "unit:V" + } + }, + "commercial": { + "placedOnMarket": "2023-09-01", + "warranty": 72 + }, + "identification": { + "localIdentifiers": [ + { + "value": "BAT-XYZ789", + "key": "PartInstanceID" + } + ], + "gtin": "12345678901234", + "additionalCode": [ + { + "name": "TARIC", + "value": "8507 80 00 00" + } + ] + }, + "sources": { + "mandatory": { + "safetyInformation": { + "header": "Safety Datasheet for High Voltage Battery", + "category": "Safety", + "type": "link", + "content": "www.example.com/safety_datasheet.pdf" + }, + "environmentalImpact": { + "header": "Environmental Impact Assessment", + "category": "Environment", + "type": "link", + "content": "www.example.com/environmental_impact.pdf" + } + }, + "optional": [ + { + "name": "userManual", + "document": { + "header": "User Manual for High Voltage Battery", + "category": "User Manual", + "type": "link", + "content": "www.example.com/user_manual.pdf" + } + } + ] + }, + "sustainability": { + "state": "first life", + "material": [ + { + "name": "Lithium-Ion", + "recycled": false, + "renewable": false, + "percentage": 80.0 + } + ], + "critical": [ + "Lithium", + "Cobalt" + ], + "carbonFootprint": { + "carbonContentTotal": 10.2, + "crossSectoralStandard": "ISO 14040", + "productOrSectorSpecificRules": [ + { + "ruleName": "ISO 14067" + } + ] + } + }, + "operation": { + "importer": "BPNL000000000000", + "manufacturer": { + "manufacturerId": "BPNL000000000000", + "facilityId": "BPNL000000000123" + } + } +} diff --git a/deployment/infrastructure/resources/irs/payloads/CTA-13123.json b/deployment/infrastructure/resources/irs/payloads/CTA-13123.json new file mode 100644 index 000000000..f3afd6cd4 --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/CTA-13123.json @@ -0,0 +1,117 @@ +{ + "catenaXId": "urn:uuid:63b95496-86ed-4762-b248-491d5c1242e1", + "serialization": { + "manufacturingInformation": { + "date": "2023-08-30T11:45:00", + "country": "JPN" + }, + "registration": { + "customerPartId": "CELL-45678", + "manufacturerPartId": "BC-JPN-12345" + }, + "quantity": { + "value": 1000.0, + "unit": "unit:piece" + } + }, + "typology": { + "name": "Lithium-Ion Battery Cell", + "description": "High-capacity lithium-ion battery cell", + "class": { + "definition": "Battery Cell", + "code": "33-06-01-02" + }, + "nameAtManufacturer": "Li-Ion Cell 12345", + "nameAtCustomer": "High-Capacity Battery Cell" + }, + "metadata": { + "issueDate": "2023-08-30", + "version": "1.1.0", + "validityDate": "2023-08-30", + "economicOperator": { + "eori": "JP123456789000", + "id": "BPN1234567890ZZ" + }, + "status": "Approved" + }, + "characteristics": { + "physicalDimensionsProperty": { + "width": 30.0, + "length": 60.0, + "weight": 50.2, + "height": 10.0 + }, + "energyCapacity": { + "value": 2.5, + "unit": "unit:Ah" + }, + "voltage": { + "value": 3.7, + "unit": "unit:V" + } + }, + "identification": { + "localIdentifiers": [ + { + "value": "CTA-13123", + "key": "PartInstanceID" + } + ], + "gtin": "12345678901234", + "additionalCode": [ + { + "name": "TARIC", + "value": "8507 60 00 00" + } + ] + }, + "sources": { + "mandatory": { + "safetyInformation": { + "header": "Safety Datasheet for Lithium-Ion Battery Cell", + "category": "Safety", + "type": "link", + "content": "www.example.com/cell_safety_datasheet.pdf" + } + }, + "optional": [ + { + "name": "userManual", + "document": { + "header": "User Manual for Battery Cell", + "category": "User Manual", + "type": "link", + "content": "www.example.com/cell_user_manual.pdf" + } + } + ] + }, + "sustainability": { + "state": "first life", + "material": [ + { + "name": "Lithium-Cobalt Oxide", + "recycled": false, + "renewable": false, + "percentage": 40.0 + } + ], + "critical": ["Lithium", "Cobalt"], + "carbonFootprint": { + "carbonContentTotal": 0.8, + "crossSectoralStandard": "ISO 14044", + "productOrSectorSpecificRules": [ + { + "ruleName": "ISO 14067" + } + ] + } + }, + "operation": { + "importer": "BPN1234567890ZZ", + "manufacturer": { + "manufacturerId": "BPN1234567890ZZ", + "facilityId": "BPN1234567890ZZ" + } + } +} diff --git a/deployment/infrastructure/resources/irs/payloads/EVPACK-TRJ712.json b/deployment/infrastructure/resources/irs/payloads/EVPACK-TRJ712.json new file mode 100644 index 000000000..f029e702a --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/EVPACK-TRJ712.json @@ -0,0 +1,120 @@ +{ + "catenaXId": "urn:uuid:d8ec6acc-1ad7-47b4-bc7e-612122d9d552", + "serialization": { + "manufacturingInformation": { + "date": "2023-08-30T14:30:00", + "country": "GER" + }, + "registration": { + "customerPartId": "PACK-78901", + "manufacturerPartId": "BP-GER-45678" + }, + "quantity": { + "value": 100.0, + "unit": "unit:piece" + } + }, + "typology": { + "name": "High-Capacity Battery Pack", + "description": "Large battery pack for electric vehicles", + "class": { + "definition": "Battery Pack", + "code": "33-06-01-03" + }, + "nameAtManufacturer": "EVPack 45678", + "nameAtCustomer": "High-Capacity Power Source" + }, + "metadata": { + "issueDate": "2023-08-30", + "version": "1.0.0", + "validityDate": "2023-08-30", + "economicOperator": { + "eori": "DE987654321000", + "id": "BPNL000000000000" + }, + "status": "Approved" + }, + "characteristics": { + "physicalDimensionsProperty": { + "width": 800.0, + "length": 1000.0, + "weight": 700.5, + "height": 200.0 + }, + "energyCapacity": { + "value": 300.0, + "unit": "unit:kWh" + }, + "voltage": { + "value": 800.0, + "unit": "unit:V" + } + }, + "identification": { + "localIdentifiers": [ + { + "value": "EVPACK-TRJ712", + "key": "PartInstanceID" + } + ], + "gtin": "12345678901234", + "additionalCode": [ + { + "name": "TARIC", + "value": "8507 80 00 00" + } + ] + }, + "sources": { + "mandatory": { + "safetyInformation": { + "header": "Safety Datasheet for Battery Pack", + "category": "Safety", + "type": "link", + "content": "www.example.com/pack_safety_datasheet.pdf" + } + }, + "optional": [ + { + "name": "userManual", + "document": { + "header": "User Manual for Battery Pack", + "category": "User Manual", + "type": "link", + "content": "www.example.com/pack_user_manual.pdf" + } + } + ] + }, + "sustainability": { + "state": "first life", + "material": [ + { + "name": "Lithium-Nickel-Cobalt-Manganese-Oxide", + "recycled": false, + "renewable": false, + "percentage": 35.0 + } + ], + "critical": [ + "Lithium", + "Cobalt" + ], + "carbonFootprint": { + "carbonContentTotal": 1.2, + "crossSectoralStandard": "ISO 14040", + "productOrSectorSpecificRules": [ + { + "ruleName": "ISO 14067" + } + ] + } + }, + "operation": { + "importer": "BPN1234567890ZZ", + "manufacturer": { + "manufacturerId": "BPN1234567890ZZ", + "facilityId": "BPN1234567890ZZ" + } + } +} diff --git a/deployment/infrastructure/resources/irs/payloads/singleLevelBOMAsBuilt-CTA-13123.json b/deployment/infrastructure/resources/irs/payloads/singleLevelBOMAsBuilt-CTA-13123.json new file mode 100644 index 000000000..bac4e90db --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/singleLevelBOMAsBuilt-CTA-13123.json @@ -0,0 +1,4 @@ +{ + "catenaXId": "urn:uuid:63b95496-86ed-4762-b248-491d5c1242e1", + "childItems": [] +} diff --git a/deployment/infrastructure/resources/irs/payloads/singleLevelBomAsBuilt-BAT-XYZ789.json b/deployment/infrastructure/resources/irs/payloads/singleLevelBomAsBuilt-BAT-XYZ789.json new file mode 100644 index 000000000..8dfead1de --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/singleLevelBomAsBuilt-BAT-XYZ789.json @@ -0,0 +1,15 @@ +{ + "catenaXId": "urn:uuid:efcb5f8d-f31c-4b1f-b090-9c878054554d", + "childItems": [ + { + "catenaXId": "urn:uuid:d8ec6acc-1ad7-47b4-bc7e-612122d9d552", + "quantity": { + "quantityNumber": 5.0, + "measurementUnit": "piece" + }, + "businessPartner": "BPNL00000000CBA5", + "createdOn": "2023-01-09T17:26:54.709Z", + "lastModifiedOn": "2023-01-09T17:26:54.709Z" + } + ] +} diff --git a/deployment/infrastructure/resources/irs/payloads/singleLevelBomAsBuilt-EVPACK-TRJ712.json b/deployment/infrastructure/resources/irs/payloads/singleLevelBomAsBuilt-EVPACK-TRJ712.json new file mode 100644 index 000000000..61c283619 --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/singleLevelBomAsBuilt-EVPACK-TRJ712.json @@ -0,0 +1,15 @@ +{ + "catenaXId": "urn:uuid:d8ec6acc-1ad7-47b4-bc7e-612122d9d552", + "childItems": [ + { + "catenaXId": "urn:uuid:63b95496-86ed-4762-b248-491d5c1242e1", + "quantity": { + "quantityNumber": 100.0, + "measurementUnit": "piece" + }, + "businessPartner": "BPNL00000000CBA5", + "createdOn": "2023-01-09T17:26:54.709Z", + "lastModifiedOn": "2023-01-09T17:26:54.709Z" + } + ] +} diff --git a/deployment/infrastructure/resources/irs/payloads/singleLevelUsageAsBuilt-CTA-13123.json b/deployment/infrastructure/resources/irs/payloads/singleLevelUsageAsBuilt-CTA-13123.json new file mode 100644 index 000000000..2ddb26e8d --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/singleLevelUsageAsBuilt-CTA-13123.json @@ -0,0 +1,14 @@ +{ + "parentParts": [ + { + "parentCatenaXId": "urn:uuid:d8ec6acc-1ad7-47b4-bc7e-612122d9d552", + "quantity": { + "quantityNumber": 10.0, + "measurementUnit": "piece" + }, + "createdOn": "2023-01-09T17:26:54.709Z", + "lastModifiedOn": "2023-01-09T17:26:54.709Z" + } + ], + "catenaXId": "urn:uuid:63b95496-86ed-4762-b248-491d5c1242e1" +} diff --git a/deployment/infrastructure/resources/irs/payloads/singleLevelUsageAsBuilt-EVPACK-TRJ712.json b/deployment/infrastructure/resources/irs/payloads/singleLevelUsageAsBuilt-EVPACK-TRJ712.json new file mode 100644 index 000000000..9f1e9064c --- /dev/null +++ b/deployment/infrastructure/resources/irs/payloads/singleLevelUsageAsBuilt-EVPACK-TRJ712.json @@ -0,0 +1,14 @@ +{ + "parentParts": [ + { + "parentCatenaXId": "urn:uuid:efcb5f8d-f31c-4b1f-b090-9c878054554d", + "quantity": { + "quantityNumber": 100.0, + "measurementUnit": "piece" + }, + "createdOn": "2023-01-09T17:26:54.709Z", + "lastModifiedOn": "2023-01-09T17:26:54.709Z" + } + ], + "catenaXId": "urn:uuid:d8ec6acc-1ad7-47b4-bc7e-612122d9d552" +} diff --git a/docs/readme.md b/docs/README.md similarity index 100% rename from docs/readme.md rename to docs/README.md diff --git a/docs/RELEASE_USER.md b/docs/RELEASE_USER.md index 332afd466..9fbc370fc 100644 --- a/docs/RELEASE_USER.md +++ b/docs/RELEASE_USER.md @@ -23,6 +23,23 @@ # Release Notes Digital Product Pass Application User friendly relase notes without especific technical details. + +**October 19 2023 (Version 1.1.0)** +*19.10.2023* + +### Added +#### Added user friendly loading screen +Now the frontend will be able to visualize the loading process done in the backend. +Making more transparent what is going on in the passport search. + +#### QR Code scanner button moved to Welcome Screen search +The quick search for passports using the QR Code was facilitated by including a new QR button +where the search bar in the welcome screen is displayed. + +#### Support new dDTR version `v0.3.15-M1` with AAS 3.0 +Now we are able to query the Decentral Digital Twin Registry component by using the +`/lookup/shells` API which was once deprecated and now is again in place because of the AAS 3.0 standard. + **August 31 2023 (Version 1.0.1)** *31.08.2023* diff --git a/package-lock.json b/package-lock.json index fab229df3..3b47b842a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "productpass-consumer-ui", - "version": "1.0.1", + "version": "1.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "productpass-consumer-ui", - "version": "1.0.1", + "version": "1.1.0", "dependencies": { "@mdi/font": "5.9.55", "@popperjs/core": "^2.11.2", diff --git a/package.json b/package.json index dbf616a16..51e7872a3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "productpass-consumer-ui", - "version": "1.0.1", + "version": "1.1.0", "private": true, "scripts": { "serve": "vite --host localhost", diff --git a/postman/IRS/DPP-IRS.postman_collection.json b/postman/IRS/DPP-IRS.postman_collection.json new file mode 100644 index 000000000..508dae987 --- /dev/null +++ b/postman/IRS/DPP-IRS.postman_collection.json @@ -0,0 +1,372 @@ +{ + "info": { + "_postman_id": "8fbfb90f-ff83-4343-a917-e65bb2ee468c", + "name": "DPP-IRS", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Policy Store", + "item": [ + { + "name": "Get all Policies", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{IrsServer}}/irs/policies", + "host": [ + "{{IrsServer}}" + ], + "path": [ + "irs", + "policies" + ] + } + }, + "response": [] + }, + { + "name": "Register Policy", + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n\t\"policyId\": \"R2_Traceability\",\r\n\t\"validUntil\": \"2026-08-01T00:00:00Z\"\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{IrsServer}}/irs/policies", + "host": [ + "{{IrsServer}}" + ], + "path": [ + "irs", + "policies" + ] + } + }, + "response": [] + }, + { + "name": "Delete Policy", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{IrsServer}}/irs/policies/{{policyId}}", + "host": [ + "{{IrsServer}}" + ], + "path": [ + "irs", + "policies", + "{{policyId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "Digital Twin Registry", + "item": [ + { + "name": "Get shell descriptors", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{registryUrl}}/shell-descriptors", + "host": [ + "{{registryUrl}}" + ], + "path": [ + "shell-descriptors" + ] + } + }, + "response": [] + }, + { + "name": "Get shell by Id Copy", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{registryUrl}}/shell-descriptors/{{digitalTwinId}}", + "host": [ + "{{registryUrl}}" + ], + "path": [ + "shell-descriptors", + "{{digitalTwinId}}" + ] + } + }, + "response": [] + }, + { + "name": "Delete Shell", + "request": { + "method": "DELETE", + "header": [], + "url": { + "raw": "{{registryUrl}}/shell-descriptors/{{digitalTwinId}}", + "host": [ + "{{registryUrl}}" + ], + "path": [ + "shell-descriptors", + "{{digitalTwinId}}" + ] + } + }, + "response": [] + } + ] + }, + { + "name": "IRS", + "item": [ + { + "name": "1. Register Job", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "const jsonResponse = pm.response.json();\r", + "pm.collectionVariables.set(\"jobId\", jsonResponse.id);" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\r\n \"aspects\": [\r\n \"BatteryPass\"\r\n ],\r\n \"bomLifecycle\": \"asBuilt\",\r\n \"callbackUrl\": \"https://hostname.com/callback?id={id}&state={state}\",\r\n \"collectAspects\": true,\r\n \"depth\": 100,\r\n \"direction\": \"downward\",\r\n \"key\": {\r\n \"bpn\": \"\",\r\n \"globalAssetId\": \"urn:uuid:1b17682e-5e2a-4913-aa1b-7d59a072a3cb\"\r\n },\r\n \"lookupBPNs\": true\r\n}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "{{irsServer}}/irs/jobs", + "host": [ + "{{irsServer}}" + ], + "path": [ + "irs", + "jobs" + ] + } + }, + "response": [] + }, + { + "name": "2. Get specific Job", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{irsServer}}/irs/jobs/{{jobId}}", + "host": [ + "{{irsServer}}" + ], + "path": [ + "irs", + "jobs", + "{{jobId}}" + ] + } + }, + "response": [] + }, + { + "name": "3. Get Jobs", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{irsServer}}/irs/jobs?page=0&size=20", + "host": [ + "{{irsServer}}" + ], + "path": [ + "irs", + "jobs" + ], + "query": [ + { + "key": "page", + "value": "0" + }, + { + "key": "size", + "value": "20" + } + ] + } + }, + "response": [] + }, + { + "name": "Get all available Aspect models", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "{{irsServer}}/irs/aspectmodels", + "host": [ + "{{irsServer}}" + ], + "path": [ + "irs", + "aspectmodels" + ] + } + }, + "response": [] + } + ] + } + ], + "auth": { + "type": "oauth2", + "oauth2": [ + { + "key": "accessTokenUrl", + "value": "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/token", + "type": "string" + }, + { + "key": "scope", + "value": "openid profile email", + "type": "string" + }, + { + "key": "clientSecret", + "value": "{{clientSecret}}", + "type": "string" + }, + { + "key": "clientId", + "value": "{{clientId}}", + "type": "string" + }, + { + "key": "challengeAlgorithm", + "value": "S256", + "type": "string" + }, + { + "key": "username", + "value": "company 2 user", + "type": "string" + }, + { + "key": "redirect_uri", + "value": "https://materialpass.int.demo.catena-x.net", + "type": "string" + }, + { + "key": "password", + "value": "changeme", + "type": "string" + }, + { + "key": "grant_type", + "value": "client_credentials", + "type": "string" + }, + { + "key": "authUrl", + "value": "https://centralidp.int.demo.catena-x.net/auth/realms/CX-Central/protocol/openid-connect/auth", + "type": "string" + }, + { + "key": "addTokenTo", + "value": "header", + "type": "string" + }, + { + "key": "client_authentication", + "value": "header", + "type": "string" + } + ] + }, + "event": [ + { + "listen": "prerequest", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "key": "digitalTwinId", + "value": "", + "type": "default" + }, + { + "key": "clientId", + "value": "", + "type": "default" + }, + { + "key": "clientSecret", + "value": "", + "type": "default" + }, + { + "key": "irsServer", + "value": "", + "type": "default" + }, + { + "key": "jobId", + "value": "", + "type": "default" + }, + { + "key": "registryUrl", + "value": "", + "type": "default" + }, + { + "key": "IrsServer", + "value": "", + "type": "default" + }, + { + "key": "policyId", + "value": "", + "type": "default" + } + ] +} \ No newline at end of file