diff --git a/.github/argo/argo_config.sh b/.github/argo/argo_config.sh index 879a18f048..f7eb3d1f0c 100644 --- a/.github/argo/argo_config.sh +++ b/.github/argo/argo_config.sh @@ -29,7 +29,7 @@ DELETE_DEV_TEST_RESOURCES=( "$ARGO_TEST_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tracex-test-edc-provider-tractusx-connector-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_TEST_REGISTRY/resource?force=false&orphan=false&resourceName=data-tracex-dt-registry-test-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_TEST_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tracex-dt-registry-test-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" - "$ARGO_TEST_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=cx-tracex-dt-registry-test-registry&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_TEST_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-test&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_DEV_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-backend-postgresql-dev-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_DEV_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-backend-postgresql-dev&version=v1&kind=StatefulSet&namespace=product-traceability-foss" @@ -44,7 +44,7 @@ DELETE_DEV_TEST_RESOURCES=( "$ARGO_DEV_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tracex-edc-provider-tractusx-connector-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_DEV_REGISTRY/resource?force=false&orphan=false&resourceName=data-tracex-dt-registry-dev-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_DEV_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tracex-dt-registry-dev-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" - "$ARGO_DEV_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=cx-tracex-dt-registry-dev-registry&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_DEV_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-dev&version=v1&kind=Deployment&namespace=product-traceability-foss" ) DELETE_E2E_RESOURCES=( @@ -61,7 +61,7 @@ DELETE_E2E_RESOURCES=( "$ARGO_E2E_A_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tracex-edc-provider-e2e-a-tractusx-connector-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_E2E_A_REGISTRY/resource?force=false&orphan=false&resourceName=data-tracex-dt-registry-e2e-a-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_E2E_A_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tracex-dt-registry-e2e-a-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" - "$ARGO_E2E_A_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=cx-tracex-dt-registry-e2e-a-registry&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_E2E_A_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-e2e-a&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_E2E_B_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-backend-postgresql-e2e-b-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_E2E_B_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-backend-postgresql-e2e-b&version=v1&kind=StatefulSet&namespace=product-traceability-foss" @@ -76,7 +76,7 @@ DELETE_E2E_RESOURCES=( "$ARGO_E2E_B_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tracex-edc-provider-e2e-b-tractusx-connector-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_E2E_B_REGISTRY/resource?force=false&orphan=false&resourceName=data-tracex-dt-registry-e2e-b-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_E2E_B_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tracex-dt-registry-e2e-b-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" - "$ARGO_E2E_B_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=cx-tracex-dt-registry-e2e-b-registry&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_E2E_B_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-e2e-b&version=v1&kind=Deployment&namespace=product-traceability-foss" ) DELETE_INT_RESOURCES=( "$ARGO_INT_A_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-backend-postgresql-int-a-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" @@ -92,7 +92,7 @@ DELETE_INT_RESOURCES=( "$ARGO_INT_A_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-provider-int-a-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_INT_A_REGISTRY/resource?force=false&orphan=false&resourceName=data-tx-registry-int-a-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_INT_A_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tx-registry-int-a-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" - "$ARGO_INT_A_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=cx-tx-registry-int-a-registry&version=v1&kind=Deployment&namespace=product-traceability-foss" + "$ARGO_INT_A_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-int-a&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_INT_B_TRACE_X_INSTANCE/resource?force=false&orphan=false&resourceName=data-tx-backend-postgresql-int-b-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_INT_B_TRACE_X_INSTANCE/resource?group=apps&force=true&orphan=false&resourceName=tx-backend-postgresql-int-b&version=v1&kind=StatefulSet&namespace=product-traceability-foss" @@ -107,8 +107,8 @@ DELETE_INT_RESOURCES=( "$ARGO_INT_B_EDC_PROVIDER/resource?group=apps&force=false&orphan=false&resourceName=tx-edc-provider-int-b-tractusx-connector-dataplane&version=v1&kind=Deployment&namespace=product-traceability-foss" "$ARGO_INT_B_REGISTRY/resource?force=false&orphan=false&resourceName=data-tx-registry-int-b-postgresql-0&version=v1&kind=PersistentVolumeClaim&namespace=product-traceability-foss" "$ARGO_INT_B_REGISTRY/resource?group=apps&force=true&orphan=false&resourceName=tx-registry-int-b-postgresql&version=v1&kind=StatefulSet&namespace=product-traceability-foss" - "$ARGO_INT_B_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=cx-tx-registry-int-b-registry&version=v1&kind=Deployment&namespace=product-traceability-foss" - ) + "$ARGO_INT_B_REGISTRY/resource?group=apps&force=false&orphan=false&resourceName=tracex-registry-int-b&version=v1&kind=Deployment&namespace=product-traceability-foss" + ) SYNC_DEV_TEST_RESOURCES=( "$ARGO_TEST_REGISTRY/sync" "$ARGO_TEST_EDC_PROVIDER/sync" @@ -163,5 +163,5 @@ INT_RESOURCES=( "$ARGO_INT_B_EDC_PROVIDER" "$ARGO_INT_B_TRACE_X_INSTANCE" ) - - + + diff --git a/.github/workflows/argo.yml b/.github/workflows/argo.yml index 30e073e949..54434eb686 100644 --- a/.github/workflows/argo.yml +++ b/.github/workflows/argo.yml @@ -35,7 +35,7 @@ on: - E2E-A/E2E-B - int-a/int-b testdata_version: - description: Which Testdata Version CX_Testdata_MessagingTest_v.json e.g., 0.0.12" + description: Which Testdata Version CX_Testdata_MessagingTest_v.json e.g., 0.0.13" required: true argo_token: description: Argo Token @@ -375,22 +375,22 @@ jobs: - name: Upload testdata run: | python -m pip install requests - curl -o transform-and-upload.py https://raw.githubusercontent.com/catenax-ng/tx-item-relationship-service/main/local/testing/testdata/transform-and-upload.py + curl -o transform-and-upload.py https://raw.githubusercontent.com/eclipse-tractusx/item-relationship-service/main/local/testing/testdata/transform-and-upload.py if [ "${{ github.event.inputs.testdata_upload }}" == "true" ]; then if [ "${{ github.event.inputs.environment }}" == "Dev/Test" ]; then - python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-test.dev.demo.catena-x.net/api/submodel -edc https://trace-x-test-edc.dev.demo.catena-x.net -a https://trace-x-registry-test.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-test-edc-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-test.dev.demo.catena-x.net/api/submodel/data -edc https://trace-x-test-edc.dev.demo.catena-x.net -a https://trace-x-registry-test.dev.demo.catena-x.net/semantics/registry/api/v3 -d https://trace-x-test-edc-dataplane.dev.demo.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --edcBPN BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC sleep 10 - python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc.dev.demo.catena-x.net -a https://trace-x-registry.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability.dev.demo.catena-x.net/api/submodel/data -edc https://trace-x-edc.dev.demo.catena-x.net -a https://trace-x-registry-dev.dev.demo.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-dataplane.dev.demo.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --edcBPN BPNL00000003CML1 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC sleep 10 elif [ "${{ github.event.inputs.environment }}" == "E2E-A/E2E-B" ]; then - python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-e2e-a.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc-e2e-a.dev.demo.catena-x.net -a https://trace-x-registry-e2e-a.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-e2e-a-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-e2e-a.dev.demo.catena-x.net/api/submodel/data -edc https://trace-x-edc-e2e-a.dev.demo.catena-x.net -a https://trace-x-registry-e2e-a.dev.demo.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-e2e-a-dataplane.dev.demo.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --edcBPN BPNL00000003CML1 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC sleep 10 - python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-e2e-b.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc-e2e-b.dev.demo.catena-x.net -a https://trace-x-registry-e2e-b.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-e2e-b-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-e2e-b.dev.demo.catena-x.net/api/submodel/data -edc https://trace-x-edc-e2e-b.dev.demo.catena-x.net -a https://trace-x-registry-e2e-b.dev.demo.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-e2e-b-dataplane.dev.demo.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_DEV }} --aas3 --edcBPN BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC sleep 10 elif [ "${{ github.event.inputs.environment }}" == "int-a/int-b" ]; then - python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-int-a.int.demo.catena-x.net/api/submodel -edc https://trace-x-edc-int-a.int.demo.catena-x.net -a https://trace-x-registry-int-a.int.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-int-a-dataplane.int.demo.catena-x.net -p id-3.0-trace -k ${{ secrets.TRACE_X_API_KEY_INT_A }} --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-int-a.int.demo.catena-x.net/api/submodel/data -edc https://trace-x-edc-int-a.int.demo.catena-x.net -a https://trace-x-registry-int-a.int.demo.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-int-a-dataplane.int.demo.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_INT_A }} --aas3 --edcBPN BPNL00000003CML1 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV sleep 10 - python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-int-b.int.demo.catena-x.net/api/submodel -edc https://trace-x-edc-int-b.int.demo.catena-x.net -a https://trace-x-registry-int-b.int.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-int-b-dataplane.int.demo.catena-x.net -p id-3.0-trace -k ${{ secrets.TRACE_X_API_KEY_INT_B }} --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV + python transform-and-upload.py -f ./tx-backend/testdata/CX_Testdata_MessagingTest_v${{ github.event.inputs.testdata_version }}.json -s https://traceability-int-b.int.demo.catena-x.net/api/submodel/data -edc https://trace-x-edc-int-b.int.demo.catena-x.net -a https://trace-x-registry-int-b.int.demo.catena-x.net/semantics/registry/api/v3 -d https://trace-x-edc-int-b-dataplane.int.demo.catena-x.net -p traceability-core -k ${{ secrets.TRACE_X_API_KEY_INT_B }} --aas3 --edcBPN BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV sleep 10 fi elif [ "${{ github.event.inputs.testdata_upload }}" == "false" ]; then diff --git a/.github/workflows/publish-documentation.yaml b/.github/workflows/publish-documentation.yaml index 23cda5c496..1416e3302b 100644 --- a/.github/workflows/publish-documentation.yaml +++ b/.github/workflows/publish-documentation.yaml @@ -127,7 +127,7 @@ jobs: mv docs/src/diagram-replacer/assets/ docs/target/generated-docs/assets/ - name: GitHub Pages action - uses: peaceiris/actions-gh-pages@v3.9.3 + uses: peaceiris/actions-gh-pages@v4.0.0 with: github_token: ${{ secrets.GITHUB_TOKEN }} publish_dir: "./docs/target/generated-docs" diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index a7726390f9..ab39626416 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -58,8 +58,8 @@ jobs: - name: Update the frontend package.json appVersion run: | - npm install -g json - json -I -f frontend/package.json -e "this.version='${{ github.ref_name }}'" + sudo npm install -g json + sudo json -I -f frontend/package.json -e "this.version='${{ github.ref_name }}'" - name: Prepare Helm release uses: peter-evans/create-pull-request@v6 diff --git a/.github/workflows/trivy.yml b/.github/workflows/trivy.yml index c937b2de37..eceb6f7786 100644 --- a/.github/workflows/trivy.yml +++ b/.github/workflows/trivy.yml @@ -74,7 +74,7 @@ jobs: run: docker build -t localhost:5000/traceability-foss:fe_${{ github.sha }} -f ./frontend/Dockerfile . - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.18.0 + uses: aquasecurity/trivy-action@0.19.0 with: trivyignores: "./.github/workflows/.trivyignore" image-ref: 'localhost:5000/traceability-foss:fe_${{ github.sha }}' @@ -134,7 +134,7 @@ jobs: ref: ${{needs.prepare-env.outputs.check_sha}} - name: Run Trivy vulnerability scanner in repo mode - uses: aquasecurity/trivy-action@0.18.0 + uses: aquasecurity/trivy-action@0.19.0 with: trivyignores: "./.github/workflows/.trivyignore" scan-type: "config" @@ -180,7 +180,7 @@ jobs: tags: localhost:5000/traceability-foss:trivy - name: Run Trivy vulnerability scanner - uses: aquasecurity/trivy-action@0.18.0 + uses: aquasecurity/trivy-action@0.19.0 with: image-ref: localhost:5000/traceability-foss:trivy trivyignores: "./.github/workflows/.trivyignore" diff --git a/.github/workflows/unit-test_frontend.yml b/.github/workflows/unit-test_frontend.yml index 4ab7cfef71..fd6e14df52 100644 --- a/.github/workflows/unit-test_frontend.yml +++ b/.github/workflows/unit-test_frontend.yml @@ -25,6 +25,7 @@ on: paths: - 'frontend/**' pull_request: + workflow_dispatch: jobs: build: diff --git a/CHANGELOG.md b/CHANGELOG.md index ef6e276a16..f342303f59 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,99 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). _**For better traceability add the corresponding GitHub issue number in each changelog entry, please.**_ - ## [UNRELEASED - DD.MM.YYYY] +## [11.0.1 - 22.05.2024] + +### Added +- #859 added autocomplete on subset of assets in notification creation/edit view +- #997 added publish assets state check to parts table +- #XXX added border to dashboard notifications table and view all count + +### Changed +- #778 return empty PageResult when no contract agreement Ids are found instead of http 404 in /contacts API +- #XXX Fixed some sonar issues in frontend application +- #958 Fixed bug where available parts filter was reset when list of affected parts are zero in notification creation +- XXX Removed EdcNotifiactionMockServiceImpl class and replaced with mocks +- #XXX Switched eclipse-temurin:21-jre-alpine@sha256:fb4150a30569aadae9d693d949684a00653411528e62498b9900940c9b5b8a66 to 23467b3e42617ca197f43f58bc5fb03ca4cb059d68acd49c67128bfded132d67 +- #837 Moved data import and IrsResponseMappers under same interface and shared methods +- #947 Updating irs-helm from 7.1.1 to 7.1.2 to use latest catena-x policy +- #963 update irs-client-lib.version from 2.0.3 to 2.0.4-SNAPSHOT to fix /contracts api +- #989 changed german word "Eigen" to "Eigene" +- #992 improved uux in selection of columns in table settings +- #994 moved search bar above new and existing configurations +- #994 disable inputs of newly added bpn configurations +- #995 disable creation and editof notifications for admin role +- #991 make menu table headers unvisible to not block column and filters of tables +- #915 Updated user manual documentation (chapters and screenshots) +- #998 fixed bug where global search bar could search for BPN and adjusted placeholder label to reflect column names +- #913 Changed severity icons +- #978 Fixed edc policy creation with edc version 0.7.0 + +## [11.0.0 - 08.05.2024] +### Added +- #844 Validation for BPN to Notification API (Create / Edit), Fixed pagination +- #726 Added @Preauthorize annotation to dashboard controller +- #849 Added concept: Notifications to multiple BPNs +- #837 Added digital twin type to data provisioning workflow to be able to lookup shells created by trace-x +- #783 Validation that receiver of a notification must not be same as sender. +- #831 Added concept: Notification data model revision +- #859 Enable autocomplete API to filter for given assets +- #778 Added counterPartyId to getCatalogRequest + +### Changed +- #837 migrate to irs-helm 7.1.1 +- #837 migrate to irs-decentral-client-library to 2.0.2-SNAPSHOT +- #844 Prefilled bpn on investigation creation +- #843 Refactored e2e tests, added edit notification e2e test case +- #828 fix duplicates in traction_battery_code_subcomponent table +- #617 redesigned inbox table +- #603 Upgraded SingleLevelBomAsBuilt, SingleLevelBomAsPlanned & SingleLevelBomAsBuilt to 3.0.0 +- #603 Upgraded Batch, SerialPart and JustInSequencePart to 3.0.0 +- #603 Upgraded PartAsPlanned to 2.0.0 +- #918 Merged parts and other parts into one table +- #918 Fixed translations and normal case for autocomplete values +- #778 update EDC from 0.5.3 to 0.7.0 +- #XXX update of lombok from 1.18.30 to 1.18.32 +- #XXX update of findsecbugs plugin from 1.12.0 to 1.13.0 +- #XXX update of commons-compress from 1.26.0 to 1.26.1 +- #XXX update of logback from 1.5.5 to 1.5.6 +- #XXX update of cucumber-bom from 7.16.1 to 7.17.0 +- #XXX Updated spring boot from 3.2.4 to 3.2.5 +- #XXX Bumped logback-core & logback-classic from 1.5.4 to 1.5.5 + +### Removed +- #602 digitalTwinType instead of semanticId. DigitalTwinType causes problems in release 24.05 + +## [10.8.4 - 17.04.2024] + +### Added +- #780 store api documenation in docs/api to conform with TRG 1.08 +- #622 Notification Update API +- #774 Added initial concept for handling multiple BPNs +- #834 Added possiblity to exclude elements from the results of the asset api filter +- #586 BPDM lookup feature + +## Changed +- XXX Updated insomnia collection +- #834 Behaviour of parts selection in edit / create notification view +- #823 migrate to irs-helm 6.18.0 +- #636 migrate to digital-twin-registry version 0.4.9 from 0.3.22 +- #622 Added functionallity to edit existing notifications within CREATED state +- #602 use digitalTwinType instead of semanticId to determine asBuilt or asPlanned assets +- Spell check arc42 documentation and administration guide and make it consistent +- bump ch.qos.logback:logback-core from 1.4.14 to 1.5.4 +- bump peaceiris/actions-gh-pages from 3.9.3 to 4.0.0 +- bump aquasecurity/trivy-action from 0.18.0 to 0.19.0 +- bump org.springframework.cloud:spring-cloud-dependencies from 2023.0.0 to 2023.0.1 +- bump org.awaitility:awaitility from 3.0.0 to 4.2.1 +- bump org.asciidoctor:asciidoctorj-diagram from 2.2.13 to 2.3.0 +- bump io.cucumber:cucumber-bom from 7.15.0 to 7.16.1 + +## [10.8.2 - 05.04.2024] +### Removed +- #547 Removed classification check on alert / investigation update callback methods + ## [10.8.1 - 04.04.2024] ### Added diff --git a/COMPATIBILITY_MATRIX.md b/COMPATIBILITY_MATRIX.md index cfb82efdcc..578ea769c9 100644 --- a/COMPATIBILITY_MATRIX.md +++ b/COMPATIBILITY_MATRIX.md @@ -1,5 +1,60 @@ # Compatibility matrix Trace-X +## Trace-X version [[11.0.1](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/11.0.1] - 2024-05-22 + +### Catena-X Release? + +- [x] yes +- [ ] no + +### Helm Version [1.3.38](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/helm-charts-1.3.38) + +| Dependency | Name of Service | Version | Helm | Comments | +|------------------|------------------------------|----------------------|----------|-----------------------------------------------------| +| EDC | edc-postgresql | 15.4.0-debian-11-r45 | 12.12.10 | Enterprise Data Connector for PostgreSQL | +| IRS | item-relationship-service | 5.1.3 | 7.1.3 | Helm charts for Item Relationship Service | +| EDC | tractusx-connector | 0.7.0 | 0.7.0 | Connector for Data Transfer and Registration | +| Discovery Finder | discovery service | 0.2.5 | - | Service for discovering and registering artifacts | +| Portal | portal | 1.8.0 | - | Web portal for interacting with Trace-X | +| SD-Factory | SD-Factory | 2.1.7 | - | Service Discovery Factory for managing dependencies | +| Aspect Model | SerialPart | 3.0.0 | - | | +| Aspect Model | Batch | 3.0.0 | - | | +| Aspect Model | PartAsPlanned | 2.0.0 | - | | +| Aspect Model | PartSiteInformationAsPlanned | 1.0.0 | - | | +| Aspect Model | JustInSequencePart | 3.0.0 | - | | +| Aspect Model | TractionBatteryCode | 1.0.0 | - | | +| Aspect Model | SingleLevelUsageAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsPlanned | 3.0.0 | - | + +## Trace-X version [[11.0.0](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/11.0.0] - 2024-05-08 + +### Catena-X Release? + +- [x] yes +- [ ] no + +### Helm Version [1.3.37](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/helm-charts-1.3.37) + +| Dependency | Name of Service | Version | Helm | Comments | +|------------------|------------------------------|---------------------|----------|-----------------------------------------------------------------------------------| +| EDC | edc-postgresql | 15.4.0-debian-11-r45 | 12.12.10 | Enterprise Data Connector for PostgreSQL | +| IRS | item-relationship-service | 5.1.1 | 7.1.1 | Helm charts for Item Relationship Service | +| EDC | tractusx-connector | 0.7.0 | 0.7.0 | Connector for Data Transfer and Registration | +| Discovery Finder | discovery service | 0.2.5 | - | Service for discovering and registering artifacts | +| Portal | portal | 1.8.0 | - | Web portal for interacting with Trace-X | +| SD-Factory | SD-Factory | 2.1.7 | - | Service Discovery Factory for managing dependencies | +| Aspect Model | SerialPart | 3.0.0 | - | | +| Aspect Model | Batch | 3.0.0 | - | | +| Aspect Model | PartAsPlanned | 2.0.0 | - | | +| Aspect Model | PartSiteInformationAsPlanned | 1.0.0 | - | | +| Aspect Model | JustInSequencePart | 3.0.0 | - | | +| Aspect Model | TractionBatteryCode | 1.0.0 | - | | +| Aspect Model | SingleLevelUsageAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsBuilt | 3.0.0 | - | | +| Aspect Model | SingleLevelBomAsPlanned | 3.0.0 | - | +## Trace-X version [[10.8.4](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/10.8.4)] - 2024-04-17 +- No changes to 10.8.1 ## Trace-X version [[10.8.1](https://github.com/eclipse-tractusx/traceability-foss/releases/tag/10.8.1)] - 2024-04-03 ### Catena-X Release? diff --git a/DEPENDENCIES_BACKEND b/DEPENDENCIES_BACKEND index 6b5ca2b1cf..24d6604ab5 100644 --- a/DEPENDENCIES_BACKEND +++ b/DEPENDENCIES_BACKEND @@ -1,10 +1,11 @@ maven/mavencentral/ch.qos.logback/logback-classic/1.4.14, EPL-1.0 OR LGPL-2.1-only, approved, #3435 +maven/mavencentral/ch.qos.logback/logback-classic/1.5.6, EPL-1.0 AND LGPL-2.1-only, approved, #13282 maven/mavencentral/ch.qos.logback/logback-core/1.4.14, EPL-1.0 OR LGPL-2.1-only, approved, #3373 -maven/mavencentral/com.apicatalog/titanium-json-ld/1.3.2, Apache-2.0, approved, #8912 +maven/mavencentral/ch.qos.logback/logback-core/1.5.6, EPL-1.0 AND LGPL-2.1-only, approved, #13283 +maven/mavencentral/com.apicatalog/titanium-json-ld/1.4.0, Apache-2.0, approved, #13683 maven/mavencentral/com.auth0/java-jwt/4.4.0, MIT, approved, #8459 maven/mavencentral/com.carrotsearch.thirdparty/simple-xml-safe/2.7.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.fasterxml.jackson.core/jackson-annotations/2.15.4, Apache-2.0, approved, #7947 -maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.14.2, Apache-2.0 AND MIT, approved, #4303 maven/mavencentral/com.fasterxml.jackson.core/jackson-core/2.15.4, MIT AND Apache-2.0, approved, #7932 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.14.2, Apache-2.0, approved, #4105 maven/mavencentral/com.fasterxml.jackson.core/jackson-databind/2.15.4, Apache-2.0, approved, #7934 @@ -12,12 +13,10 @@ maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-toml/2.15.4, Apache-2.0, approved, #9160 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.14.2, Apache-2.0, approved, #5933 maven/mavencentral/com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.15.4, Apache-2.0, approved, #8802 -maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.15.2, Apache-2.0, approved, #9179 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.15.4, Apache-2.0, approved, #9179 +maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jakarta-jsonp/2.16.2, Apache-2.0, approved, #11854 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.15.4, Apache-2.0, approved, #8808 maven/mavencentral/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.15.4, Apache-2.0, approved, #7930 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.14.1, Apache-2.0, approved, #5308 -maven/mavencentral/com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.15.4, Apache-2.0, approved, #9241 maven/mavencentral/com.fasterxml.jackson.module/jackson-module-parameter-names/2.15.4, Apache-2.0, approved, #8803 maven/mavencentral/com.fasterxml/classmate/1.5.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.fasterxml/classmate/1.6.0, Apache-2.0, approved, clearlydefined @@ -36,23 +35,22 @@ maven/mavencentral/com.google.code.findbugs/annotations/1.3.9, LGPL-2.1-or-later maven/mavencentral/com.google.code.findbugs/jsr305/3.0.2, Apache-2.0, approved, #20 maven/mavencentral/com.google.code.gson/gson/2.10.1, Apache-2.0, approved, #6159 maven/mavencentral/com.google.code.javaparser/javaparser/1.0.11, LGPL-3.0-or-later, approved, #13474 +maven/mavencentral/com.google.crypto.tink/tink/1.12.0, Apache-2.0, approved, #12041 maven/mavencentral/com.google.errorprone/error_prone_annotations/2.18.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.google.guava/failureaccess/1.0.1, Apache-2.0, approved, CQ22654 maven/mavencentral/com.google.guava/guava/32.0.1-jre, Apache-2.0 AND CC0-1.0 AND CC-PDDC, approved, #8772 maven/mavencentral/com.google.guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava, Apache-2.0, approved, CQ22657 maven/mavencentral/com.google.j2objc/j2objc-annotations/2.8, Apache-2.0, approved, clearlydefined +maven/mavencentral/com.google.protobuf/protobuf-java/3.24.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/com.googlecode.libphonenumber/libphonenumber/8.11.1, Apache-2.0, approved, clearlydefined maven/mavencentral/com.jayway.jsonpath/json-path/2.9.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/content-type/2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/lang-tag/1.7, Apache-2.0, approved, clearlydefined maven/mavencentral/com.nimbusds/nimbus-jose-jwt/9.37.3, Apache-2.0, approved, #11701 maven/mavencentral/com.nimbusds/oauth2-oidc-sdk/9.43.3, Apache-2.0, approved, clearlydefined -maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.11.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.squareup.okhttp3/okhttp-dnsoverhttps/4.12.0, Apache-2.0, approved, #11159 -maven/mavencentral/com.squareup.okhttp3/okhttp/4.11.0, Apache-2.0, approved, #9240 maven/mavencentral/com.squareup.okhttp3/okhttp/4.12.0, Apache-2.0, approved, #11156 maven/mavencentral/com.squareup.okio/okio-jvm/3.5.0, Apache-2.0, approved, #9851 -maven/mavencentral/com.squareup.okio/okio/3.2.0, Apache-2.0, approved, clearlydefined maven/mavencentral/com.squareup.okio/okio/3.6.0, Apache-2.0, approved, #11155 maven/mavencentral/com.sun.codemodel/codemodel/2.6, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, clearlydefined maven/mavencentral/com.sun.istack/istack-commons-runtime/4.1.1, BSD-3-Clause, approved, #2590 @@ -71,24 +69,26 @@ maven/mavencentral/commons-io/commons-io/2.11.0, Apache-2.0, approved, CQ23745 maven/mavencentral/commons-lang/commons-lang/2.6, Apache-2.0, approved, CQ6183 maven/mavencentral/commons-logging/commons-logging/1.2, Apache-2.0, approved, CQ10162 maven/mavencentral/commons-logging/commons-logging/1.3.0, Apache-2.0, approved, #11783 -maven/mavencentral/commons-validator/commons-validator/1.7, Apache-2.0, approved, clearlydefined +maven/mavencentral/commons-validator/commons-validator/1.8.0, Apache-2.0, approved, #11891 maven/mavencentral/dev.failsafe/failsafe-okhttp/3.3.2, Apache-2.0, approved, #9178 maven/mavencentral/dev.failsafe/failsafe/3.3.2, Apache-2.0, approved, #9268 -maven/mavencentral/io.cucumber/ci-environment/10.0.0, MIT, approved, #13863 -maven/mavencentral/io.cucumber/cucumber-core/7.15.0, MIT AND (Apache-2.0 AND MIT), approved, #13859 -maven/mavencentral/io.cucumber/cucumber-expressions/17.0.1, MIT, approved, #13858 -maven/mavencentral/io.cucumber/cucumber-gherkin-messages/7.15.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/cucumber-gherkin/7.15.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/cucumber-java/7.15.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/cucumber-junit-platform-engine/7.15.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/cucumber-plugin/7.15.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/datatable/7.15.0, MIT, approved, #13862 -maven/mavencentral/io.cucumber/docstring/7.15.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/gherkin/26.2.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/html-formatter/20.4.0, Apache-2.0 AND CC-BY-4.0 AND MIT AND OFL-1.1, approved, #13864 -maven/mavencentral/io.cucumber/junit-xml-formatter/0.2.0, MIT, approved, #11043 -maven/mavencentral/io.cucumber/messages/22.0.0, MIT, approved, clearlydefined -maven/mavencentral/io.cucumber/tag-expressions/6.0.0, MIT, approved, #13860 +maven/mavencentral/io.cucumber/ci-environment/10.0.1, MIT, approved, #13863 +maven/mavencentral/io.cucumber/cucumber-core/7.17.0, MIT AND (Apache-2.0 AND MIT), approved, #14646 +maven/mavencentral/io.cucumber/cucumber-expressions/17.1.0, MIT, approved, #14271 +maven/mavencentral/io.cucumber/cucumber-gherkin-messages/7.17.0, MIT, approved, #14649 +maven/mavencentral/io.cucumber/cucumber-gherkin/7.17.0, MIT, approved, #14648 +maven/mavencentral/io.cucumber/cucumber-java/7.17.0, MIT, approved, #14640 +maven/mavencentral/io.cucumber/cucumber-junit-platform-engine/7.17.0, MIT, approved, #14642 +maven/mavencentral/io.cucumber/cucumber-plugin/7.17.0, MIT, approved, #14643 +maven/mavencentral/io.cucumber/datatable/7.17.0, MIT, approved, #14647 +maven/mavencentral/io.cucumber/docstring/7.17.0, MIT, approved, #14645 +maven/mavencentral/io.cucumber/gherkin/28.0.0, MIT, approved, #14276 +maven/mavencentral/io.cucumber/html-formatter/21.3.1, Apache-2.0 AND MIT, approved, #14275 +maven/mavencentral/io.cucumber/junit-xml-formatter/0.4.0, MIT, approved, #14644 +maven/mavencentral/io.cucumber/messages/24.1.0, MIT, approved, #14274 +maven/mavencentral/io.cucumber/query/12.1.2, MIT, approved, #14641 +maven/mavencentral/io.cucumber/tag-expressions/6.1.0, MIT AND (BSD-3-Clause AND MIT) AND BSD-3-Clause, approved, #14277 +maven/mavencentral/io.cucumber/testng-xml-formatter/0.1.0, MIT, approved, #14650 maven/mavencentral/io.github.classgraph/classgraph/4.8.149, MIT, approved, CQ22530 maven/mavencentral/io.github.resilience4j/resilience4j-annotations/2.1.0, Apache-2.0, approved, #10171 maven/mavencentral/io.github.resilience4j/resilience4j-bulkhead/2.1.0, Apache-2.0, approved, #10172 @@ -103,17 +103,17 @@ maven/mavencentral/io.github.resilience4j/resilience4j-retry/2.1.0, Apache-2.0, maven/mavencentral/io.github.resilience4j/resilience4j-spring-boot3/2.1.0, Apache-2.0, approved, #10913 maven/mavencentral/io.github.resilience4j/resilience4j-spring6/2.1.0, Apache-2.0, approved, #10915 maven/mavencentral/io.github.resilience4j/resilience4j-timelimiter/2.1.0, Apache-2.0, approved, #10166 -maven/mavencentral/io.micrometer/micrometer-commons/1.12.4, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 -maven/mavencentral/io.micrometer/micrometer-core/1.12.4, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 -maven/mavencentral/io.micrometer/micrometer-jakarta9/1.12.4, Apache-2.0, approved, #12923 -maven/mavencentral/io.micrometer/micrometer-observation/1.12.4, Apache-2.0, approved, #11680 +maven/mavencentral/io.micrometer/micrometer-commons/1.12.5, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11679 +maven/mavencentral/io.micrometer/micrometer-core/1.12.5, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #11678 +maven/mavencentral/io.micrometer/micrometer-jakarta9/1.12.5, Apache-2.0, approved, #12923 +maven/mavencentral/io.micrometer/micrometer-observation/1.12.5, Apache-2.0, approved, #11680 maven/mavencentral/io.micrometer/micrometer-registry-prometheus/1.11.4, Apache-2.0, approved, #9805 -maven/mavencentral/io.micrometer/micrometer-registry-prometheus/1.12.4, Apache-2.0, approved, #14187 -maven/mavencentral/io.minio/minio/8.5.6, Apache-2.0, approved, #9097 -maven/mavencentral/io.opentelemetry/opentelemetry-api/1.29.0, Apache-2.0, approved, #10088 +maven/mavencentral/io.micrometer/micrometer-registry-prometheus/1.12.5, Apache-2.0, approved, #14187 +maven/mavencentral/io.minio/minio/8.5.9, Apache-2.0, approved, #9097 maven/mavencentral/io.opentelemetry/opentelemetry-api/1.31.0, Apache-2.0, approved, #11087 -maven/mavencentral/io.opentelemetry/opentelemetry-context/1.29.0, Apache-2.0, approved, #10090 +maven/mavencentral/io.opentelemetry/opentelemetry-api/1.32.0, Apache-2.0, approved, #11682 maven/mavencentral/io.opentelemetry/opentelemetry-context/1.31.0, Apache-2.0, approved, #11088 +maven/mavencentral/io.opentelemetry/opentelemetry-context/1.32.0, Apache-2.0, approved, #11683 maven/mavencentral/io.prometheus/simpleclient/0.16.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.prometheus/simpleclient_common/0.16.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.prometheus/simpleclient_tracer_common/0.16.0, Apache-2.0, approved, clearlydefined @@ -128,8 +128,9 @@ maven/mavencentral/io.rest-assured/rest-assured/5.4.0, Apache-2.0, approved, #12 maven/mavencentral/io.rest-assured/xml-path/5.3.2, Apache-2.0, approved, #9267 maven/mavencentral/io.rest-assured/xml-path/5.4.0, Apache-2.0, approved, #12038 maven/mavencentral/io.smallrye/jandex/3.1.2, Apache-2.0, approved, clearlydefined +maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.20, Apache-2.0, approved, #5947 maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.8, Apache-2.0, approved, #5947 -maven/mavencentral/io.swagger.core.v3/swagger-annotations/2.2.16, Apache-2.0, approved, #11362 +maven/mavencentral/io.swagger.core.v3/swagger-annotations/2.2.18, Apache-2.0, approved, #11362 maven/mavencentral/io.swagger.core.v3/swagger-core-jakarta/2.2.8, Apache-2.0, approved, #5929 maven/mavencentral/io.swagger.core.v3/swagger-models-jakarta/2.2.8, Apache-2.0, approved, #5919 maven/mavencentral/io.swagger/swagger-annotations/1.6.12, Apache-2.0, approved, #3792 @@ -138,7 +139,7 @@ maven/mavencentral/jakarta.activation/jakarta.activation-api/2.1.3, EPL-2.0 OR B maven/mavencentral/jakarta.annotation/jakarta.annotation-api/2.1.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.ca maven/mavencentral/jakarta.inject/jakarta.inject-api/2.0.1, Apache-2.0, approved, ee4j.cdi maven/mavencentral/jakarta.json.bind/jakarta.json.bind-api/2.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonb -maven/mavencentral/jakarta.json.bind/jakarta.json.bind-api/3.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonb +maven/mavencentral/jakarta.json.bind/jakarta.json.bind-api/3.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonb maven/mavencentral/jakarta.json/jakarta.json-api/2.1.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/jakarta.json/jakarta.json-api/2.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/jakarta.persistence/jakarta.persistence-api/3.1.0, EPL-2.0 OR BSD-3-Clause, approved, ee4j.jpa @@ -151,30 +152,30 @@ maven/mavencentral/javax.json.bind/javax.json.bind-api/1.0, CDDL-1.0, approved, maven/mavencentral/javax.validation/validation-api/2.0.1.Final, Apache-2.0, approved, CQ15302 maven/mavencentral/joda-time/joda-time/2.12.2, Apache-2.0, approved, #12739 maven/mavencentral/junit/junit/4.13.2, EPL-2.0, approved, CQ23636 -maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.12, Apache-2.0, approved, #7164 +maven/mavencentral/net.bytebuddy/byte-buddy-agent/1.14.13, Apache-2.0, approved, #7164 maven/mavencentral/net.bytebuddy/byte-buddy/1.12.21, Apache-2.0 AND BSD-3-Clause, approved, #1811 -maven/mavencentral/net.bytebuddy/byte-buddy/1.14.12, Apache-2.0 AND BSD-3-Clause, approved, #7163 +maven/mavencentral/net.bytebuddy/byte-buddy/1.14.13, Apache-2.0 AND BSD-3-Clause, approved, #7163 maven/mavencentral/net.java.dev.jna/jna/5.13.0, Apache-2.0 AND LGPL-2.1-or-later, approved, #6709 maven/mavencentral/net.javacrumbs.json-unit/json-unit-assertj/3.2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/net.javacrumbs.json-unit/json-unit-core/3.2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/net.javacrumbs.json-unit/json-unit-json-path/3.2.2, Apache-2.0, approved, clearlydefined maven/mavencentral/net.minidev/accessors-smart/2.4.9, Apache-2.0, approved, #7515 -maven/mavencentral/net.minidev/accessors-smart/2.5.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/net.minidev/accessors-smart/2.5.1, Apache-2.0, approved, clearlydefined maven/mavencentral/net.minidev/json-smart/2.4.10, Apache-2.0, approved, #3288 -maven/mavencentral/net.minidev/json-smart/2.5.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/net.minidev/json-smart/2.5.1, Apache-2.0, approved, clearlydefined maven/mavencentral/net.sf.jopt-simple/jopt-simple/5.0.4, MIT, approved, CQ13174 maven/mavencentral/org.antlr/antlr4-runtime/4.13.0, BSD-3-Clause, approved, #10767 maven/mavencentral/org.apache.commons/commons-collections4/4.4, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.apache.commons/commons-compress/1.26.0, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #13288 +maven/mavencentral/org.apache.commons/commons-compress/1.26.1, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #13288 maven/mavencentral/org.apache.commons/commons-lang3/3.11, Apache-2.0, approved, CQ22642 maven/mavencentral/org.apache.commons/commons-lang3/3.12.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.commons/commons-lang3/3.13.0, Apache-2.0, approved, #9820 maven/mavencentral/org.apache.groovy/groovy-json/4.0.16, Apache-2.0, approved, #7411 -maven/mavencentral/org.apache.groovy/groovy-json/4.0.20, Apache-2.0, approved, #7411 +maven/mavencentral/org.apache.groovy/groovy-json/4.0.21, Apache-2.0, approved, #7411 maven/mavencentral/org.apache.groovy/groovy-xml/4.0.16, Apache-2.0, approved, #10179 -maven/mavencentral/org.apache.groovy/groovy-xml/4.0.20, Apache-2.0, approved, #10179 +maven/mavencentral/org.apache.groovy/groovy-xml/4.0.21, Apache-2.0, approved, #10179 maven/mavencentral/org.apache.groovy/groovy/4.0.16, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 -maven/mavencentral/org.apache.groovy/groovy/4.0.20, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 +maven/mavencentral/org.apache.groovy/groovy/4.0.21, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 maven/mavencentral/org.apache.httpcomponents/httpclient/4.5.13, Apache-2.0 AND LicenseRef-Public-Domain, approved, CQ23527 maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.13, Apache-2.0, approved, CQ23528 maven/mavencentral/org.apache.httpcomponents/httpcore/4.4.16, Apache-2.0, approved, CQ23528 @@ -182,161 +183,117 @@ maven/mavencentral/org.apache.httpcomponents/httpmime/4.5.13, Apache-2.0, approv maven/mavencentral/org.apache.logging.log4j/log4j-api/2.21.1, Apache-2.0 AND (Apache-2.0 AND LGPL-2.0-or-later), approved, #11079 maven/mavencentral/org.apache.logging.log4j/log4j-to-slf4j/2.21.1, Apache-2.0, approved, #11919 maven/mavencentral/org.apache.mina/mina-core/2.1.6, Apache-2.0, approved, #3289 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.19, Apache-2.0 AND (EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND (CDDL-1.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND W3C AND CC0-1.0, approved, #5949 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.19, Apache-2.0, approved, #6997 -maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.19, Apache-2.0, approved, #7920 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.20, Apache-2.0 AND (EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND (CDDL-1.0 OR GPL-2.0-only WITH Classpath-exception-2.0) AND W3C AND CC0-1.0, approved, #5949 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-el/10.1.20, Apache-2.0, approved, #6997 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.20, Apache-2.0, approved, #7920 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.aspectj/aspectjweaver/1.9.21, Apache-2.0 AND BSD-3-Clause AND EPL-1.0 AND BSD-3-Clause AND Apache-1.1, approved, #7695 +maven/mavencentral/org.aspectj/aspectjweaver/1.9.22, Apache-2.0 AND BSD-3-Clause AND EPL-1.0 AND BSD-3-Clause AND Apache-1.1, approved, #7695 maven/mavencentral/org.assertj/assertj-core/3.24.2, Apache-2.0, approved, #6161 maven/mavencentral/org.attoparser/attoparser/2.0.7.RELEASE, Apache-2.0, approved, CQ18900 -maven/mavencentral/org.awaitility/awaitility/3.0.0, Apache-2.0, approved, #11042 +maven/mavencentral/org.awaitility/awaitility/4.2.1, Apache-2.0, approved, #14178 maven/mavencentral/org.bitbucket.b_c/jose4j/0.9.4, Apache-2.0, approved, #4707 -maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.76, MIT, approved, #9825 -maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.76, MIT AND CC0-1.0, approved, #9827 -maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.76, MIT, approved, #9828 +maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.78, MIT AND CC0-1.0, approved, #14433 maven/mavencentral/org.ccil.cowan.tagsoup/tagsoup/1.2.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.checkerframework/checker-qual/3.31.0, MIT, approved, clearlydefined maven/mavencentral/org.eclipse.angus/angus-activation/2.0.0, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.angus maven/mavencentral/org.eclipse.angus/angus-activation/2.0.2, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.angus -maven/mavencentral/org.eclipse.edc/aggregate-service-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-core/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-core/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.2.1, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-servlet-api/5.0.2, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.toolchain/jetty-jakarta-websocket-api/2.0.0, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-client/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-http/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-http/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-io/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-plus/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-security/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-server/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-util/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-xml/12.0.7, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.tractusx.irs/irs-common/1.6.0, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.6.0, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.6.0, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.6.0, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.edc/api-core/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/asset-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/auth-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/boot-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/catalog-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/connector-core/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-agreement-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-definition-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-negotiation-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/contract-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/control-plane-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/core-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-catalog/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-core/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp-version-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/dsp/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/http-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/jersey-providers-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/json-ld/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/keys-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/keys-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api-configuration/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/management-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-definition-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-evaluator-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-model/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/policy-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/query-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/state-machine-lib/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/token-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transaction-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-process-api/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transfer-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-core/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/transform-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/util/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-core/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/validator-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.edc/web-spi/0.6.0, Apache-2.0, approved, technology.edc +maven/mavencentral/org.eclipse.tractusx.edc/callback-spi/0.6.0, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.edc/core-spi/0.6.0, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.edc/edr-api/0.6.0, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.edc/edr-spi/0.6.0, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-common/2.0.4-20240515.103302-1, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/2.0.4-20240515.103302-1, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-models/2.0.4-20240515.103302-1, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/2.0.4-20240515.103302-1, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.traceability/tx-backend/0.0.1-SNAPSHOT, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.traceability/tx-models/0.0.1-SNAPSHOT, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.flywaydb/flyway-core/9.22.3, Apache-2.0, approved, #10349 maven/mavencentral/org.glassfish.grizzly/grizzly-framework/2.3.25, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.grizzly maven/mavencentral/org.glassfish.grizzly/grizzly-http-server/2.3.25, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.grizzly maven/mavencentral/org.glassfish.grizzly/grizzly-http/2.3.25, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.grizzly -maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-utils/3.0.4, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/hk2-utils/3.0.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish -maven/mavencentral/org.glassfish.hk2/osgi-resource-locator/1.0.3, CDDL-1.0, approved, CQ10889 -maven/mavencentral/org.glassfish.jaxb/jaxb-core/4.0.2, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish.jaxb/jaxb-core/4.0.5, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.2, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.5, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish.jaxb/txw2/4.0.2, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish.jaxb/txw2/4.0.5, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-client/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-common/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.core/jersey-server/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.ext/jersey-entity-filtering/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.inject/jersey-hk2/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-json-jackson/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.3, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey -maven/mavencentral/org.glassfish.jersey.media/jersey-media-multipart/3.1.5, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jersey +maven/mavencentral/org.glassfish.jaxb/jaxb-core/4.0.2, BSD-3-Clause, approved, ee4j.jaxb-impl +maven/mavencentral/org.glassfish.jaxb/jaxb-core/4.0.5, BSD-3-Clause, approved, ee4j.jaxb-impl +maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.2, BSD-3-Clause, approved, ee4j.jaxb-impl +maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.5, BSD-3-Clause, approved, ee4j.jaxb-impl +maven/mavencentral/org.glassfish.jaxb/txw2/4.0.2, BSD-3-Clause, approved, ee4j.jaxb-impl +maven/mavencentral/org.glassfish.jaxb/txw2/4.0.5, BSD-3-Clause, approved, ee4j.jaxb-impl maven/mavencentral/org.glassfish/jakarta.json/2.0.1, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.jsonp maven/mavencentral/org.hamcrest/hamcrest-core/2.2, BSD-3-Clause, approved, clearlydefined -maven/mavencentral/org.hamcrest/hamcrest-library/2.2, BSD-3-Clause, approved, CQ22925 maven/mavencentral/org.hamcrest/hamcrest/2.2, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.hdrhistogram/HdrHistogram/2.1.12, BSD-2-Clause OR LicenseRef-Public-Domain, approved, CQ13192 maven/mavencentral/org.hibernate.common/hibernate-commons-annotations/6.0.6.Final, LGPL-2.1-only, approved, #6962 maven/mavencentral/org.hibernate.orm/hibernate-core/6.4.4.Final, LGPL-2.1-or-later AND (EPL-2.0 OR BSD-3-Clause) AND MIT, approved, #12490 maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.1.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.javassist/javassist/3.29.2-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 maven/mavencentral/org.jboss.logging/jboss-logging/3.5.0.Final, Apache-2.0, approved, #9471 maven/mavencentral/org.jboss.logging/jboss-logging/3.5.3.Final, Apache-2.0, approved, #9471 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.9.0, Apache-2.0, approved, #14186 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-common/1.9.23, Apache-2.0, approved, #14186 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.6.10, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.9.0, Apache-2.0, approved, #14193 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.9.23, Apache-2.0, approved, #14188 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.6.10, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.9.0, Apache-2.0, approved, #14191 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.9.23, Apache-2.0, approved, #14185 -maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.6.20, Apache-2.0, approved, clearlydefined +maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.0, Apache-2.0, approved, #11827 maven/mavencentral/org.jetbrains.kotlin/kotlin-stdlib/1.9.23, Apache-2.0, approved, #11827 maven/mavencentral/org.jetbrains/annotations/24.1.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.jsonschema2pojo/jsonschema2pojo-core/1.2.1, Apache-2.0, approved, clearlydefined @@ -351,74 +308,69 @@ maven/mavencentral/org.junit.platform/junit-platform-suite-api/1.10.2, EPL-2.0, maven/mavencentral/org.junit.platform/junit-platform-suite-commons/1.10.2, EPL-2.0, approved, #9716 maven/mavencentral/org.junit.platform/junit-platform-suite-engine/1.10.2, EPL-2.0, approved, #9710 maven/mavencentral/org.junit.platform/junit-platform-suite/1.10.2, EPL-2.0, approved, #14183 -maven/mavencentral/org.jvnet.mimepull/mimepull/1.9.15, CDDL-1.1 OR GPL-2.0-only WITH Classpath-exception-2.0, approved, CQ21484 maven/mavencentral/org.latencyutils/LatencyUtils/2.0.3, BSD-2-Clause, approved, CQ17408 maven/mavencentral/org.mockito/mockito-core/5.7.0, MIT AND (Apache-2.0 AND MIT) AND Apache-2.0, approved, #11424 maven/mavencentral/org.mockito/mockito-junit-jupiter/5.7.0, MIT, approved, #11423 maven/mavencentral/org.mozilla/rhino/1.7.7.2, MPL-2.0 AND BSD-3-Clause AND ISC, approved, CQ16320 -maven/mavencentral/org.objenesis/objenesis/2.5.1, Apache-2.0, approved, clearlydefined maven/mavencentral/org.objenesis/objenesis/3.3, Apache-2.0, approved, clearlydefined maven/mavencentral/org.openapitools/jackson-databind-nullable/0.2.6, Apache-2.0, approved, #3294 maven/mavencentral/org.opentest4j/opentest4j/1.3.0, Apache-2.0, approved, #9713 -maven/mavencentral/org.ow2.asm/asm-commons/9.6, BSD-3-Clause, approved, #10775 -maven/mavencentral/org.ow2.asm/asm-tree/9.6, BSD-3-Clause, approved, #10773 maven/mavencentral/org.ow2.asm/asm/9.3, BSD-3-Clause, approved, clearlydefined maven/mavencentral/org.ow2.asm/asm/9.6, BSD-3-Clause, approved, #10776 maven/mavencentral/org.postgresql/postgresql/42.6.1, BSD-2-Clause AND Apache-2.0, approved, #9159 -maven/mavencentral/org.projectlombok/lombok/1.18.30, MIT AND LicenseRef-Public-Domain, approved, CQ23907 +maven/mavencentral/org.projectlombok/lombok/1.18.32, MIT AND LicenseRef-Public-Domain, approved, CQ23907 maven/mavencentral/org.rnorth.duct-tape/duct-tape/1.0.8, MIT, approved, clearlydefined maven/mavencentral/org.skyscreamer/jsonassert/1.5.1, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.slf4j/jul-to-slf4j/2.0.12, MIT, approved, #7698 -maven/mavencentral/org.slf4j/slf4j-api/2.0.12, MIT, approved, #5915 -maven/mavencentral/org.slf4j/slf4j-api/2.0.7, MIT, approved, #5915 +maven/mavencentral/org.slf4j/jul-to-slf4j/2.0.13, MIT, approved, #7698 +maven/mavencentral/org.slf4j/slf4j-api/2.0.13, MIT, approved, #5915 maven/mavencentral/org.springdoc/springdoc-openapi-starter-common/2.0.4, Apache-2.0, approved, #5920 maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-api/2.0.4, Apache-2.0, approved, #5950 maven/mavencentral/org.springdoc/springdoc-openapi-starter-webmvc-ui/2.0.4, Apache-2.0, approved, #5923 -maven/mavencentral/org.springframework.boot/spring-boot-actuator-autoconfigure/3.2.4, Apache-2.0, approved, #11921 -maven/mavencentral/org.springframework.boot/spring-boot-actuator/3.2.4, Apache-2.0, approved, #11918 -maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.2.4, Apache-2.0, approved, #11751 -maven/mavencentral/org.springframework.boot/spring-boot-starter-actuator/3.2.4, Apache-2.0, approved, #12918 -maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.2.4, Apache-2.0, approved, #11928 -maven/mavencentral/org.springframework.boot/spring-boot-starter-data-jpa/3.2.4, Apache-2.0, approved, #11926 -maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.2.4, Apache-2.0, approved, #11878 -maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.2.4, Apache-2.0, approved, #11894 -maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.2.4, Apache-2.0, approved, #11890 -maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-client/3.2.4, Apache-2.0, approved, #12587 -maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-resource-server/3.2.4, Apache-2.0, approved, #11931 -maven/mavencentral/org.springframework.boot/spring-boot-starter-security/3.2.4, Apache-2.0, approved, #12069 -maven/mavencentral/org.springframework.boot/spring-boot-starter-test/3.2.4, Apache-2.0, approved, #12917 -maven/mavencentral/org.springframework.boot/spring-boot-starter-thymeleaf/3.2.4, Apache-2.0, approved, #14184 -maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.2.4, Apache-2.0, approved, #11923 -maven/mavencentral/org.springframework.boot/spring-boot-starter-validation/3.2.4, Apache-2.0, approved, #12921 -maven/mavencentral/org.springframework.boot/spring-boot-starter-web/3.2.4, Apache-2.0, approved, #11916 -maven/mavencentral/org.springframework.boot/spring-boot-starter/3.2.4, Apache-2.0, approved, #11935 -maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.2.4, Apache-2.0, approved, #12920 -maven/mavencentral/org.springframework.boot/spring-boot-test/3.2.4, Apache-2.0, approved, #12916 -maven/mavencentral/org.springframework.boot/spring-boot/3.2.4, Apache-2.0, approved, #11752 -maven/mavencentral/org.springframework.data/spring-data-commons/3.2.4, Apache-2.0, approved, #11917 -maven/mavencentral/org.springframework.data/spring-data-jpa/3.2.4, Apache-2.0, approved, #11882 -maven/mavencentral/org.springframework.security/spring-security-config/6.2.3, Apache-2.0, approved, #11896 -maven/mavencentral/org.springframework.security/spring-security-core/6.2.3, Apache-2.0, approved, #11904 -maven/mavencentral/org.springframework.security/spring-security-crypto/6.2.3, Apache-2.0 AND ISC, approved, #11908 -maven/mavencentral/org.springframework.security/spring-security-oauth2-client/6.2.3, Apache-2.0, approved, #12586 -maven/mavencentral/org.springframework.security/spring-security-oauth2-core/6.2.3, Apache-2.0, approved, #11925 -maven/mavencentral/org.springframework.security/spring-security-oauth2-jose/6.2.3, Apache-2.0, approved, #11893 -maven/mavencentral/org.springframework.security/spring-security-oauth2-resource-server/6.2.3, Apache-2.0, approved, #11920 -maven/mavencentral/org.springframework.security/spring-security-test/6.2.3, Apache-2.0, approved, #12922 -maven/mavencentral/org.springframework.security/spring-security-web/6.2.3, Apache-2.0, approved, #11911 -maven/mavencentral/org.springframework/spring-aop/6.1.5, Apache-2.0, approved, #11755 -maven/mavencentral/org.springframework/spring-aspects/6.1.5, Apache-2.0, approved, #11905 -maven/mavencentral/org.springframework/spring-beans/6.1.5, Apache-2.0, approved, #11754 -maven/mavencentral/org.springframework/spring-context/6.1.5, Apache-2.0, approved, #11753 -maven/mavencentral/org.springframework/spring-core/6.1.5, Apache-2.0 AND BSD-3-Clause, approved, #11750 -maven/mavencentral/org.springframework/spring-expression/6.1.5, Apache-2.0, approved, #11747 -maven/mavencentral/org.springframework/spring-jcl/6.1.5, Apache-2.0, approved, #11749 -maven/mavencentral/org.springframework/spring-jdbc/6.1.5, Apache-2.0, approved, #11897 -maven/mavencentral/org.springframework/spring-orm/6.1.5, Apache-2.0, approved, #11924 -maven/mavencentral/org.springframework/spring-test/6.1.5, Apache-2.0, approved, #12919 -maven/mavencentral/org.springframework/spring-tx/6.1.5, Apache-2.0, approved, #11901 -maven/mavencentral/org.springframework/spring-web/6.1.5, Apache-2.0, approved, #11748 -maven/mavencentral/org.springframework/spring-webmvc/6.1.5, Apache-2.0, approved, #11879 +maven/mavencentral/org.springframework.boot/spring-boot-actuator-autoconfigure/3.2.5, Apache-2.0, approved, #11921 +maven/mavencentral/org.springframework.boot/spring-boot-actuator/3.2.5, Apache-2.0, approved, #11918 +maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.2.5, Apache-2.0, approved, #11751 +maven/mavencentral/org.springframework.boot/spring-boot-starter-actuator/3.2.5, Apache-2.0, approved, #12918 +maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.2.5, Apache-2.0, approved, #11928 +maven/mavencentral/org.springframework.boot/spring-boot-starter-data-jpa/3.2.5, Apache-2.0, approved, #11926 +maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.2.5, Apache-2.0, approved, #11878 +maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.2.5, Apache-2.0, approved, #11894 +maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.2.5, Apache-2.0, approved, #11890 +maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-client/3.2.5, Apache-2.0, approved, #12587 +maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-resource-server/3.2.5, Apache-2.0, approved, #11931 +maven/mavencentral/org.springframework.boot/spring-boot-starter-security/3.2.5, Apache-2.0, approved, #12069 +maven/mavencentral/org.springframework.boot/spring-boot-starter-test/3.2.5, Apache-2.0, approved, #12917 +maven/mavencentral/org.springframework.boot/spring-boot-starter-thymeleaf/3.2.5, Apache-2.0, approved, #14184 +maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.2.5, Apache-2.0, approved, #11923 +maven/mavencentral/org.springframework.boot/spring-boot-starter-validation/3.2.5, Apache-2.0, approved, #12921 +maven/mavencentral/org.springframework.boot/spring-boot-starter-web/3.2.5, Apache-2.0, approved, #11916 +maven/mavencentral/org.springframework.boot/spring-boot-starter/3.2.5, Apache-2.0, approved, #11935 +maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.2.5, Apache-2.0, approved, #12920 +maven/mavencentral/org.springframework.boot/spring-boot-test/3.2.5, Apache-2.0, approved, #12916 +maven/mavencentral/org.springframework.boot/spring-boot/3.2.5, Apache-2.0, approved, #11752 +maven/mavencentral/org.springframework.data/spring-data-commons/3.2.5, Apache-2.0, approved, #11917 +maven/mavencentral/org.springframework.data/spring-data-jpa/3.2.5, Apache-2.0, approved, #11882 +maven/mavencentral/org.springframework.security/spring-security-config/6.2.4, Apache-2.0, approved, #11896 +maven/mavencentral/org.springframework.security/spring-security-core/6.2.4, Apache-2.0, approved, #11904 +maven/mavencentral/org.springframework.security/spring-security-crypto/6.2.4, Apache-2.0 AND ISC, approved, #11908 +maven/mavencentral/org.springframework.security/spring-security-oauth2-client/6.2.4, Apache-2.0, approved, #12586 +maven/mavencentral/org.springframework.security/spring-security-oauth2-core/6.2.4, Apache-2.0, approved, #11925 +maven/mavencentral/org.springframework.security/spring-security-oauth2-jose/6.2.4, Apache-2.0, approved, #11893 +maven/mavencentral/org.springframework.security/spring-security-oauth2-resource-server/6.2.4, Apache-2.0, approved, #11920 +maven/mavencentral/org.springframework.security/spring-security-test/6.2.4, Apache-2.0, approved, #12922 +maven/mavencentral/org.springframework.security/spring-security-web/6.2.4, Apache-2.0, approved, #11911 +maven/mavencentral/org.springframework/spring-aop/6.1.6, Apache-2.0, approved, #11755 +maven/mavencentral/org.springframework/spring-aspects/6.1.6, Apache-2.0, approved, #11905 +maven/mavencentral/org.springframework/spring-beans/6.1.6, Apache-2.0, approved, #11754 +maven/mavencentral/org.springframework/spring-context/6.1.6, Apache-2.0, approved, #11753 +maven/mavencentral/org.springframework/spring-core/6.1.6, Apache-2.0 AND BSD-3-Clause, approved, #11750 +maven/mavencentral/org.springframework/spring-expression/6.1.6, Apache-2.0, approved, #11747 +maven/mavencentral/org.springframework/spring-jcl/6.1.6, Apache-2.0, approved, #11749 +maven/mavencentral/org.springframework/spring-jdbc/6.1.6, Apache-2.0, approved, #11897 +maven/mavencentral/org.springframework/spring-orm/6.1.6, Apache-2.0, approved, #11924 +maven/mavencentral/org.springframework/spring-test/6.1.6, Apache-2.0, approved, #12919 +maven/mavencentral/org.springframework/spring-tx/6.1.6, Apache-2.0, approved, #11901 +maven/mavencentral/org.springframework/spring-web/6.1.6, Apache-2.0, approved, #11748 +maven/mavencentral/org.springframework/spring-webmvc/6.1.6, Apache-2.0, approved, #11879 maven/mavencentral/org.testcontainers/database-commons/1.19.7, Apache-2.0, approved, #10345 maven/mavencentral/org.testcontainers/jdbc/1.19.7, Apache-2.0, approved, #10348 maven/mavencentral/org.testcontainers/junit-jupiter/1.19.7, MIT, approved, #10344 diff --git a/DEPENDENCIES_FRONTEND b/DEPENDENCIES_FRONTEND index 67f40fa669..b897639c08 100644 --- a/DEPENDENCIES_FRONTEND +++ b/DEPENDENCIES_FRONTEND @@ -231,7 +231,7 @@ npm/npmjs/-/d3-timer/3.0.1, ISC, approved, clearlydefined npm/npmjs/-/d3-transition/3.0.1, ISC, approved, clearlydefined npm/npmjs/-/d3-zoom/3.0.0, ISC, approved, clearlydefined npm/npmjs/-/d3/7.8.4, ISC, approved, clearlydefined -npm/npmjs/-/dashdash/1.14.1, MIT, approved, clearlydefined +npm/npmjs/-/dashdash/1.14.1, MIT AND CDDL-1.0, approved, #14596 npm/npmjs/-/data-urls/2.0.0, MIT, approved, clearlydefined npm/npmjs/-/date-format/4.0.14, MIT, approved, clearlydefined npm/npmjs/-/dayjs/1.11.7, MIT, approved, #9149 @@ -592,13 +592,13 @@ npm/npmjs/-/js-tokens/4.0.0, MIT, approved, #2401 npm/npmjs/-/js-yaml/3.14.1, MIT, approved, clearlydefined npm/npmjs/-/js-yaml/4.1.0, MIT, approved, clearlydefined npm/npmjs/-/js2xmlparser/4.0.2, Apache-2.0, approved, clearlydefined -npm/npmjs/-/jsbn/0.1.1, MIT, approved, clearlydefined +npm/npmjs/-/jsbn/0.1.1, LicenseRef-scancode-mit-addition, approved, #14597 npm/npmjs/-/jsdoc-type-pratt-parser/4.0.0, MIT, approved, clearlydefined npm/npmjs/-/jsdom/16.7.0, LGPL-2.0-or-later AND MIT, approved, #1370 npm/npmjs/-/jsesc/0.5.0, MIT, approved, clearlydefined npm/npmjs/-/jsesc/2.5.2, MIT, approved, clearlydefined npm/npmjs/-/json-parse-even-better-errors/2.3.1, MIT, approved, clearlydefined -npm/npmjs/-/json-parse-even-better-errors/3.0.0, MIT, approved, clearlydefined +npm/npmjs/-/json-parse-even-better-errors/3.0.0, MIT, approved, #14658 npm/npmjs/-/json-schema-traverse/0.4.1, MIT, approved, clearlydefined npm/npmjs/-/json-schema-traverse/1.0.0, MIT, approved, clearlydefined npm/npmjs/-/json-schema/0.4.0, AFL-2.1 OR BSD-3-Clause, approved, #2410 @@ -734,7 +734,7 @@ npm/npmjs/-/no-case/3.0.4, MIT, approved, clearlydefined npm/npmjs/-/node-addon-api/3.2.1, MIT, approved, clearlydefined npm/npmjs/-/node-fetch/2.6.7, MIT, approved, #6954 npm/npmjs/-/node-forge/1.3.1, (BSD-3-Clause OR GPL-2.0-only) AND MIT, approved, #3014 -npm/npmjs/-/node-gyp-build/4.8.0, MIT, approved, clearlydefined +npm/npmjs/-/node-gyp-build/4.8.0, MIT, approved, #14661 npm/npmjs/-/node-gyp/9.3.1, MIT AND BSD-3-Clause, approved, #3783 npm/npmjs/-/node-hook/1.0.0, MIT, approved, clearlydefined npm/npmjs/-/node-releases/2.0.10, MIT, approved, #1954 @@ -813,7 +813,7 @@ npm/npmjs/-/path-to-regexp/6.2.0, MIT, approved, clearlydefined npm/npmjs/-/path-type/4.0.0, MIT, approved, clearlydefined npm/npmjs/-/pend/1.2.0, MIT, approved, clearlydefined npm/npmjs/-/performance-now/2.1.0, MIT, approved, clearlydefined -npm/npmjs/-/picocolors/1.0.0, ISC, approved, clearlydefined +npm/npmjs/-/picocolors/1.0.0, ISC, approved, #14718 npm/npmjs/-/picomatch/2.3.1, MIT, approved, clearlydefined npm/npmjs/-/pidtree/0.6.0, MIT, approved, clearlydefined npm/npmjs/-/pify/2.3.0, MIT, approved, clearlydefined @@ -940,7 +940,7 @@ npm/npmjs/-/semver/6.3.1, ISC, approved, clearlydefined npm/npmjs/-/semver/7.3.8, ISC, approved, clearlydefined npm/npmjs/-/semver/7.5.3, ISC, approved, clearlydefined npm/npmjs/-/semver/7.5.4, ISC, approved, clearlydefined -npm/npmjs/-/semver/7.6.0, ISC, approved, clearlydefined +npm/npmjs/-/semver/7.6.0, ISC, approved, #14659 npm/npmjs/-/send/0.18.0, MIT, approved, clearlydefined npm/npmjs/-/serialize-javascript/6.0.1, BSD-3-Clause, approved, #12680 npm/npmjs/-/serialize-javascript/6.0.2, BSD-3-Clause, approved, #12680 @@ -1113,7 +1113,7 @@ npm/npmjs/-/uuid/9.0.0, MIT AND (BSD-3-Clause AND MIT), approved, #6869 npm/npmjs/-/v8-compile-cache-lib/3.0.1, MIT, approved, clearlydefined npm/npmjs/-/v8-compile-cache/2.3.0, MIT, approved, clearlydefined npm/npmjs/-/validate-npm-package-license/3.0.4, Apache-2.0 AND (Apache-2.0 AND BSD-2-Clause), approved, #2562 -npm/npmjs/-/validate-npm-package-name/5.0.0, ISC, approved, clearlydefined +npm/npmjs/-/validate-npm-package-name/5.0.0, ISC, approved, #14653 npm/npmjs/-/vary/1.1.2, MIT, approved, clearlydefined npm/npmjs/-/verror/1.10.0, MIT, approved, clearlydefined npm/npmjs/-/verror/1.10.1, MIT, approved, clearlydefined @@ -1525,7 +1525,7 @@ npm/npmjs/@nodelib/fs.scandir/2.1.5, MIT, approved, clearlydefined npm/npmjs/@nodelib/fs.stat/2.0.5, MIT, approved, clearlydefined npm/npmjs/@nodelib/fs.walk/1.2.8, MIT, approved, clearlydefined npm/npmjs/@npmcli/fs/2.1.0, ISC, approved, clearlydefined -npm/npmjs/@npmcli/fs/3.1.0, ISC, approved, clearlydefined +npm/npmjs/@npmcli/fs/3.1.0, ISC AND MIT, approved, #14656 npm/npmjs/@npmcli/git/4.0.3, ISC, approved, #7598 npm/npmjs/@npmcli/installed-package-contents/2.0.1, ISC, approved, clearlydefined npm/npmjs/@npmcli/move-file/2.0.0, MIT, approved, clearlydefined diff --git a/Dockerfile b/Dockerfile index 2dbee03339..ef68455762 100644 --- a/Dockerfile +++ b/Dockerfile @@ -39,7 +39,7 @@ COPY tx-backend tx-backend RUN --mount=type=cache,target=/root/.m2 mvn -B clean package -pl :$BUILD_TARGET -am -DskipTests # Copy the jar and build image -FROM eclipse-temurin:21-jre-alpine@sha256:fb4150a30569aadae9d693d949684a00653411528e62498b9900940c9b5b8a66 AS traceability-app +FROM eclipse-temurin:21-jre-alpine@sha256:23467b3e42617ca197f43f58bc5fb03ca4cb059d68acd49c67128bfded132d67 AS traceability-app ARG UID=10000 ARG GID=1000 diff --git a/charts/traceability-foss/CHANGELOG.md b/charts/traceability-foss/CHANGELOG.md index f5496e08c9..acaec7f511 100644 --- a/charts/traceability-foss/CHANGELOG.md +++ b/charts/traceability-foss/CHANGELOG.md @@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file. The 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). +## [1.3.38] - 2024-05-22 + +### No changes + +## [1.3.36] - 2024-04-17 +### No changes + +## [1.3.35] - 2024-04-17 +### No changes + ## [1.3.34] - 2024-04-04 ### No changes diff --git a/charts/traceability-foss/Chart.yaml b/charts/traceability-foss/Chart.yaml index eb79f87689..0befc32da2 100644 --- a/charts/traceability-foss/Chart.yaml +++ b/charts/traceability-foss/Chart.yaml @@ -23,15 +23,15 @@ home: https://eclipse-tractusx.github.io/ sources: - https://github.com/eclipse-tractusx/traceability-foss type: application -version: 1.3.33 -appVersion: "10.8.0" +version: 1.3.37 +appVersion: "11.0.0" dependencies: - name: frontend repository: "file://charts/frontend" - version: 1.3.33 + version: 1.3.37 - name: backend repository: "file://charts/backend" - version: 1.3.33 + version: 1.3.37 - name: postgresql repository: https://charts.bitnami.com/bitnami version: 12.12.10 @@ -40,13 +40,13 @@ dependencies: repository: https://helm.runix.net version: 1.23.1 condition: pgadmin4.enabled - - name: irs-helm + - name: item-relationship-service repository: https://eclipse-tractusx.github.io/item-relationship-service - version: 6.14.1 - condition: irs-helm.enabled + version: 7.1.3 + condition: item-relationship-service.enabled - name: tractusx-connector repository: https://eclipse-tractusx.github.io/tractusx-edc - version: 0.5.3 + version: 0.7.0 condition: tractusx-connector.enabled - name: postgresql alias: edc-postgresql diff --git a/charts/traceability-foss/charts/backend/Chart.yaml b/charts/traceability-foss/charts/backend/Chart.yaml index 9296e33f40..0768e1364d 100644 --- a/charts/traceability-foss/charts/backend/Chart.yaml +++ b/charts/traceability-foss/charts/backend/Chart.yaml @@ -20,8 +20,8 @@ apiVersion: v2 name: backend description: A Helm chart for Traceability backend application. type: application -version: 1.3.33 -appVersion: "10.8.0" +version: 1.3.37 +appVersion: "11.0.0" dependencies: - name: postgresql repository: https://charts.bitnami.com/bitnami @@ -33,7 +33,7 @@ dependencies: condition: pgadmin4.enabled - name: irs-helm repository: https://eclipse-tractusx.github.io/item-relationship-service - version: 5.3.0 + version: 7.1.3 condition: irs-helm.enabled - name: irs-edc-consumer repository: https://eclipse-tractusx.github.io/item-relationship-service diff --git a/charts/traceability-foss/charts/backend/templates/deployment.yaml b/charts/traceability-foss/charts/backend/templates/deployment.yaml index f1300835f2..94eea1aadd 100644 --- a/charts/traceability-foss/charts/backend/templates/deployment.yaml +++ b/charts/traceability-foss/charts/backend/templates/deployment.yaml @@ -84,6 +84,12 @@ spec: value: {{ .Values.traceability.operatorType | quote }} - name: TRACEABILITY_RIGHT_OPERAND value: {{ .Values.traceability.rightOperand | quote }} + - name: TRACEABILITY_LEFT_OPERAND_SECOND + value: {{ .Values.traceability.leftOperandSecond | quote }} + - name: TRACEABILITY_OPERATOR_TYPE_SECOND + value: {{ .Values.traceability.operatorTypeSecond | quote }} + - name: TRACEABILITY_RIGHT_OPERAND_SECOND + value: {{ .Values.traceability.rightOperandSecond | quote }} - name: TRACEABILITY_VALID_UNTIL value: {{ .Values.traceability.validUntil | quote }} - name: OAUTH2_CLIENT_ID @@ -138,6 +144,8 @@ spec: value: {{ .Values.irsRegularApiKey | quote }} - name: JAVA_TOOL_OPTIONS value: {{ .Values.javaToolOptions | default "" | quote }} + - name: BPDM_URL + value: {{ .Values.bpdm.url | quote }} {{- range $key, $val := .Values.env }} - name: {{ $key }} value: {{ $val | quote }} diff --git a/charts/traceability-foss/charts/backend/values.yaml b/charts/traceability-foss/charts/backend/values.yaml index 9de5e062a5..3ca0e37cbe 100644 --- a/charts/traceability-foss/charts/backend/values.yaml +++ b/charts/traceability-foss/charts/backend/values.yaml @@ -181,3 +181,6 @@ dependencies: enabled: false irs: CHANGEME # edc: CHANGEME #-controlplane + +bpdm: + url: "https://replace.me" diff --git a/charts/traceability-foss/charts/frontend/Chart.yaml b/charts/traceability-foss/charts/frontend/Chart.yaml index 90ebe39ec8..69b67d3e0f 100644 --- a/charts/traceability-foss/charts/frontend/Chart.yaml +++ b/charts/traceability-foss/charts/frontend/Chart.yaml @@ -20,5 +20,5 @@ apiVersion: v2 name: frontend description: A Helm chart for Traceability frontend application. type: application -version: 1.3.33 -appVersion: "10.8.0" +version: 1.3.37 +appVersion: "11.0.0" \ No newline at end of file diff --git a/charts/traceability-foss/charts/frontend/templates/deployment.yaml b/charts/traceability-foss/charts/frontend/templates/deployment.yaml index 777eb42414..a20f5eca56 100644 --- a/charts/traceability-foss/charts/frontend/templates/deployment.yaml +++ b/charts/traceability-foss/charts/frontend/templates/deployment.yaml @@ -78,6 +78,9 @@ spec: value: "{{ .Values.image.CATENAX_PORTAL_URL }}" - name: GIT_TAG value: "{{ .Values.image.tag }}" + - name: BPN + value: "{{ .Values.image.BPN }}" + ports: - name: http containerPort: {{ .Values.service.port }} diff --git a/charts/traceability-foss/values.yaml b/charts/traceability-foss/values.yaml index 9a63ca1e11..fba92af582 100644 --- a/charts/traceability-foss/values.yaml +++ b/charts/traceability-foss/values.yaml @@ -44,6 +44,7 @@ frontend: CATENAX_PORTAL_BACKEND_DOMAIN: "CHANGEME" # portal backend domain example: catena-x.net CATENAX_PORTAL_URL: "CHANGEME" # portal url example: https://portal.net/ CATENAX_PORTAL_CLIENT_ID: "CHANGEME" # application id created on portal + BPN: "CHANGEME" ## ## Image pull secret to create to obtain the container image @@ -274,6 +275,9 @@ backend: leftOperand: "PURPOSE" operatorType: "eq" rightOperand: "ID 3.0 Trace" + leftOperandSecond: "anything" + operatorTypeSecond: "eq" + rightOperandSecond: "anything" validUntil: "2024-09-30T23:59:59.99Z" datasource: url: jdbc:postgresql://tx-backend-postgresql:5432/trace @@ -317,6 +321,9 @@ backend: irs: "CHANGEME" # edc: "CHANGEME" # nameOverride: "tracex-irs" fullnameOverride: "tracex-irs" diff --git a/dev/README.md b/dev/README.md index 73e404bb93..939028b3a7 100644 --- a/dev/README.md +++ b/dev/README.md @@ -32,49 +32,49 @@ Keep in mind to always update DEV and TEST since they are dependend on each othe Sample invocation (DEV) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc.dev.demo.catena-x.net -a https://trace-x-registry.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc.dev.demo.catena-x.net -a https://trace-x-registry.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC ``` Sample invocation (TEST) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-test.dev.demo.catena-x.net/api/submodel -edc https://trace-x-test-edc.dev.demo.catena-x.net -a https://trace-x-registry-test.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-test-edc-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-test.dev.demo.catena-x.net/api/submodel -edc https://trace-x-test-edc.dev.demo.catena-x.net -a https://trace-x-registry-test.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-test-edc-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC ``` Sample invocation (E2E A) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-e2e-a.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc-e2e-a.dev.demo.catena-x.net -a https://trace-x-registry-e2e-a.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-e2e-a-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-e2e-a.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc-e2e-a.dev.demo.catena-x.net -a https://trace-x-registry-e2e-a.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-e2e-a-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC ``` Sample invocation (E2E B) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-e2e-b.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc-e2e-b.dev.demo.catena-x.net -a https://trace-x-registry-e2e-b.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-e2e-b-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-e2e-b.dev.demo.catena-x.net/api/submodel -edc https://trace-x-edc-e2e-b.dev.demo.catena-x.net -a https://trace-x-registry-e2e-b.dev.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-e2e-b-dataplane.dev.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC ``` Sample invocation (INT A) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-int-a.int.demo.catena-x.net/api/submodel -edc https://trace-x-edc-int-a.int.demo.catena-x.net -a https://trace-x-registry-int-a.int.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-int-a-dataplane.int.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-int-a.int.demo.catena-x.net/api/submodel -edc https://trace-x-edc-int-a.int.demo.catena-x.net -a https://trace-x-registry-int-a.int.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-int-a-dataplane.int.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV ``` Sample invocation (INT B) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-int-b.int.demo.catena-x.net/api/submodel -edc https://trace-x-edc-int-b.int.demo.catena-x.net -a https://trace-x-registry-int-b.int.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-int-b-dataplane.int.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-int-b.int.demo.catena-x.net/api/submodel -edc https://trace-x-edc-int-b.int.demo.catena-x.net -a https://trace-x-registry-int-b.int.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-int-b-dataplane.int.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV ``` Sample invocation (STABLE A) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-stable-a.stable.demo.catena-x.net/api/submodel -edc https://trace-x-edc-stable-a.stable.demo.catena-x.net -a https://trace-x-registry-stable-a.stable.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-stable-a-dataplane.stable.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-stable-a.stable.demo.catena-x.net/api/submodel -edc https://trace-x-edc-stable-a.stable.demo.catena-x.net -a https://trace-x-registry-stable-a.stable.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-stable-a-dataplane.stable.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV ``` Sample invocation (STABLE B) ``` -python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-stable-b.stable.demo.catena-x.net/api/submodel -edc https://trace-x-edc-stable-b.stable.demo.catena-x.net -a https://trace-x-registry-stable-b.stable.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-stable-b-dataplane.stable.demo.catena-x.net -p id-3.0-trace -k --aas3 --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV +python transform-and-upload.py -f CX_Testdata_MessagingTest_v0.0.12.json -s https://traceability-stable-b.stable.demo.catena-x.net/api/submodel -edc https://trace-x-edc-stable-b.stable.demo.catena-x.net -a https://trace-x-registry-stable-b.stable.demo.catena-x.net/semantics/registry/api/v3.0 -d https://trace-x-edc-stable-b-dataplane.stable.demo.catena-x.net -p id-3.0-trace -k --aas3 --edcBPN BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV --allowedBPNs BPNL00000003CML1 BPNL00000003CNKC BPNL00000003AZQP BPNL00000003CSGV ``` where: @@ -213,7 +213,7 @@ Is achieved by defining the order of the BPNLs of the desired manufacturers. See and adding an SingleLevelBomAsBuilt Aspect with the corresponding childCatenaXId: ```json { -"urn:bamm:io.catenax.single_level_bom_as_built:1.0.0#SingleLevelBomAsBuilt" : [ { +"urn:samm:io.catenax.single_level_bom_as_built:3.0.0#SingleLevelBomAsBuilt" : [ { "catenaXId" : "urn:uuid:7eeeac86-7b69-444d-81e6-655d0f1513bd", "childParts" : [ { "quantity" : { @@ -237,34 +237,5 @@ and adding an SingleLevelBomAsBuilt Aspect with the corresponding childCatenaXId Is achieved through adding the SingleLevelusageBuilt - Codeblock and the corresponding parent catenaXId above, see example below (Only SingleLevelUsageBuilt expanded): -```json -[{ - "catenaXId" : "urn:uuid:f11ddc62-3bd5-468f-b7b0-110fe13ed0cd", - "bpnl" : "BPNL00000003CNKC", - "urn:bamm:io.catenax.single_level_bom_as_built:1.0.0#SingleLevelBomAsBuilt": "[...]", - "urn:bamm:io.catenax.serial_part:1.0.0#SerialPart" : "[...]" - }, { - "catenaXId" : "urn:uuid:4e390dab-707f-446e-bfbe-653f6f5b1f37", - "bpnl" : "BPNL00000003AZQP", - "urn:bamm:io.catenax.serial_part:1.0.0#SerialPart" : "", - "urn:bamm:io.catenax.single_level_usage_as_built:1.0.1#SingleLevelUsageAsBuilt": [ - { - "parentParts": [ - { - "parentCatenaXId": "urn:uuid:5205f736-8fc2-4585-b869-6bf36842369a", - "quantity": { - "quantityNumber": 1, - "measurementUnit": "unit:piece" - }, - "createdOn": "2023-02-03T14:48:54.709Z", - "lastModifiedOn": "2023-02-03T14:48:54.709Z" - } - ], - "catenaXId": "urn:uuid:4e390dab-707f-446e-bfbe-653f6f5b1f37" - } - ] -} -] -``` ...AZQP -> CNKC -> ... diff --git a/docs/SECURITY.md b/docs/SECURITY.md index f4432a0e4a..5f7aab7ba2 100644 --- a/docs/SECURITY.md +++ b/docs/SECURITY.md @@ -74,6 +74,3 @@ Check the Angular changelog for security-related updates. It’s best practice to upgrade your application with the latest version. #### Source [SyncFusion](https://www.syncfusion.com/blogs/post/top-5-best-practices-angular-app-security.aspx). - -## Veracode scan -....TBD diff --git a/docs/api/traceability-foss-backend.json b/docs/api/traceability-foss-backend.json new file mode 100644 index 0000000000..bc56ac8afa --- /dev/null +++ b/docs/api/traceability-foss-backend.json @@ -0,0 +1,7509 @@ +{ + "openapi" : "3.0.1", + "info" : { + "title" : "Tractus-X Traceability Foss", + "description" : "Trace-FOSS is a system for tracking parts along the supply chain. A high level of transparency across the supplier network enables faster intervention based on a recorded event in the supply chain. This saves costs by seamlessly tracking parts and creates trust through clearly defined and secure data access by the companies and persons involved in the process.", + "license" : { + "name" : "License: Apache 2.0" + }, + "version" : "1.0.0" + }, + "servers" : [ + { + "url" : "http://localhost:9998/api", + "description" : "Generated server url" + } + ], + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ], + "paths" : { + "/notifications/{notificationId}/edit" : { + "put" : { + "tags" : [ + "Notifications" + ], + "summary" : "Update notification by id", + "description" : "The endpoint updates notification by their id.", + "operationId" : "updateNotification", + "parameters" : [ + { + "name" : "notificationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/EditNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/bpn-config" : { + "get" : { + "tags" : [ + "BpnEdcMapping" + ], + "summary" : "Get BPN EDC URL mappings", + "description" : "The endpoint returns a result of BPN EDC URL mappings.", + "operationId" : "getBpnEdcs", + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the paged result found", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/BpnEdcMappingResponse" + } + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + }, + "put" : { + "tags" : [ + "BpnEdcMapping" + ], + "summary" : "Updates BPN EDC URL mappings", + "description" : "The endpoint updates BPN EDC URL mappings", + "operationId" : "updateBpnEdcMappings", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 1000, + "minItems" : 0, + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/BpnMappingRequest" + } + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the paged result found for BpnEdcMapping", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/BpnEdcMappingResponse" + } + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + }, + "post" : { + "tags" : [ + "BpnEdcMapping" + ], + "summary" : "Creates BPN EDC URL mappings", + "description" : "The endpoint creates BPN EDC URL mappings", + "operationId" : "createBpnEdcUrlMappings", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 1000, + "minItems" : 0, + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/BpnMappingRequest" + } + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the paged result found for BpnEdcMapping", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/BpnEdcMappingResponse" + } + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/submodel/data/{submodelId}" : { + "get" : { + "tags" : [ + "Submodel" + ], + "summary" : "Gets Submodel by its id", + "description" : "The endpoint returns Submodel for given id. Used for data providing functionality", + "operationId" : "getSubmodelById", + "parameters" : [ + { + "name" : "submodelId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "description" : "Returns submodel payload", + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + }, + "post" : { + "tags" : [ + "Submodel" + ], + "summary" : "Save Submodel", + "description" : "This endpoint allows you to save a Submodel identified by its ID.", + "operationId" : "saveSubmodel", + "parameters" : [ + { + "name" : "submodelId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "type" : "string" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No Content." + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications" : { + "post" : { + "tags" : [ + "Notifications" + ], + "summary" : "Start notification by part ids", + "description" : "The endpoint starts notification based on part ids provided.", + "operationId" : "notifyAssets", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/StartNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/NotificationIdResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications/{notificationId}/update" : { + "post" : { + "tags" : [ + "Notifications" + ], + "summary" : "Update notification by id", + "description" : "The endpoint updates notification by their id.", + "operationId" : "updateNotification_1", + "parameters" : [ + { + "name" : "notificationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateNotificationStatusTransitionRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications/{notificationId}/close" : { + "post" : { + "tags" : [ + "Notifications" + ], + "summary" : "Close notification by id", + "description" : "The endpoint closes Notification by id.", + "operationId" : "closeNotification", + "parameters" : [ + { + "name" : "notificationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CloseNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications/{notificationId}/cancel" : { + "post" : { + "tags" : [ + "Notifications" + ], + "summary" : "Cancels notification by id", + "description" : "The endpoint cancels notification by id.", + "operationId" : "cancelNotification", + "parameters" : [ + { + "name" : "notificationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications/{notificationId}/approve" : { + "post" : { + "tags" : [ + "Notifications" + ], + "summary" : "Approves notification by id", + "description" : "The endpoint approves notification by id.", + "operationId" : "approveNotification", + "parameters" : [ + { + "name" : "notificationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications/filter" : { + "post" : { + "tags" : [ + "Notifications" + ], + "summary" : "Filter notifications defined by the request body", + "description" : "The endpoint returns notifications as paged result.", + "operationId" : "filterNotifications", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PageableFilterRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the paged result found for Notifications", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Notifications", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maximum" : 255, + "minimum" : 0, + "maxLength" : 255, + "type" : "integer", + "format" : "int64", + "example" : 66 + }, + "title" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Title" + }, + "status" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "CREATED", + "enum" : [ + "CREATED", + "SENT", + "RECEIVED", + "ACKNOWLEDGED", + "ACCEPTED", + "DECLINED", + "CANCELED", + "CLOSED" + ] + }, + "description" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string", + "example" : "DescriptionText" + }, + "createdBy" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003AYRE" + }, + "createdByName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "createdDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string", + "example" : "2023-02-21T21:27:10.734950Z" + }, + "assetIds" : { + "maxItems" : 1000, + "minItems" : 0, + "type" : "array", + "example" : [ + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd", + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70529fcbd", + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70530fcbd" + ], + "items" : { + "type" : "string", + "example" : "[\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd\",\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70529fcbd\",\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70530fcbd\"]" + } + }, + "channel" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "SENDER", + "enum" : [ + "SENDER", + "RECEIVER" + ] + }, + "reason" : { + "$ref" : "#/components/schemas/NotificationReasonResponse" + }, + "sendTo" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003AYRE" + }, + "sendToName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "severity" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "MINOR", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE-THREATENING" + ] + }, + "type" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string", + "example" : "ALERT", + "enum" : [ + "ALERT", + "INVESTIGATION" + ] + }, + "targetDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string", + "example" : "2099-02-21T21:27:10.734950Z" + }, + "messages" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/NotificationMessageResponse" + } + } + } + } + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/edc/notification/contract" : { + "post" : { + "tags" : [ + "Notifications" + ], + "summary" : "Triggers EDC notification contract", + "description" : "The endpoint Triggers EDC notification contract based on notification type and method", + "operationId" : "createNotificationContract", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CreateNotificationContractRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CreateNotificationContractResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/contracts" : { + "post" : { + "tags" : [ + "Contracts" + ], + "summary" : "All contract agreements for all assets", + "description" : "This endpoint returns all contract agreements for all assets in Trace-X", + "operationId" : "contracts", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PageableFilterRequest" + } + } + }, + "required" : true + }, + "responses" : { + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "example" : { + "message" : "Bad request." + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "example" : { + "message" : "Authorization failed." + } + } + } + } + }, + "200" : { + "description" : "Ok.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "description" : "PageResults", + "items" : { + "$ref" : "#/components/schemas/PageResultContractResponse" + } + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "example" : { + "message" : "Forbidden." + } + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "example" : { + "message" : "Too many requests." + } + } + } + } + }, + "415" : { + "description" : "Unsupported media type.", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "example" : { + "message" : "Unsupported media type." + } + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "example" : { + "message" : "Internal server error." + } + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "type" : "string", + "example" : { + "message" : "Not found." + } + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/publish" : { + "post" : { + "tags" : [ + "AssetsImport", + "AssetsPublish" + ], + "summary" : "asset publish", + "description" : "This endpoint publishes assets to the Catena-X network.", + "operationId" : "publishAssets", + "parameters" : [ + { + "name" : "triggerSynchronizeAssets", + "in" : "query", + "required" : false, + "schema" : { + "type" : "boolean", + "default" : true + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/RegisterAssetRequest" + } + } + }, + "required" : true + }, + "responses" : { + "204" : { + "description" : "No Content." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "OK.", + "content" : { + "application/json" : {} + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/import" : { + "post" : { + "tags" : [ + "AssetsImport" + ], + "summary" : "asset upload", + "description" : "This endpoint stores assets in the application. Those can be later published in the Catena-X network.", + "operationId" : "importJson", + "requestBody" : { + "content" : { + "multipart/form-data" : { + "schema" : { + "required" : [ + "file" + ], + "type" : "object", + "properties" : { + "file" : { + "type" : "string", + "format" : "binary" + } + } + } + } + } + }, + "responses" : { + "204" : { + "description" : "No Content." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "OK.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ImportResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-planned/sync" : { + "post" : { + "tags" : [ + "AssetsAsPlanned" + ], + "summary" : "Synchronizes assets from IRS", + "description" : "The endpoint synchronizes the assets from irs.", + "operationId" : "sync", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/SyncAssetsRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created." + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-planned/detail-information" : { + "post" : { + "tags" : [ + "AssetsAsPlanned" + ], + "summary" : "Searches for assets by ids.", + "description" : "The endpoint searchs for assets by id and returns a list of them.", + "operationId" : "getDetailInformation", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GetDetailInformationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the paged result found for Asset", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-built/sync" : { + "post" : { + "tags" : [ + "AssetsAsBuilt" + ], + "summary" : "Synchronizes assets from IRS", + "description" : "The endpoint synchronizes the assets from irs.", + "operationId" : "sync_1", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/SyncAssetsRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created." + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-built/detail-information" : { + "post" : { + "tags" : [ + "AssetsAsBuilt" + ], + "summary" : "Searches for assets by ids.", + "description" : "The endpoint searchs for assets by id and returns a list of them.", + "operationId" : "getDetailInformation_1", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/GetDetailInformationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Returns the paged result found for Asset", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-planned/{assetId}" : { + "get" : { + "tags" : [ + "AssetsAsPlanned" + ], + "summary" : "Get asset by id", + "description" : "The endpoint returns an asset filtered by id .", + "operationId" : "assetById", + "parameters" : [ + { + "name" : "assetId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "description" : "Returns the assets found", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + }, + "patch" : { + "tags" : [ + "AssetsAsPlanned" + ], + "summary" : "Updates asset", + "description" : "The endpoint updates asset by provided quality type.", + "operationId" : "updateAsset", + "parameters" : [ + { + "name" : "assetId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateAssetRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the updated asset", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-built/{assetId}" : { + "get" : { + "tags" : [ + "AssetsAsBuilt" + ], + "summary" : "Get asset by id", + "description" : "The endpoint returns an asset filtered by id .", + "operationId" : "assetById_1", + "parameters" : [ + { + "name" : "assetId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the assets found", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + }, + "patch" : { + "tags" : [ + "AssetsAsBuilt" + ], + "summary" : "Updates asset", + "description" : "The endpoint updates asset by provided quality type.", + "operationId" : "updateAsset_1", + "parameters" : [ + { + "name" : "assetId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateAssetRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Returns the updated asset", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/registry/reload" : { + "get" : { + "tags" : [ + "Registry" + ], + "summary" : "Triggers reload of shell descriptors", + "description" : "The endpoint Triggers reload of shell descriptors.", + "operationId" : "reload", + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "202" : { + "description" : "Created registry reload job." + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/policies" : { + "get" : { + "tags" : [ + "Policies" + ], + "summary" : "Get all policies ", + "description" : "The endpoint returns all policies .", + "operationId" : "policy", + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns the policies", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PolicyResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications/{notificationId}" : { + "get" : { + "tags" : [ + "Notifications" + ], + "summary" : "Gets notification by id", + "description" : "The endpoint returns notification by id.", + "operationId" : "getNotification", + "parameters" : [ + { + "name" : "notificationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "responses" : { + "200" : { + "description" : "OK.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Notifications", + "items" : { + "$ref" : "#/components/schemas/NotificationResponse" + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/notifications/distinctFilterValues" : { + "get" : { + "tags" : [ + "Notifications" + ], + "summary" : "getDistinctFilterValues", + "description" : "The endpoint returns a distinct filter values for given fieldName of notification.", + "operationId" : "distinctFilterValues", + "parameters" : [ + { + "name" : "fieldName", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "name" : "size", + "in" : "query", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int32" + } + }, + { + "name" : "startWith", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "name" : "channel", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string", + "enum" : [ + "SENDER", + "RECEIVER" + ] + } + } + ], + "responses" : { + "200" : { + "description" : "Returns a distinct filter values for given fieldName.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/dashboard" : { + "get" : { + "tags" : [ + "Dashboard" + ], + "summary" : "Returns dashboard related data", + "description" : "The endpoint can return limited data based on the user role", + "operationId" : "dashboard", + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns dashboard data", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/DashboardResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/import/report/{importJobId}" : { + "get" : { + "tags" : [ + "ImportReport", + "AssetsImport" + ], + "summary" : "report of the imported assets", + "description" : "This endpoint returns information about the imported assets to Trace-X.", + "operationId" : "importReport", + "parameters" : [ + { + "name" : "importJobId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "204" : { + "description" : "No Content." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "OK.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ImportReportResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-planned" : { + "get" : { + "tags" : [ + "AssetsAsPlanned" + ], + "summary" : "Get assets by pagination", + "description" : "The endpoint returns a paged result of assets.", + "operationId" : "AssetsAsPlanned", + "parameters" : [ + { + "name" : "pageable", + "in" : "query", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/OwnPageable" + } + }, + { + "name" : "filter", + "in" : "query", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/SearchCriteriaRequestParam" + } + } + ], + "responses" : { + "200" : { + "description" : "Returns the paged result found for Asset", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-planned/distinctFilterValues" : { + "get" : { + "tags" : [ + "Assets", + "AssetsAsPlanned" + ], + "summary" : "getDistinctFilterValues", + "description" : "The endpoint returns a distinct filter values for given fieldName.", + "operationId" : "distinctFilterValues_1", + "parameters" : [ + { + "name" : "fieldName", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "name" : "size", + "in" : "query", + "required" : false, + "schema" : { + "type" : "integer", + "format" : "int32" + } + }, + { + "name" : "startWith", + "in" : "query", + "required" : false, + "schema" : { + "type" : "string" + } + }, + { + "name" : "owner", + "in" : "query", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + } + }, + { + "name" : "inAssetIds", + "in" : "query", + "required" : false, + "schema" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + ], + "responses" : { + "200" : { + "description" : "Returns a distinct filter values for given fieldName.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-planned/*/children/{childId}" : { + "get" : { + "tags" : [ + "AssetsAsPlanned" + ], + "summary" : "Get asset by child id", + "description" : "The endpoint returns an asset filtered by child id.", + "operationId" : "assetByChildIdAndAssetId", + "parameters" : [ + { + "name" : "childId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "description" : "Returns the asset by childId", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-built" : { + "get" : { + "tags" : [ + "AssetsAsBuilt" + ], + "summary" : "Get assets by pagination", + "description" : "The endpoint returns a paged result of assets.", + "operationId" : "assets", + "parameters" : [ + { + "name" : "pageable", + "in" : "query", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/OwnPageable" + } + }, + { + "name" : "searchCriteriaRequestParam", + "in" : "query", + "required" : true, + "schema" : { + "$ref" : "#/components/schemas/SearchCriteriaRequestParam" + } + } + ], + "responses" : { + "200" : { + "description" : "Returns the paged result found for Asset", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-built/distinctFilterValues" : { + "get" : { + "tags" : [ + "AssetsAsBuilt", + "Assets" + ], + "summary" : "getDistinctFilterValues", + "description" : "The endpoint returns a distinct filter values for given fieldName.", + "operationId" : "distinctFilterValues_2", + "parameters" : [ + { + "name" : "fieldName", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "name" : "size", + "in" : "query", + "required" : false, + "schema" : { + "type" : "integer", + "format" : "int32" + } + }, + { + "name" : "startWith", + "in" : "query", + "required" : false, + "schema" : { + "type" : "string" + } + }, + { + "name" : "owner", + "in" : "query", + "required" : false, + "schema" : { + "type" : "string", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + } + }, + { + "name" : "inAssetIds", + "in" : "query", + "required" : false, + "schema" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + ], + "responses" : { + "200" : { + "description" : "Returns a distinct filter values for given fieldName.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-built/countries" : { + "get" : { + "tags" : [ + "AssetsAsBuilt" + ], + "summary" : "Get map of assets", + "description" : "The endpoint returns a map for assets consumed by the map.", + "operationId" : "assetsCountryMap", + "responses" : { + "200" : { + "description" : "Returns the assets found", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "items" : { + "type" : "string" + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/assets/as-built/*/children/{childId}" : { + "get" : { + "tags" : [ + "AssetsAsBuilt" + ], + "summary" : "Get asset by child id", + "description" : "The endpoint returns an asset filtered by child id.", + "operationId" : "assetByChildId", + "parameters" : [ + { + "name" : "childId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "description" : "Returns the asset by childId", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "NO-246880451848384868750731" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "owner" : { + "type" : "string", + "example" : "CUSTOMER", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + }, + "childRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Child relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "parentRelations" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Parent relationships", + "items" : { + "$ref" : "#/components/schemas/DescriptionsResponse" + } + }, + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "OMAYSKEITUGNVHKKX" + }, + "semanticDataModel" : { + "type" : "string", + "example" : "BATCH", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE", + "TOMBSTONEASBUILT", + "TOMBSTONEASPLANNED" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "component" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "example" : 1, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "example" : 2, + "items" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + }, + "importState" : { + "type" : "string", + "example" : "TRANSIENT", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "importNote" : { + "type" : "string", + "example" : "Asset created successfully in transient state" + }, + "tombstone" : { + "type" : "string", + "example" : " {\n \"catenaXId\": \"urn:uuid:7e4541ea-bb0f-464c-8cb3-021abccbfaf5\",\n \"endpointURL\": \"https://irs-provider-dataplane3.dev.demo.catena-x.net/api/public/data/urn:uuid:c7b3ea3d-97ea-41e4-960d-12fb166e1da1\",\n \"processingError\": {\n \"processStep\": \"SubmodelRequest\",\n \"errorDetail\": \"org.springframework.web.client.HttpServerErrorException$InternalServerError: 500 : \"{\"errors\":[]}\"\",\n \"lastAttempt\": \"2024-02-07T12:06:34.400493282Z\",\n \"retryCounter\": 0\n },\n \"policy\": null\n }\n" + }, + "contractAgreementId" : { + "type" : "string", + "example" : "TODO" + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/submodel/data" : { + "delete" : { + "tags" : [ + "Submodel" + ], + "summary" : "Delete All Submodels", + "description" : "Deletes all submodels from the system.", + "operationId" : "deleteSubmodels", + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No Content." + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/bpn-config/{bpn}" : { + "delete" : { + "tags" : [ + "BpnEdcMapping" + ], + "summary" : "Deletes BPN EDC URL mappings", + "description" : "The endpoint deletes BPN EDC URL mappings", + "operationId" : "deleteBpnEdcUrlMappings", + "parameters" : [ + { + "name" : "bpn", + "in" : "path", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Okay" + }, + "204" : { + "description" : "Deleted." + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + } + }, + "components" : { + "schemas" : { + "EditNotificationRequest" : { + "required" : [ + "affectedPartIds", + "description", + "receiverBpn", + "severity" + ], + "type" : "object", + "properties" : { + "title" : { + "maxLength" : 255, + "minLength" : 1, + "type" : "string", + "example" : "title" + }, + "receiverBpn" : { + "type" : "string", + "example" : "BPNL00000003CNKC" + }, + "severity" : { + "type" : "string", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE-THREATENING" + ] + }, + "targetDate" : { + "type" : "string", + "format" : "date-time", + "example" : "2099-03-11T22:44:06.333826952Z" + }, + "description" : { + "maxLength" : 1000, + "minLength" : 15, + "type" : "string", + "example" : "The description" + }, + "affectedPartIds" : { + "maxLength" : 50, + "minLength" : 1, + "maxItems" : 50, + "minItems" : 1, + "type" : "array", + "example" : [ + "urn:uuid:fe99da3d-b0de-4e80-81da-882aebcca978" + ], + "items" : { + "maxLength" : 50, + "minLength" : 1, + "type" : "string", + "example" : "[\"urn:uuid:fe99da3d-b0de-4e80-81da-882aebcca978\"]" + } + } + } + }, + "ErrorResponse" : { + "type" : "object", + "properties" : { + "message" : { + "maxLength" : 1000, + "minLength" : 0, + "pattern" : "^.*$", + "type" : "string", + "example" : "Access Denied" + } + } + }, + "BpnMappingRequest" : { + "required" : [ + "bpn", + "url" + ], + "type" : "object", + "properties" : { + "bpn" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "url" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + }, + "BpnEdcMappingResponse" : { + "type" : "object", + "properties" : { + "bpn" : { + "type" : "string", + "example" : "BPNL00000003CSGV" + }, + "url" : { + "type" : "string", + "example" : "https://trace-x-test-edc.dev.demo.catena-x.net/a1" + } + } + }, + "StartNotificationRequest" : { + "required" : [ + "receiverBpn", + "severity", + "type" + ], + "type" : "object", + "properties" : { + "title" : { + "maxLength" : 255, + "minLength" : 1, + "type" : "string", + "example" : "title" + }, + "affectedPartIds" : { + "maxLength" : 100, + "minLength" : 1, + "maxItems" : 50, + "minItems" : 1, + "type" : "array", + "example" : [ + "urn:uuid:fe99da3d-b0de-4e80-81da-882aebcca978" + ], + "items" : { + "maxLength" : 100, + "minLength" : 1, + "type" : "string", + "example" : "[\"urn:uuid:fe99da3d-b0de-4e80-81da-882aebcca978\"]" + } + }, + "description" : { + "maxLength" : 1000, + "minLength" : 15, + "type" : "string", + "example" : "The description" + }, + "targetDate" : { + "type" : "string", + "format" : "date-time", + "example" : "2099-03-11T22:44:06.333826952Z" + }, + "severity" : { + "type" : "string", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE-THREATENING" + ] + }, + "receiverBpn" : { + "type" : "string", + "example" : "BPNL00000003CNKC" + }, + "type" : { + "type" : "string", + "example" : "ALERT", + "enum" : [ + "ALERT", + "INVESTIGATION" + ] + } + } + }, + "NotificationIdResponse" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + } + } + }, + "UpdateNotificationStatusTransitionRequest" : { + "required" : [ + "status" + ], + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "description" : "The UpdateInvestigationStatus", + "enum" : [ + "ACKNOWLEDGED", + "ACCEPTED", + "DECLINED" + ] + }, + "reason" : { + "type" : "string", + "example" : "The reason." + } + } + }, + "CloseNotificationRequest" : { + "type" : "object", + "properties" : { + "reason" : { + "maxLength" : 1000, + "minLength" : 15, + "type" : "string", + "example" : "The reason." + } + } + }, + "OwnPageable" : { + "type" : "object", + "properties" : { + "page" : { + "type" : "integer", + "format" : "int32" + }, + "size" : { + "type" : "integer", + "format" : "int32" + }, + "sort" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Content of Assets PageResults", + "example" : "manufacturerPartId,desc", + "items" : { + "type" : "string" + } + } + } + }, + "PageableFilterRequest" : { + "type" : "object", + "properties" : { + "pageAble" : { + "$ref" : "#/components/schemas/OwnPageable" + }, + "searchCriteria" : { + "$ref" : "#/components/schemas/SearchCriteriaRequestParam" + } + } + }, + "SearchCriteriaRequestParam" : { + "type" : "object", + "properties" : { + "filter" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Filter Criteria", + "example" : "owner,EQUAL,OWN", + "items" : { + "type" : "string" + } + } + } + }, + "NotificationMessageResponse" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "string" + }, + "createdBy" : { + "type" : "string" + }, + "createdByName" : { + "type" : "string" + }, + "sendTo" : { + "type" : "string" + }, + "sendToName" : { + "type" : "string" + }, + "contractAgreementId" : { + "type" : "string" + }, + "notificationReferenceId" : { + "type" : "string" + }, + "targetDate" : { + "type" : "string", + "format" : "date-time" + }, + "severity" : { + "type" : "string", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE-THREATENING" + ] + }, + "edcNotificationId" : { + "type" : "string" + }, + "created" : { + "type" : "string", + "format" : "date-time" + }, + "updated" : { + "type" : "string", + "format" : "date-time" + }, + "messageId" : { + "type" : "string" + }, + "status" : { + "type" : "string", + "enum" : [ + "CREATED", + "SENT", + "RECEIVED", + "ACKNOWLEDGED", + "ACCEPTED", + "DECLINED", + "CANCELED", + "CLOSED" + ] + }, + "errorMessage" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "EDC not reachable" + } + } + }, + "NotificationReasonResponse" : { + "type" : "object", + "properties" : { + "close" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string", + "example" : "description of closing reason" + }, + "accept" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string", + "example" : "description of accepting reason" + }, + "decline" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string", + "example" : "description of declining reason" + } + } + }, + "NotificationResponse" : { + "type" : "object", + "properties" : { + "id" : { + "maximum" : 255, + "minimum" : 0, + "maxLength" : 255, + "type" : "integer", + "format" : "int64", + "example" : 66 + }, + "title" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Title" + }, + "status" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "CREATED", + "enum" : [ + "CREATED", + "SENT", + "RECEIVED", + "ACKNOWLEDGED", + "ACCEPTED", + "DECLINED", + "CANCELED", + "CLOSED" + ] + }, + "description" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string", + "example" : "DescriptionText" + }, + "createdBy" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003AYRE" + }, + "createdByName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "createdDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string", + "example" : "2023-02-21T21:27:10.734950Z" + }, + "assetIds" : { + "maxItems" : 1000, + "minItems" : 0, + "type" : "array", + "example" : [ + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd", + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70529fcbd", + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70530fcbd" + ], + "items" : { + "type" : "string", + "example" : "[\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd\",\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70529fcbd\",\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70530fcbd\"]" + } + }, + "channel" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "SENDER", + "enum" : [ + "SENDER", + "RECEIVER" + ] + }, + "reason" : { + "$ref" : "#/components/schemas/NotificationReasonResponse" + }, + "sendTo" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "BPNL00000003AYRE" + }, + "sendToName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Tier C" + }, + "severity" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "MINOR", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE-THREATENING" + ] + }, + "type" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string", + "example" : "ALERT", + "enum" : [ + "ALERT", + "INVESTIGATION" + ] + }, + "targetDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string", + "example" : "2099-02-21T21:27:10.734950Z" + }, + "messages" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/NotificationMessageResponse" + } + } + } + }, + "CreateNotificationContractRequest" : { + "required" : [ + "notificationMethod", + "notificationType" + ], + "type" : "object", + "properties" : { + "notificationType" : { + "type" : "string", + "enum" : [ + "QUALITY_INVESTIGATION", + "QUALITY_ALERT" + ] + }, + "notificationMethod" : { + "type" : "string", + "enum" : [ + "RECEIVE", + "UPDATE", + "RESOLVE" + ] + } + } + }, + "CreateNotificationContractResponse" : { + "type" : "object", + "properties" : { + "notificationAssetId" : { + "type" : "string", + "example" : "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + }, + "accessPolicyId" : { + "type" : "string", + "example" : "123" + }, + "contractDefinitionId" : { + "type" : "string", + "example" : "456" + } + } + }, + "ContractResponse" : { + "type" : "object", + "properties" : { + "contractId" : { + "maxLength" : 255, + "type" : "string", + "example" : "66" + }, + "counterpartyAddress" : { + "maxLength" : 255, + "type" : "string", + "example" : "https://trace-x-edc-e2e-a.dev.demo.catena-x.net/api/v1/dsp" + }, + "creationDate" : { + "maxLength" : 255, + "type" : "string", + "format" : "date-time", + "example" : "2023-02-21T21:27:10.73495Z" + }, + "endDate" : { + "maxLength" : 255, + "type" : "string", + "format" : "date-time", + "example" : "2023-02-21T21:27:10.73495Z" + }, + "state" : { + "maxLength" : 255, + "type" : "string", + "example" : "FINALIZED" + }, + "policy" : { + "maxLength" : 255, + "type" : "string", + "example" : "{\\\"@id\\\":\\\"eb0c8486-914a-4d36-84c0-b4971cbc52e4\\\",\\\"@type\\\":\\\"odrl:Set\\\",\\\"odrl:permission\\\":{\\\"odrl:target\\\":\\\"registry-asset\\\",\\\"odrl:action\\\":{\\\"odrl:type\\\":\\\"USE\\\"},\\\"odrl:constraint\\\":{\\\"odrl:or\\\":{\\\"odrl:leftOperand\\\":\\\"PURPOSE\\\",\\\"odrl:operator\\\":{\\\"@id\\\":\\\"odrl:eq\\\"},\\\"odrl:rightOperand\\\":\\\"ID 3.0 Trace\\\"}}},\\\"odrl:prohibition\\\":[],\\\"odrl:obligation\\\":[],\\\"odrl:target\\\":\\\"registry-asset\\\"}" + } + } + }, + "PageResultContractResponse" : { + "type" : "object", + "properties" : { + "content" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array", + "description" : "Content of PageResults", + "items" : { + "$ref" : "#/components/schemas/ContractResponse" + } + }, + "page" : { + "type" : "integer", + "format" : "int32", + "example" : 1 + }, + "pageCount" : { + "type" : "integer", + "format" : "int32", + "example" : 15 + }, + "pageSize" : { + "type" : "integer", + "format" : "int32", + "example" : 10 + }, + "totalItems" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + } + }, + "RegisterAssetRequest" : { + "required" : [ + "assetIds", + "policyId" + ], + "type" : "object", + "properties" : { + "policyId" : { + "type" : "string", + "example" : "a644a7cb-3de5-493b-9259-f01db315a46e" + }, + "assetIds" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "ImportResponse" : { + "type" : "object", + "properties" : { + "jobId" : { + "type" : "string" + }, + "importStateMessage" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ImportStateMessage" + } + }, + "validationResult" : { + "$ref" : "#/components/schemas/ValidationResponse" + } + } + }, + "ImportStateMessage" : { + "type" : "object", + "properties" : { + "catenaXId" : { + "type" : "string" + }, + "persistedOrUpdated" : { + "type" : "boolean" + } + } + }, + "ValidationResponse" : { + "type" : "object", + "properties" : { + "validationErrors" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "SyncAssetsRequest" : { + "type" : "object", + "properties" : { + "globalAssetIds" : { + "maxItems" : 100, + "minItems" : 1, + "type" : "array", + "example" : [ + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + ], + "items" : { + "type" : "string", + "example" : "[\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd\"]" + } + } + } + }, + "GetDetailInformationRequest" : { + "type" : "object", + "properties" : { + "assetIds" : { + "maxLength" : 50, + "minLength" : 1, + "maxItems" : 50, + "minItems" : 1, + "type" : "array", + "example" : [ + "urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd" + ], + "items" : { + "maxLength" : 50, + "minLength" : 1, + "type" : "string", + "example" : "[\"urn:uuid:ceb6b964-5779-49c1-b5e9-0ee70528fcbd\"]" + } + } + } + }, + "DescriptionsResponse" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "urn:uuid:a4a26b9c-9460-4cc5-8645-85916b86adb0" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "assembly-part-relationship" + } + } + }, + "DetailAspectDataAsBuiltResponse" : { + "type" : "object", + "properties" : { + "partId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "95657762-59" + }, + "customerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "01697F7-65" + }, + "nameAtCustomer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "Door front-left" + }, + "manufacturingCountry" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "DEU" + }, + "manufacturingDate" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "2022-02-04T13:48:54Z" + } + } + }, + "DetailAspectDataAsPlannedResponse" : { + "type" : "object", + "properties" : { + "validityPeriodFrom" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "2022-09-26T12:43:51.079Z" + }, + "validityPeriodTo" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "20232-07-13T12:00:00.000Z" + } + } + }, + "DetailAspectDataResponse" : { + "type" : "object", + "oneOf" : [ + { + "$ref" : "#/components/schemas/DetailAspectDataAsBuiltResponse" + }, + { + "$ref" : "#/components/schemas/DetailAspectDataAsPlannedResponse" + }, + { + "$ref" : "#/components/schemas/PartSiteInformationAsPlannedResponse" + }, + { + "$ref" : "#/components/schemas/DetailAspectDataTractionBatteryCodeResponse" + } + ] + }, + "DetailAspectDataTractionBatteryCodeResponse" : { + "type" : "object", + "properties" : { + "productType" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "pack" + }, + "tractionBatteryCode" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "X12MCPM27KLPCLX2M2382320" + }, + "subcomponents" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectDataTractionBatteryCodeSubcomponentResponse" + } + } + } + }, + "DetailAspectDataTractionBatteryCodeSubcomponentResponse" : { + "type" : "object", + "properties" : { + "productType" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "pack" + }, + "tractionBatteryCode" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "example" : "X12MCPM27KLPCLX2M2382320" + } + } + }, + "DetailAspectModelResponse" : { + "type" : "object", + "properties" : { + "type" : { + "type" : "string", + "example" : "PART_SITE_INFORMATION_AS_PLANNED", + "enum" : [ + "AS_BUILT", + "AS_PLANNED", + "TRACTION_BATTERY_CODE", + "SINGLE_LEVEL_BOM_AS_BUILT", + "SINGLE_LEVEL_USAGE_AS_BUILT", + "SINGLE_LEVEL_BOM_AS_PLANNED", + "PART_SITE_INFORMATION_AS_PLANNED" + ] + }, + "data" : { + "$ref" : "#/components/schemas/DetailAspectDataResponse" + } + } + }, + "PartSiteInformationAsPlannedResponse" : { + "type" : "object", + "properties" : { + "functionValidUntil" : { + "type" : "string", + "example" : "2025-02-08T04:30:48.000Z" + }, + "function" : { + "type" : "string", + "example" : "production" + }, + "functionValidFrom" : { + "type" : "string", + "example" : "2023-10-13T14:30:45+01:00" + }, + "catenaXSiteId" : { + "type" : "string", + "example" : "urn:uuid:0fed587c-7ab4-4597-9841-1718e9693003" + } + } + }, + "UpdateAssetRequest" : { + "required" : [ + "qualityType" + ], + "type" : "object", + "properties" : { + "qualityType" : { + "type" : "string", + "example" : "Ok", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + } + } + }, + "ConstraintResponse" : { + "type" : "object", + "properties" : { + "leftOperand" : { + "type" : "string", + "example" : "PURPOSE" + }, + "operatorTypeResponse" : { + "type" : "string", + "enum" : [ + "EQ", + "NEQ", + "LT", + "GT", + "IN", + "LTEQ", + "GTEQ", + "ISA", + "HASPART", + "ISPARTOF", + "ISONEOF", + "ISALLOF", + "ISNONEOF" + ] + }, + "rightOperand" : { + "type" : "string", + "example" : "ID Trace 3.1" + } + } + }, + "ConstraintsResponse" : { + "type" : "object", + "properties" : { + "and" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ConstraintResponse" + } + }, + "or" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ConstraintResponse" + } + } + } + }, + "PermissionResponse" : { + "type" : "object", + "properties" : { + "action" : { + "type" : "string", + "example" : "USE", + "enum" : [ + "ACCESS", + "USE" + ] + }, + "constraints" : { + "$ref" : "#/components/schemas/ConstraintsResponse" + } + } + }, + "PolicyResponse" : { + "type" : "object", + "properties" : { + "policyId" : { + "type" : "string", + "example" : "5a00bb50-0253-405f-b9f1-1a3150b9d51d" + }, + "createdOn" : { + "type" : "string", + "format" : "date-time" + }, + "validUntil" : { + "type" : "string", + "format" : "date-time" + }, + "permissions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/PermissionResponse" + } + } + } + }, + "DashboardResponse" : { + "type" : "object", + "properties" : { + "asBuiltCustomerParts" : { + "type" : "integer", + "format" : "int64", + "example" : 5 + }, + "asPlannedCustomerParts" : { + "type" : "integer", + "format" : "int64", + "example" : 10 + }, + "asBuiltSupplierParts" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + }, + "asPlannedSupplierParts" : { + "type" : "integer", + "format" : "int64", + "example" : 3 + }, + "asBuiltOwnParts" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + }, + "asPlannedOwnParts" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + }, + "myPartsWithOpenAlerts" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + }, + "myPartsWithOpenInvestigations" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + }, + "supplierPartsWithOpenAlerts" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + }, + "customerPartsWithOpenAlerts" : { + "type" : "integer", + "format" : "int64", + "example" : 1 + }, + "supplierPartsWithOpenInvestigations" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + }, + "customerPartsWithOpenInvestigations" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + }, + "receivedActiveAlerts" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + }, + "receivedActiveInvestigations" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + }, + "sentActiveAlerts" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + }, + "sentActiveInvestigations" : { + "type" : "integer", + "format" : "int64", + "example" : 2 + } + } + }, + "ImportJobResponse" : { + "type" : "object", + "properties" : { + "importJobStatus" : { + "type" : "string", + "enum" : [ + "INITIALIZING", + "RUNNING", + "ERROR", + "COMPLETED" + ] + }, + "importId" : { + "type" : "string", + "example" : "456a952e-05eb-40dc-a6f2-9c2cb9c1387f" + }, + "startedOn" : { + "maxLength" : 50, + "type" : "string", + "example" : "2099-02-21T21:27:10.734950Z" + }, + "completedOn" : { + "maxLength" : 50, + "type" : "string", + "example" : "2099-02-21T21:27:10.734950Z" + } + } + }, + "ImportReportResponse" : { + "type" : "object", + "properties" : { + "importJob" : { + "$ref" : "#/components/schemas/ImportJobResponse" + }, + "importedAsset" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ImportedAssetResponse" + } + } + } + }, + "ImportedAssetResponse" : { + "type" : "object", + "properties" : { + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "PUBLISHED_TO_CORE_SERVICES", + "UNSET" + ] + }, + "catenaxId" : { + "type" : "string", + "example" : "urn:uuid:7eeeac86-7b69-444d-81e6-655d0f1513bd}" + }, + "importedOn" : { + "maxLength" : 50, + "type" : "string", + "example" : "2099-02-21T21:27:10.734950Z" + }, + "importMessage" : { + "type" : "string", + "example" : "Asset created successfully in transient state." + } + } + } + }, + "securitySchemes" : { + "oAuth2" : { + "type" : "oauth2", + "flows" : { + "clientCredentials" : { + "tokenUrl" : "https://example.com/api/oauth/token", + "scopes" : { + "profile email" : "" + } + } + } + } + } + } +} diff --git a/docs/concept/#774-messages-to-multiple-bpns/#774-messages-to-multiple-bpns.md b/docs/concept/#774-messages-to-multiple-bpns/#774-messages-to-multiple-bpns.md new file mode 100644 index 0000000000..06d087ad2a --- /dev/null +++ b/docs/concept/#774-messages-to-multiple-bpns/#774-messages-to-multiple-bpns.md @@ -0,0 +1,392 @@ +# OBSOLETE \[Concept\] \[#774\] Messages to multiple BPNs + +### Concept no longer needed, as it was decided to go with a different approach (->[#774](https://github.com/eclipse-tractusx/traceability-foss/issues/774)). If needed, parts of this concept can be reused. + +| Key | Value | +|---------------|--------------------------------------------------------------------------| +| Author | @ds-crehm | +| Creation date | 25.03.2024 | +| Ticket Id | [#774](https://github.com/eclipse-tractusx/traceability-foss/issues/774) | +| State | WIP | + +# Table of Contents +1. [Summary](#summary) +2. [Problem Statement](#problem-statement) +3. [Requirements](#requirements) +4. [Concept](#concept) +5. [References](#references) +6. [Additional Details](#additional-details) + + + +# Summary +A user must be able to send notifications to multiple BPNs. +He must be able to view each of those and change their status individually. + +# Problem Statement +Right now, a user can send a notification to only one BPN that he must manually type in. + +# Requirements +- [ ] Notification model changed +- [ ] Notification API changed +- [ ] Implement functionality for sending to multiple BPNLs in backend +- [ ] Frontend concept implemented + - [ ] Notification overview + - [ ] Notification detail view + - [ ] Create/Edit notification screens + +# Concept +### Backend +The notification model must be changed: + +```diff +{ + ... + +- "status": "", +- "reason": { +- "close": null, +- "accept": null, +- "decline": null +- }, +- "sendTo": "", +- "sendToName": "", + + ... + + "messages": [ + { + ... + +- "severity": "", + ++ "reason": { ++ "close": null, ++ "accept": null, ++ "decline": null ++ }, + + ... + } + ] +} +``` + +The close/accept/decline reasons must be handled for each message individually. Same for the status. +Since the messages can be sent to multiple BPNs the "sendTo" and "sendToName" attributes are obsolete. +Instead, the attributes within the individual message will be used to identify to which BPN the message was sent. + +The API call to create notifications must be adjusted to accommodate multiple receiver BPNs: + +POST /api/notifications + +Request body: +```diff +{ + ... +- "bpn": "EXAMPLEBPN123" ++ "receiverBpns": [ ++ "EXAMPLEBPN123", ++ "EXAMPLEBPN234", ++ "EXAMPLEBPN345" ++ ] +} +``` + +When sending a notification to multiple BPNs, the sender will always have all messages in his own database, +while the receiver only receives information about the high-level notification data and the specific message addressed to him. + +#### Example +BPNL0A creates and approves a notification addressed to BPNL1X and BPNL2Y. + +The API call request body looks like this: + +```json +{ + { + "partIds": ["urn:uuid:55555555-5555-5555-5555-555555555555"], + "description":"Notification description", + "title": "Notification title", + "severity": "MINOR", + "type": "ALERT", + "targetDate": "2024-05-01T00:00:00Z", + "receiverBpns": ["BPNL1X","BPNL2Y"] + } +} +``` + +The following data is created in the database of BPNL0A: + +```json +{ + "id": 1, + "title": "Notification title", + "description": "Notification description", + "createdBy": "BPNL0A", + "createdByName": "TEST_BPN_SENDER", + "createdDate": "2024-04-01T00:00:00.000000Z", + "assetIds": [ + "urn:uuid:55555555-5555-5555-5555-555555555555" + ], + "channel": "SENDER", + "severity": "MINOR", + "type": "ALERT", + "targetDate": "2024-05-01T00:00:00Z", + "messages": [ + { + "id": "11111111-1111-1111-1111-111111111111", + "createdBy": "BPNL0A", + "createdByName": "TEST_BPN_SENDER", + "sendTo": "BPNL1X", + "sendToName": "TEST_BPN_RECEIVER1", + "contractAgreementId": "88888888-8888-8888-8888-888888888888", + "notificationReferenceId": null, + "targetDate": 1714521600.000000000, + "severity": "MINOR", + "edcNotificationId": "49b450ce-6afd-4621-b76b-6e6f4d78425c", + "created": [ + 2024, + 4, + 1, + 0, + 0, + 0, + 000000000 + ], + "updated": [ + 2024, + 4, + 1, + 0, + 0, + 0, + 000000000 + ], + "messageId": "bbab03a1-8cba-436b-a481-50bad3ffbd08", + "status": "CREATED", + "reason": { + "close": null, + "accept": null, + "decline": null + }, + "errorMessage": null + }, + { + "id": "22222222-2222-2222-2222-222222222222", + "createdBy": "BPNL0A", + "createdByName": "TEST_BPN_SENDER", + "sendTo": "BPNL2Y", + "sendToName": "TEST_BPN_RECEIVER2", + "contractAgreementId": "88888888-8888-8888-8888-888888888888", + "notificationReferenceId": null, + "targetDate": 1714521600.000000000, + "severity": "MINOR", + "edcNotificationId": "49b450ce-6afd-4621-b76b-6e6f4d78425c", + "created": [ + 2024, + 4, + 1, + 0, + 0, + 0, + 000000000 + ], + "updated": [ + 2024, + 4, + 1, + 0, + 0, + 0, + 000000000 + ], + "messageId": "bbab03a1-8cba-436b-a481-50bad3ffbd08", + "status": "CREATED", + "reason": { + "close": null, + "accept": null, + "decline": null + }, + "errorMessage": null + } + ] +} +``` +The data sent to BPNL1X contains only the general information about the notification and the message addressed to itself. It does **NOT** contain the second message addressed to BPNL2Y. +The same happens for BPNL2Y respectively. + +After the notification was successfully sent to both BPNs the status of both messages is set to "SENT"(for the sender) / "RECEIVED"(for the receivers) synchronized between all three parties. +(In case of an error, the respective message remains in the status "CREATED" and contains the errorMessage. Once it is successfully resent, the error message will be deleted.) + +If BPNL1X acknowledges the notification and then accepts it, two new messages will be created for BPNL1X and synchronized with BPNL0A. +BPNL2Y will **NOT** receive any new data. + +The data will look like this for BPNL1X: +```json +{ + "id": 1, + "title": "Notification title", + "description": "Notification description", + "createdBy": "BPNL0A", + "createdByName": "TEST_BPN_SENDER", + "createdDate": "2024-04-01T00:00:00.000000Z", + "assetIds": [ + "urn:uuid:55555555-5555-5555-5555-555555555555" + ], + "channel": "RECEIVER", + "severity": "MINOR", + "type": "ALERT", + "targetDate": "2024-05-01T00:00:00Z", + "messages": [ + { + "id": "11111111-1111-1111-1111-111111111111", + "createdBy": "BPNL0A", + "createdByName": "TEST_BPN_SENDER", + "sendTo": "BPNL1X", + "sendToName": "TEST_BPN_RECEIVER1", + "contractAgreementId": "88888888-8888-8888-8888-888888888888", + "notificationReferenceId": null, + "edcNotificationId": "49b450ce-6afd-4621-b76b-6e6f4d78425c", + "created": [ + 2024, + 4, + 1, + 0, + 0, + 0, + 000000000 + ], + "updated": [ + 2024, + 4, + 1, + 0, + 0, + 0, + 000000000 + ], + "messageId": "bbab03a1-8cba-436b-a481-50bad3ffbd08", + "status": "RECEIVED", + "reason": { + "close": null, + "accept": null, + "decline": null + }, + "errorMessage": null + }, + { + "id": "11111111-1111-1111-1111-111111111112", + "createdBy": "BPNL1X", + "createdByName": "TEST_BPN_RECEIVER1", + "sendTo": "BPNL0A", + "sendToName": "TEST_BPN_SENDER", + "contractAgreementId": "88888888-8888-8888-8888-888888888888", + "notificationReferenceId": null, + "edcNotificationId": "49b450ce-6afd-4621-b76b-6e6f4d78425c", + "created": [ + 2024, + 4, + 2, + 0, + 0, + 0, + 000000000 + ], + "updated": [ + 2024, + 4, + 2, + 0, + 0, + 15, + 000000000 + ], + "messageId": "bbab03a1-8cba-436b-a481-50bad3ffbd09", + "status": "ACKNOWLEDGED", + "reason": { + "close": null, + "accept": null, + "decline": null + }, + "errorMessage": null + }, + { + "id": "11111111-1111-1111-1111-111111111113", + "createdBy": "BPNL1X", + "createdByName": "TEST_BPN_RECEIVER1", + "sendTo": "BPNL0A", + "sendToName": "TEST_BPN_SENDER", + "contractAgreementId": "88888888-8888-8888-8888-888888888888", + "notificationReferenceId": null, + "edcNotificationId": "49b450ce-6afd-4621-b76b-6e6f4d78425c", + "created": [ + 2024, + 4, + 3, + 0, + 0, + 0, + 000000000 + ], + "updated": [ + 2024, + 4, + 3, + 0, + 0, + 15, + 000000000 + ], + "messageId": "bbab03a1-8cba-436b-a481-50bad3ffbd09", + "status": "ACCEPTED", + "reason": { + "close": null, + "accept": "example acceptance message", + "decline": null + }, + "errorMessage": null + } + ] +} +``` + +BPNL0A will have those 3 messages and additionally the message sent to BPN2Y, while BPN2Y will only have its own message. + +### Frontend + +#### Notification detail view +In the notification detail view, the message history will be changed according to the frontend concept: + +**Creator/Sender:** +![frontend-notification-detail-view-sender.png](frontend-notification-detail-view-sender.png) + +The overview must be adapted to the backend changes. + +The creator must be able to select individual BPNs, then he can view the message history for messages that were sent to/from the selected BPN. +The state on the left will always show the latest status in the message history. +The user must be able to select individual BPNLs and then send/approve or cancel the notification for the selected BPNLs. +When closing the notification for multiple BPNLs, only one reason can be given, that will be the same for all BPNLs. Closing is possible from all states. + +Sending/approving multiple BPNLs will only send, where the last state was "CREATED". Other messages will not be affected. + +Additionally, the user is able to edit the notification, send it or close it. (Default actions) Those actions affect **all** BPNLs. +Clicking "send" will send messages to all BPNLs, where the last state was "CREATED" all messages that are in the state "CREATED". Other + +**Recipient:** +![frontend-notification-detail-view-recipient.png](frontend-notification-detail-view-recipient.png) + +For the recipient not much changes, since a notification can only be received by a single BPNL. The overview and the message history should be aligned with the view from the sender. +The actions remain the same. + +#### Create/Edit notifications +When creating or editing notifications, the user must be able to add/remove multiple BPNLs. +This should be made possible by having an autocomplete in the input text field. And showing selected BPNLs as removable chips: +![frontend-create-notification.png](frontend-create-notification.png) +(-> identical for Edit Notification) + +# References +Frontend concepts: +https://miro.com/app/board/uXjVO5JVoho=/ + +# Additional Details +Given the dynamic nature of ongoing development, there might be variations between the conceptualization and the current implementation. For the latest status, refer to the documentation. diff --git a/docs/concept/#774-messages-to-multiple-bpns/frontend-create-notification.png b/docs/concept/#774-messages-to-multiple-bpns/frontend-create-notification.png new file mode 100644 index 0000000000..157c19469d Binary files /dev/null and b/docs/concept/#774-messages-to-multiple-bpns/frontend-create-notification.png differ diff --git a/docs/concept/#774-messages-to-multiple-bpns/frontend-notification-detail-view-recipient.png b/docs/concept/#774-messages-to-multiple-bpns/frontend-notification-detail-view-recipient.png new file mode 100644 index 0000000000..28fb32e7e3 Binary files /dev/null and b/docs/concept/#774-messages-to-multiple-bpns/frontend-notification-detail-view-recipient.png differ diff --git a/docs/concept/#774-messages-to-multiple-bpns/frontend-notification-detail-view-sender.png b/docs/concept/#774-messages-to-multiple-bpns/frontend-notification-detail-view-sender.png new file mode 100644 index 0000000000..e42945a0fc Binary files /dev/null and b/docs/concept/#774-messages-to-multiple-bpns/frontend-notification-detail-view-sender.png differ diff --git a/docs/concept/#831-notification-data-model/#831-notification-data-model.md b/docs/concept/#831-notification-data-model/#831-notification-data-model.md new file mode 100644 index 0000000000..67e22cccfa --- /dev/null +++ b/docs/concept/#831-notification-data-model/#831-notification-data-model.md @@ -0,0 +1,286 @@ +# \[Concept\] \[#831\] Notification data model revision + +| Key | Value | +|---------------|--------------------------------------------------------------------------| +| Author | @ds-crehm | +| Creation date | 06.05.2024 | +| Ticket Id | [#831](https://github.com/eclipse-tractusx/traceability-foss/issues/831) | +| State | WIP | + + +# Table of Contents +1. [Summary](#summary) +2. [Requirements](#requirements) +3. [Out of scope](#out-of-scope) +4. [Concept](#concept) +5. [Additional Details](#additional-details) + + +# Summary +The current data model was created with the possibility to send messages to multiple BPNs. +Since this concept will be changed with the implementation of [#849](https://github.com/eclipse-tractusx/traceability-foss/issues/849), +changes to the data model are needed. Additionally, some parts of the data model are outdated, +which must be changed as well to make it easier to work with and avoid future problems. + +# Requirements +- Data model changed according to the suggestion in the concept. +- Message creation logic adjusted according to the process described in [Creating notifications and messages](#creating-notifications-and-messages) + - No message creation when notification is created + - Error messages always create a new message in the status during which the error occurred + - Messages created whenever there was a status change (status in the message will be the new status) + - Parent object "updatedDate" updated whenever a message is created (or when the notification was edited by the user) + +# Out of scope +- Frontend adjustments to the message history will be made in [#753](https://github.com/eclipse-tractusx/traceability-foss/issues/753) + +# Concept +## Data model +Notification data model must be changed as follows: + +```diff +{ + "id": 609, + "title": "Alert title", + "type": "ALERT", + "status": "CREATED", + "description": ":-:Testing without targetDate TRACEFOSS-1546:-:2024-05-06T00:41:02.739457851Z", + "createdBy": "BPNL00000003CML1", + "createdByName": "TEST_BPN_DFT_1", + "createdDate": "2024-05-06T00:41:03.356688Z", ++ "updatedDate": "2024-05-06T00:45:39.322734Z", + "assetIds": [ + "urn:uuid:1be6ec59-40fb-4993-9836-acb0e284fa02" + ], + "channel": "SENDER", +- "reason": { +- "close": null, +- "accept": null, +- "decline": null +- }, + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "severity": "MINOR", + "targetDate": null, + "messages": [ + { + "id": "9a1c137f-172f-47ee-bfd3-a3dffd370349", +- "createdBy": "BPNL00000003CML1", +- "createdByName": "TEST_BPN_DFT_1", ++ "sentBy": "BPNL00000003CML1", ++ "sentByName": "TEST_BPN_DFT_1", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "contractAgreementId": null, + "notificationReferenceId": null, +- "targetDate": null, +- "severity": "MINOR", + "edcNotificationId": "9a1c137f-172f-47ee-bfd3-a3dffd370349", +- "created": [ +- 2024, +- 5, +- 6, +- 0, +- 41, +- 3, +- 820767000 +- ], +- "updated": [ +- 2024, +- 5, +- 6, +- 0, +- 45, +- 59, +- 322734000 +- ], ++ "messageDate": "2024-05-06T00:41:03.356688Z", + "messageId": "0deac300-e212-4c37-8d7d-83e18f01336e", ++ "message": null, + "status": "CREATED", + "errorMessage": "DiscoveryFinder could not determine result." + } + ] +} +``` + +Major changes: +- "updated" from messages removed and replaced with "updatedDate" in the parent object. This will be updated whenever there was any change to the notification. +- "reason" from parent object removed and replaced with "message" in the messages. For the three status changes where a user can input a message (close, accept, decline) this String will be used. For the other status messages, it will be null. +- "targetDate" removed from messages. +- "severity" removed from messages. + +Minor changes: +- "createdBy" and "createdByName" in messages renamed to "sentBy" and "sentByName". +- "created" in messages renamed to "messageDate" and format changed to match the other timestamps. + +## Creating notifications and messages +When successfully creating a notification, **no message must be created for the status "CREATED"**. After the notification was created it should look like this (with no messages): +```json +{ + "id": 1, + "title": "Notification title", + "type": "ALERT", + "status": "CREATED", + "description": "Notification creation - example", + "createdBy": "BPNL00000003CML1", + "createdByName": "TEST_BPN_DFT_1", + "createdDate": "2024-05-06T00:41:03.356688Z", + "updatedDate": "2024-05-06T00:41:03.356688Z", + "assetIds": [ + "urn:uuid:1be6ec59-40fb-4993-9836-acb0e284fa02" + ], + "channel": "SENDER", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "severity": "MINOR", + "targetDate": null, + "messages": [] +} +``` + +When the notification was successfully approved/acknowledged/accepted/declined/closed/cancelled, a message for that status will be created. +The "status" and the "updatedDate" in the parent object will be updated. +```json +{ + "id": 1, + "title": "Notification title", + "type": "ALERT", + "status": "APPROVED", + "description": "Notification creation - example", + "createdBy": "BPNL00000003CML1", + "createdByName": "TEST_BPN_DFT_1", + "createdDate": "2024-05-06T00:41:03.356688Z", + "updatedDate": "2024-05-07T00:42:03.336688Z", + "assetIds": [ + "urn:uuid:1be6ec59-40fb-4993-9836-acb0e284fa02" + ], + "channel": "SENDER", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "severity": "MINOR", + "targetDate": null, + "messages": [ + { + "id": "9a1c137f-172f-47ee-bfd3-a3dffd370349", + "sentBy": "BPNL00000003CML1", + "sentByName": "TEST_BPN_DFT_1", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "contractAgreementId": null, + "notificationReferenceId": null, + "edcNotificationId": "9a1c137f-172f-47ee-bfd3-a3dffd370349", + "messageDate": "2024-05-07T00:42:03.356688Z", + "messageId": "0deac300-e212-4c37-8d7d-83e18f01336e", + "message": null, + "status": "APPROVED", + "errorMessage": null + } + ] +} +``` + +Whenever an error occurs, a new message will be created containing the status in which the error occurred. +Error messages will not be overwritten. +Here is an example of a closed notification where a couple of errors occurred when trying to send the notification. +After the third try, the process was successful. The notification was closed before the receiver could accept or decline it: +```json +{ + "id": 2, + "title": "Notification title", + "type": "ALERT", + "status": "CLOSED", + "description": "Complete notification process - example", + "createdBy": "BPNL00000003CML1", + "createdByName": "TEST_BPN_DFT_1", + "createdDate": "2024-05-05T08:00:00.000000Z", + "updatedDate": "2024-05-10T00:00:00.000000Z", + "assetIds": [ + "urn:uuid:1be6ec59-40fb-4993-9836-acb0e284fa02" + ], + "channel": "SENDER", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "severity": "MINOR", + "targetDate": "2024-05-30T08:00:00.000000Z", + "messages": [ + { + "id": "9a1c137f-172f-47ee-bfd3-a3dffd370349", + "sentBy": "BPNL00000003CML1", + "sentByName": "TEST_BPN_DFT_1", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "contractAgreementId": null, + "notificationReferenceId": null, + "edcNotificationId": "9a1c137f-172f-47ee-bfd3-a3dffd370349", + "messageDate": "2024-05-05T08:30:00.000000Z", + "messageId": "0deac300-e212-4c37-8d7d-83e18f01336e", + "message": null, + "status": "CREATED", + "errorMessage": "DiscoveryFinder could not determine result." + }, + { + "id": "136e2dc5-5d2a-48b6-85a9-f9ae9d619217", + "sentBy": "BPNL00000003CML1", + "sentByName": "TEST_BPN_DFT_1", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "contractAgreementId": null, + "notificationReferenceId": null, + "edcNotificationId": "fb4186e3-5de3-4a6b-9205-3993583267e0", + "messageDate": "2024-05-05T09:00:00.000000Z", + "messageId": "1d7f363b-853a-4c7d-b930-4be187fa98ce", + "message": null, + "status": "CREATED", + "errorMessage": "No Catalog Item in catalog found." + }, + { + "id": "3befc791-326f-42f2-9301-49cb6e3795d0", + "sentBy": "BPNL00000003CML1", + "sentByName": "TEST_BPN_DFT_1", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "contractAgreementId": null, + "notificationReferenceId": null, + "edcNotificationId": "53fdd2e3-1f23-4e83-9c36-04a43ab5ffc7", + "messageDate": "2024-05-06T08:00:00.000000Z", + "messageId": "97cb3c74-3a43-4ba8-9043-c346cb1d90d2", + "message": null, + "status": "APPROVED", + "errorMessage": null + }, + { + "id": "62957c2e-0846-4394-830c-8d73f683a5d2", + "sentBy": "BPNL00000003CNKC", + "sentByName": "TEST_BPN_IRS_1", + "sendTo": "BPNL00000003CML1", + "sendToName": "TEST_BPN_DFT_1", + "contractAgreementId": null, + "notificationReferenceId": null, + "edcNotificationId": "e5ae361e-da0a-4c2c-85d4-d836a02c598d", + "messageDate": "2024-05-07T08:00:00.000000Z", + "messageId": "9520f434-a291-4a9a-a9cd-63f13efac952", + "message": null, + "status": "ACKNOWLEDGED", + "errorMessage": null + }, + { + "id": "43989ad5-e253-40e8-9bd0-7815f45c50bb", + "sentBy": "BPNL00000003CML1", + "sentByName": "TEST_BPN_DFT_1", + "sendTo": "BPNL00000003CNKC", + "sendToName": "TEST_BPN_IRS_1", + "contractAgreementId": null, + "notificationReferenceId": null, + "edcNotificationId": "49ebd64c-0b3c-41f8-b95c-7ac6e9a49d05", + "messageDate": "2024-05-10T00:00:00.000000Z", + "messageId": "50aef851-bf21-44b6-98d0-3361ede2c813", + "message": "We found the problem ourselves. Notification will be closed.", + "status": "CLOSED", + "errorMessage": null + } + ] +} +``` + +# Additional Details +Given the dynamic nature of ongoing development, there might be variations between the conceptualization and the current implementation. For the latest status, refer to the documentation. diff --git a/docs/concept/#849-notifications-to-multiple-bpns/#849-notifications-to-multiple-bpns.md b/docs/concept/#849-notifications-to-multiple-bpns/#849-notifications-to-multiple-bpns.md new file mode 100644 index 0000000000..3dd2060eac --- /dev/null +++ b/docs/concept/#849-notifications-to-multiple-bpns/#849-notifications-to-multiple-bpns.md @@ -0,0 +1,97 @@ +# \[Concept\] \[#849\] Quality notifications to multiple BPNs + +| Key | Value | +|---------------|--------------------------------------------------------------------------| +| Author | @ds-crehm | +| Creation date | 22.04.2024 | +| Ticket Id | [#849](https://github.com/eclipse-tractusx/traceability-foss/issues/849) | +| State | DRAFT | + +# Table of Contents +1. [Overview](#overview) +2. [Requirements](#requirements) +3. [Out of scope](#out-of-scope) +4. [Concept](#concept) +5. [Additional Details](#additional-details) + +# Overview +Instead of having "messages" that can be sent to multiple BPNs within one notification, multiple notifications must be created. +Those can be individually edited and sent to the specific BPN. + +# Requirements +- For alerts, when selecting multiple BPNs, a duplicated alert for each of the selected BPNs is created. +- For investigations, when selecting parts from different BPNs, a duplicated investigation for each of the BPNs is created. +- A case attribute is added to notifications, that can be set during creation and edit processes. +- The case attribute is shown in the inbox table and can be searched and filtered for. +- Notifications are tied to single BPNs and cannot be sent to multiple BPNs anymore. +- BPN selection is only possibly for alerts. + - Autocomplete filter -> Selection shows all matching BPNs (if there are more than 10, this selection is scrollable). + - Selected BPNs are shown as chips that can be removed. +- BPN selection is disabled for investigations, instead the BPNs are "pulled" from the selected parts. +- The frontend modals appear when a user is creating notifications and triggers a notification duplication. +- In the modal the user has the chance to cancel or approve the process. +- During the "Edit notification" process, the "Available parts" table is filtered to show only the parts from the currently selected BPNs. + +# Out of scope +- A duplication process for the user. In case the user wants to retroactively add BPNs to an existing notification or send a notification to a BPN that was not selected during the creation of this notification, +he must create a new notification and copy the data. In the future, there might be the possibility to add a "Duplicate notification" or "Copy notification" process to Trace-X, but that is out of scope for this concept. + +# Concept +## Backend +Messages within one notification can only be sent between **two** BPNs. To make it possible to send notifications to multiple BPNs, notifications are duplicated during the creation process. +An optional grouping label can be set for each notification created during the same process to identify notifications belonging to the same 'topic'. This label can be added/removed afterwards. + +```diff +{ + "id": 423, + "title": null, + "status": "CREATED", + "description": "2024-04-25T07:46:29.523Z-requested-by-chris", ++ "case": "CASE-ID123", + "createdBy": null, + "createdByName": null, + "createdDate": "2024-04-25T07:28:42.538791Z", + "assetIds": [ + "urn:uuid:5205f736-8fc2-4585-b869-6bf36842369a" + ], + "channel": "SENDER", + "reason": { + "close": null, + "accept": null, + "decline": null + }, + "sendTo": null, + "sendToName": null, + "severity": "MINOR", + "type": "ALERT", + "targetDate": null, + "messages": [] +} +``` + +#### Alert creation +When an alert is created, multiple BPNs can be selected. For each of the recipients the notification will be duplicated. +The data will be identical except for the "createdFor" and "createdForName" fields. +If the data must be changed, the user can do it afterward in the "edit notification" view. + +#### Investigation creation +When an investigation is created, multiple parts can be selected. Whenever a part from a different BPN is selected, the notification will be duplicated. +The data will be identical except for the "createdFor", "createdForName" and "assetIds" fields. Each notification will only contain parts from the same BPN. +If the data must be changed, the user can do it afterward in the "edit notification" view. + +#### Edit notifications +When editing notifications, only parts with the identical BPN as the "createdFor" BPN will be shown and the user may not add BPNs manually. +There is no possibility to create a new notification from the "Edit notifications" process. +If the user wants to send an existing notification to a different BPN, he must copy the data and use the "Create notification" process. + +## Frontend +![multiple-bpns-modals.png](multiple-bpns-modals.png) +![notification-creation-bpn-selection.png](notification-creation-bpn-selection.png) + +New case label: +![case-label.png](case-label.png) + +See https://miro.com/app/board/uXjVO5JVoho=/?moveToWidget=3458764586657591852&cot=10 + +# Additional Details +Given the dynamic nature of ongoing development, there might be variations between the conceptualization and the current implementation. For the latest status, refer to the documentation. diff --git a/docs/concept/#849-notifications-to-multiple-bpns/case-label.png b/docs/concept/#849-notifications-to-multiple-bpns/case-label.png new file mode 100644 index 0000000000..ce5ca13aa2 Binary files /dev/null and b/docs/concept/#849-notifications-to-multiple-bpns/case-label.png differ diff --git a/docs/concept/#849-notifications-to-multiple-bpns/multiple-bpns-modals.png b/docs/concept/#849-notifications-to-multiple-bpns/multiple-bpns-modals.png new file mode 100644 index 0000000000..543826fe53 Binary files /dev/null and b/docs/concept/#849-notifications-to-multiple-bpns/multiple-bpns-modals.png differ diff --git a/docs/concept/#849-notifications-to-multiple-bpns/notification-creation-bpn-selection.png b/docs/concept/#849-notifications-to-multiple-bpns/notification-creation-bpn-selection.png new file mode 100644 index 0000000000..f20121ec6d Binary files /dev/null and b/docs/concept/#849-notifications-to-multiple-bpns/notification-creation-bpn-selection.png differ diff --git a/docs/src/docs/administration/administration-guide.adoc b/docs/src/docs/administration/administration-guide.adoc index 03f064c10e..cac54da5c8 100644 --- a/docs/src/docs/administration/administration-guide.adoc +++ b/docs/src/docs/administration/administration-guide.adoc @@ -1,6 +1,6 @@ -= Administration Guide += Administration guide -## Notice +== Notice This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). diff --git a/docs/src/docs/administration/backend-configuration.adoc b/docs/src/docs/administration/backend-configuration.adoc index a2ccba617e..a89f3d225c 100644 --- a/docs/src/docs/administration/backend-configuration.adoc +++ b/docs/src/docs/administration/backend-configuration.adoc @@ -1,5 +1,5 @@ [#_backend_configuration] -= Backend Configuration += Backend configuration :icons: font :icon-set: fas :hide-uri-scheme: @@ -9,7 +9,7 @@ You can define the URLs as well as most of the secrets yourself. The OAuth2, Vault configuration / secrets depend on your setup and might need to be provided externally. -== Helm configuration Trace-X Backend (values.yaml) +== Helm configuration Trace-X backend (values.yaml) [source,yaml] ---- diff --git a/docs/src/docs/administration/frontend-configuration.adoc b/docs/src/docs/administration/frontend-configuration.adoc index d4504e8fef..c0b3d93371 100644 --- a/docs/src/docs/administration/frontend-configuration.adoc +++ b/docs/src/docs/administration/frontend-configuration.adoc @@ -1,5 +1,5 @@ [#_frontend_configuration] -= Frontend Configuration += Frontend configuration //:allow-uri-read: :icons: font :icon-set: fas @@ -10,7 +10,7 @@ You can define the URLs as well as most of the secrets yourself. The OAuth2, Vault configuration / secrets depend on your setup and might need to be provided externally. -== Helm configuration Trace-X Frontend (values.yaml) +== Helm configuration Trace-X frontend (values.yaml) values.yaml https://github.com/eclipse-tractusx/traceability-foss/blob/main/charts/traceability-foss/values.yaml diff --git a/docs/src/docs/administration/portal-configuration.adoc b/docs/src/docs/administration/portal-configuration.adoc index d204926784..bd5ec2be35 100644 --- a/docs/src/docs/administration/portal-configuration.adoc +++ b/docs/src/docs/administration/portal-configuration.adoc @@ -1,46 +1,104 @@ [#_portal_configuration] -= Portal Configuration += Portal configuration //:allow-uri-read: :icons: font :icon-set: fas The following process is required to successfully connect to the portal: -== Company Registration -https://portal.int.demo.catena-x.net/documentation[How To] +- Company registration with BPN, Company Name + +- User Registration with E-Mail + +- Get e-mail to reset your password + +- Reset the password and log in + +- Make sure your user has the role App Management + +- Navigate to App Overview + +- Create app + +- Choose a selection of managed roles which is necessary (currently: BPDM, Dataspace Discovery, Semantic Model Management, Identity Wallet Management) + +- Wait for app approval by portal + +- Subscribe to the app + +- As app creator navigate to subscription management - click on configure + +- Add the frontend url of the application and click approve + +- Save technical user and secret + +- Navigate to Register Connector + +- Add managed connector + +- Select existing technical user (from app subscription) + +- Enter name "EDC Provider A" + +- Enter base url of controlplane (EDC) + +- Confirm + +- Go to other company which want to participate (subscribe) + +- Login and navigate to app overview + +- Search for the app created + +- Subscribe to the app + +- Go to the app creator company + +- Navigate to the inbox of the portal + +- Click on the nav link to give approval for the company which want to subscribe + +- Enter name "EDC Provider B" + +- Enter base url of controlplane (EDC) + +- Make sure to popuplate the new client id, secrets and app id within trace-x for each company to let it run properly with the new portal configuration. + +== Company registration +https://portal.int.demo.catena-x.net/documentation[How-to] === Additional info Each instance of trace-x reflects an own company, which is associated with one BPN. -== User Registration -https://portal.int.demo.catena-x.net/documentation/[How To] +== User registration +https://portal.int.demo.catena-x.net/documentation/[How-to] === Additional info -The user registration is a self service. Each user can have one or multiple trace-x roles assigned. +The user registration is a self-service. Each user can have one or multiple Trace-X roles assigned. -== Connector Registration -https://portal.int.demo.catena-x.net/documentation/[How To] +== Connector registration +https://portal.int.demo.catena-x.net/documentation/[How-to] === Additional info -A connector in the context of trace-x is a Eclipse-Dataspace-Connector. This connector needs to be configured by the public controlplane url. +A connector in the context of trace-x is a Eclipse-Dataspace-Connector. This connector needs to be configured by the public controlplane URL. -== App Registration -https://portal.int.demo.catena-x.net/documentation/[How To] +== App registration +https://portal.int.demo.catena-x.net/documentation/[How-to] === Additional info -A connector in the context of trace-x is a Eclipse-Dataspace-Connector. This connector needs to be configured by the public controlplane url. +A connector in the context of trace-x is a Eclipse-Dataspace-Connector. This connector needs to be configured by the public controlplane URL. -== Create App Subscription -https://portal.int.demo.catena-x.net/documentation/[How To] +== Create app subscription +https://portal.int.demo.catena-x.net/documentation/[How-to] === Additional info An app subscription is necessary to be able to setup a frontend url which will be authorized through keycloak and accessible with the portal. -== Activate App Subscription -https://portal.int.demo.catena-x.net/documentation/[How To] +== Activate App subscription +https://portal.int.demo.catena-x.net/documentation/[How-to] === Additional info -The app subscription needs to be activated from all instances which want to participate in the trace-x use case. +The app subscription needs to be activated from all instances which want to participate in the Trace-X use case. -== Retrieve Wallet Configuration -https://portal.int.demo.catena-x.net/documentation/[How To] +== Retrieve wallet configuration +https://portal.int.demo.catena-x.net/documentation/[How-to] diff --git a/docs/src/docs/administration/system-overview.adoc b/docs/src/docs/administration/system-overview.adoc index bb280d32f4..2677ec8c1e 100644 --- a/docs/src/docs/administration/system-overview.adoc +++ b/docs/src/docs/administration/system-overview.adoc @@ -1,17 +1,17 @@ -= System Overview += System overview The deployment contains the components required to connect Trace-X to an existing Catena-X network. This includes: -* Trace-X Frontend -* Trace-X Backend +* Trace-X frontend +* Trace-X backend Optionally these components can be installed using the Trace-X backend Helm chart as well: -* PostgreSQL for Trace-X Backend +* PostgreSQL for Trace-X backend * pgadmin4 * IRS -* EDC Consumer +* EDC consumer Everything else needs to be provided externally. @@ -20,7 +20,7 @@ Everything else needs to be provided externally. include::../../uml-diagrams/arc42/deployment-view/level-0-int.puml[] .... -== Rights and Role matrix of Trace-X +== Rights and role matrix of Trace-X Currently, Trace-X API handles three roles: **'User'** and **'Supervisor'** and **'Admin'**: @@ -29,30 +29,22 @@ Currently, Trace-X API handles three roles: **'User'** and **'Supervisor'** and | View | View Dashboard | x | x | x | | View Parts | x | x | x | | View Other parts | x | x | x -| | View Quality investigations | x | x | x -| | View Quality alerts | x | x | x +| | View Quality notifications | x | x | x | | View Administration | | | x - -| Investigation | Create | x | x | -| | Send (Approve) | | x | -| | Read | x | x | x -| | Cancel | x | x | -| | Acknowledge | x | x | -| | Accept | x | x | -| | Decline | x | x | -| | Close | | x | - -| Alert | Create | x | x | -| | Send (Approve) | | x | -| | Read | x | x | x -| | Cancel | x | x | -| | Acknowledge | x | x | -| | Accept | x | x | -| | Decline | x | x | -| | Close | | x | - -| Administration Panel | Access "BPN EDC config panel" | | | x +| Edit | Edit Quality notifications | | x | + +| Quality notification | Create | x | x | +| | Send (Approve) | | x | +| | Read | x | x | x +| | Cancel | x | x | +| | Acknowledge | x | x | +| | Accept | x | x | +| | Decline | x | x | +| | Close | | x | + +| Administration panel | Access "BPN EDC config panel" | | | x | | Access "Registry lookup Panel" | | | x +| | Access "Data Import Interface" | | | x |=== diff --git a/docs/src/docs/arc42/architecture-constraints/index.adoc b/docs/src/docs/arc42/architecture-constraints/index.adoc index 0ca50ffe22..d6add6e7b8 100644 --- a/docs/src/docs/arc42/architecture-constraints/index.adoc +++ b/docs/src/docs/arc42/architecture-constraints/index.adoc @@ -1,67 +1,67 @@ -= Architecture Constraints += Architecture constraints -== Technical Constraints +== Technical constraints |=== |Name |Description |Interoperability -|Trace-X must use EDC together with Catena-X approved data models to guarantee interoperability between participants. +|Trace-X must use the EDC together with Catena-X approved data models to guarantee interoperability between participants. -|Data Sovereignty +|Data sovereignty |Data owners and data consumers have to use usage policies for offering, consuming and therefore transferring data. -|Kubernetes for Container Orchestration -|Catena-X requires the application to run in a Kubernetes environment, deployed via Helm Charts. +|Kubernetes for container orchestration +|Catena-X requires the application to run in a Kubernetes environment, deployed via Helm charts. -|Catena-X UUX Guidance (CX Style Guide) -|Frontend follows Catena-X wide UUX consistency according to CX Style Guide +|Catena-X UUX guidance (CX style guide) +|The frontend of Trace-X follows Catena-X-wide UUX consistency according to the CX style guide. |=== -== Organizational Constraints +== Organizational constraints |=== |Name |Description |Schedule -|Start of development in July 2022. Further development in alignment with the Foundation of the Catena-X Automotive Network e.V. requirements and timeline. +|Start of development in July 2022. Further development in alignment with the foundation of the Catena-X Automotive Network e.V. requirements and timeline. |Process model -|Iterative and incremental. SAFe Framework is used to align with Catena-X services, prerequisites, components and requirements to be Catena-X compatible. +|Iterative and incremental. The SAFe framework is used to align with Catena-X services, prerequisites, components and requirements to be Catena-X compatible. |Catena-X services / requirements |Trace-X needs to be Catena-X compliant and the application has to follow the CX standards as well as interact with the core services and components. -|Release as Open Source -|The source code, at least parts of it, are made available as open source and can be found in Github Catena-X ng as well as in Eclipse Tractus-X. +|Release as open source +|The source code - at least partially - is made available as open source and can be found in Github Catena-X ng as well as in Eclipse Tractus-X. -|Technology Readiness Level (TRL) for Products developed within the CX Consortia +|Technology Readiness Level (TRL) for products developed within the CX consortia |As Trace-X is a reference implementation, the Technology Readiness Level (TRL) must not be above TRL 8. |=== -== Political Constraints +== Political constraints |=== |Name |Description -|Open Source -|FOSS licenses approved be the Eclipse foundation have to be used. +|Open source +|FOSS licenses approved by the Eclipse foundation have to be used. |=== -== Development Conventions +== Development conventions |=== |Name |Description |Architecture documentation -|Architectural documentation of Trace-X reference application in arc42-Template terminology and structure. +|Architectural documentation of Trace-X reference application in arc42-template terminology and structure. |Language |The project language is English to ensure the best possible accessibility for all participants. Therefore, classes, methods etc. are named in English and the documentation is written in English. -|Code Coverage -|More than 80% test coverage of the complete source code +|Test coverage +|More than 80% of the complete source code has to be test covered. |=== diff --git a/docs/src/docs/arc42/building-block-view/blackbox-overall.adoc b/docs/src/docs/arc42/building-block-view/blackbox-overall.adoc index f1206ab823..f16c3c7635 100644 --- a/docs/src/docs/arc42/building-block-view/blackbox-overall.adoc +++ b/docs/src/docs/arc42/building-block-view/blackbox-overall.adoc @@ -13,15 +13,15 @@ include::../../../uml-diagrams/arc42/building-block-view/whitebox_overall.puml[] |Components |Description |IRS -|The IRS consumes relationship information across the CX-Network and builds the graph view. Within this Documentation, the focus lies on the IRS +|The IRS consumes relationship information across the CX-network and builds the graph view. Within this documentation, the focus lies on the IRS. -|EDC Consumer -|The EDC Consumer Component is there to fulfill the GAIA-X and IDSA-data sovereignty principles. The EDC Consumer consists out of a control plane and a data plane. +|EDC consumer +|The EDC consumer component is there to fulfill the GAIA-X and IDSA-data sovereignty principles. The EDC consumer consists out of a control plane and a data plane. -|EDC Provider -|The EDC Provider Component connects with EDC Consumer component and forms the endpoint for the actual exchange of data. It handles automatic contract negotiation and the subsequent exchange of data assets for connected applications. +|EDC provider +|The EDC provider component connects with EDC consumer component and forms the endpoint for the actual exchange of data. It handles automatic contract negotiation and the subsequent exchange of data assets for connected applications. -|Submodel Server -|The Submodel Server offers endpoints for requesting the Submodel aspects. +|Submodel server +|The submodel server offers endpoints for requesting the submodel aspects. |=== diff --git a/docs/src/docs/arc42/building-block-view/level-1.adoc b/docs/src/docs/arc42/building-block-view/level-1.adoc index 4cba2f908a..f30aeee10f 100644 --- a/docs/src/docs/arc42/building-block-view/level-1.adoc +++ b/docs/src/docs/arc42/building-block-view/level-1.adoc @@ -13,22 +13,22 @@ include::../../../uml-diagrams/arc42/building-block-view/building-block-view.pum |Components |Description |*Trace-X* -|Trace-X is a system allowing the user to review the parts/assets catalogue, start a quality investigations and receive quality alerts +|*Trace-X* is a system allowing the user to review the parts/assets catalogue, start a quality investigations and receive quality alerts. |*Trace-X API* -|The *Trace-X API* is the Interface over which the Data Consumer is communicating. +|The *Trace-X API* is the interface over which the data consumer is communicating. |*AssetsController* -|The *AssetsController* provides a REST Interface for retrieving the parts/assets information. +|The *AssetsController* provides a REST interface for retrieving the parts/assets information. |*DashboardController* -|The *DashboardController* provides a REST Interface for retrieving overall statistics displayed on a dashboard screen. +|The *DashboardController* provides a REST interface for retrieving overall statistics displayed on a dashboard screen. |*RegistryController* -|The *RegistryController* provides a REST Interface for retrieving the data from parts registry. +|The *RegistryController* provides a REST interface for retrieving the data from parts registry. |*ImportController* -|The *ImportController* provides a REST Interface for importing assets and publishing them in the Catena-X network. +|The *ImportController* provides a REST interface for importing assets and publishing them in the Catena-X network. |*AssetRepository* |The *AssetRepository* is a component responsible for storing and getting assets from database. @@ -37,9 +37,9 @@ include::../../../uml-diagrams/arc42/building-block-view/building-block-view.pum |The *BPNRepository* is a component which stores BPN -> company name mappings. |*NotificationsRepository* -|The *NotificationsRepository* is a component responsible for storing and holding status of sent/received notifications +|The *NotificationsRepository* is a component responsible for storing and holding status of sent/received notifications. |*Database* -|Place for storing assets, relations as well as sent/received notifications +|The *database* is a place for storing assets, relations as well as sent/received notifications. |=== diff --git a/docs/src/docs/arc42/cross-cutting/architecture-design-patterns.adoc b/docs/src/docs/arc42/cross-cutting/architecture-design-patterns.adoc index 005076459d..1031159bd4 100644 --- a/docs/src/docs/arc42/cross-cutting/architecture-design-patterns.adoc +++ b/docs/src/docs/arc42/cross-cutting/architecture-design-patterns.adoc @@ -1,23 +1,23 @@ = Architecture and design patterns -== Module / Package structure +== Module / package structure * Main domain name -** application -*** optional: subdomain name (in case of inheritance) → following same structure as main domain -*** mapper: holds the mapper of transforming domain models to response models -*** service: holds the interface for implementation in the domain package -*** rest: holds the controller for providing the api for the domain -** domain -*** optional: subdomain name (in case of inheritance) -*** model: holds the domain model -*** service: Implementation of the interface provided in the application package -*** repository: holds the interface for accessing the infrastructure package -** infrastructure -*** optional: subdomain name (in case of inheritance) -*** model: holds the technical entities -*** repository: holds the data access layer -**** e.g. JPARepository / Impl -** All models (Request / Response) used in the API should be saved in the tx-model project. +** Application +*** Optional: subdomain name (in case of inheritance) → following same structure as main domain +*** Mapper: holds the mapper of transforming domain models to response models +*** Service: holds the interface for implementation in the domain package +*** REST: holds the controller for providing the api for the domain +** Domain +*** Optional: subdomain name (in case of inheritance) +*** Model: holds the domain model +*** Service: implementation of the interface provided in the application package +*** Repository: holds the interface for accessing the infrastructure package +** Infrastructure +*** Optional: subdomain name (in case of inheritance) +*** Model: holds the technical entities +*** Repository: holds the data access layer +**** E.g. JPARepository / Impl +** All models (request / response) used in the API should be saved in the tx-model project. To be reusable for cucumber testing. diff --git a/docs/src/docs/arc42/cross-cutting/development-concepts.adoc b/docs/src/docs/arc42/cross-cutting/development-concepts.adoc index aac92ff993..f5d5d55e65 100644 --- a/docs/src/docs/arc42/cross-cutting/development-concepts.adoc +++ b/docs/src/docs/arc42/cross-cutting/development-concepts.adoc @@ -2,27 +2,27 @@ == Build, test, deploy -TraceX is built using Maven and utilizes all the standard concepts of it. +Trace-X is built using Maven and utilizes all the standard concepts of it. Test execution is part of the build process and a minimum test coverage of 80% is enforced. The project setup contains a multi-module Maven build. -Commonly used classes (like the TraceX data model) should be extracted into a separate submodule and reused across the project. +Commonly used classes (like the Trace-X data model) should be extracted into a separate submodule and reused across the project. However, this is not a "one-size-fits-all" solution. New submodules should be created with care and require a review by the team. -The Maven build alone only leads up to the JAR artifact of TraceX. -Do create Docker images, the Docker build feature is used. +The Maven build alone only leads up to the JAR artifact of Trace-X. +To create Docker images, the Docker build feature is used. This copies all resources into a builder image, builds the software and creates a final Docker image at the end that can then be deployed. Although the Docker image can be deployed in various ways, the standard solution are the provided Helm charts, which describe the required components as well. == Code generation -There are two methods of code generation in TraceX: +There are two methods of code generation in Trace-X: === Lombok -The Lombok library is heavily used to generate boilerplate code (like Constructors, Getters, Setters, Builders...). +The Lombok library is heavily used to generate boilerplate code (like constructors, getters, setters, builders...). This way, code can be written faster and this boilerplate code is excluded from test coverage, which keeps the test base lean. === Swagger / OpenAPI @@ -38,24 +38,28 @@ Data migration is handled by flyway. == Configurability -TraceX utilizes the configuration mechanism provided by Spring Boot. +Trace-X utilizes the configuration mechanism provided by Spring Boot. Configuration properties can be defined in the file `+src/main/resources/application.yml+` Other profiles should be avoided. Instead, the configuration can be overwritten using Spring's external configuration mechanism (see https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html). -The operator must have total control over the configuration of TraceX. +The operator must have total control over the configuration of Trace-X. -== Java Style Guide +== Java style guide We generally follow the link:https://google.github.io/styleguide/javaguide.html[Google Java Style Guide]. -== API Guide +== API guide -We generally follow the https://swagger.io/specification/ +We generally follow the link:https://swagger.io/specification/[OpenAPI Specification]. -== Unit and Functional Testing +== Docomentation style guide -=== General Unit testing +We generally follow the link:https://developers.google.com/style[Google developer documentation style guide]. + +== Unit and functional testing + +=== General unit testing * Code coverage >= 80% * Writing methods which provide a response to be better testable (avoid void if feasible). @@ -68,38 +72,38 @@ E.g: image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/given_when_then_pattern.png[] -=== Integration Testing +=== Integration testing -Each public api should have at least two integration tests (positive / negative). +Each public API should have at least two integration tests (positive / negative). For integration testing, the `+tx-backend/src/main/resources/application-integration.yml+` is used. Additionally, you need to have a local Docker environment running. For this, we recommend link:https://rancherdesktop.io/[Rancher Dektop]. -== Clean Code +== Clean code We follow the rules and behaviour of: https://clean-code-developer.com/. -== Secure Coding standards +== Secure coding standards -As there is no other guideline of C-X, we fix any Vulnerabilities, Exposures, Flaw detected by one of our SAST, DAST, Pentesting tools which is higher than "Very Low". +As there is no other guideline of C-X, we fix any vulnerabilities, exposures, flaw detected by one of our SAST, DAST, Pentesting tools which is higher than "Very Low". image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/vulnerability_level.png[] -== TRACE-X Technical class responsibilities +== Trace-X technical class responsibilities -=== Controllers +=== Controller -* Have only one dependency to a facade or a service or a validator annotation -* Have no own logic -* Including the swagger documentation annotations -* For each controller exists and Integration Test class +* Has only one dependency to a facade or a service or a validator annotation +* Has no own logic +* Includes the swagger documentation annotations +* Has an integration test class * Uses a static mapper to transform a domain model into the response model * Returns a ResponseEntity === Response object * Should be a public version of the domain object -* It is a result of the transformation which will be done in the facade +* Is a result of the transformation which will be done in the facade * Is not necessary if the domain object can be fully public * Is not allowed to be implemented in a repository or a DAO @@ -113,27 +117,27 @@ image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main * Responsible for retrieving data from storage * Performs business logic * Can be a http client -* Returns a jpaEntity → Domain Object +* Returns a jpaEntity → domain object * Should only be implemented in a controller through an interface === Repository -* Represents an interface to the underlying repository implementation which uses then the spring repository +* Represents an interface to the underlying repository implementation which then uses the spring repository -=== Domain Object +=== Domain object -* Mapped from an entity or external data received -* Will be used as working model until it will be finally transformed to a response object or another domain which will be later on persisted +* Mapped from an entity or from received external data +* Will be used as a working model until it will finally be transformed to a response object or another domain which will be persisted later on -=== Config Object +=== Config object -* Should have the suffix Config at the end of the class -* Including beans which are automatically created by app startup +* Should have the suffix .config at the end of the class +* Includes beans which are automatically created by app startup === Constructing objects * Using builder pattern -** Currently we are using the constructor to create objects in our application. -Main reason is probably to provide immutable objects. -** As the handling with big loaded constructors is not easy and error prune, I would recommend using the builder pattern to have a clear understanding about what we creating at the point of implementation. +** Currently, we are using the constructor to create objects in our application. +Main reason is to provide immutable objects. +** As the handling with big loaded constructors is not easy and error prone, it's recommended to use the builder pattern to have a clear understanding about what we are creating at the point of implementation. * Using lombok for annotation processing diff --git a/docs/src/docs/arc42/cross-cutting/domain-concepts.adoc b/docs/src/docs/arc42/cross-cutting/domain-concepts.adoc index 7fb3821fa6..e2e9685c61 100644 --- a/docs/src/docs/arc42/cross-cutting/domain-concepts.adoc +++ b/docs/src/docs/arc42/cross-cutting/domain-concepts.adoc @@ -1,10 +1,10 @@ = Domain concepts -== API Model +== API model For detailed information about the API model, please refer to the link:https://catenax-ng.github.io/tx-traceability-foss/docs/api-specification/api-specification.html[API specification]. -== Domain Models +== Domain models === Assets [plantuml, target=level-1, format=svg] @@ -12,7 +12,7 @@ For detailed information about the API model, please refer to the link:https://c include::../../../uml-diagrams/arc42/cross-cutting/domain-model/domain-model.puml[] .... -=== Quality Notifications +=== Quality notifications [plantuml, target=level-2, format=svg] .... include::../../../uml-diagrams/arc42/cross-cutting/domain-model/domain-model-quality-notifications.puml[] diff --git a/docs/src/docs/arc42/cross-cutting/entity-relationship-model.adoc b/docs/src/docs/arc42/cross-cutting/entity-relationship-model.adoc index bfa0ae5164..598f55935e 100644 --- a/docs/src/docs/arc42/cross-cutting/entity-relationship-model.adoc +++ b/docs/src/docs/arc42/cross-cutting/entity-relationship-model.adoc @@ -1,6 +1,6 @@ -= Entity Relationship Model += Entity-relationship model -Please be informed that the 'as-planned' version currently lacks the database relations. However, kindly maintain the Entity-Relationship Model (ERM) in its current state. +Please be informed that the 'as-planned' version currently lacks the database relations. However, kindly maintain the Entity-relationship model (ERM) in its current state. [plantuml, format=svg] .... diff --git a/docs/src/docs/arc42/cross-cutting/index.adoc b/docs/src/docs/arc42/cross-cutting/index.adoc index b99c8aaf7e..9efe86b982 100644 --- a/docs/src/docs/arc42/cross-cutting/index.adoc +++ b/docs/src/docs/arc42/cross-cutting/index.adoc @@ -1,6 +1,6 @@ = Cross-cutting concepts -- xref:entity-relationship-model.adoc[Entity Relationship Model] +- xref:entity-relationship-model.adoc[Entity-relationship model] - xref:domain-concepts.adoc[Domain concepts] - xref:safety-security.adoc[Safety and security concepts] - xref:architecture-design-patterns.adoc[Architecture and design patterns] diff --git a/docs/src/docs/arc42/cross-cutting/operational-concepts.adoc b/docs/src/docs/arc42/cross-cutting/operational-concepts.adoc index 8e026b9c91..4c541ecf70 100644 --- a/docs/src/docs/arc42/cross-cutting/operational-concepts.adoc +++ b/docs/src/docs/arc42/cross-cutting/operational-concepts.adoc @@ -4,27 +4,27 @@ === Configuration -TraceX can be configured using two mechanisms: +Trace-X can be configured using two mechanisms: ==== application.yml -If you build TraceX yourself, you can modify the application.yml config that is shipped with TraceX. +If you build Trace-X yourself, you can modify the application.yml config that is shipped with Trace-X. This file contains all possible config entries for the application. Once the Docker image has been built, these values can only be overwritten using the Spring external config mechanism (see https://docs.spring.io/spring-boot/docs/2.1.9.RELEASE/reference/html/boot-features-external-config.html), e.g. by mounting a config file in the right path or using environment variables. -==== Helm Chart +==== Helm chart -The most relevant config properties are exposed as environment variables and must be set in the Helm chart so the application can run at all. -Check the TraceX Helm chart in Git for all available variables. +The most relevant config properties are exposed as environment variables and must be set in the Helm chart for the application to be able to run. +Check the Trace-X Helm chart in Git for all available variables. == Scaling -If the number of consumers raises, TraceX can be scaled up by using more resources for the Deployment Pod. -Those resources can be used to utilize more parallel threads to handle Job execution. +If the number of consumers rises, Trace-X can be scaled up by using more resources for the deployment pod. +Those resources can be used to utilize more parallel threads to handle job execution. == Clustering -TraceX can run in clustered mode, as each running job is only present in one pod at a time. +Trace-X can run in clustered mode, as each running job is only present in one pod at a time. Note: as soon as a resume feature is implemented, this needs to be addressed here. == Logging @@ -33,4 +33,4 @@ Logs are being written directly to stdout and are picked up by the cluster manag == Monitoring -Currently, there is on monitoring supported in TraceX. +Currently, there is on monitoring supported in Trace-X. diff --git a/docs/src/docs/arc42/cross-cutting/safety-security.adoc b/docs/src/docs/arc42/cross-cutting/safety-security.adoc index afe3c3c281..0393613223 100644 --- a/docs/src/docs/arc42/cross-cutting/safety-security.adoc +++ b/docs/src/docs/arc42/cross-cutting/safety-security.adoc @@ -1,12 +1,12 @@ = Safety and security concepts -== Authentication / Authorization +== Authentication / authorization === Trace-X API -The Trace-X is secured using OAuth2.0 / Open ID Connect. +The Trace-X API is secured using OAuth2.0 / Open ID Connect. Every request to the Trace-X API requires a valid bearer token. -JWT token should also contain two claims: +The JWT token should also contain two claims: - 'bpn' which is equal to the configuration value from `API_ALLOWED_BPN` property - 'resource_access' with the specific key for C-X environments. @@ -18,7 +18,7 @@ You can have a look at the https://github.com/eclipse-tractusx/traceability-foss === Trace-X as EDC client The Trace-X accesses the Catena-X network via the EDC consumer connector. -This component requires authentication via a Verifiable Credential (VC), which is provided to the EDC via the Managed Identity Wallet. +This component requires authentication via a Verifiable Credential (VC), which is provided to the EDC via the managed identity wallet. The VC identifies and authenticates the EDC and is used to acquire access permissions for the data transferred via EDC. diff --git a/docs/src/docs/arc42/cross-cutting/under-the-hood.adoc b/docs/src/docs/arc42/cross-cutting/under-the-hood.adoc index e85bdac224..8ebcbe7445 100644 --- a/docs/src/docs/arc42/cross-cutting/under-the-hood.adoc +++ b/docs/src/docs/arc42/cross-cutting/under-the-hood.adoc @@ -2,14 +2,14 @@ == Exception and error handling -There are two types of potential errors in TraceX: +There are two types of potential errors in Trace-X: === Technical errors Technical errors occur when there is a problem with the application itself, its configuration or directly connected infrastructure, e.g. the Postgres database. Usually, the application cannot solve these problems by itself and requires some external support (manual work or automated recovery mechanisms, e.g. Kubernetes liveness probes). -These errors are printed mainly to the application log and are relevant for the healthchecks. +These errors are printed mainly to the application log and are relevant for the health-checks. === Functional errors @@ -32,7 +32,7 @@ Of course, when using only RuntimeExceptions, this is not necessary - but those ==== Central fallback exception handler -There will always be some exception that cannot be handled inside of the code correctly - or it may just have been unforeseen. +There will always be some exception that cannot be handled inside the code correctly - or it may just have been unforeseen. A central fallback exception handler is required so all problems are visible in the log and the API always returns meaningful responses. In some cases, this is as simple as a HTTP 500. diff --git a/docs/src/docs/arc42/full.adoc b/docs/src/docs/arc42/full.adoc index 127b083077..66848a6c3e 100644 --- a/docs/src/docs/arc42/full.adoc +++ b/docs/src/docs/arc42/full.adoc @@ -1,6 +1,6 @@ = Architecture documentation (arc42) -## Notice +== Notice This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). diff --git a/docs/src/docs/arc42/glossary.adoc b/docs/src/docs/arc42/glossary.adoc index 4aa9d33f6c..ed607f07d6 100644 --- a/docs/src/docs/arc42/glossary.adoc +++ b/docs/src/docs/arc42/glossary.adoc @@ -4,10 +4,10 @@ |Term |Description |Aspect -|Collection of various aspects from the Digital Twin. An aspect can, for example, bundle all information about a specific part. +|Collection of various aspects from the digital twin. An aspect can, for example, bundle all information about a specific part. |AAS -|**A**sset **A**dministration **S**hell (Industry 4.0). Is the implementation of the digital twin for Industry 4.0 and enables interoperability between different companies. +|**A**sset **A**dministration **S**hell (Industry 4.0) is the implementation of the digital twin for Industry 4.0 and enables interoperability between different companies. |BoM |**B**ill **o**f **M**aterial. BoM is a list of parts and materials that a product contains. Without them, manufacturing would not be possible. @@ -19,7 +19,7 @@ |Bill of material lifecycle of the planned entity |BPN -|**B**usiness **P**artner **N**umber. A BPN is used to identify a partner in the Catena-X network +|**B**usiness **P**artner **N**umber. A BPN is used to identify a partner in the Catena-X network. |CX |Abbreviation for Catena-X @@ -43,7 +43,7 @@ |**S**mall / **M**edium **E**nterprise |Trace-X -|Proper name of open-source software application of Catena-X Use Case Traceability +|Proper name of open-source software application of Catena-X use case traceability |UI |**U**ser **I**nterface diff --git a/docs/src/docs/arc42/introduction-goals/quality-goals.adoc b/docs/src/docs/arc42/introduction-goals/quality-goals.adoc index 1d770974ad..77a856dd76 100644 --- a/docs/src/docs/arc42/introduction-goals/quality-goals.adoc +++ b/docs/src/docs/arc42/introduction-goals/quality-goals.adoc @@ -5,17 +5,17 @@ The following table entries define overall Trace-X quality goals. The order of t |=== |Quality goal |Motivation and description -|Running reference application for Catena-X Traceability +|Running reference application for Catena-X traceability |Consume traceability data, visualize it in a state-of-the-art frontend to the user and enable the exchange of notifications. |Accessible and easy to use |Enable SMEs to large enterprises. |Cloud agnostic solution -|Trace-X is built as reference architecture and able to be run on different cloud solutions. It uses Helm, i.e. Helm charts, so that it can easily be deployed on different systems. +|Trace-X is built as a reference architecture and able to be run on different cloud solutions. It uses Helm, i.e. Helm charts, so that it can easily be deployed on different systems. |Trustworthy application -|Use the Catena-X standards as a basis to fulfill the interoperability (with commercial as well as other solutions) and data sovereignty requirements. +|Trace-X uses the Catena-X standards as a basis to fulfill the interoperability (with commercial as well as other solutions) and data sovereignty requirements. |Application reliability |The Trace-X architecture is set up so that provided part tree structures are consumed, aggregated and utilized to enable quality related actions such as notifications along the supply chain on which the costumers can rely. diff --git a/docs/src/docs/arc42/introduction-goals/requirements.adoc b/docs/src/docs/arc42/introduction-goals/requirements.adoc index 2b9b7ec4df..3d57204589 100644 --- a/docs/src/docs/arc42/introduction-goals/requirements.adoc +++ b/docs/src/docs/arc42/introduction-goals/requirements.adoc @@ -1,7 +1,7 @@ = Requirements overview == What is the purpose of the Trace-X application -* Empower all companies from SMEs to large OEMs to participate in parts traceability with an Open-Source solution to easily take part in Catena-X Traceability Use Case. +* Empower all companies from SMEs to large OEMs to participate in parts traceability with an open-source solution to easily take part in the Catena-X traceability use case. * It is a standalone application which can be self-hosted. * Display the relations of the automotive value chain based on a standardized IT model. * Overview and transparency across the supplier network enable faster intervention based on recorded events in the supply chain. @@ -11,9 +11,9 @@ * List, view and publish manufactured parts based on BoM AsBuild * List, view and publish planned parts based on BoM AsPlanned * Filter and search functionality on part views -* Show detailed information on manufactured parts from AAS description assets and Aspects -* Uses Submodels SerialPart, AssemblyPartRelationship and Batch -* List and view Supplier parts (AssemblyPartRelationship) based on BoM AsBuild lifecycle +* Show detailed information on manufactured parts from AAS description assets and aspects +* Uses submodels SerialPart, AssemblyPartRelationship and Batch +* List and view supplier parts (AssemblyPartRelationship) based on BoM AsBuild lifecycle * View parts and parts relations in a visualized parts tree * Send and receive top-down notifications (quality investigations) along the supply chain -* Compliance with Catena-X Guidelines +* Compliance with Catena-X guidelines diff --git a/docs/src/docs/arc42/introduction-goals/stakeholder.adoc b/docs/src/docs/arc42/introduction-goals/stakeholder.adoc index 302544e00e..0c73f9bc79 100644 --- a/docs/src/docs/arc42/introduction-goals/stakeholder.adoc +++ b/docs/src/docs/arc42/introduction-goals/stakeholder.adoc @@ -5,18 +5,18 @@ The following table presents the stakeholders of Trace-X and their respective in |=== |Who |Matters and concern -a|Software Developer a|* Make an impact on Catena-X by participating in open-source software. +a|Software developer a|* Make an impact on Catena-X by participating in open-source software. * Example implementation for own use cases and applications. -a|Operating Environments a|* Use Trace-X as a basis for industrialization. +a|Operating environments a|* Use Trace-X as a basis for industrialization. * Example implementation for own business applications, further features and fast ramp up. -|Catena-X Partners -a|* Take part in Traceability Use Case. +|Catena-X partners +a|* Take part in traceability use case. * See relationships in the value chain. * React on quality issues with standardized actions and notifications. -|Larger OEMs / Tiers +|Larger OEMs / tiers a|* Want to use this implementation for further development and integration into their system landscape. |SMEs diff --git a/docs/src/docs/arc42/quality/quality-scenarios.adoc b/docs/src/docs/arc42/quality/quality-scenarios.adoc index 194807350f..88d47bf973 100644 --- a/docs/src/docs/arc42/quality/quality-scenarios.adoc +++ b/docs/src/docs/arc42/quality/quality-scenarios.adoc @@ -6,25 +6,25 @@ The initial letters of the scenario identifiers (IDs) in the following table eac |ID |Scenario |M01 -|A developer with basic knowledge of the Traceability Use Case looks for an introduction to the Traceability architecture. He or she gets the idea of essential design very fast. +|A developer with basic knowledge of the traceability use case looks for an introduction to the traceability architecture. He or she gets the idea of essential design very fast. |M02 -|A senior developer looks for a reference implementation of the Traceability Use case functionalities. He or she gets it within the source code. +|A senior developer looks for a reference implementation of the traceability use case functionalities. He or she gets it within the source code. |M03 |A developer wants to implement new features. He or she is able to add it to the source code easily. |M04 -|A developer wants to implement a new Frontend or change some components. The efforts can be reduced by using the standardized API endpoints to do so. +|A developer wants to implement a new frontend or change some components. The efforts can be reduced by using the standardized API endpoints to do so. |I01 -|An user wants to switch from FOSS application to a COTS application or the other way round. This is possible since the application is interoperable with other applications within the CX network. +|A user wants to switch from FOSS application to a COTS application or the other way round. This is possible since the application is interoperable with other applications within the CX network. |F01 |The application uses the Catena-X standards to ensure the correct interoperability and exchange with other participants. |F02 -|An OEM or Tier n supplier needs more information regarding specific parts. He can mark the parts in question and send a top-down notification (Quality Investigation) to the next entity / the partner. +|An OEM or tier n supplier needs more information regarding specific parts. He can mark the parts in question and send a top-down notification (quality investigation) to the next entity / the partner. |F03 |A company wants to have more transparency and a visualized status of the supply / value chain. By using the application they are enabled to work with the structures and enable new features / functionalities. diff --git a/docs/src/docs/arc42/runtime-view/assets/return-all-assets.adoc b/docs/src/docs/arc42/runtime-view/assets/return-all-assets.adoc index 9e71b73573..2344c1e540 100644 --- a/docs/src/docs/arc42/runtime-view/assets/return-all-assets.adoc +++ b/docs/src/docs/arc42/runtime-view/assets/return-all-assets.adoc @@ -1,4 +1,4 @@ -= Scenario 1: Return Assets += Scenario 1: Return assets This section describes what happens when user lists stored assets. In this example, the user requests as built assets. @@ -11,7 +11,7 @@ include::../../../../uml-diagrams/arc42/runtime-view/assets/return-all-assets.pu == Overview -When a user requests stored assets, TraceX-FOSS checks if the user has an adequate role ('ROLE_ADMIN', 'ROLE_SUPERVISOR', 'ROLE_USER'). +When a user requests stored assets, Trace-X checks if the user has an adequate role ('ROLE_ADMIN', 'ROLE_SUPERVISOR', 'ROLE_USER'). If yes, then the endpoint returns a pageable result of assets. The returned pageable result can be empty if no suitable asset has been found. diff --git a/docs/src/docs/arc42/runtime-view/assets/return-specific-assets.adoc b/docs/src/docs/arc42/runtime-view/assets/return-specific-assets.adoc index 10511620d6..272accc053 100644 --- a/docs/src/docs/arc42/runtime-view/assets/return-specific-assets.adoc +++ b/docs/src/docs/arc42/runtime-view/assets/return-specific-assets.adoc @@ -1,4 +1,4 @@ -= Scenario 2: Return specific Assets += Scenario 2: Return specific assets This section describes what happens when user searches for a specific asset. This example shows the request of one as built asset. @@ -11,6 +11,6 @@ include::../../../../uml-diagrams/arc42/runtime-view/assets/return-specific-asse == Overview -When a user requests a specific asset, TraceX-FOSS checks if the user has an adequate role ('ROLE_ADMIN', 'ROLE_SUPERVISOR', 'ROLE_USER'). If yes, then the endpoint returns a precise Asset for the given assetId, if it is found. +When a user requests a specific asset, Trace-X checks if the user has an adequate role ('ROLE_ADMIN', 'ROLE_SUPERVISOR', 'ROLE_USER'). If yes, then the endpoint returns a precise asset for the given assetId, if it is found. If no asset has been found for the given ID, an AssetNotFoundException is thrown. diff --git a/docs/src/docs/arc42/runtime-view/data-consumption.adoc b/docs/src/docs/arc42/runtime-view/data-consumption.adoc index 764923ec18..5fc7540f9b 100644 --- a/docs/src/docs/arc42/runtime-view/data-consumption.adoc +++ b/docs/src/docs/arc42/runtime-view/data-consumption.adoc @@ -9,5 +9,5 @@ include::../../../uml-diagrams/arc42/runtime-view/data-consumption-process.puml[ == Overview -Data is fetched by a Trace-X instance using Digital Twin Registry (DTR), Item Relationship Service (IRS) and Trace-X Consumer EDC. Data has to be provided to the Catena-X network using a EDC Provider, since Trace-X is not a data provider and therefore no possibility for data provisioning with Trace-X exists. +Data is fetched by a Trace-X instance using Digital Twin Registry (DTR), Item Relationship Service (IRS) and Trace-X consumer EDC. For digital twins the Asset Administration Shell (AAS) standard is used. For fetching data with Trace-X, a Digital Twin Registry and an IRS instance are required. Data should represent parts, supplier and customer parts, parts tree / parts relations. diff --git a/docs/src/docs/arc42/runtime-view/data-provisioning.adoc b/docs/src/docs/arc42/runtime-view/data-provisioning.adoc index 01198ad925..ef9321e8e1 100644 --- a/docs/src/docs/arc42/runtime-view/data-provisioning.adoc +++ b/docs/src/docs/arc42/runtime-view/data-provisioning.adoc @@ -1,10 +1,10 @@ = Data Provisioning -This sequence diagrams describes the process of importing data from a Trace-X Dataformat +This sequence diagrams describes the process of importing data from a Trace-X dataformat -== Modul 1 +== Module 1 -Data will be imported by the Trace-X Frontend into Trace-X backend and will be persisted as asset by a Trace-X instance in a transient state. +Data will be imported by the Trace-X frontend into the Trace-X backend and will be persisted as an asset in a transient state. The raw data which is needed for the shared services (DTR / EDC) will be persisted as well. [plantuml, target=business-context_data_provisioning_1, format=svg] @@ -13,9 +13,9 @@ The raw data which is needed for the shared services (DTR / EDC) will be persist include::../../../uml-diagrams/arc42/runtime-view/data-provisioning/trace-x-data-import-interface-modul1-sequence.puml[] .... -== Modul 2 +== Module 2 -The frontend is able to select assets and publish / syncronize them with the shared services. DTR / EDC / Submodel API. +The frontend is able to select assets and publish / synchronize them with the shared services. DTR / EDC / submodel API. [plantuml, target=business-context_data_provisioning_2, format=svg] .... @@ -23,7 +23,7 @@ The frontend is able to select assets and publish / syncronize them with the sha include::../../../uml-diagrams/arc42/runtime-view/data-provisioning/trace-x-data-import-interface-modul2-sequence.puml[] .... -== Modul 3 +== Module 3 The backend is able to persist the data in the DTR / EDC and allows to use IRS for resolving assets. diff --git a/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets-error.adoc b/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets-error.adoc index cbdca45d89..94393d2c85 100644 --- a/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets-error.adoc +++ b/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets-error.adoc @@ -1,6 +1,6 @@ -= Scenario 3: Publish assets Error on EDC or DTR += Scenario 3: Publish assets - error on EDC or DTR -This section describes user interaction when publishing assets fails due to EDC or DTR error ( for example services are unavailable ) +This section describes user interaction when publishing assets fails due to EDC or DTR error (for example when the services are unavailable). [plantuml,target=publish-assets-error,format=svg] .... @@ -9,6 +9,6 @@ include::../../../../uml-diagrams/arc42/runtime-view/data-provisioning/publish-a == Overview -When a user publishes assets, TraceX-FOSS checks if the user has an adequate role ('ROLE_ADMIN'). -If yes, then endpoint starts to publish assets to network. -If any of required Services are not available or returns Error response upon executing flow assets are set to ERROR state and user can retry publishing them at any time when services are available +When a user publishes assets, Trace-X checks if the user has an adequate role ('ROLE_ADMIN'). +If yes, then the endpoint starts to publish assets to network. +If any of required services are not available or return an error response upon executing, flow assets are set to ERROR state and the user can retry publishing them at any time when services are available again. diff --git a/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets.adoc b/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets.adoc index cbfe6e61bf..c7f9ba54bd 100644 --- a/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets.adoc +++ b/docs/src/docs/arc42/runtime-view/data-provisioning/publish-assets.adoc @@ -9,5 +9,5 @@ include::../../../../uml-diagrams/arc42/runtime-view/data-provisioning/publish-a == Overview -When a user publishes assets, TraceX-FOSS checks if the user has an adequate role ('ROLE_ADMIN'). -If yes, then endpoint starts to publish assets to network. +When a user publishes assets, Trace-X checks if the user has an adequate role ('ROLE_ADMIN'). +If yes, then the endpoint starts to publish assets to network. diff --git a/docs/src/docs/arc42/runtime-view/data-provisioning/return-import-report.adoc b/docs/src/docs/arc42/runtime-view/data-provisioning/return-import-report.adoc index 963167b393..ee9f75b6be 100644 --- a/docs/src/docs/arc42/runtime-view/data-provisioning/return-import-report.adoc +++ b/docs/src/docs/arc42/runtime-view/data-provisioning/return-import-report.adoc @@ -10,7 +10,7 @@ include::../../../../uml-diagrams/arc42/runtime-view/data-provisioning/import-re == Overview -When a user requests an import report, TraceX-FOSS checks if the user has an adequate role ('ROLE_ADMIN', 'ROLE_SUPERVISOR'). +When a user requests an import report, Trace-X checks if the user has an adequate role ('ROLE_ADMIN', 'ROLE_SUPERVISOR'). If yes, then the endpoint returns an import report to the given importJobId. If the importJobId is not known to Trace-X, an HTTP 404 error is returned. diff --git a/docs/src/docs/arc42/runtime-view/data-sovereignty.adoc b/docs/src/docs/arc42/runtime-view/data-sovereignty.adoc index 3b4322d696..761f08fe31 100644 --- a/docs/src/docs/arc42/runtime-view/data-sovereignty.adoc +++ b/docs/src/docs/arc42/runtime-view/data-sovereignty.adoc @@ -1,3 +1,3 @@ -= Data Souvereignty += Data sovereignty include::data-sovereignty/return_asset_contracts.adoc[leveloffset=+1] diff --git a/docs/src/docs/arc42/runtime-view/data-sovereignty/return_asset_contracts.adoc b/docs/src/docs/arc42/runtime-view/data-sovereignty/return_asset_contracts.adoc index 078651a62a..8eeeaaeeda 100644 --- a/docs/src/docs/arc42/runtime-view/data-sovereignty/return_asset_contracts.adoc +++ b/docs/src/docs/arc42/runtime-view/data-sovereignty/return_asset_contracts.adoc @@ -1,4 +1,4 @@ -= Scenario 1: Return Asset Contract Agreements += Scenario 1: Return asset contract agreements This section describes functionality and the behavior in case a user requests contract agreements from Trace-X via the Trace-X contracts API (/contracts). diff --git a/docs/src/docs/arc42/runtime-view/full.adoc b/docs/src/docs/arc42/runtime-view/full.adoc index 3eab259c87..e020d2eae4 100644 --- a/docs/src/docs/arc42/runtime-view/full.adoc +++ b/docs/src/docs/arc42/runtime-view/full.adoc @@ -1,6 +1,6 @@ = Runtime view -This section describes the different functionalities of TraceX-FOSS application +This section describes the different functionalities of Trace-X application. include::assets.adoc[leveloffset=+1] include::notifications.adoc[leveloffset=+1] diff --git a/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-receive.adoc b/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-receive.adoc index 5c0bb02a2c..58b9a4b3a1 100644 --- a/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-receive.adoc +++ b/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-receive.adoc @@ -1,6 +1,6 @@ -= Receive Quality Notification += Receive quality notification -This sequence diagram describes the process of receiving a quality notification from another Traceability partner. +This sequence diagram describes the process of receiving a quality notification from another traceability partner. [plantuml, target=business-context_quality-investigation, format=svg] .... @@ -18,4 +18,4 @@ To enable receiving a notification by a partner you need to Trace-X implements a functionality to create the assets and their corresponding policies in the admin panel. -With the notification asset is possible to enable EDC contract negotiation and EDC data transfer based on access policies defined. Only if the sender is able to browse the asset in the catalog offer and perform a successful contract negotiation there will be the possibility to push a notification to the specified http endpoint on the receiver side. +With the notification asset it is possible to enable EDC contract negotiation and EDC data transfer based on access policies defined. Only if the sender is able to find the asset in the catalog offer and perform a successful contract negotiation there will be the possibility to push a notification to the specified http endpoint on the receiver side. diff --git a/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-send.adoc b/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-send.adoc index fbeec29fb0..43cd666bd7 100644 --- a/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-send.adoc +++ b/docs/src/docs/arc42/runtime-view/notifications/quality-investigation-send.adoc @@ -1,6 +1,6 @@ -= Send Quality Notification += Send quality notification -This sequence diagram describes the process of sending a quality notification between Traceability applications. +This sequence diagram describes the process of sending a quality notification between traceability applications. [plantuml, target=business-context_quality-investigation_send, format=svg] .... @@ -16,6 +16,6 @@ To enable sending respective more precisely receiving a notification by a partne * Create EDC usage policies * Create EDC contract definitions -Trace-X implements a functionality to create the assets and their corresponding policies in the admin panel. With the notification asset is possible to enable EDC contract negotiation and EDC data transfer process so that the quality investigation can be pushed by the sender. +Trace-X implements a functionality to create the assets and their corresponding policies in the admin panel. With the notification asset it is possible to enable EDC contract negotiation and EDC data transfer process so that the quality investigation can be pushed by the sender. -In the above UML sequence diagram the sending of quality notifications from Trace-X to a receiver (any other Traceability application) is described. +In the above UML sequence diagram the sending of quality notifications from Trace-X to a receiver (any other traceability application) is described. diff --git a/docs/src/docs/arc42/runtime-view/policies.adoc b/docs/src/docs/arc42/runtime-view/policies.adoc index d1fc5171b8..9bff992ca7 100644 --- a/docs/src/docs/arc42/runtime-view/policies.adoc +++ b/docs/src/docs/arc42/runtime-view/policies.adoc @@ -2,12 +2,12 @@ == Overview -=== Scenario 1: Startup interaction with IRS Policy Store +=== Scenario 1: Startup interaction with the IRS policy store The Trace-X instance defines a constraint which is required for data consumption and provisioning. Trace-X retrieves all policies by IRS and validates if one of the policies contains the required constraint given by Trace-X. If a policy with the constraint exists and is valid, the process ends. If the policy is not valid, it will create one with the given constraint. -This sequence diagram describes the process of retrieving or creating policies within the IRS Policy Store based on the constraint given by Trace-X. +This sequence diagram describes the process of retrieving or creating policies within the IRS policy store based on the constraint given by Trace-X. [plantuml, target=policy-startup-configuration, format=svg] .... @@ -18,7 +18,7 @@ include::../../../uml-diagrams/arc42/runtime-view/policies/policy-startup-config The Trace-X instance uses the policy which includes the defined constraint and transforms it into a valid EDC policy request. The EDC policy request will be used for creating a policy for the required notification contracts. -This sequence diagram describes the process of retrieving the correct policy by IRS Policy Store based on the constraint given by Trace-X and reuses it for creating an EDC policy. +This sequence diagram describes the process of retrieving the correct policy by IRS policy store based on the constraint given by Trace-X and reuses it for creating an EDC policy. [plantuml, target=policy-startup-notification-contract, format=svg] .... diff --git a/docs/src/docs/arc42/runtime-view/scheduler/scheduler.adoc b/docs/src/docs/arc42/runtime-view/scheduler/scheduler.adoc index c955419842..d05b60c6f1 100644 --- a/docs/src/docs/arc42/runtime-view/scheduler/scheduler.adoc +++ b/docs/src/docs/arc42/runtime-view/scheduler/scheduler.adoc @@ -2,7 +2,7 @@ An overview of the scheduler tasks configured in the system. [options="header"] |=== -|Scheduler Name | Execution Interval | Description +|Scheduler name | Execution interval | Description |PublishAssetsJob | Every hour at 30min | Publishes assets in IN_SYNCHRONIZATION state to core services. The process combines 'as-built' and 'as-planned' assets and initiates their publication for synchronization in the traceability system. |AssetsRefreshJob | Every 2 hours | Invokes the synchronization of asset shell descriptors with the decentralized registry. It ensures the latest asset information is fetched and updated in the system from external sources. |=== diff --git a/docs/src/docs/arc42/scope-context/business-context.adoc b/docs/src/docs/arc42/scope-context/business-context.adoc index e3b0f19094..92787c696b 100644 --- a/docs/src/docs/arc42/scope-context/business-context.adoc +++ b/docs/src/docs/arc42/scope-context/business-context.adoc @@ -1,6 +1,6 @@ = Business context -Trace-X exchanges data with any other Traceability applications within the CX ecosystem. This is implemented by integrating the service into the CX network and the usage of required central components and services provided by CX. +Trace-X exchanges data with any other traceability applications within the CX ecosystem. This is implemented by integrating the service into the CX network and the usage of required central components and services provided by CX. [plantuml, target=business-context, format=svg] .... @@ -8,13 +8,13 @@ include::../../../uml-diagrams/arc42/scope-context/business-context/business-con .... == User -Trace-X can be deployed, hosted and run by every party that is part of the Catena-X network. They need to be registered, have a BPN, technical user as well as provide valid credentials. An end-user in Trace-X can have roles provided by the CX Portal (User, Supervisor, Admin). As a prerequisite for Trace-X, valid data must already be provided to CX network since Trace-X only consumes data but has no import interface or data provisioning functionality. +Trace-X can be deployed, hosted and run by every party that is part of the Catena-X network. They need to be registered, have a BPN and a technical user as well as provide valid credentials. An end-user in Trace-X can have roles provided by the CX portal (user, supervisor, admin). == IRS -Item Relationship Service is the component that is used by Trace-X to fetch the data chains from Catena-X network. Data that is provided by IRS gets extracted, aggregated, transformed and is used for further actions in Trace-X. Further information can be found in the https://eclipse-tractusx.github.io/item-relationship-service/docs/arc42/[IRS architecture documentation (arc42)]. +The Item Relationship Service is the component that is used by Trace-X to fetch data chains from Catena-X network. Data that is provided by IRS gets extracted, aggregated, transformed and is used for further actions in Trace-X. Further information can be found in the https://eclipse-tractusx.github.io/item-relationship-service/docs/arc42/[IRS architecture documentation (arc42)]. == Catena-X network -Trace-X and IRS are retrieving necessary information and data from the Catena-X network (Users, digital twins, aspects, submodels, Business Partner information). If CX services are unavailable, Trace-X will not be able to perform most of its work. +Trace-X and IRS are retrieving necessary information and data from the Catena-X network (users, digital twins, aspects, submodels, business partner information). If CX services are unavailable, Trace-X will not be able to perform most of its work. -== Any other Traceability App -Trace-X interacts with any other Traceability app using the CX standards. This enables sovereign data exchange as well as receiving and sending notifications to interact between different parties. +== Any other traceability app +Trace-X interacts with any other traceability app using the CX standards. This enables sovereign data exchange as well as receiving and sending notifications to interact between different parties. diff --git a/docs/src/docs/arc42/scope-context/index.adoc b/docs/src/docs/arc42/scope-context/index.adoc index b6892add58..60735c7f5c 100644 --- a/docs/src/docs/arc42/scope-context/index.adoc +++ b/docs/src/docs/arc42/scope-context/index.adoc @@ -1,6 +1,6 @@ = System scope and context -Trace-X is an end user application to visualize and utilize data provided to the Catena-X network. This includes the traceability of manufactured parts and batches as well as the shipped and supplied components. To utilize the CX open ecosystem it is necessary to exchange information on serialized parts and batches with supply chain partners in a standardized, data sovereign and interoperable way. This section describes the environment of Trace-X, its intended users and which systems and components it interacts with. +Trace-X is an end-user application to visualize and utilize data provided to the Catena-X network. This includes the traceability of manufactured parts and batches as well as the shipped and supplied components. To utilize the CX open ecosystem it is necessary to exchange information on serialized parts and batches with supply chain partners in a standardized, data-sovereign and interoperable way. This section describes the environment of Trace-X, its intended users and which systems and components it interacts with. include::business-context.adoc[leveloffset=+1] diff --git a/docs/src/docs/arc42/scope-context/technical-context.adoc b/docs/src/docs/arc42/scope-context/technical-context.adoc index f109612a44..2ff117e9dc 100644 --- a/docs/src/docs/arc42/scope-context/technical-context.adoc +++ b/docs/src/docs/arc42/scope-context/technical-context.adoc @@ -3,15 +3,14 @@ == Component overview === Trace-X API -We provide a REST API that is consumed by Trace-X frontend in order to deliver Trace-X related features such as quality-investigations or assets chain visibility. -Since Trace-X component is a very last component in the Catena-X ecosystem we are mostly depend on the other services and theirs APIs in other to deliver desired functionalities. The development of the services is not a part of the Trace-X application and each of the system that we utilize exposes REST API that we consume and interact directly. +We provide a REST API that is consumed by Trace-X frontend in order to deliver Trace-X related features such as quality investigations or asset chain visibility. +Since the Trace-X component is the very last component in the Catena-X ecosystem we are mostly dependent on the other services and theirs APIs in other to deliver desired functionalities. The development of the services is not a part of the Trace-X application and each of the system that we utilize exposes a REST API that we consume and interact with directly. -Trace-X is a Spring Boot based application and is secured with the OpenID connector provider Keycloak and the OAuth2. This means for the company that utilize Trace-X component -it is required to obtain technical user in order to be authorized to get access to the external components within Catena-X ecosystem. +Trace-X is a Spring Boot based application and is secured with the OpenID connector provider Keycloak and the OAuth2. This means for the companies, that utilize Trace-X component, it is required to obtain a technical user in order to be authorized to get access to the external components within Catena-X ecosystem. -In order to use Trace-X frontend with Trace-X backend, users need to authenticate themselves in order to be authorized to get access to the Trace-X. -By the frontend UI users provide valid credentials and the system generates a bearer token that it gets from Keycloak and attaches it to the HTTP header parameter Authorization. -Then once a user is authorized and has proper role within Trace-X backend, the backend delegates HTTP calls to specific service in their behalf as technical user in order to fulfill specific functionality. +In order to use the Trace-X frontend with the Trace-X backend, users need to authenticate themselves in order to be authorized to get access to the Trace-X. +In the frontend UI users provide valid credentials and the system generates a bearer token that it gets from Keycloak and attaches it to the HTTP header parameter Authorization. +Once a user is authorized and has a proper role in the Trace-X backend, the backend delegates HTTP calls to specific services on their behalf as technical user in order to fulfill specific functionalities. === [Outdated] Registry API @@ -20,9 +19,9 @@ Then once a user is authorized and has proper role within Trace-X backend, the b include::../../../uml-diagrams/arc42/scope-context/technical-context/aas-api-view.puml[] .... - -The Trace-X acts as a consumer of the Asset Administration Shell Registry component. The Trace-X contains a Restful client (REST template) that build a REST call to the mentioned Digital Twin Registry API based on its known URL (the AAS registry URL is configurable in the Trace-X). -Requests contain "assetIds" provided by the component during assets synchronization. Like described in the above section, the security aspect is required in order to achieve a REST call against the AAS Registry. As a response, the Trace-X gets the corresponding shells and shell descriptors utilized then later for assets synchronization. The HTTP(s) transport protocol is used for the REST call communication. +The Trace-X acts as a consumer of the asset administration shell registry component. Trace-X contains a restful client (REST template) that builds a REST call to the mentioned digital twin registry API based on its known URL (the AAS registry URL is configurable in Trace-X). +Requests contain "assetIds" provided by the component during asset synchronization. Like described in the above section, the security aspect is required in order to achieve a REST call against the AAS Registry. As a response, Trace-X gets the corresponding shells and shell descriptors utilized later for asset synchronization. +The HTTP(s) transport protocol is used for the REST call communication. === IRS API @@ -31,8 +30,9 @@ Requests contain "assetIds" provided by the component during assets synchronizat include::../../../uml-diagrams/arc42/scope-context/technical-context/irs-api-view.puml[] .... -The Trace-X acts as a consumer of the IRS component. The Trace-X contains a Restful client (REST template) that build a REST call to the mentioned IRS API based on its known URL (the IRS URL is configurable in the Trace-X). -Request contains details required to start IRS fetch job provided by the component during assets synchronization. Like described in the above section, the security aspect is required in order to achieve a REST call against the IRS. As a response, the Trace-X gets the created job id and periodically pulls for the job details that contains assets that will be uploaded to the system. And as mentioned above, the transport protocol HTTP(S) is used for the REST call communication. +Trace-X acts as a consumer of the IRS component. Trace-X contains a restful client (REST template) that build a REST call to the mentioned IRS API based on its known URL (the IRS URL is configurable in Trace-X). +The request contains details required to start an IRS fetch job provided by the component during asset synchronization. Like described in the above section, the security aspect is required in order to achieve a REST call against the IRS. As a response, Trace-X gets the created job id and periodically pulls for the job details that contains assets that will be uploaded to the system. +As mentioned above, the transport protocol HTTP(S) is used for the REST call communication. === [Outdated] Portal API @@ -41,10 +41,10 @@ Request contains details required to start IRS fetch job provided by the compone include::../../../uml-diagrams/arc42/scope-context/technical-context/portal-api-view.puml[] .... -The Trace-X acts as a consumer of the Portal component. -The Trace-X contains a Restful client (REST template) that builds a REST call to the mentioned Portal API based on its known URL (the Portal URL is configurable in the Trace-X). -The Portal is used to authenticate users and requests against the backend. -And as mentioned above, the transport protocol HTTP(S) is used for the REST call communication. +Trace-X acts as a consumer of the portal component. +Trace-X contains a restful client (REST template) that builds a REST call to the mentioned Portal API based on its known URL (the Portal URL is configurable in Trace-X). +The portal is used to authenticate users and requests against the backend. +As mentioned above, the transport protocol HTTP(S) is used for the REST call communication. === [Outdated] EDC API @@ -54,7 +54,7 @@ include::../../../uml-diagrams/arc42/scope-context/technical-context/edc-api-vie .... The Trace-X acts as a consumer and provider of the EDC component. -In Trace-X we communicate with EDC directly only for the sake of fulfilling quality-investigation functionality. +In Trace-X we communicate with EDC directly only for the sake of fulfilling quality investigation functionality. Specific use cases can be viewed in xref:../runtime-view/index.adoc[Runtime view] section. -For these purposes the integrated EDC clients in the Trace-X are responsible for creating restful requests to the EDC component. -And as mentioned above, the transport protocol HTTP(S) is used for the REST call communication. +For these purposes the integrated EDC clients in Trace-X are responsible for creating restful requests to the EDC component. +As mentioned above, the transport protocol HTTP(S) is used for the REST call communication. diff --git a/docs/src/docs/arc42/solution-strategy/introduction.adoc b/docs/src/docs/arc42/solution-strategy/introduction.adoc index 32ca68c60d..d54a64bbda 100644 --- a/docs/src/docs/arc42/solution-strategy/introduction.adoc +++ b/docs/src/docs/arc42/solution-strategy/introduction.adoc @@ -5,20 +5,20 @@ Following table describes the quality goals of Trace-X (see chapter quality goal |=== |Quality goal |Matching approaches in the solution -|Running reference application for Catena-X Traceability -a|* Published open source, Trace-X application can be used as a reference by anyone. +|Running reference application for Catena-X traceability +a|* Published open-source, Trace-X application can be used as a reference by anyone. |Accessible and easy to use a|* Established programming languages are used. -* Backend written in Java +* Backend written in Java. * Frontend written in Typescript based on the Angular framework. |Cloud agnostic solution -a|* Helm charts to support the deployment of the application in a Kubernetes environment +a|* Helm charts to support the deployment of the application in a Kubernetes environment. |Application reliability -a|* Data source is the Catena-X notwork. Data is fetched with IRS directly from the data owner and the Digital Twin Registry of CX. -* Trace-X can be hosted decentralized since it is an open source reference implementation. +a|* Data source is the Catena-X network. Data is fetched with IRS directly from the data owner and the digital twin registry of CX. +* Trace-X can be hosted decentralized since it is an open-source reference implementation. |Security a|* Static Application Security Testing (SAST) and Dynamic Application Security Testing (DAST) are executed automatically and regularly with tools as part of the pipeline. diff --git a/docs/src/docs/arc42/solution-strategy/structure.adoc b/docs/src/docs/arc42/solution-strategy/structure.adoc index e9f81a699a..5b4f967231 100644 --- a/docs/src/docs/arc42/solution-strategy/structure.adoc +++ b/docs/src/docs/arc42/solution-strategy/structure.adoc @@ -1,11 +1,11 @@ = Structure -Trace-X is divided into two components: Frontend and Backend. +Trace-X is divided into two components: frontend and backend. It roughly can be broken down into the following parts: -* Asset controllers to get the asset information +* Asset controllers to get asset information * Dashboard controller to get dashboard related summed up information -* Registry controller to fetch assets from the Digital Twin Registry +* Registry controller to fetch assets from the digital twin registry * Notification controller to get notification information and create EDC notification offers * Submodel controller for providing asset data functionality * Import controller for importing Trace-X data for data provisioning @@ -15,5 +15,5 @@ It roughly can be broken down into the following parts: * Policy controller to retrieve information about policies * BPN controller to retrieve information about business partners -The backend does a request to the Digital Twin Registry utilizing the Registry controller. Extracted data from the response is made available through the Asset controller and the Dashboard controller to the Frontend. +The backend does a request to the digital twin registry utilizing the registry controller. Extracted data from the response is made available through the asset controller and the dashboard controller to the frontend. diff --git a/docs/src/docs/arc42/solution-strategy/technology.adoc b/docs/src/docs/arc42/solution-strategy/technology.adoc index df79c5b8ce..a394db0b2b 100644 --- a/docs/src/docs/arc42/solution-strategy/technology.adoc +++ b/docs/src/docs/arc42/solution-strategy/technology.adoc @@ -1,9 +1,9 @@ = Technology -Trace-X is developed using Java and the Spring Boot framework for the Backend and Typescript based on the Angular framework for the Frontend. This decision was taken due to the support of the frameworks as well as technical knowledge of the team members. +Trace-X is developed using Java and the Spring Boot framework for the backend and Typescript based on the Angular framework for the frontend. This decision was taken due to the support of the frameworks as well as technical knowledge of the team members. The application can be hosted using Docker and Kubernetes. This is commonly used and widespread. With this the application has no vendor lock in regarding the hosting provider. -The communication between Frontend and Backend is done using REST APIs. This is the standard method in the Catena-X landscape and makes the application components easy to use for any third party client. +The communication between frontend and backend is done using REST APIs. This is the standard method in the Catena-X landscape and makes the application components easy to use for any third party client. -As the database to store parts information etc. PostgreSQL Database is used. +For the database PostgreSQL is used. diff --git a/docs/src/docs/arc42/trace-x-data-import-interface/data-import-interface.adoc b/docs/src/docs/arc42/trace-x-data-import-interface/data-import-interface.adoc index bb42468080..1cd08d0ed0 100644 --- a/docs/src/docs/arc42/trace-x-data-import-interface/data-import-interface.adoc +++ b/docs/src/docs/arc42/trace-x-data-import-interface/data-import-interface.adoc @@ -1,12 +1,12 @@ -= Concept for Trace-X Data Import interface (Data Provider) += Concept for Trace-X data import interface (data provider) -Modul 1 +Module 1 [plantuml, target=modul1-sequence, format=svg] .... include::../../../uml-diagrams/arc42/trace-x-data-import-interface/trace-x-data-import-interface-modul1-sequence.puml[] .... -Modul 2 +Module 2 [plantuml, target=modul2-sequence, format=svg] .... include::../../../uml-diagrams/arc42/trace-x-data-import-interface/trace-x-data-import-interface-modul2-sequence.puml[] @@ -17,7 +17,7 @@ include::../../../uml-diagrams/arc42/trace-x-data-import-interface/trace-x-data- include::../../../uml-diagrams/arc42/trace-x-data-import-interface/trace-x-data-import-interface-modul2-swimlane.puml[] .... -Modul 3 +Module 3 [plantuml, target=modul3-sequence, format=svg] .... include::../../../uml-diagrams/arc42/trace-x-data-import-interface/trace-x-data-import-interface-modul3-sequence.puml[] diff --git a/docs/src/docs/index.adoc b/docs/src/docs/index.adoc index a28b38344a..9aa1735330 100644 --- a/docs/src/docs/index.adoc +++ b/docs/src/docs/index.adoc @@ -1,7 +1,7 @@ -# Trace-X Documentation += Trace-X documentation -## Notice +== Notice This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LICENSE-2.0). @@ -15,18 +15,18 @@ This work is licensed under the [Apache-2.0](https://www.apache.org/licenses/LIC * Source URL: https://github.com/eclipse-tractusx/traceability-foss -## Administration Guide -xref:administration/administration-guide.adoc[Administration Guide] +== Administration guide +xref:administration/administration-guide.adoc[Administration guide] -## Users Manual +== User manual -xref:user/user-manual.adoc[Users Manual] +xref:user/user-manual.adoc[User manual] -## API-Documentation +== API documentation xref:api-specification/api-specification.adoc[OpenApi specification] -## Architecture Documentation (arc42) +== Architecture documentation (arc42) - xref:arc42/index.adoc[Single chapters] - xref:arc42/full.adoc[Full document] diff --git a/docs/src/docs/user/user-manual.adoc b/docs/src/docs/user/user-manual.adoc index d5aa9ae38f..bbea356c33 100644 --- a/docs/src/docs/user/user-manual.adoc +++ b/docs/src/docs/user/user-manual.adoc @@ -66,23 +66,14 @@ image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main Provides a fast overview about the amount of manufactured and supplied / customer (other) parts and batches, as well as the amount of open investigations and alerts. Lists the five newest quality investigations and alerts to get an overview of the current state. -image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/dashboard.png[] - === Parts -Navigates to the own manufactured parts and batches list view. - -=== Other parts - -Navigates to the supplier and customer parts and batches list view. - -=== Quality investigation +Navigates to the parts and batches list view. -Navigates to the inbox and outgoing investigations. +=== Quality topics -=== Quality alert +Navigates to the inbox of (sent/received) quality notifications. -Navigates to the inbox and outgoing alerts. === About @@ -154,20 +145,21 @@ Supported languages: == Parts -List view of the own manufactured (asBuilt) or planned (asPlanned) parts and batches. -You can adjust the view of tables by activating/deactivating the tables. +List view of the own manufactured (asBuilt) or planned (asPlanned) parts and batches as well as supplier/customer parts. +You can adjust the view of tables by clicking on the fullscreen icon to maximize or minimize the view to the half of the full width. image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/parts-list-view.png[] === Parts table A table view split into the different BOM lifecycle phases (AsBuilt / AsPlanned) of a part. By default, both tables are displayed. -Adjustment of the view of tables can be done by activating/deactivating the tables via the buttons „AS BUILT“ and „AS PLANNED“. +Adjustment of the view of tables can be done by activating/deactivating the fullscreen width of the tables. Between the views, there is a slider to adjust the view to make either the left or the right table more visible. -Alternatively, you can use the view toggle to adjust the visibility of the tables. Both tables can be sorted, filtered, and searched. + +Pre-filtration buttons can be toggled to only show own/supplier/customer parts in the table. The global search bar at the top returns part results from both tables. Choosing the filter input field for any column and typing in any character will show filter suggestions. @@ -188,14 +180,17 @@ Gives detailed information on the assets registered in the Digital Twin Registry This includes data based on the aspect models of use case traceability: AsPlanned, SerialPart, Batch. Parts that have a quality alert are highlighted yellow. -=== Parts selection -> Create quality alert +=== Create quality notification from parts Select one or multiple child components/parts/batches that are built into your part. -Selection will enable you to create a quality alert (notification) to your customers. For this action, a button appears at the top right of the table as soon as an asset has been selected. -The quality alert will be added to a queue (queued & requested inbox) and not directly sent to the customers. +Selection will enable you to create a quality notification to customers (alert) or to suppliers (investigation) . For this action, click on the corresponding icon on the top left of a parts table. +The quality notification will be added to a queue (quality notifications) and not directly sent to the customer/supplier. +It is also possible to create a quality notification without the selection of parts. Once the quality alert is created you will get a pop-up and can directly navigate to the inbox for further action. +Parts which exist in a quality notification will be highlighted as a yellow colored row in the parts table. + === Parts selection -> Publish assets Select one or multiple parts that are in the AsBuilt lifecycle. A button will appear on the right of the lifecycle view selection: @@ -235,7 +230,7 @@ The following table explains the different import state an asset can have: On the right upper site of a table there is a settings icon in which you can set the table columns to a desired view. With a click on it a dialog opens where you can change the settings of the corresponding table: -image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/table-settings-dialog.png[] +image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/other-parts-table-settings-dialog.png[] Hide/show table columns by clicking on the checkbox or the column name. It is possible to hide/show all columns by clicking on the "All" - checkbox. @@ -250,7 +245,7 @@ If you want to discard your changes, press the "ESC" - button, click anywhere el The settings will be stored in the local storage of the browser and will be persisted until they get deleted. -=== Part details +=== Own Part details To open the detail view, click on the three dots icon of the desired item and select "View details". More detailed information on the asset is listed as well as a part tree that visually shows the parts relations. @@ -303,82 +298,9 @@ By clicking on the "publish" icon, you can publish the currently opened part fro a tooltip will provide information explaining the reason. You can trigger the tooltip by hovering above the button - -== Other parts - -List view of the supplied/delivered parts and batches (Supplier parts / Customer parts). -You can adjust the view of tables by activating/deactivating the tables. - -image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/other-parts-list-view.png[] - -=== Other parts table - -A table view split into the different BOM lifecycle phases (AsBuilt / AsPlanned) of a part. By default, both tables are displayed. -Adjustment of the view of tables can be done by activating/deactivating the tables via the buttons „AS BUILT“ and „AS PLANNED“. - -Between the views, there is a slider to adjust the view to make either the left or the right table more visible. -Alternatively, you can use the view toggle to adjust the visibility of the tables. - -Additionally, it's possible to switch between tabs above each of the table views to display either supplier or customer parts. - -Both tables can be sorted, filtered and searched. The global search bar at the top returns other part results from both tables. - -Choosing the filter input field for any column and typing in any character will show filter suggestions. - -image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/other-parts-autosuggestion-filtering.png[] - -=== AsBuilt lifecycle - -List view of other parts with AsBuilt lifecycle. -Gives detailed information on the assets registered in the Digital Twin Registry of Catena-X for all connected companies. -This includes data based on the aspect models of use case traceability: AsBuilt, -SerialPart, Batch. -Parts that have a quality notification are highlighted yellow. - -=== AsPlanned lifecycle - -List view of other parts with AsPlanned lifecycle. -Gives detailed information on the assets registered in the Digital Twin Registry of Catena-X for all connected companies. -This includes data based on the aspect models of use case traceability: AsPlanned, -SerialPart, Batch. -Parts that have a quality notification are highlighted yellow. - -=== Table column settings - -On the right upper site of a table there is a settings icon in which you can set the table columns to a desired view. -With a click on it a dialog opens where you can change the settings of the corresponding table: - -image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/table-settings-dialog.png[] - -Hide/show table columns by clicking on the checkbox or the column name. -It is possible to hide/show all columns by clicking on the "All" - checkbox. - -The reset icon resets the table columns to its default view. - -Reorder the table columns by selecting a list item (click on the right of the column name). -By selecting the column, you can reorder it with the up and down arrow icons to move it in the front or back of other columns. - -Apply your changes by clicking on the "Save" - button. -If you want to discard your changes, press the "ESC" - button, click anywhere else except in the dialog or close it explicitly with the close icon on the upper right of the dialog. - -The settings will be stored in the local storage of the browser and will be persisted until they get deleted. - -=== Supplier parts - -List view of supplied parts and batches. -Supplier parts that have a quality investigation are highlighted yellow. - -==== Supplier parts select / Quality investigation - -Select one or multiple supplier parts. -Selection will enable you to create a quality investigation (notification) to your supplier. -The quality investigation will be added to a queue (queued & requested inbox) and not directly be sent to the supplier. - -Once the quality investigation is created you will get a pop-up and can directly navigate to the inbox for further action. - === Supplier part details -To open the detail view, click on the three dots icon of the desired item and select "View details". +To open the detail view, click on the three dots icon of the desired item from the parts table and select "View details". More detailed information on the asset is listed. image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/supplier-parts-list-detailed-view.png[] @@ -411,34 +333,34 @@ image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main ==== Overview General production information. -Information on the quality status of the supplier part/batch. +Information on the quality status of the customer part/batch. ==== Manufacturer data -Detailed information on the IDs for the supplier part/batch. +Detailed information on the IDs for the customer part/batch. ==== Customer data Information about the identifiers at the customer for the respective part/batch. -== Quality investigation +== Quality notifications -Inbox for received quality investigations and "Queued & Requested" inbox for outgoing draft as well as already sent investigations. +Inbox for received/sent quality notifications. image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/investigations-list-view.png[] -The tables can be sorted, filtered and searched. The global search bar at the top returns other part results from both tables. +The tables can be sorted, filtered and searched. Choosing the filter input field for any column and typing in any character will show filter suggestions. image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/investigations-autosuggestion-filtering.png[] -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-drafts.png[] Received investigations. +image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-drafts.png[] Received quality notifications. -Investigations received by a customer. +Quality notifications received by a customer. Those notifications specify a defect or request to investigate on a specific part / batch on your side and give feedback to the customer. -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-send.png[] Queued & Requested investigations. +image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-send.png[] Sent quality notifications. Notifications in the context of quality investigations that are in queued/draft status or already requested/sent to the supplier. Those notifications specify a defect or request to investigate on a specific part / batch on your suppliers side and give feedback back to you. @@ -446,191 +368,121 @@ Those notifications specify a defect or request to investigate on a specific par * Queued status: Quality investigation is created but not yet released. * Requested status: Quality investigation is sent to the supplier. -=== Quality investigation context action - -Select the three dots icon on the right side of an investigation entry to open the context menu. -From there it is possible to open the investigation detailed view or change the status of an investigation. -Only the possible status transition will show up. - -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-context-action.png[] - -Changing the status of an investigation will open a modal in which the details to the status change can be provided and completed. - -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/investigation-context-action-modal.png[] - -A pop-up will notify you if the status transition was successful. - -=== Quality investigation detail view - -The investigation detail view can be opened by selecting the corresponding option in the context menu. +=== Create a new quality notification -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/investigation-detail-view.png[] - -==== Overview - -General information about the notification. - -==== Affected Parts - -Listed parts that are assigned to the selected alert. - -==== Supplier parts - -Detailed information for child parts assigned to a notification - -==== Message History - -Displays all state transitions including the reason/description of the transition that were done on the notification to get an overview of the correspondence between sender and receiver. - -==== Quality investigation action - -All possible state transitions are displayed in form of buttons (upper right corner). -There the desired action can be selected to open a modal in which the details to the status change can be provided and completed. - -=== Quality investigation status - -Following status for a quality investigation (notification) are possible: - -|=== -|Status |Description - -|Queued -|A quality investigation that was created by a user but not yet sent to the receiver. - -|Requested -|Created quality investigation that is already sent to the receiver. - -|Cancelled -|Created quality investigation that is not yet sent to the receiver and got cancelled on sender side before doing so. It is no longer valid / necessary. - -|Received -|Received notification from a sender which needs to be investigated. - -|Acknowledged -|The receiver acknowledged to work on the received inquiry. +By clicking the announcement icon in the upper left corner of the table, you will be navigated to the notification creation view, in where you can start a quality notification from blank. -|Accepted -|The receiver accepted the inquiry. Issue on part/batch detected. +=== Table Actions -|Declined -|The receiver declined the inquiry. No issue on part/batch detected. +Similar to the parts table, the inbox provide a variety on actions you can apply to the listed notifications. +Some actions are related to a single notification, while other can be executed on multiple notifications at a time. -|Closed -|The sender closed the quality investigation and no further handling with it is possible. -|=== +==== Actions on a single notification -=== Quality investigation status flow +Through a click on the three dots on the right of a notification list row you open the menu actions, which you can choose from. +Generally, there are the actions to edit the notification (if it's not sent yet) or view details about it. +Additionally, there are the options to apply action alongside the lifecycle of a quality notification. -Notifications always have a status. -The transition from one status to a subsequent status is described in the below state model. +==== Actions on multiple notifications -The Sender can change the status to closed from any status. -The receiver can never change the status to closed. +Notifications can be selected with the checkboxes on the left of the table. +With the selection, there is a context menu for actions on mulitple (selected) notifications. +The "more" menu is opened by clicking on the horizontally aligned three dots icon. -The legend in the below state diagram describes who can set the status. -One exception to this rule: the transition from status SENT to status RECEIVED is done automatically once the sender receives the Http status code 201. +image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/inbox-multiselect-actions.png[] -image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notificationstatemodel.png[Notification state model] +=== Quality notification create/edit view -== Quality alert +A quality notification can be started by the following options: +- Part detail view if a part has child elements an quality notification with type INVESTIGATION can be created. +- Part table if parts are selected an quality notification with type ALERT can be created. +- Other parts table if parts are selected an quality notification with type INVESTIGATION can be created. -Inbox for received quality alerts and "Queued & Requested" inbox for outgoing draft as well as already sent alerts. +A quality notification can be edited by clicking on the context menu on an item within the inbox. -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/alerts-list-view.png[] +image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/investigation-create-view.png[] -The tables can be sorted, filtered and searched. Choosing filter input field for column and typing in any character will show filter suggestions that can be used for search functionality that starts with given characters or phrase. -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/alerts-autosuggestion-filtering.png[] +=== Quality notifications context action -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-drafts.png[] Received alerts. - -Alerts received by a supplier. -Those notifications specify a defect or request to informed on a specific part / batch on your side to be informed and give feedback to the supplier. - -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-send.png[] Queued & Requested alerts. - -Notifications in the context of quality alerts that are in queued/draft status or already requested/sent to the customer. -Those notifications specify a defect or request to inform on a specific part / batch on the customer side and give feedback back to you. - -* Queued status: Quality alert is created but not yet released. -* Requested status: Quality alert is sent to the customer. - -=== Quality alert context action - -Select the three dots icon on the right side of an alert entry to open the context menu. -From there it is possible to open the alert detailed view or change the status of an alert. -Only the possible status transitions will show up. +Select the three dots icon on the right side of an quality notification entry to open the context menu. +From there it is possible to open the quality notification detailed view or change the status of it. +Only the possible status transition will show up. image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/notification-context-action.png[] -Changing the status of an alert will open a modal in which the details to the status change can be provided and completed. +Changing the status of a quality notification will open a modal in which the details to the status change can be provided and completed. -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/alert-context-action-modal.png[] +image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/investigation-context-action-modal.png[] A pop-up will notify you if the status transition was successful. -=== Quality alert detail view +=== Quality notification detail view -The alert detail view can be opened by selecting the corresponding option in the context menu. +The quality notification detail view can be opened by selecting the corresponding option in the context menu. -image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/alert-detail-view.png[] +image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/investigation-detail-view.png[] ==== Overview -General information about the notification. +General information about the quality notification. -==== Affected parts +==== Affected Parts Listed parts that are assigned to the selected alert. -==== Supplier parts +==== Supplier parts (If type is investigation) + +Detailed information for child parts assigned to a quality notification. + +==== Own parts (If type is alert) -Detailed information for child parts assigned to a notification +Detailed information for parent parts assigned to a quality notification. ==== Message History Displays all state transitions including the reason/description of the transition that were done on the notification to get an overview of the correspondence between sender and receiver. -==== Quality investigation action +==== Quality notification action All possible state transitions are displayed in form of buttons (upper right corner). There the desired action can be selected to open a modal in which the details to the status change can be provided and completed. -=== Quality alert status +=== Quality notification status -Following status for a quality alert (notification) are possible: +Following status for a quality notification are possible: |=== |Status |Description |Queued -|A quality alert that was created by a user but not yet sent to the receiver. +|A quality notification that was created by a user but not yet sent to the receiver. |Requested -|Created quality alert that is already sent to the receiver. +|Created quality notification that is already sent to the receiver. |Cancelled -|Created quality alert that is not yet sent to the receiver and got cancelled on sender side before doing so. It is no longer valid / necessary. +|Created quality notification that is not yet sent to the receiver and got cancelled on sender side before doing so. It is no longer valid / necessary. |Received -|Received notification from a sender which needs to be aware of. +|Received notification from a sender which needs to be investigated. |Acknowledged |The receiver acknowledged to work on the received inquiry. |Accepted -|The receiver accepted the inquiry. Issue on part/batch is known. +|The receiver accepted the inquiry. Issue on part/batch detected. |Declined -|The receiver declined the inquiry. No issue on part/batch is known. +|The receiver declined the inquiry. No issue on part/batch detected. |Closed -|The sender closed the quality alert and no further handling with it is possible. +|The sender closed the quality notification and no further handling with it is possible. |=== -=== Quality alert status flow +=== Quality notification status flow -Notifications always have a status. +Quality notifications always have a status. The transition from one status to a subsequent status is described in the below state model. The Sender can change the status to closed from any status. diff --git a/docs/src/images/arc42/user-guide/admin_contract_detailed_view.png b/docs/src/images/arc42/user-guide/admin_contract_detailed_view.png index a044d84fa1..972ecec676 100644 Binary files a/docs/src/images/arc42/user-guide/admin_contract_detailed_view.png and b/docs/src/images/arc42/user-guide/admin_contract_detailed_view.png differ diff --git a/docs/src/images/arc42/user-guide/admin_contract_view.png b/docs/src/images/arc42/user-guide/admin_contract_view.png index 5fa8ca3933..2a5b925bb1 100644 Binary files a/docs/src/images/arc42/user-guide/admin_contract_view.png and b/docs/src/images/arc42/user-guide/admin_contract_view.png differ diff --git a/docs/src/images/arc42/user-guide/admin_upload_file.png b/docs/src/images/arc42/user-guide/admin_upload_file.png index 54b1ee1c2f..c9cdcc3007 100644 Binary files a/docs/src/images/arc42/user-guide/admin_upload_file.png and b/docs/src/images/arc42/user-guide/admin_upload_file.png differ diff --git a/docs/src/images/arc42/user-guide/customer-parts-list-detailed-view.png b/docs/src/images/arc42/user-guide/customer-parts-list-detailed-view.png index 39468fb1d7..69db9983b2 100644 Binary files a/docs/src/images/arc42/user-guide/customer-parts-list-detailed-view.png and b/docs/src/images/arc42/user-guide/customer-parts-list-detailed-view.png differ diff --git a/docs/src/images/arc42/user-guide/inbox-multiselect-actions.png b/docs/src/images/arc42/user-guide/inbox-multiselect-actions.png new file mode 100644 index 0000000000..a51fed4b32 Binary files /dev/null and b/docs/src/images/arc42/user-guide/inbox-multiselect-actions.png differ diff --git a/docs/src/images/arc42/user-guide/investigation-create-view.png b/docs/src/images/arc42/user-guide/investigation-create-view.png new file mode 100644 index 0000000000..7532bfcb0d Binary files /dev/null and b/docs/src/images/arc42/user-guide/investigation-create-view.png differ diff --git a/docs/src/images/arc42/user-guide/investigation-detail-view.png b/docs/src/images/arc42/user-guide/investigation-detail-view.png index 3206dea8ee..c27193345d 100644 Binary files a/docs/src/images/arc42/user-guide/investigation-detail-view.png and b/docs/src/images/arc42/user-guide/investigation-detail-view.png differ diff --git a/docs/src/images/arc42/user-guide/investigations-autosuggestion-filtering.png b/docs/src/images/arc42/user-guide/investigations-autosuggestion-filtering.png index 4088b5026c..f64b39e86e 100644 Binary files a/docs/src/images/arc42/user-guide/investigations-autosuggestion-filtering.png and b/docs/src/images/arc42/user-guide/investigations-autosuggestion-filtering.png differ diff --git a/docs/src/images/arc42/user-guide/investigations-list-view.png b/docs/src/images/arc42/user-guide/investigations-list-view.png index 5b7b008f02..14eadac420 100644 Binary files a/docs/src/images/arc42/user-guide/investigations-list-view.png and b/docs/src/images/arc42/user-guide/investigations-list-view.png differ diff --git a/docs/src/images/arc42/user-guide/navigation-overview.png b/docs/src/images/arc42/user-guide/navigation-overview.png index 86af8d3bc1..a9403aba00 100644 Binary files a/docs/src/images/arc42/user-guide/navigation-overview.png and b/docs/src/images/arc42/user-guide/navigation-overview.png differ diff --git a/docs/src/images/arc42/user-guide/parts-list-detailed-view.png b/docs/src/images/arc42/user-guide/parts-list-detailed-view.png index 340d713d8a..313f4a788a 100644 Binary files a/docs/src/images/arc42/user-guide/parts-list-detailed-view.png and b/docs/src/images/arc42/user-guide/parts-list-detailed-view.png differ diff --git a/docs/src/images/arc42/user-guide/parts-list-view.png b/docs/src/images/arc42/user-guide/parts-list-view.png index a9e7f27ece..579f764aca 100644 Binary files a/docs/src/images/arc42/user-guide/parts-list-view.png and b/docs/src/images/arc42/user-guide/parts-list-view.png differ diff --git a/docs/src/images/arc42/user-guide/publish_assets_button.png b/docs/src/images/arc42/user-guide/publish_assets_button.png index 90a7c4b386..6c46cf1073 100644 Binary files a/docs/src/images/arc42/user-guide/publish_assets_button.png and b/docs/src/images/arc42/user-guide/publish_assets_button.png differ diff --git a/docs/src/images/arc42/user-guide/supplier-parts-list-detailed-view.png b/docs/src/images/arc42/user-guide/supplier-parts-list-detailed-view.png index 8ee3be52d7..6af1d92975 100644 Binary files a/docs/src/images/arc42/user-guide/supplier-parts-list-detailed-view.png and b/docs/src/images/arc42/user-guide/supplier-parts-list-detailed-view.png differ diff --git a/frontend/INSTALL.md b/frontend/INSTALL.md index 844c34d263..67c8cdc50e 100644 --- a/frontend/INSTALL.md +++ b/frontend/INSTALL.md @@ -11,6 +11,7 @@ const ENV_VARS_MAPPING = { CATENAX_PORTAL_BASE_URL: 'baseUrl', CATENAX_PORTAL_BACKEND_DOMAIN, CATENAX_PORTAL_URL: 'portalUrl', + BPN: 'bpn' }; ``` @@ -37,6 +38,9 @@ An example value could be: `catena-x.net` `CATENAX_PORTAL_URL` This variable is optional and points to the CX Portal instance +`BPN` +This variable is the bpn of the application owner + # Helm deployment ## Configuration of values.yaml diff --git a/frontend/cypress/integration/pages/AdminPage.ts b/frontend/cypress/integration/pages/AdminPage.ts index 7f381661dc..ef550f4a47 100644 --- a/frontend/cypress/integration/pages/AdminPage.ts +++ b/frontend/cypress/integration/pages/AdminPage.ts @@ -6,7 +6,6 @@ } export class AdminPage { - static visit() { cy.get('[data-testid="user-menu"]').click(); cy.get('[data-testid="user-menu-administration-button"]').click(); diff --git a/frontend/cypress/support/step_definitions/menu.ts b/frontend/cypress/support/step_definitions/menu.ts index d74591c5df..f6657a951f 100644 --- a/frontend/cypress/support/step_definitions/menu.ts +++ b/frontend/cypress/support/step_definitions/menu.ts @@ -25,10 +25,6 @@ import { AdminPage } from '../../integration/pages/AdminPage'; When("user navigate to {string}", function(desiredMenu) { switch (desiredMenu) { - case 'Other parts': { - cy.get('[href="/otherParts"]').click(); - break; - } case 'Parts': { cy.get('[href="/parts"]').click(); break; @@ -50,7 +46,7 @@ When("user navigate to {string}", function(desiredMenu) { break; } default: { - throw new Error("Set header menu '" + desiredMenu + "' is not one of valid status [Dashboard, Parts, Other parts, Quality investigations, Quality alerts, About, Administration]."); + throw new Error("Set header menu '" + desiredMenu + "' is not one of valid status [Dashboard, Parts, Quality investigations, Quality alerts, About, Administration]."); } } }); diff --git a/frontend/cypress/support/step_definitions/quality-investigations.ts b/frontend/cypress/support/step_definitions/quality-investigations.ts index acc548f427..442ca88467 100644 --- a/frontend/cypress/support/step_definitions/quality-investigations.ts +++ b/frontend/cypress/support/step_definitions/quality-investigations.ts @@ -18,272 +18,319 @@ * * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -import { When, Then, Given } from '@badeball/cypress-cucumber-preprocessor'; -import { QualityInvestigationsPage } from '../../integration/pages/QualityInvestigationsPage'; +import { Then, When } from '@badeball/cypress-cucumber-preprocessor'; let notificationDescription = null; let desiredSemanticModelId = null; let desiredId = null; -Then("select other part with semantic-model-id {string}", function(semanticModelId) { +Then('select other part with semantic-model-id {string}', function(semanticModelId: string) { //since IDs of desired asset are not shown in FE the selection has to be done by other number. desiredSemanticModelId = semanticModelId; cy.get('span').contains(semanticModelId).closest('tr').find('.mdc-checkbox').click(); }); -Then("select part with id {string}", function(id) { +Then('select part with id {string}', function(id: string) { desiredId = id; cy.get('span').contains(id).closest('tr').find('.mdc-checkbox').click(); }); -Then("start {string} creation with description {string}", function(notificationType, description) { +Then('start notification creation with description {string}', function(notificationType: string, description: string) { const date = new Date().getTime(); - notificationDescription = description + "_" + date; - switch (notificationType) { - case 'investigation': { - cy.get('div').contains('Start investigation').click(); - break; - } - case 'alert': { - cy.get('div').contains('Create alert').click(); - break; - } - default: { - throw new Error("Set notification type '" + notificationType + "' is not one of valid types [investigation, alert]."); - break; - } - } + notificationDescription = description + '_' + date; + cy.get('[data-testid="create-notification-button"]').click(); cy.get('mat-label').contains(/^Description$/i).click().type(notificationDescription); }); -When("receiver BPN {string}", function(receiverBPN) { +When('receiver BPN {string}', function(receiverBPN: string) { cy.get('mat-label').contains(/^BPN$/i).click().type(receiverBPN); }); -When("severity {string}", function(severity) { +When('severity {string}', function(severity: string) { cy.get('div').contains('Severity').click(); // First the dropdown has to be opened. cy.get('p').contains(severity).click(); }); -When("{string} deadline", function(deadline) { - if (deadline == 'no') { - // do nothing - } else { - // ---TBD--- implement timepicker once it´s necessary. - } +When('{string} deadline', function(deadline: string) { + if (deadline == 'no') { + // do nothing + } else { + // ---TBD--- implement timepicker once it´s necessary. + } }); -When("request the {string}", function(notificationType) { - cy.get('span').contains('ADD TO QUEUE').click(); +When('request the {string}', function(notificationType: string) { + cy.get('[data-testid="save-button"]').click(); }); -Then("selected parts are marked as {string}", function(notificationType) { +Then('selected parts are marked as {string}', function(notificationType: string) { switch (notificationType) { case 'investigated': { - cy.get('span').contains(desiredSemanticModelId).closest('tr').should('have.class', "highlighted"); + cy.get('span').contains(desiredSemanticModelId).closest('tr').should('have.class', 'highlighted'); break; } case 'alerted': { - cy.get('span').contains(desiredId).closest('tr').should('have.class', "highlighted"); + cy.get('span').contains(desiredId).closest('tr').should('have.class', 'highlighted'); break; } default: { - throw new Error("Set notificationType change'" + notificationType + "' is not one of valid types [investigated, alerted]."); + throw new Error('Set notificationType change\'' + notificationType + '\' is not one of valid types [investigated, alerted].'); break; } } }); -When("popup with information about queued {string} is shown", function(notificationType) { - switch (notificationType) { - case 'investigation': { - cy.contains(/You queued an investigation for 1 part/i).should('be.visible'); +Then('user changes field {string} to be {string}', function(field: string, value: string) { + cy.wait(1000); + switch (field) { + case 'severity': + cy.get('div').contains('Severity').click(); // First the dropdown has to be opened. + cy.get('p').contains(value).click(); break; - } - case 'alert': { - cy.contains(/You queued an alert for 1 part/i).should('be.visible'); + case 'title': + cy.get('[data-testId="title-input"]').type(value); break; - } - default: { - throw new Error("Set notificationType '" + notificationType + "' is not one of valid types [investigation, alert]."); + case 'bpn': + cy.get('[data-testId="bpn-input"]').type('{selectall}'); + cy.get('[data-testId="bpn-input"]').type('{del}'); + cy.get('[data-testId="bpn-input"]').type(value); break; - } + case 'description': + cy.get('[data-testId="description-input"]').clear().type(value); + break; + default: + throw new Error('Set field ' + field + ' is not one of valid fields [severity, title, description, bpn]'); + } +}); + +Then('selected {string} field {string} value is {string}', function(notificationType: string, field: string, value: string) { + cy.wait(1000); + switch (field) { + case 'severity': + cy.get('[data-testid="severity-view"]').should('contain.text', value); + break; + case 'title': + cy.get('[data-testid="title-view"]').should('contain.text', value); + break; + case 'description': + cy.get('[data-testid="description-view"]').should('contain.text', value); + break; + case 'status': + cy.get('[data-testid="status-view"]').should('contain.text', value); + break; + case 'createdBy': + cy.get('[data-testid="createdBy-view"]').should('contain.text', value); + break; + case 'createdByName': + cy.get('[data-testid="createdByName-view"]').should('contain.text', value); + break; + case 'sendTo': + cy.get('[data-testid="sendTo-view"]').should('contain.text', value); + break; + case 'sendToName': + cy.get('[data-testid="sendToName-view"]').should('contain.text', value); + break; + default: + throw new Error('Set field ' + field + ' is not one of valid fields [severity, title, description, status, createdBy, createdByName, sendTo, sendToName]'); + } +}); + +When('user clicks save', function() { + cy.get('[data-testid="save-button"]').click(); +}); + +When('popup shows successful {string} notification', function(type: string) { + if (type === 'created') { + cy.contains(/Quality topic was created successfully./i).should('be.visible'); + } + if (type === 'edited') { + cy.contains(/Quality topic was updated successfully./i).should('be.visible'); } }); -When("user navigate to {string} with button in popup", function(popupClick) { +When('user navigate to {string} with button in popup', function(popupClick: string) { cy.get('a').contains('Go to Queue').click(); }); -When("open details of created {string}", () => { - cy.get('[data-testid="table-menu-button"]').first().click(); //the first investigation will be opened - if (!(cy.get('[data-testid="table-menu-button--actions.viewDetails"]').should('exist'))) { //this is necessary because sometimes the page reload and the first click disappear - cy.get('[data-testid="table-menu-button"]').first().click(); - cy.get('[data-testid="table-menu-button--actions.viewDetails"]').first().click(); - } else { - cy.get('[data-testid="table-menu-button--actions.viewDetails"]').first().click(); - } +When('open details of created {string}', () => { + cy.wait(2000); + cy.get('[data-testid="table-menu-button"]').first().click({ force: true }); //the first investigation will be opened + if (!(cy.get('[data-testid="table-menu-button--actions.viewDetails"]').should('exist'))) { //this is necessary because sometimes the page reload and the first click disappear + cy.get('[data-testid="table-menu-button"]').first().click(); + cy.get('[data-testid="table-menu-button--actions.viewDetails"]').first().click(); + } else { + cy.get('[data-testid="table-menu-button--actions.viewDetails"]').first().click(); + } }); -When("user confirm cancellation of selected {string}", function(notificationType) { +When('user confirm cancellation of selected {string}', function(notificationType: string) { cy.get('[class="mdc-dialog__container"]').find('.mdc-checkbox').click(); cy.get('span').contains('Confirm cancellation').click(); }); -When("user {string} selected {string}", function(action) { +When('user {string} selected {string}', function(action: string) { //within opened detail view of quality investigation switch (action) { - case 'approve': { - cy.get('div').contains('Approve').click(); - break; - } - case 'cancel': { - cy.get('div').contains('Cancel').click(); - break; - } - case 'close': { - cy.get('div').contains('Close').click(); - break; - } - case 'acknowledge': { - cy.get('div').contains('Acknowledge').click(); - break; - } - case 'accept': { - cy.get('div').contains('Accept').click(); - break; - } - case 'decline': { - cy.get('div').contains('Decline').click(); - break; - } - default: { - throw new Error("Set action '" + action + "' is not one of valid actions [approve, cancel, close, acknowledge, accept, decline]."); - break; - } + case 'edit': { + cy.get('[data-testid="edit-button-icon"]').click(); + break; + } + case 'approve': { + cy.get('[data-testid="approve-button-icon"]').click(); + break; + } + case 'cancel': { + cy.get('[data-testid="cancel-button-icon"]').click(); + break; + } + case 'close': { + cy.get('[data-testid="close-button-icon"]').click(); + break; + } + case 'acknowledge': { + cy.get('[data-testid="acknowledge-button-icon"]').click(); + break; + } + case 'accept': { + cy.get('[data-testid="accept-button-icon"]').click(); + break; + } + case 'decline': { + cy.get('[data-testid="decline-button-icon"]').click(); + break; + } + default: { + throw new Error('Set action \'' + action + '\' is not one of valid actions [approve, cancel, close, acknowledge, accept, decline].'); + break; + } } }); -When("user confirm approval of selected {string}", function(action) { +When('user confirm approval of selected {string}', function(action: string) { cy.get('app-confirm').find('span').contains('Approve').click(); }); -Then("informations for selected investigation are displayed as expected", () => { +Then('informations for selected investigation are displayed as expected', () => { // --- TBD --- include: overview, supplier parts, STATUS }); -Then("selected {string} has been {string} as expected", function(notificationType, expectedStatus) { - switch (expectedStatus) { - case 'canceled': { - cy.get('[title="Cancelled"]').should('be.visible'); - break; - } - case 'approved': { +Then('selected {string} has been {string} as expected', function(notificationType, expectedStatus) { + switch (expectedStatus) { + case 'canceled': { + cy.get('[title="Cancelled"]').should('be.visible'); + break; + } + case 'approved': { + cy.wait(20000); // same as "requested" - cy.get('[title="Requested"]', { timeout: 10000 }).should('be.visible'); - break; - } - case 'accepted': { - cy.get('[title="Accepted"]', { timeout: 10000 }).should('be.visible'); - break; - } - case 'declined': { - cy.get('[title="Declined"]', { timeout: 10000 }).should('be.visible'); - break; - } - case 'acknowledged': { - cy.get('[title="Acknowledged"]', { timeout: 10000 }).should('be.visible'); - break; - } - case 'closed': { - cy.get('[title="Closed"]', { timeout: 10000 }).should('be.visible'); - break; - } - default: { - throw new Error("Set expected status '" + expectedStatus + "' is not one of valid status [canceled, approved, accepted, declined, acknowledged, closed]."); - break; - } + cy.get('[title="Requested"]', { timeout: 30000 }).should('be.visible'); + break; + } + case 'accepted': { + cy.get('[title="Accepted"]', { timeout: 10000 }).should('be.visible'); + break; + } + case 'declined': { + cy.get('[title="Declined"]', { timeout: 10000 }).should('be.visible'); + break; + } + case 'acknowledged': { + cy.get('[title="Acknowledged"]', { timeout: 10000 }).should('be.visible'); + break; + } + case 'closed': { + cy.get('[title="Closed"]', { timeout: 10000 }).should('be.visible'); + break; } + default: { + throw new Error('Set expected status \'' + expectedStatus + '\' is not one of valid status [canceled, approved, accepted, declined, acknowledged, closed].'); + break; + } + } }); -Then("popup for successful {string} has been shown", function(status) { - switch (status) { - case 'cancellation': { - cy.contains(/.*was canceled successfully./i).should('be.visible'); - break; - } - case 'approval': { - cy.contains(/.*was approved successfully./i).should('be.visible'); - break; - } - case 'acceptance': { - cy.contains(/.*was accepted successfully./i).should('be.visible'); - break; - } - case 'declination': { - cy.contains(/.*was declined successfully./i).should('be.visible'); - break; - } - case 'acknowledge': { - cy.contains(/.*was acknowledged successfully./i).should('be.visible'); - break; - } - case 'closure': { - cy.contains(/.*was closed successfully./i).should('be.visible'); - break; - } - default: { - throw new Error("Set expected status '" + status + "' is not one of valid status [cancellation, approval, acceptance, declination, acknowledge, closure]."); - break; - } +Then('popup for successful {string} has been shown', function(status) { + switch (status) { + case 'cancellation': { + cy.contains(/.*was canceled successfully./i).should('be.visible'); + break; + } + case 'approval': { + cy.contains(/.*was approved successfully./i).should('be.visible'); + break; + } + case 'acceptance': { + cy.contains(/.*was accepted successfully./i).should('be.visible'); + break; } + case 'declination': { + cy.contains(/.*was declined successfully./i).should('be.visible'); + break; + } + case 'acknowledge': { + cy.contains(/.*was acknowledged successfully./i).should('be.visible'); + break; + } + case 'closure': { + cy.contains(/.*was closed successfully./i).should('be.visible'); + break; + } + case 'edit': { + cy.contains(/.*was updated successfully./i).should('be.visible'); + break; + } + default: { + throw new Error('Set expected status \'' + status + '\' is not one of valid status [cancellation, approval, acceptance, declination, acknowledge, closure].'); + break; + } + } }); -When("selected {string} is not allowed to be {string}", function(notificationType, status) { - switch (status) { - case 'canceled': { - cy.get('div').contains('/^Cancel$/', {matchCase: true}).should('not.exist'); - break; - } - case 'approved': { - cy.get('div').contains('/^Approve$/', {matchCase: true}).should('not.exist'); - break; - } - case 'accepted': { - cy.get('div').contains('/^Accept$/', {matchCase: true}).should('not.exist'); - break; - } - case 'declined': { - cy.get('div').contains('/^Decline$/', {matchCase: true}).should('not.exist'); - break; - } - case 'acknowledged': { - cy.get('div').contains('/^Acknowledge$/', {matchCase: true}).should('not.exist'); - break; - } - case 'closed': { - cy.get('div').contains('/^Close$/', {matchCase: true}).should('not.exist'); - break; - } - default: { - throw new Error("Set status '" + status + "' is not one of valid status [canceled, approved, accepted, declined, acknowledged, closed]."); - break; - } +When('selected {string} is not allowed to be {string}', function(notificationType, status) { + switch (status) { + case 'canceled': { + cy.get('div').contains('/^Cancel$/', { matchCase: true }).should('not.exist'); + break; + } + case 'approved': { + cy.get('div').contains('/^Approve$/', { matchCase: true }).should('not.exist'); + break; } + case 'accepted': { + cy.get('div').contains('/^Accept$/', { matchCase: true }).should('not.exist'); + break; + } + case 'declined': { + cy.get('div').contains('/^Decline$/', { matchCase: true }).should('not.exist'); + break; + } + case 'acknowledged': { + cy.get('div').contains('/^Acknowledge$/', { matchCase: true }).should('not.exist'); + break; + } + case 'closed': { + cy.get('div').contains('/^Close$/', { matchCase: true }).should('not.exist'); + break; + } + default: { + throw new Error('Set status \'' + status + '\' is not one of valid status [canceled, approved, accepted, declined, acknowledged, closed].'); + break; + } + } }); diff --git a/frontend/package.json b/frontend/package.json index 72ad3a225c..d7f47ffb7d 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,6 +1,6 @@ { "name": "trace-x", - "version": "10.8.0", + "version": "11.0.0", "scripts": { "analyze": "ng build --configuration=production --stats-json && webpack-bundle-analyzer dist/stats.json", "build:prod": "ng build --output-hashing=all --configuration=debugProd --base-href /{baseHrefPlaceholder}/ --deploy-url /{baseHrefPlaceholder}/ ", diff --git a/frontend/scripts/inject-dynamic-env.js b/frontend/scripts/inject-dynamic-env.js index 7b0cbb76a5..e273e8a042 100755 --- a/frontend/scripts/inject-dynamic-env.js +++ b/frontend/scripts/inject-dynamic-env.js @@ -26,7 +26,8 @@ const ENV_VARS_MAPPING = { CATENAX_PORTAL_API_URL: 'apiUrl', CATENAX_PORTAL_BASE_URL: 'baseUrl', CATENAX_PORTAL_URL: 'portalUrl', - GIT_TAG: 'gitTag' + GIT_TAG: 'gitTag', + BPN: 'bpn' }; const ROOT_DIR = '/usr/share/nginx/html'; diff --git a/frontend/src/app/modules/core/api/api.service.ts b/frontend/src/app/modules/core/api/api.service.ts index 1d263e581f..22b2196943 100644 --- a/frontend/src/app/modules/core/api/api.service.ts +++ b/frontend/src/app/modules/core/api/api.service.ts @@ -17,7 +17,7 @@ * under the License. * * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ + *********************************************************************************/ import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { Injectable } from '@angular/core'; diff --git a/frontend/src/app/modules/core/core.module.ts b/frontend/src/app/modules/core/core.module.ts index b65cb15163..d0971207d7 100644 --- a/frontend/src/app/modules/core/core.module.ts +++ b/frontend/src/app/modules/core/core.module.ts @@ -29,7 +29,6 @@ import { LayoutModule } from '@layout/layout.module'; import { AboutModule } from '@page/about/about.module'; import { AdminModule } from '@page/admin/admin.module'; import { DashboardModule } from '@page/dashboard/dashboard.module'; -import { OtherPartsModule } from '@page/other-parts/other-parts.module'; import { PartsModule } from '@page/parts/parts.module'; import { ToastService } from '@shared/components/toasts/toast.service'; import { I18NextModule } from 'angular-i18next'; @@ -64,7 +63,6 @@ registerLocaleData(localeDe, 'de', localeDeExtra); AboutModule, DashboardModule, PartsModule, - OtherPartsModule, AdminModule, I18NextModule.forRoot(), ], diff --git a/frontend/src/app/modules/core/known-route.ts b/frontend/src/app/modules/core/known-route.ts index 56f968600f..b2425dfa2d 100644 --- a/frontend/src/app/modules/core/known-route.ts +++ b/frontend/src/app/modules/core/known-route.ts @@ -23,7 +23,6 @@ import { NotificationStatusGroup } from '@shared/model/notification.model'; import { PageRoute } from '@shared/model/page-route.model'; export const PARTS_BASE_ROUTE = 'parts'; -export const OTHER_PARTS_BASE_ROUTE = 'otherParts'; export const DASHBOARD_BASE_ROUTE = 'dashboard'; export const ADMIN_BASE_ROUTE = 'admin'; export const ABOUT_BASE_ROUTE = 'about'; @@ -32,7 +31,6 @@ export const NO_PERMISSION_BASE_ROUTE = 'no-permissions'; export const NavigableUrls = [ PARTS_BASE_ROUTE, - OTHER_PARTS_BASE_ROUTE, DASHBOARD_BASE_ROUTE, ADMIN_BASE_ROUTE, ABOUT_BASE_ROUTE, @@ -56,7 +54,7 @@ const getNotificationInboxRoute = ( link: urlType, queryParams: notificationStatusGroup ? { - tabIndex: '0', + tabIndex: notificationStatusGroup === NotificationStatusGroup.RECEIVED ? '1' : '0', } : undefined, }); diff --git a/frontend/src/app/modules/core/layout/header/header.component.html b/frontend/src/app/modules/core/layout/header/header.component.html index f5c4660cb4..45680171b7 100644 --- a/frontend/src/app/modules/core/layout/header/header.component.html +++ b/frontend/src/app/modules/core/layout/header/header.component.html @@ -26,7 +26,6 @@
-
diff --git a/frontend/src/app/modules/core/layout/header/header.component.ts b/frontend/src/app/modules/core/layout/header/header.component.ts index 3b97fcc972..65fbbae6b4 100644 --- a/frontend/src/app/modules/core/layout/header/header.component.ts +++ b/frontend/src/app/modules/core/layout/header/header.component.ts @@ -36,7 +36,6 @@ export class HeaderComponent { dashboard: 'dashboard', about: 'info', parts: 'build', - otherParts: 'commute', inbox: 'inbox', admin: 'apps', }; diff --git a/frontend/src/app/modules/core/layout/layout.routing.ts b/frontend/src/app/modules/core/layout/layout.routing.ts index 1c9ee34a7f..61c03dc06a 100644 --- a/frontend/src/app/modules/core/layout/layout.routing.ts +++ b/frontend/src/app/modules/core/layout/layout.routing.ts @@ -27,7 +27,6 @@ import { NOTIFICATION_BASE_ROUTE, DASHBOARD_BASE_ROUTE, NO_PERMISSION_BASE_ROUTE, - OTHER_PARTS_BASE_ROUTE, PARTS_BASE_ROUTE, } from '@core/known-route'; import { RoleGuard } from '@core/user/role.guard'; @@ -71,15 +70,6 @@ const routes: Routes = [ }, canActivate: [ RoleGuard ], }, - { - path: OTHER_PARTS_BASE_ROUTE, - loadChildren: () => import('@page/other-parts/other-parts.module').then(m => m.OtherPartsModule), - data: { - breadcrumb: 'otherParts', - roles: [ 'user', 'admin' ], - }, - canActivate: [ RoleGuard ], - }, { path: NOTIFICATION_BASE_ROUTE, loadChildren: () => import('@page/notifications/notifications.module').then(m => m.NotificationsModule), diff --git a/frontend/src/app/modules/core/model/calendar-date.model.ts b/frontend/src/app/modules/core/model/calendar-date.model.ts index 1291dc4833..d269cdcd63 100644 --- a/frontend/src/app/modules/core/model/calendar-date.model.ts +++ b/frontend/src/app/modules/core/model/calendar-date.model.ts @@ -41,4 +41,8 @@ export class CalendarDateModel { valueOf() { return this.date; } + + isInitial(): boolean { + return this.date.getFullYear() === 1970; + } } diff --git a/frontend/src/app/modules/page/other-parts/presentation/other-parts.component.scss b/frontend/src/app/modules/core/pagination/pagination.model.ts similarity index 70% rename from frontend/src/app/modules/page/other-parts/presentation/other-parts.component.scss rename to frontend/src/app/modules/core/pagination/pagination.model.ts index 5eee61f5e0..cd8e9e2912 100644 --- a/frontend/src/app/modules/page/other-parts/presentation/other-parts.component.scss +++ b/frontend/src/app/modules/core/pagination/pagination.model.ts @@ -1,7 +1,5 @@ /******************************************************************************** - * Copyright (c) 2022, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2022, 2023 ZF Friedrichshafen AG - * Copyright (c) 2022, 2023, 2024 Contributors to the Eclipse Foundation + * Copyright (c) 2024 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. @@ -19,9 +17,5 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -// mat-tab is disabled, need to explicitly reactivate tooltip event -#customer-parts--asPlanned--tab--tooltip--label { - pointer-events: auto; -} - - +export const DEFAULT_PAGE_SIZE = 50 +export const FIRST_PAGE = 0; diff --git a/frontend/src/app/modules/core/user/role.service.ts b/frontend/src/app/modules/core/user/role.service.ts index 2e46166f0f..d8a44e1dcd 100644 --- a/frontend/src/app/modules/core/user/role.service.ts +++ b/frontend/src/app/modules/core/user/role.service.ts @@ -58,11 +58,11 @@ export class RoleService { } - public isAtLeastSupervisor(): boolean { + public isSupervisor(): boolean { return this.hasAccess('supervisor'); } - public isAtLeastUser(): boolean { + public isUser(): boolean { return this.hasAccess('user'); } diff --git a/frontend/src/app/modules/core/user/table-settings.service.spec.ts b/frontend/src/app/modules/core/user/table-settings.service.spec.ts index d1f01ada7f..6e2aed7296 100644 --- a/frontend/src/app/modules/core/user/table-settings.service.spec.ts +++ b/frontend/src/app/modules/core/user/table-settings.service.spec.ts @@ -19,6 +19,8 @@ import { TestBed } from '@angular/core/testing'; import { TableSettingsService } from '@core/user/table-settings.service'; +import { TableType } from '@shared/components/multi-select-autocomplete/table-type.model'; +import { TableViewConfig } from '@shared/components/parts-table/table-view-config.model'; describe('TableSettingsService', () => { let service: TableSettingsService; @@ -35,4 +37,108 @@ describe('TableSettingsService', () => { it('should be created', () => { expect(service).toBeTruthy(); }); + + describe('should correctly initialize the table view settings', () => { + + it('should return PartsAsPlannedConfigurationModel for AS_PLANNED_OWN', () => { + const result: TableViewConfig = service.initializeTableViewSettings(TableType.AS_PLANNED_OWN); + expect(result.displayedColumns.length).toBe(20); + }); + + it('should return PartsAsBuiltConfigurationModel for AS_BUILT_OWN', () => { + const result: TableViewConfig = service.initializeTableViewSettings(TableType.AS_BUILT_OWN); + expect(result.displayedColumns.length).toBe(22); + }); + + it('should return NotificationsSentConfigurationModel for SENT_NOTIFICATION', () => { + const result: TableViewConfig = service.initializeTableViewSettings(TableType.SENT_NOTIFICATION); + expect(result.displayedColumns.length).toBe(10); + }); + + it('should return NotificationsReceivedConfigurationModel for RECEIVED_NOTIFICATION', () => { + const result: TableViewConfig = service.initializeTableViewSettings(TableType.RECEIVED_NOTIFICATION); + expect(result.displayedColumns.length).toBe(10); + }); + }); + + describe('YourService', () => { + + it('should return false if storage is empty', () => { + spyOn(service, 'getStoredTableSettings').and.returnValue(null); + const tableViewConfig: TableViewConfig = { + displayedColumns: [], + filterFormGroup: null, + sortableColumns: {}, + displayFilterColumnMappings: [], + filterColumns: [], + }; + const result = service.storedTableSettingsInvalid(tableViewConfig, TableType.AS_PLANNED_OWN); + expect(result).toBe(false); + }); + + it('should return false if stored columns match displayed columns', () => { + const storage = { + [TableType.AS_PLANNED_OWN]: { + columnsForDialog: [ 'col1', 'col2', 'menu' ], // Sample stored columns + }, + }; + spyOn(service, 'getStoredTableSettings').and.returnValue(storage); + const tableViewConfig: TableViewConfig = { + displayedColumns: [], + filterFormGroup: null, + sortableColumns: {}, + displayFilterColumnMappings: [], + filterColumns: [], + }; + tableViewConfig.displayedColumns = [ 'col1', 'col2', 'menu' ]; // Sample displayed columns + const result = service.storedTableSettingsInvalid(tableViewConfig, TableType.AS_PLANNED_OWN); + expect(result).toBe(false); + }); + + it('should return true if stored columns do not match displayed columns', () => { + const storage = { + [TableType.AS_PLANNED_OWN]: { + columnsForDialog: [ 'col1', 'col2', 'menu' ], // Sample stored columns + }, + }; + spyOn(service, 'getStoredTableSettings').and.returnValue(storage); + const tableViewConfig: TableViewConfig = { + displayedColumns: [], + filterFormGroup: null, + sortableColumns: {}, + displayFilterColumnMappings: [], + filterColumns: [], + }; + tableViewConfig.displayedColumns = [ 'col1', 'col3', 'menu' ]; // Different displayed columns + const result = service.storedTableSettingsInvalid(tableViewConfig, TableType.AS_PLANNED_OWN); + expect(result).toBe(true); + }); + + it('should show warning toast and remove storage if settings are invalid', () => { + const storage = { + [TableType.AS_PLANNED_OWN]: { + columnsForDialog: [ 'col1', 'col2', 'menu' ], // Sample stored columns + }, + }; + spyOn(service, 'getStoredTableSettings').and.returnValue(storage); + spyOn(service['toastService'], 'warning'); + spyOn(localStorage, 'removeItem'); + + const tableViewConfig: TableViewConfig = { + displayedColumns: [], + filterFormGroup: null, + sortableColumns: {}, + displayFilterColumnMappings: [], + filterColumns: [], + }; + tableViewConfig.displayedColumns = [ 'col1', 'col3', 'menu' ]; // Different displayed columns + service.storedTableSettingsInvalid(tableViewConfig, TableType.AS_PLANNED_OWN); + + expect(service['toastService'].warning).toHaveBeenCalledWith('table.tableSettings.invalid', 10000); + expect(localStorage.removeItem).toHaveBeenCalled(); + }); + }); + + + }); diff --git a/frontend/src/app/modules/core/user/table-settings.service.ts b/frontend/src/app/modules/core/user/table-settings.service.ts index 847646dd4d..ae3d6b893e 100644 --- a/frontend/src/app/modules/core/user/table-settings.service.ts +++ b/frontend/src/app/modules/core/user/table-settings.service.ts @@ -19,7 +19,12 @@ import { Injectable } from '@angular/core'; import { TableType } from '@shared/components/multi-select-autocomplete/table-type.model'; +import { NotificationsReceivedConfigurationModel } from '@shared/components/parts-table/notifications-received-configuration.model'; +import { NotificationsSentConfigurationModel } from '@shared/components/parts-table/notifications-sent-configuration.model'; +import { PartsAsBuiltConfigurationModel } from '@shared/components/parts-table/parts-as-built-configuration.model'; +import { PartsAsPlannedConfigurationModel } from '@shared/components/parts-table/parts-as-planned-configuration.model'; import { TableViewConfig } from '@shared/components/parts-table/table-view-config.model'; +import { ToastService } from '@shared/components/toasts/toast.service'; import { Subject } from 'rxjs'; @Injectable({ @@ -29,6 +34,9 @@ export class TableSettingsService { private settingsKey = 'TableViewSettings'; private changeEvent = new Subject(); + constructor(private readonly toastService: ToastService) { + } + storeTableSettings(tableSettingsList: any): void { // before setting anything, all maps in new tableSettingList should be stringified Object.keys(tableSettingsList).forEach(tableSetting => { @@ -80,6 +88,7 @@ export class TableSettingsService { } } if (isInvalid) { + this.toastService.warning('table.tableSettings.invalid', 10000); localStorage.removeItem(this.settingsKey); } return isInvalid; @@ -92,4 +101,18 @@ export class TableSettingsService { getEvent() { return this.changeEvent.asObservable(); } + + initializeTableViewSettings(tableType: TableType): TableViewConfig { + switch (tableType) { + case TableType.AS_PLANNED_OWN: + return new PartsAsPlannedConfigurationModel().filterConfiguration(); + case TableType.AS_BUILT_OWN: + return new PartsAsBuiltConfigurationModel().filterConfiguration(); + case TableType.SENT_NOTIFICATION: + return new NotificationsSentConfigurationModel().filterConfiguration(); + case TableType.RECEIVED_NOTIFICATION: + return new NotificationsReceivedConfigurationModel().filterConfiguration(); + } + } + } diff --git a/frontend/src/app/modules/page/about/presentation/about.component.html b/frontend/src/app/modules/page/about/presentation/about.component.html index 05275d54ed..5904568f8a 100644 --- a/frontend/src/app/modules/page/about/presentation/about.component.html +++ b/frontend/src/app/modules/page/about/presentation/about.component.html @@ -22,24 +22,24 @@
-

{{ name }} +

{{ name }} open_in_new

-