From 4ad59a3b9dfc0fb6ca830de53fd25568006bcf0e Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Mon, 22 Jan 2024 12:45:20 +0100 Subject: [PATCH 001/311] feature(publishAssets): 535 activate publish Assets button for admin --- .../app/modules/page/parts/presentation/parts.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.html b/frontend/src/app/modules/page/parts/presentation/parts.component.html index 1ac2d1ed7f..dfacd88c58 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.html +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.html @@ -54,7 +54,7 @@ (click)="isPublisherOpen$.next(true)" [variant]="'raised'" [color]="'accent'" - [isDisabled]="!roleService.hasAccess(['wip'])" + [isDisabled]="!roleService.hasAccess(['admin'])" >
published_with_changes From 2543a76caa0a0ee9ce1b83d2b9dc64bef2ce6d76 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 09:18:03 +0100 Subject: [PATCH 002/311] chore(tx-backend): #534 testing readOnlyRootFilesystem configuration --- charts/traceability-foss/charts/frontend/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/charts/traceability-foss/charts/frontend/values.yaml b/charts/traceability-foss/charts/frontend/values.yaml index 30e1e31c68..7622cc28de 100644 --- a/charts/traceability-foss/charts/frontend/values.yaml +++ b/charts/traceability-foss/charts/frontend/values.yaml @@ -75,7 +75,7 @@ securityContext: capabilities: drop: - ALL - readOnlyRootFilesystem: false + readOnlyRootFilesystem: true service: type: ClusterIP From 4931f075696f3387cbe657e2d0317dd822b0b890 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 10:19:55 +0100 Subject: [PATCH 003/311] chore(tx-backend): #XXX mitigation of readOnlyFilesystem issue doe to fact that fe uses custom env injection on docker startup --- .github/workflows/.trivyignore | 3 +++ charts/traceability-foss/charts/frontend/values.yaml | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/.trivyignore b/.github/workflows/.trivyignore index c0db40e5ec..7dce98b12e 100644 --- a/.github/workflows/.trivyignore +++ b/.github/workflows/.trivyignore @@ -1,2 +1,5 @@ # ref https://github.com/catenax-ng/product-traceability-foss-backend/security/code-scanning/1419 CVE-2022-25857 +# ref https://github.com/catenax-ng/tx-traceability-foss/security/code-scanning/6879 +# this is acceptable due to custom environment variable injection script which is executed upon FE container startup +KSV014 diff --git a/charts/traceability-foss/charts/frontend/values.yaml b/charts/traceability-foss/charts/frontend/values.yaml index 7622cc28de..30e1e31c68 100644 --- a/charts/traceability-foss/charts/frontend/values.yaml +++ b/charts/traceability-foss/charts/frontend/values.yaml @@ -75,7 +75,7 @@ securityContext: capabilities: drop: - ALL - readOnlyRootFilesystem: true + readOnlyRootFilesystem: false service: type: ClusterIP From 214b21916088db921514c9d25733963254eda019 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 11:01:50 +0100 Subject: [PATCH 004/311] chore(tx-backend): #XXX set proper rule ID --- .github/workflows/.trivyignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/.trivyignore b/.github/workflows/.trivyignore index 7dce98b12e..c06bb263ca 100644 --- a/.github/workflows/.trivyignore +++ b/.github/workflows/.trivyignore @@ -2,4 +2,4 @@ CVE-2022-25857 # ref https://github.com/catenax-ng/tx-traceability-foss/security/code-scanning/6879 # this is acceptable due to custom environment variable injection script which is executed upon FE container startup -KSV014 +AVD-KSV-0014 From 812c7f35b7da51e03cbeec4a82f1c597522d4f98 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Tue, 23 Jan 2024 11:18:17 +0100 Subject: [PATCH 005/311] chore[534] updated createIrsPolicyIfMissing() --- .../infrastructure/base/irs/IrsService.java | 25 +++++++++++++------ .../repository/rest/irs/IrsServiceTest.java | 4 +-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java index 60aa11e0fa..b3159e2208 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java @@ -149,17 +149,28 @@ public void createIrsPolicyIfMissing() { log.info("Required constraints from application yaml are : {}", traceabilityProperties.getRightOperand()); - //update existing policies - irsPolicies.stream().filter( - irsPolicy -> traceabilityProperties.getRightOperand().equals(irsPolicy.policyId())) - .forEach(existingPolicy -> checkAndUpdatePolicy(irsPolicies)); + boolean foundMatch = irsPolicies.stream() + .flatMap(irsPolicy -> irsPolicy.permissions().stream()) + .flatMap(permission -> permission.getConstraints().stream()) + .anyMatch(constraint -> { + boolean orMatch = constraint.getOr().stream() + .anyMatch(rightO -> rightO.getRightOperand().stream().anyMatch(value -> value.equals(traceabilityProperties.getRightOperand()))); + boolean andMatch = constraint.getAnd().stream() + .allMatch(rightO -> rightO.getRightOperand().stream().allMatch(value -> value.equals(traceabilityProperties.getRightOperand()))); - //create missing policies - boolean missingPolicy = irsPolicies.stream().noneMatch(irsPolicy -> irsPolicy.policyId().equals(traceabilityProperties.getRightOperand())); - if (missingPolicy) { + if (orMatch || andMatch) { + checkAndUpdatePolicy(irsPolicies); + return true; + } + + return false; + }); + + if (!foundMatch) { createPolicy(); } + } private void createPolicy() { diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java index f49b6565f5..e45c2f3cc2 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java @@ -124,7 +124,7 @@ void givenNoPolicyExist_whenCreateIrsPolicyIfMissing_thenCreateIt() { @Test void givenPolicyExist_whenCreateIrsPolicyIfMissing_thenDoNotCreateIt() { // given - final PolicyResponse existingPolicy = new PolicyResponse("test", OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), OffsetDateTime.now(), List.of()); + final PolicyResponse existingPolicy = new PolicyResponse("test", OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), OffsetDateTime.now(), List.of(new Permission(PolicyType.USE, List.of(new Constraints(List.of(), List.of(new Constraint("leftOperand1", OperatorType.EQ, List.of("test")))))))); when(irsClient.getPolicies(anyString())).thenReturn(List.of(existingPolicy)); when(traceabilityProperties.getRightOperand()).thenReturn("test"); when(traceabilityProperties.getValidUntil()).thenReturn(OffsetDateTime.parse("2023-07-02T16:01:05.309Z")); @@ -139,7 +139,7 @@ void givenPolicyExist_whenCreateIrsPolicyIfMissing_thenDoNotCreateIt() { @Test void givenOutdatedPolicyExist_whenCreateIrsPolicyIfMissing_thenUpdateIt() { // given - final PolicyResponse existingPolicy = new PolicyResponse("test", OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), List.of()); + final PolicyResponse existingPolicy = new PolicyResponse("test", OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), List.of(new Permission(PolicyType.USE, List.of(new Constraints(List.of(), List.of(new Constraint("leftOperand1", OperatorType.EQ, List.of("test")))))))); when(irsClient.getPolicies(anyString())).thenReturn(List.of(existingPolicy)); when(traceabilityProperties.getRightOperand()).thenReturn("test"); when(traceabilityProperties.getOperatorType()).thenReturn("eq"); From e8ccac4c31f2b656cbc6ee0354c9d6ebbd03b877 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Tue, 23 Jan 2024 11:22:41 +0100 Subject: [PATCH 006/311] chore(release): XXX 10.2.1 --- .github/workflows/helm-chart-release.yaml | 2 ++ docs/RELEASE.md | 39 +++++++++++------------ 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/.github/workflows/helm-chart-release.yaml b/.github/workflows/helm-chart-release.yaml index 26ff519300..3736532d76 100644 --- a/.github/workflows/helm-chart-release.yaml +++ b/.github/workflows/helm-chart-release.yaml @@ -81,6 +81,8 @@ jobs: - name: Run chart-releaser uses: helm/chart-releaser-action@v1.6.0 + with: + mark_as_latest: false env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" CR_RELEASE_NAME_TEMPLATE: "${{ env.RELEASE_VERSION }}" diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 8e6bec43e2..084659dec6 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -11,24 +11,23 @@ Make sure eclipse / catena git repositories are in sync 2) Create and Checkout release branch on catena /release/1.0.0 4) Edit changelog: Align the new version (1.0.0) with the changes and add new UNRELEASED section 5) Edit /charts/traceability-foss/CHANGELOG.md -- Add an Entry for an incremented (patch) version (1.0.0 -> 1.0.1) -5) Push onto /release/1.0.0 catena and eclipse -6) Open Release App Page Catena: https://github.com/catenax-ng/tx-traceability-foss/releases -7) Draft a new release -8) On dropdown choose a tag - use the version 1.0.0 (Create new tag will appear - select it) -9) On dropdown target use your /release/1.0.0 -10) Title = Version of app -> 1.0.0 -11) Description = Changelog Content of app -12) Checkbox set as latest release -- Verify that github action release generation has been triggered -- Verify that an automatic pull request has been opened (Prepare Helm release for next version) -- Validate that the versions within that pull requests are correct -- Merge pull request -- Open the github action for helm release generation: https://github.com/catenax-ng/tx-traceability-foss/actions/workflows/helm-chart-release.yaml -- Execute it from main branch -- Validate that the helm charts release has been generated within the release page -- Edit the app release and set checkbox to latest release -13) Repeat step 7 to 12 for tractus-x: [GitHub Releases page](https://github.com/eclipse-tractusx/traceability-foss/releases) -14) Merge release branch into catena main branch -15) Sync catena and eclipse main branch +6) Add an Entry for an incremented (patch) version (1.0.0 -> 1.0.1) +7) Push onto /release/1.0.0 catena and eclipse +8) Open Release App Page Catena: https://github.com/catenax-ng/tx-traceability-foss/releases +9) Draft a new release +10) On dropdown choose a tag - use the version 1.0.0 (Create new tag will appear - select it) +11) On dropdown target use your /release/1.0.0 +12) Title = Version of app -> 1.0.0 +13) Description = Changelog Content of app +14) Checkbox set as latest release +15) Verify that github action [Release](https://github.com/catenax-ng/tx-traceability-foss/actions/workflows/release.yaml) generation has been triggered +16) Verify that an automatic pull request has been opened (Prepare Helm release for next version) +17) Validate that the versions within that pull requests are correct +18) Merge pull request (Prepare Helm release for next version) +19) Merge release branch into main +20) Open the github action for helm release generation: https://github.com/catenax-ng/tx-traceability-foss/actions/workflows/helm-chart-release.yaml +21) Execute it from main branch +22) Validate that the helm charts release has been generated within the release page +23) Repeat step 7 to 12 for tractus-x: [GitHub Releases page](https://github.com/eclipse-tractusx/traceability-foss/releases) +24) Sync catena and eclipse main branch From cdeab23e7fcfbba178334835a62f3a87be5c2166 Mon Sep 17 00:00:00 2001 From: Maximilian Wesener Date: Tue, 23 Jan 2024 11:25:23 +0100 Subject: [PATCH 007/311] chore(release): update release action and documentation. --- docs/RELEASE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/RELEASE.md b/docs/RELEASE.md index 084659dec6..e976cec640 100644 --- a/docs/RELEASE.md +++ b/docs/RELEASE.md @@ -28,6 +28,6 @@ Make sure eclipse / catena git repositories are in sync 20) Open the github action for helm release generation: https://github.com/catenax-ng/tx-traceability-foss/actions/workflows/helm-chart-release.yaml 21) Execute it from main branch 22) Validate that the helm charts release has been generated within the release page -23) Repeat step 7 to 12 for tractus-x: [GitHub Releases page](https://github.com/eclipse-tractusx/traceability-foss/releases) +23) Repeat step 8 to 23 for tractus-x: [GitHub Releases page](https://github.com/eclipse-tractusx/traceability-foss/releases) 24) Sync catena and eclipse main branch From c3a6e9c0c68d324ebdb61b8cf17d2a5951b12cb4 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Tue, 23 Jan 2024 12:29:09 +0100 Subject: [PATCH 008/311] chore[534] updated CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c5e6a3042..0ca02c902b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Irs Jobs are now created with callback parameter set to new /irs/job/callback endpoint - Upgraded irs version from 6.12.0 to 6.13.0 - Switched from OAuth2.0 to API Key authentication for IRS API Requests +- Updated createIrsPolicyIfMissing() method to validate policies based on rightOperand values rather than policyIDs ### Removed - Shell descriptor entity with underlying logic From 46c35736dd8ff085f9869aaa6e107978fc8d32be Mon Sep 17 00:00:00 2001 From: ds-lcapellino Date: Tue, 23 Jan 2024 13:08:05 +0100 Subject: [PATCH 009/311] feature: 534 update copyright header; use right operand as policy id --- .../assets/infrastructure/base/irs/IrsService.java | 2 +- .../base/irs/model/request/RegisterPolicyRequest.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java index b3159e2208..4145eb506e 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java @@ -1,7 +1,7 @@ /******************************************************************************** * Copyright (c) 2022, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * Copyright (c) 2022, 2023 ZF Friedrichshafen AG - * Copyright (c) 2022, 2023 Contributors to the Eclipse Foundation + * Copyright (c) 2022, 2023, 2024 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/model/request/RegisterPolicyRequest.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/model/request/RegisterPolicyRequest.java index 07dbec0da9..549d785f20 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/model/request/RegisterPolicyRequest.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/model/request/RegisterPolicyRequest.java @@ -1,5 +1,5 @@ /******************************************************************************** - * Copyright (c) 2023 Contributors to the Eclipse Foundation + * Copyright (c) 2023,2024 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. @@ -28,7 +28,6 @@ import java.time.Instant; import java.time.OffsetDateTime; import java.util.List; -import java.util.UUID; public record RegisterPolicyRequest( String policyId, @@ -37,7 +36,7 @@ public record RegisterPolicyRequest( ) { public static RegisterPolicyRequest from(String leftOperand, OperatorType operatorType, String rightOperand, OffsetDateTime ttl) { return new RegisterPolicyRequest( - UUID.randomUUID().toString(), + rightOperand, ttl.toInstant(), List.of(new Permission( PolicyType.USE, From 60e770f47c651611f11481e9c6f3859a7e00a7e8 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 13:11:57 +0100 Subject: [PATCH 010/311] chore(tx-backend): #XXX set proper rule ID --- tx-backend/docker/docker-compose.yml | 6 + .../openapi/traceability-foss-backend.json | 6948 ++++++++++++++++- .../asbuilt/rest/AssetAsBuiltController.java | 6 +- .../rest/AssetAsPlannedController.java | 6 +- .../service/MainAspectAsPlannedStrategy.java | 8 +- .../service/EdcNotificationServiceImpl.java | 2 +- .../model/SubmodelPayloadEntity.java | 3 + .../repository/rest/irs/IrsServiceTest.java | 2 - .../PublisherInvestigationsControllerIT.java | 1 - .../EdcNotificationServiceImplTest.java | 3 - 10 files changed, 6967 insertions(+), 18 deletions(-) diff --git a/tx-backend/docker/docker-compose.yml b/tx-backend/docker/docker-compose.yml index df5743a648..09b451c46a 100644 --- a/tx-backend/docker/docker-compose.yml +++ b/tx-backend/docker/docker-compose.yml @@ -30,6 +30,12 @@ services: - "5432" networks: net: + security_opt: + - apparmor:unconfined + healthcheck: + test: [ "NONE" ] + cap_drop: + - all networks: net: diff --git a/tx-backend/openapi/traceability-foss-backend.json b/tx-backend/openapi/traceability-foss-backend.json index 507ba88901..abb96e8b95 100644 --- a/tx-backend/openapi/traceability-foss-backend.json +++ b/tx-backend/openapi/traceability-foss-backend.json @@ -1 +1,6947 @@ -{"openapi":"3.0.1","info":{"title":"Trace-FOSS - OpenAPI Documentation","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"]}],"tags":[{"name":"Investigations","description":"Operations on Investigation Notification"}],"paths":{"/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":{"200":{"description":"Returns the paged result found","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"200":{"description":"Returns the paged result found for BpnEdcMapping","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"200":{"description":"Returns the paged result found for BpnEdcMapping","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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":{}}}},"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."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations":{"post":{"tags":["Investigations"],"summary":"Start investigations by part ids","description":"The endpoint starts investigations based on part ids provided.","operationId":"investigateAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/update":{"post":{"tags":["Investigations"],"summary":"Update investigations by id","description":"The endpoint updates investigations by their id.","operationId":"updateInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"204":{"description":"No content."},"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/close":{"post":{"tags":["Investigations"],"summary":"Close investigations by id","description":"The endpoint closes investigations by their id.","operationId":"closeInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"204":{"description":"No content."},"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/cancel":{"post":{"tags":["Investigations"],"summary":"Cancles investigations by id","description":"The endpoint cancles investigations by their id.","operationId":"cancelInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/approve":{"post":{"tags":["Investigations"],"summary":"Approves investigations by id","description":"The endpoint approves investigations by their id.","operationId":"approveInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/filter":{"post":{"tags":["Investigations"],"summary":"Filter investigations defined by the request body","description":"The endpoint returns investigations as paged result.","operationId":"filterInvestigations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"}}}}},"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":{"200":{"description":"OK.","content":{"application/json":{}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."},"500":{"description":"Internal server error.","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":{"200":{"description":"Returns the paged result found for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."},"500":{"description":"Internal server error.","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"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts":{"post":{"tags":["Alerts"],"summary":"Start alert by part ids","description":"The endpoint starts alert based on part ids provided.","operationId":"alertAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/update":{"post":{"tags":["Alerts"],"summary":"Update alert by id","description":"The endpoint updates alert by their id.","operationId":"updateAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"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"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/close":{"post":{"tags":["Alerts"],"summary":"Close alert by id","description":"The endpoint closes alert by id.","operationId":"closeAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"204":{"description":"No content."},"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/cancel":{"post":{"tags":["Alerts"],"summary":"Cancels alert by id","description":"The endpoint cancels alert by id.","operationId":"cancelAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/approve":{"post":{"tags":["Alerts"],"summary":"Approves alert by id","description":"The endpoint approves alert by id.","operationId":"approveAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/filter":{"post":{"tags":["Alerts"],"summary":"Filter alerts defined by the request body","description":"The endpoint returns alerts as paged result.","operationId":"filterAlerts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns the paged result found for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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 updated asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Assets","items":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"202":{"description":"Created registry reload job."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/irs/job/callback":{"get":{"tags":["irs-callback-controller"],"operationId":"handleIrsJobCallback","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/investigations/{investigationId}":{"get":{"tags":["Investigations"],"summary":"Gets investigations by id","description":"The endpoint returns investigations as paged result by their id.","operationId":"getInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":-2147483648,"type":"array","description":"Investigations","items":{"$ref":"#/components/schemas/InvestigationResponse"}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/distinctFilterValues":{"get":{"tags":["Assets","Investigations"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/assets/as-planned/{assetId}/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":"assetId","in":"path","required":true,"schema":{"type":"string"}},{"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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/assets/as-built/{assetId}/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":"assetId","in":"path","required":true,"schema":{"type":"string"}},{"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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns the assets found","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}":{"get":{"tags":["Alerts"],"summary":"Gets Alert by id","description":"The endpoint returns alert by id.","operationId":"getAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Alerts","items":{"$ref":"#/components/schemas/AlertResponse"}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/distinctFilterValues":{"get":{"tags":["Assets","Alerts"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","operationId":"distinctFilterValues_3","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"200":{"description":"Okay"},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"Deleted."},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}}},"components":{"schemas":{"BpnMappingRequest":{"required":["bpn","url"],"type":"object","properties":{"bpn":{"maxLength":255,"minLength":0,"type":"string"},"url":{"maxLength":255,"minLength":0,"type":"string"}}},"ErrorResponse":{"type":"object","properties":{"message":{"maxLength":1000,"minLength":0,"pattern":"^.*$","type":"string"}}},"StartQualityNotificationRequest":{"required":["severity"],"type":"object","properties":{"partIds":{"maxItems":100,"minItems":1,"type":"array","items":{"type":"string"}},"description":{"maxLength":1000,"minLength":15,"type":"string"},"targetDate":{"type":"string","format":"date-time"},"severity":{"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE_THREATENING"]},"receiverBpn":{"type":"string"},"asBuilt":{"type":"boolean"}}},"QualityNotificationIdResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"}}},"UpdateQualityNotificationRequest":{"required":["status"],"type":"object","properties":{"status":{"type":"string","description":"The UpdateInvestigationStatus","enum":["ACKNOWLEDGED","ACCEPTED","DECLINED"]},"reason":{"type":"string"}}},"CloseQualityNotificationRequest":{"type":"object","properties":{"reason":{"maxLength":1000,"minLength":15,"type":"string"}}},"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"}}}},"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"},"accessPolicyId":{"type":"string"},"contractDefinitionId":{"type":"string"}}},"SyncAssetsRequest":{"type":"object","properties":{"globalAssetIds":{"maxItems":100,"minItems":1,"type":"array","description":"Assets","items":{"type":"string"}}}},"GetDetailInformationRequest":{"type":"object","properties":{"assetIds":{"maxItems":50,"minItems":1,"type":"array","items":{"type":"string"}}}},"UpdateAssetRequest":{"required":["qualityType"],"type":"object","properties":{"qualityType":{"type":"string","enum":["Ok","Minor","Major","Critical","LifeThreatening"]}}},"DescriptionsResponse":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsBuiltResponse":{"type":"object","properties":{"partId":{"maxLength":255,"minLength":0,"type":"string"},"customerPartId":{"maxLength":255,"minLength":0,"type":"string"},"nameAtCustomer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingCountry":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingDate":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsPlannedResponse":{"type":"object","properties":{"validityPeriodFrom":{"maxLength":255,"minLength":0,"type":"string"},"validityPeriodTo":{"maxLength":255,"minLength":0,"type":"string"}}},"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"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"},"subcomponents":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectDataTractionBatteryCodeSubcomponentResponse"}}}},"DetailAspectDataTractionBatteryCodeSubcomponentResponse":{"type":"object","properties":{"productType":{"maxLength":255,"minLength":0,"type":"string"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectModelResponse":{"type":"object","properties":{"type":{"type":"string","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"},"function":{"type":"string"},"functionValidFrom":{"type":"string"},"catenaXSiteId":{"type":"string"}}},"InvestigationResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}},"QualityNotificationReasonResponse":{"type":"object","properties":{"close":{"maxLength":1000,"minLength":0,"type":"string"},"accept":{"maxLength":1000,"minLength":0,"type":"string"},"decline":{"maxLength":1000,"minLength":0,"type":"string"}}},"DashboardResponse":{"type":"object","properties":{"asBuiltCustomerParts":{"type":"integer","format":"int64"},"asPlannedCustomerParts":{"type":"integer","format":"int64"},"asBuiltSupplierParts":{"type":"integer","format":"int64"},"asPlannedSupplierParts":{"type":"integer","format":"int64"},"asBuiltOwnParts":{"type":"integer","format":"int64"},"asPlannedOwnParts":{"type":"integer","format":"int64"},"myPartsWithOpenAlerts":{"type":"integer","format":"int64"},"myPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"supplierPartsWithOpenAlerts":{"type":"integer","format":"int64"},"customerPartsWithOpenAlerts":{"type":"integer","format":"int64"},"supplierPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"customerPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"receivedActiveAlerts":{"type":"integer","format":"int64"},"receivedActiveInvestigations":{"type":"integer","format":"int64"},"sentActiveAlerts":{"type":"integer","format":"int64"},"sentActiveInvestigations":{"type":"integer","format":"int64"}}},"AlertResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}}},"securitySchemes":{"oAuth2":{"type":"oauth2","flows":{"clientCredentials":{"scopes":{"profile email":""}}}}}}} \ No newline at end of file +{ + "openapi" : "3.0.1", + "info" : { + "title" : "Trace-FOSS - OpenAPI Documentation", + "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" + ] + } + ], + "tags" : [ + { + "name" : "Investigations", + "description" : "Operations on Investigation Notification" + } + ], + "paths" : { + "/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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "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" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "200" : { + "description" : "Returns the paged result found for BpnEdcMapping", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array" + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "200" : { + "description" : "Returns the paged result found for BpnEdcMapping", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array" + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "401" : { + "description" : "Authorization failed.", + "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" : {} + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No Content." + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/investigations" : { + "post" : { + "tags" : [ + "Investigations" + ], + "summary" : "Start investigations by part ids", + "description" : "The endpoint starts investigations based on part ids provided.", + "operationId" : "investigateAssets", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/StartQualityNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/QualityNotificationIdResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/investigations/{investigationId}/update" : { + "post" : { + "tags" : [ + "Investigations" + ], + "summary" : "Update investigations by id", + "description" : "The endpoint updates investigations by their id.", + "operationId" : "updateInvestigation", + "parameters" : [ + { + "name" : "investigationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateQualityNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/investigations/{investigationId}/close" : { + "post" : { + "tags" : [ + "Investigations" + ], + "summary" : "Close investigations by id", + "description" : "The endpoint closes investigations by their id.", + "operationId" : "closeInvestigation", + "parameters" : [ + { + "name" : "investigationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CloseQualityNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/investigations/{investigationId}/cancel" : { + "post" : { + "tags" : [ + "Investigations" + ], + "summary" : "Cancles investigations by id", + "description" : "The endpoint cancles investigations by their id.", + "operationId" : "cancelInvestigation", + "parameters" : [ + { + "name" : "investigationId", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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." + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/investigations/{investigationId}/approve" : { + "post" : { + "tags" : [ + "Investigations" + ], + "summary" : "Approves investigations by id", + "description" : "The endpoint approves investigations by their id.", + "operationId" : "approveInvestigation", + "parameters" : [ + { + "name" : "investigationId", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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." + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/investigations/filter" : { + "post" : { + "tags" : [ + "Investigations" + ], + "summary" : "Filter investigations defined by the request body", + "description" : "The endpoint returns investigations as paged result.", + "operationId" : "filterInvestigations", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PageableFilterRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "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" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CreateNotificationContractResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "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", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "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" : {} + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "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" : {} + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created." + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created." + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts" : { + "post" : { + "tags" : [ + "Alerts" + ], + "summary" : "Start alert by part ids", + "description" : "The endpoint starts alert based on part ids provided.", + "operationId" : "alertAssets", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/StartQualityNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "201" : { + "description" : "Created.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/QualityNotificationIdResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts/{alertId}/update" : { + "post" : { + "tags" : [ + "Alerts" + ], + "summary" : "Update alert by id", + "description" : "The endpoint updates alert by their id.", + "operationId" : "updateAlert", + "parameters" : [ + { + "name" : "alertId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/UpdateQualityNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts/{alertId}/close" : { + "post" : { + "tags" : [ + "Alerts" + ], + "summary" : "Close alert by id", + "description" : "The endpoint closes alert by id.", + "operationId" : "closeAlert", + "parameters" : [ + { + "name" : "alertId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/CloseQualityNotificationRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Ok." + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No content." + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts/{alertId}/cancel" : { + "post" : { + "tags" : [ + "Alerts" + ], + "summary" : "Cancels alert by id", + "description" : "The endpoint cancels alert by id.", + "operationId" : "cancelAlert", + "parameters" : [ + { + "name" : "alertId", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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." + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts/{alertId}/approve" : { + "post" : { + "tags" : [ + "Alerts" + ], + "summary" : "Approves alert by id", + "description" : "The endpoint approves alert by id.", + "operationId" : "approveAlert", + "parameters" : [ + { + "name" : "alertId", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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." + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts/filter" : { + "post" : { + "tags" : [ + "Alerts" + ], + "summary" : "Filter alerts defined by the request body", + "description" : "The endpoint returns alerts as paged result.", + "operationId" : "filterAlerts", + "requestBody" : { + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/PageableFilterRequest" + } + } + }, + "required" : true + }, + "responses" : { + "200" : { + "description" : "Returns the paged result found for Asset", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array" + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + } + }, + "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" : { + "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" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "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" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "200" : { + "description" : "Returns the policies", + "content" : { + "*/*" : { + "schema" : { + "$ref" : "#/components/schemas/PolicyResponse" + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/irs/job/callback" : { + "get" : { + "tags" : [ + "irs-callback-controller" + ], + "operationId" : "handleIrsJobCallback", + "parameters" : [ + { + "name" : "id", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "name" : "state", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + } + ], + "responses" : { + "200" : { + "description" : "OK" + } + } + } + }, + "/investigations/{investigationId}" : { + "get" : { + "tags" : [ + "Investigations" + ], + "summary" : "Gets investigations by id", + "description" : "The endpoint returns investigations as paged result by their id.", + "operationId" : "getInvestigation", + "parameters" : [ + { + "name" : "investigationId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "responses" : { + "200" : { + "description" : "OK.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : -2147483648, + "type" : "array", + "description" : "Investigations", + "items" : { + "$ref" : "#/components/schemas/InvestigationResponse" + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/investigations/distinctFilterValues" : { + "get" : { + "tags" : [ + "Assets", + "Investigations" + ], + "summary" : "getDistinctFilterValues", + "description" : "The endpoint returns a distinct filter values for given fieldName.", + "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" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns a distinct filter values for given fieldName.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + } + } + }, + "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" : true, + "schema" : { + "type" : "integer", + "format" : "int32" + } + }, + { + "name" : "startWith", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "name" : "owner", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + } + } + ], + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns a distinct filter values for given fieldName.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "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" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + } + }, + "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" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : true, + "schema" : { + "type" : "integer", + "format" : "int32" + } + }, + { + "name" : "startWith", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string" + } + }, + { + "name" : "owner", + "in" : "query", + "required" : true, + "schema" : { + "type" : "string", + "enum" : [ + "SUPPLIER", + "CUSTOMER", + "OWN", + "UNKNOWN" + ] + } + } + ], + "responses" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns a distinct filter values for given fieldName.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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, + "minItems" : 0, + "type" : "array" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "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 asset by childId", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticModelId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "businessPartner" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtManufacturer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "owner" : { + "type" : "string", + "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", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + }, + "van" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "semanticDataModel" : { + "type" : "string", + "enum" : [ + "BATCH", + "SERIALPART", + "UNKNOWN", + "PARTASPLANNED", + "JUSTINSEQUENCE" + ] + }, + "classification" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "detailAspectModels" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectModelResponse" + } + }, + "sentQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityAlertIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "sentQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "receivedQualityInvestigationIdsInStatusActive" : { + "type" : "array", + "items" : { + "type" : "integer", + "format" : "int64" + } + }, + "importState" : { + "type" : "string", + "enum" : [ + "TRANSIENT", + "PERSISTENT", + "ERROR", + "IN_SYNCHRONIZATION", + "UNSET" + ] + }, + "importNote" : { + "type" : "string" + } + } + } + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts/{alertId}" : { + "get" : { + "tags" : [ + "Alerts" + ], + "summary" : "Gets Alert by id", + "description" : "The endpoint returns alert by id.", + "operationId" : "getAlert", + "parameters" : [ + { + "name" : "alertId", + "in" : "path", + "required" : true, + "schema" : { + "type" : "integer", + "format" : "int64" + } + } + ], + "responses" : { + "200" : { + "description" : "OK.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "type" : "array", + "description" : "Alerts", + "items" : { + "$ref" : "#/components/schemas/AlertResponse" + } + } + } + } + }, + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + }, + "/alerts/distinctFilterValues" : { + "get" : { + "tags" : [ + "Assets", + "Alerts" + ], + "summary" : "getDistinctFilterValues", + "description" : "The endpoint returns a distinct filter values for given fieldName.", + "operationId" : "distinctFilterValues_3", + "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" : { + "401" : { + "description" : "Authorization failed.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Returns a distinct filter values for given fieldName.", + "content" : { + "application/json" : { + "schema" : { + "maxItems" : 2147483647, + "minItems" : 0, + "type" : "array" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "No Content." + }, + "415" : { + "description" : "Unsupported media type", + "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" + } + } + } + }, + "500" : { + "description" : "Internal server error.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "429" : { + "description" : "Too many requests.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "200" : { + "description" : "Okay" + }, + "400" : { + "description" : "Bad request.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "403" : { + "description" : "Forbidden.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "404" : { + "description" : "Not found.", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + }, + "204" : { + "description" : "Deleted." + }, + "415" : { + "description" : "Unsupported media type", + "content" : { + "application/json" : { + "schema" : { + "$ref" : "#/components/schemas/ErrorResponse" + } + } + } + } + }, + "security" : [ + { + "oAuth2" : [ + "profile email" + ] + } + ] + } + } + }, + "components" : { + "schemas" : { + "BpnMappingRequest" : { + "required" : [ + "bpn", + "url" + ], + "type" : "object", + "properties" : { + "bpn" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "url" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + }, + "ErrorResponse" : { + "type" : "object", + "properties" : { + "message" : { + "maxLength" : 1000, + "minLength" : 0, + "pattern" : "^.*$", + "type" : "string" + } + } + }, + "StartQualityNotificationRequest" : { + "required" : [ + "severity" + ], + "type" : "object", + "properties" : { + "partIds" : { + "maxItems" : 100, + "minItems" : 1, + "type" : "array", + "items" : { + "type" : "string" + } + }, + "description" : { + "maxLength" : 1000, + "minLength" : 15, + "type" : "string" + }, + "targetDate" : { + "type" : "string", + "format" : "date-time" + }, + "severity" : { + "type" : "string", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE_THREATENING" + ] + }, + "receiverBpn" : { + "type" : "string" + }, + "asBuilt" : { + "type" : "boolean" + } + } + }, + "QualityNotificationIdResponse" : { + "type" : "object", + "properties" : { + "id" : { + "type" : "integer", + "format" : "int64" + } + } + }, + "UpdateQualityNotificationRequest" : { + "required" : [ + "status" + ], + "type" : "object", + "properties" : { + "status" : { + "type" : "string", + "description" : "The UpdateInvestigationStatus", + "enum" : [ + "ACKNOWLEDGED", + "ACCEPTED", + "DECLINED" + ] + }, + "reason" : { + "type" : "string" + } + } + }, + "CloseQualityNotificationRequest" : { + "type" : "object", + "properties" : { + "reason" : { + "maxLength" : 1000, + "minLength" : 15, + "type" : "string" + } + } + }, + "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" + } + } + } + }, + "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" + }, + "accessPolicyId" : { + "type" : "string" + }, + "contractDefinitionId" : { + "type" : "string" + } + } + }, + "RegisterAssetRequest" : { + "required" : [ + "assetIds", + "policyId" + ], + "type" : "object", + "properties" : { + "policyId" : { + "type" : "string" + }, + "assetIds" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "SyncAssetsRequest" : { + "type" : "object", + "properties" : { + "globalAssetIds" : { + "maxItems" : 100, + "minItems" : 1, + "type" : "array", + "description" : "Assets", + "items" : { + "type" : "string" + } + } + } + }, + "GetDetailInformationRequest" : { + "type" : "object", + "properties" : { + "assetIds" : { + "maxItems" : 50, + "minItems" : 1, + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "UpdateAssetRequest" : { + "required" : [ + "qualityType" + ], + "type" : "object", + "properties" : { + "qualityType" : { + "type" : "string", + "enum" : [ + "Ok", + "Minor", + "Major", + "Critical", + "LifeThreatening" + ] + } + } + }, + "DescriptionsResponse" : { + "type" : "object", + "properties" : { + "id" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "idShort" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + }, + "DetailAspectDataAsBuiltResponse" : { + "type" : "object", + "properties" : { + "partId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "customerPartId" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "nameAtCustomer" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturingCountry" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "manufacturingDate" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + }, + "DetailAspectDataAsPlannedResponse" : { + "type" : "object", + "properties" : { + "validityPeriodFrom" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "validityPeriodTo" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + }, + "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" + }, + "tractionBatteryCode" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "subcomponents" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/DetailAspectDataTractionBatteryCodeSubcomponentResponse" + } + } + } + }, + "DetailAspectDataTractionBatteryCodeSubcomponentResponse" : { + "type" : "object", + "properties" : { + "productType" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "tractionBatteryCode" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + }, + "DetailAspectModelResponse" : { + "type" : "object", + "properties" : { + "type" : { + "type" : "string", + "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" + }, + "function" : { + "type" : "string" + }, + "functionValidFrom" : { + "type" : "string" + }, + "catenaXSiteId" : { + "type" : "string" + } + } + }, + "ConstraintResponse" : { + "type" : "object", + "properties" : { + "leftOperand" : { + "type" : "string" + }, + "operatorTypeResponse" : { + "type" : "string", + "enum" : [ + "EQ", + "NEQ", + "LT", + "GT", + "IN", + "LTEQ", + "GTEQ", + "ISA", + "HASPART", + "ISPARTOF", + "ISONEOF", + "ISALLOF", + "ISNONEOF" + ] + }, + "rightOperands" : { + "type" : "array", + "items" : { + "type" : "string" + } + } + } + }, + "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", + "enum" : [ + "ACCESS", + "USE" + ] + }, + "constraints" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/ConstraintsResponse" + } + } + } + }, + "PolicyResponse" : { + "type" : "object", + "properties" : { + "policyId" : { + "type" : "string" + }, + "createdOn" : { + "type" : "string", + "format" : "date-time" + }, + "validUntil" : { + "type" : "string", + "format" : "date-time" + }, + "permissions" : { + "type" : "array", + "items" : { + "$ref" : "#/components/schemas/PermissionResponse" + } + } + } + }, + "InvestigationResponse" : { + "type" : "object", + "properties" : { + "id" : { + "maximum" : 255, + "minimum" : 0, + "type" : "integer", + "format" : "int64" + }, + "status" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "enum" : [ + "CREATED", + "SENT", + "RECEIVED", + "ACKNOWLEDGED", + "ACCEPTED", + "DECLINED", + "CANCELED", + "CLOSED" + ] + }, + "description" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string" + }, + "createdBy" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "createdByName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "createdDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string" + }, + "assetIds" : { + "maxItems" : 1000, + "minItems" : 0, + "type" : "array", + "description" : "assetIds", + "items" : { + "type" : "string" + } + }, + "channel" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "enum" : [ + "SENDER", + "RECEIVER" + ] + }, + "reason" : { + "$ref" : "#/components/schemas/QualityNotificationReasonResponse" + }, + "sendTo" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "sendToName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "severity" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE-THREATENING" + ] + }, + "targetDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string" + }, + "errorMessage" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + }, + "QualityNotificationReasonResponse" : { + "type" : "object", + "properties" : { + "close" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string" + }, + "accept" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string" + }, + "decline" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string" + } + } + }, + "DashboardResponse" : { + "type" : "object", + "properties" : { + "asBuiltCustomerParts" : { + "type" : "integer", + "format" : "int64" + }, + "asPlannedCustomerParts" : { + "type" : "integer", + "format" : "int64" + }, + "asBuiltSupplierParts" : { + "type" : "integer", + "format" : "int64" + }, + "asPlannedSupplierParts" : { + "type" : "integer", + "format" : "int64" + }, + "asBuiltOwnParts" : { + "type" : "integer", + "format" : "int64" + }, + "asPlannedOwnParts" : { + "type" : "integer", + "format" : "int64" + }, + "myPartsWithOpenAlerts" : { + "type" : "integer", + "format" : "int64" + }, + "myPartsWithOpenInvestigations" : { + "type" : "integer", + "format" : "int64" + }, + "supplierPartsWithOpenAlerts" : { + "type" : "integer", + "format" : "int64" + }, + "customerPartsWithOpenAlerts" : { + "type" : "integer", + "format" : "int64" + }, + "supplierPartsWithOpenInvestigations" : { + "type" : "integer", + "format" : "int64" + }, + "customerPartsWithOpenInvestigations" : { + "type" : "integer", + "format" : "int64" + }, + "receivedActiveAlerts" : { + "type" : "integer", + "format" : "int64" + }, + "receivedActiveInvestigations" : { + "type" : "integer", + "format" : "int64" + }, + "sentActiveAlerts" : { + "type" : "integer", + "format" : "int64" + }, + "sentActiveInvestigations" : { + "type" : "integer", + "format" : "int64" + } + } + }, + "AlertResponse" : { + "type" : "object", + "properties" : { + "id" : { + "maximum" : 255, + "minimum" : 0, + "type" : "integer", + "format" : "int64" + }, + "status" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "enum" : [ + "CREATED", + "SENT", + "RECEIVED", + "ACKNOWLEDGED", + "ACCEPTED", + "DECLINED", + "CANCELED", + "CLOSED" + ] + }, + "description" : { + "maxLength" : 1000, + "minLength" : 0, + "type" : "string" + }, + "createdBy" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "createdByName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "createdDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string" + }, + "assetIds" : { + "maxItems" : 1000, + "minItems" : 0, + "type" : "array", + "description" : "assetIds", + "items" : { + "type" : "string" + } + }, + "channel" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "enum" : [ + "SENDER", + "RECEIVER" + ] + }, + "reason" : { + "$ref" : "#/components/schemas/QualityNotificationReasonResponse" + }, + "sendTo" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "sendToName" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + }, + "severity" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string", + "enum" : [ + "MINOR", + "MAJOR", + "CRITICAL", + "LIFE-THREATENING" + ] + }, + "targetDate" : { + "maxLength" : 50, + "minLength" : 0, + "type" : "string" + }, + "errorMessage" : { + "maxLength" : 255, + "minLength" : 0, + "type" : "string" + } + } + } + }, + "securitySchemes" : { + "oAuth2" : { + "type" : "oauth2", + "flows" : { + "clientCredentials" : { + "scopes" : { + "profile email" : "" + } + } + } + } + } + } +} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asbuilt/rest/AssetAsBuiltController.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asbuilt/rest/AssetAsBuiltController.java index 8a37d93cb8..1ab95d06a8 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asbuilt/rest/AssetAsBuiltController.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asbuilt/rest/AssetAsBuiltController.java @@ -374,7 +374,7 @@ public Map assetsCountryMap() { mediaType = "application/json", schema = @Schema(implementation = ErrorResponse.class)))}) @GetMapping("/{assetId}") - public AssetAsBuiltResponse asset(@PathVariable String assetId) { + public AssetAsBuiltResponse getAssetById(@PathVariable String assetId) { return AssetAsBuiltResponseMapper.from(assetBaseService.getAssetById(assetId)); } @@ -429,8 +429,8 @@ public AssetAsBuiltResponse asset(@PathVariable String assetId) { content = @Content( mediaType = "application/json", schema = @Schema(implementation = ErrorResponse.class)))}) - @GetMapping("/{assetId}/children/{childId}") - public AssetAsBuiltResponse asset(@PathVariable String assetId, @PathVariable String childId) { + @GetMapping("/*/children/{childId}") + public AssetAsBuiltResponse getAssetChildId(@PathVariable String childId) { return AssetAsBuiltResponseMapper.from(assetBaseService.getAssetByChildId(childId)); } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asplanned/rest/AssetAsPlannedController.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asplanned/rest/AssetAsPlannedController.java index 2647514d4b..1fce533eb6 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asplanned/rest/AssetAsPlannedController.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/application/asplanned/rest/AssetAsPlannedController.java @@ -305,7 +305,7 @@ public List distinctFilterValues(@QueryParam("fieldName") String fieldNa mediaType = "application/json", schema = @Schema(implementation = ErrorResponse.class)))}) @GetMapping("/{assetId}") - public AssetAsPlannedResponse asset(@PathVariable String assetId) { + public AssetAsPlannedResponse getAssetById(@PathVariable String assetId) { return AssetAsPlannedResponseMapper.from(assetService.getAssetById(assetId)); } @@ -360,8 +360,8 @@ public AssetAsPlannedResponse asset(@PathVariable String assetId) { content = @Content( mediaType = "application/json", schema = @Schema(implementation = ErrorResponse.class)))}) - @GetMapping("/{assetId}/children/{childId}") - public AssetAsPlannedResponse asset(@PathVariable("assetId") String assetId, @PathVariable("childId") String childId) { + @GetMapping("/*/children/{childId}") + public AssetAsPlannedResponse getAssetByChildId(@PathVariable("childId") String childId) { return AssetAsPlannedResponseMapper.from(assetService.getAssetByChildId(childId)); } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java index a4cfb1b323..4c41133758 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java @@ -84,7 +84,6 @@ public AssetBase mapToAssetBase(ImportRequest.AssetImportRequest assetImportRequ .toList(); - List childRelations = submodels.stream() .filter(genericSubmodel -> isDownwardRelationshipAsPlanned(genericSubmodel.getAspectType())) .map(GenericSubmodel::getPayload) @@ -102,9 +101,10 @@ public AssetBase mapToAssetBase(ImportRequest.AssetImportRequest assetImportRequ detailAspectModels.addAll(extractDetailAspectModelsPartSiteInformationAsPlanned(emptyIfNull(partSiteInformationAsPlannedRequest.sites()))); } - DetailAspectModel asPlannedDetailAspect = extractDetailAspectModelsAsPlanned(partAsPlannedV2.validityPeriod()); - detailAspectModels.add(asPlannedDetailAspect); - + if (partAsPlannedV2 != null) { + DetailAspectModel asPlannedDetailAspect = extractDetailAspectModelsAsPlanned(partAsPlannedV2.validityPeriod()); + detailAspectModels.add(asPlannedDetailAspect); + } AssetBase.AssetBaseBuilder assetBaseBuilder = AssetBase.builder(); if (partAsPlannedV2 != null) { diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/EdcNotificationServiceImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/EdcNotificationServiceImpl.java index 1b7a30c795..8dad3e71c9 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/EdcNotificationServiceImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/EdcNotificationServiceImpl.java @@ -59,7 +59,7 @@ public CompletableFuture asyncNotificationMessageExe Discovery discovery = discoveryService.getDiscoveryByBPN(notification.getSendTo()); String senderEdcUrl = discovery.getSenderUrl(); List receiverUrls = emptyIfNull(discovery.getReceiverUrls()); - List sendResults = null; + List sendResults = List.of(); if (notification.getType().equals(QualityNotificationType.ALERT)) { log.info("::asyncNotificationExecutor::isQualityAlert"); diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/model/SubmodelPayloadEntity.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/model/SubmodelPayloadEntity.java index 3c6a73d0c0..916e9d90e4 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/model/SubmodelPayloadEntity.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/model/SubmodelPayloadEntity.java @@ -31,6 +31,7 @@ import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; +import lombok.ToString; import org.eclipse.tractusx.traceability.assets.infrastructure.asbuilt.model.AssetAsBuiltEntity; import org.eclipse.tractusx.traceability.assets.infrastructure.asplanned.model.AssetAsPlannedEntity; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.GenericSubmodel; @@ -55,10 +56,12 @@ public class SubmodelPayloadEntity { @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "asset_as_built_id") + @ToString.Exclude public AssetAsBuiltEntity assetAsBuilt; @ManyToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @JoinColumn(name = "asset_as_planned_id") + @ToString.Exclude private AssetAsPlannedEntity assetAsPlanned; public static List from(AssetAsBuiltEntity asset, List submodels) { diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java index f49b6565f5..0679e76997 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java @@ -157,8 +157,6 @@ void givenOutdatedPolicyExist_whenCreateIrsPolicyIfMissing_thenUpdateIt() { @ParameterizedTest @MethodSource("provideDirections") void testFindAssets_completedJob_returnsConvertedAssets(Direction direction) { - - RegisterJobResponse jobId = new RegisterJobResponse("123"); // Given when(traceabilityProperties.getBpn()).thenReturn(BPN.of("test")); diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/qualitynotification/investigation/PublisherInvestigationsControllerIT.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/qualitynotification/investigation/PublisherInvestigationsControllerIT.java index f36900cb4d..5873441272 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/qualitynotification/investigation/PublisherInvestigationsControllerIT.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/qualitynotification/investigation/PublisherInvestigationsControllerIT.java @@ -374,7 +374,6 @@ void shouldCloseInvestigationStatus() throws JsonProcessingException, JoseExcept "urn:uuid:fe99da3d-b0de-4e80-81da-882aebcca978" // BPN: BPNL00000003AYRE ); String description = "at least 15 characters long investigation description"; - String filterString = "channel,EQUAL,SENDER,AND"; oAuth2ApiSupport.oauth2ApiReturnsTechnicalUserToken(); assetsSupport.defaultAssetsStored(); diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/qualitynotification/domain/service/EdcNotificationServiceImplTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/qualitynotification/domain/service/EdcNotificationServiceImplTest.java index bc69f50f5d..9b734fe35f 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/qualitynotification/domain/service/EdcNotificationServiceImplTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/qualitynotification/domain/service/EdcNotificationServiceImplTest.java @@ -21,8 +21,6 @@ import org.eclipse.tractusx.traceability.discovery.domain.model.Discovery; import org.eclipse.tractusx.traceability.discovery.domain.service.DiscoveryService; -import org.eclipse.tractusx.traceability.qualitynotification.domain.base.AlertRepository; -import org.eclipse.tractusx.traceability.qualitynotification.domain.base.InvestigationRepository; import org.eclipse.tractusx.traceability.qualitynotification.domain.base.exception.ContractNegotiationException; import org.eclipse.tractusx.traceability.qualitynotification.domain.base.exception.NoCatalogItemException; import org.eclipse.tractusx.traceability.qualitynotification.domain.base.exception.NoEndpointDataReferenceException; @@ -45,7 +43,6 @@ import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doThrow; import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyNoInteractions; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) From 076c0a843ddca2ab11c4f9135155c3a526496938 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 13:20:58 +0100 Subject: [PATCH 011/311] chore(tx-backend): #XXX add health check config to docker compose --- tx-backend/docker/docker-compose.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tx-backend/docker/docker-compose.yml b/tx-backend/docker/docker-compose.yml index 09b451c46a..71da85a2f4 100644 --- a/tx-backend/docker/docker-compose.yml +++ b/tx-backend/docker/docker-compose.yml @@ -33,7 +33,10 @@ services: security_opt: - apparmor:unconfined healthcheck: - test: [ "NONE" ] + test: [ "CMD-SHELL", "pg_isready" ] + interval: 10s + timeout: 5s + retries: 5 cap_drop: - all From 12350767193c5d1f0233e5fb9a8eef6ce7e432ba Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 13:26:05 +0100 Subject: [PATCH 012/311] chore(tx-backend): #XXX set no new priviledges to true --- tx-backend/docker/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tx-backend/docker/docker-compose.yml b/tx-backend/docker/docker-compose.yml index 71da85a2f4..9a21432254 100644 --- a/tx-backend/docker/docker-compose.yml +++ b/tx-backend/docker/docker-compose.yml @@ -31,7 +31,7 @@ services: networks: net: security_opt: - - apparmor:unconfined + - no-new-privileges:true healthcheck: test: [ "CMD-SHELL", "pg_isready" ] interval: 10s From c070a4202789f1af40f6eaebf67864594525e4cd Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 13:37:36 +0100 Subject: [PATCH 013/311] chore(tx-backend): #XXX add new testcase --- .../MainAspectAsPlannedStrategyTest.java | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java new file mode 100644 index 0000000000..9b7f0706af --- /dev/null +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java @@ -0,0 +1,38 @@ +package org.eclipse.tractusx.traceability.assets.domain.importpoc.service; + +import org.eclipse.tractusx.traceability.assets.domain.base.model.AssetBase; +import org.eclipse.tractusx.traceability.assets.domain.importpoc.model.AssetMetaInfoRequest; +import org.eclipse.tractusx.traceability.assets.domain.importpoc.model.ImportRequest; +import org.eclipse.tractusx.traceability.common.properties.TraceabilityProperties; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class MainAspectAsPlannedStrategyTest { + + MainAspectAsPlannedStrategy strategy; + + @BeforeEach + void setUp() { + strategy = new MainAspectAsPlannedStrategy(); + } + + + @Test + void testMappingWithNoSubmodels() { + // given + ImportRequest.AssetImportRequest assetImportRequestV2 = new ImportRequest.AssetImportRequest( + new AssetMetaInfoRequest("catenaXId"), + List.of() + ); + + // when + AssetBase assetBase = strategy.mapToAssetBase(assetImportRequestV2, new TraceabilityProperties()); + + // then + assertThat(assetBase.getDetailAspectModels()).isNull(); + } +} From eb491f52db54fcc6bd40cd4207b206f01669fba8 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Tue, 23 Jan 2024 13:50:58 +0100 Subject: [PATCH 014/311] chore(tx-backend): #XXX reduce amount of if null checks --- .../domain/importpoc/service/MainAspectAsPlannedStrategy.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java index 4c41133758..0bd96eaecf 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategy.java @@ -101,13 +101,11 @@ public AssetBase mapToAssetBase(ImportRequest.AssetImportRequest assetImportRequ detailAspectModels.addAll(extractDetailAspectModelsPartSiteInformationAsPlanned(emptyIfNull(partSiteInformationAsPlannedRequest.sites()))); } + AssetBase.AssetBaseBuilder assetBaseBuilder = AssetBase.builder(); if (partAsPlannedV2 != null) { DetailAspectModel asPlannedDetailAspect = extractDetailAspectModelsAsPlanned(partAsPlannedV2.validityPeriod()); detailAspectModels.add(asPlannedDetailAspect); - } - AssetBase.AssetBaseBuilder assetBaseBuilder = AssetBase.builder(); - if (partAsPlannedV2 != null) { assetBaseBuilder .id(assetImportRequestV2.assetMetaInfoRequest().catenaXId()) .manufacturerId(traceabilityProperties.getBpn().value()) From cc74a2d21e7397cd17946827c381a1f0a9b11945 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Tue, 23 Jan 2024 15:24:35 +0100 Subject: [PATCH 015/311] feature(assetState): #535 deactivate asPlanned Buttons and show correct tooltip messages --- .../customer-parts.component.html | 2 + .../supplier-parts.component.html | 2 + .../parts/presentation/parts.component.html | 2 + .../parts-table/parts-table.component.html | 8 +-- .../parts-table/parts-table.component.ts | 65 +++++++++---------- .../presentation/part-detail.component.html | 6 +- .../presentation/part-detail.component.ts | 36 +++++++++- 7 files changed, 77 insertions(+), 44 deletions(-) diff --git a/frontend/src/app/modules/page/other-parts/presentation/customer-parts/customer-parts.component.html b/frontend/src/app/modules/page/other-parts/presentation/customer-parts/customer-parts.component.html index 43c2be6d26..f0ea86ad5a 100644 --- a/frontend/src/app/modules/page/other-parts/presentation/customer-parts/customer-parts.component.html +++ b/frontend/src/app/modules/page/other-parts/presentation/customer-parts/customer-parts.component.html @@ -38,6 +38,7 @@ [tableHeader]='"page.asBuiltParts" | i18n' (filterActivated)="filterActivated(true, $event )" [tableType]="TableType.AS_BUILT_CUSTOMER" + [mainAspectType]="bomLifecycle" >
@@ -64,6 +65,7 @@ [multiSortList]="tableCustomerAsPlannedSortList" (filterActivated)="filterActivated(false, $event )" [tableType]="TableType.AS_PLANNED_CUSTOMER" + [mainAspectType]="bomLifecycle" > diff --git a/frontend/src/app/modules/page/other-parts/presentation/supplier-parts/supplier-parts.component.html b/frontend/src/app/modules/page/other-parts/presentation/supplier-parts/supplier-parts.component.html index 58d6e2a919..537ff09c0c 100644 --- a/frontend/src/app/modules/page/other-parts/presentation/supplier-parts/supplier-parts.component.html +++ b/frontend/src/app/modules/page/other-parts/presentation/supplier-parts/supplier-parts.component.html @@ -45,6 +45,7 @@ [multiSortList]="tableSupplierAsBuiltSortList" (filterActivated)="filterActivated(true, $event )" [tableType]="TableType.AS_BUILT_SUPPLIER" + [mainAspectType]="bomLifecycle" > @@ -75,6 +76,7 @@ [multiSortList]="tableSupplierAsPlannedSortList" (filterActivated)="filterActivated(false, $event )" [tableType]="TableType.AS_PLANNED_SUPPLIER" + [mainAspectType]="bomLifecycle" > diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.html b/frontend/src/app/modules/page/parts/presentation/parts.component.html index dfacd88c58..d99d9c3778 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.html +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.html @@ -89,6 +89,7 @@ [multiSortList]="tableAsBuiltSortList" [tableHeader]='"page.asBuiltParts" | i18n' [tableType]="TableType.AS_BUILT_OWN" + [mainAspectType]="MainAspectType.AS_BUILT" > @@ -115,6 +116,7 @@ [multiSortList]="tableAsPlannedSortList" [tableHeader]='"page.asPlannedParts" | i18n' [tableType]="TableType.AS_PLANNED_OWN" + [mainAspectType]="MainAspectType.AS_PLANNED" > diff --git a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html index b0347d349e..9433105531 100644 --- a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html +++ b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html @@ -29,19 +29,19 @@

{{ selectedPartsInfoLabel | i18n : {count: selection?.selected?.length || 0} }}

announcement diff --git a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts index aad99d9269..997b578e64 100644 --- a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts +++ b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts @@ -17,7 +17,7 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -import {SelectionModel} from '@angular/cdk/collections'; +import { SelectionModel } from '@angular/cdk/collections'; import { Component, ElementRef, @@ -29,46 +29,37 @@ import { ViewChild, ViewChildren, } from '@angular/core'; -import {FormGroup} from '@angular/forms'; -import {MatDialog, MatDialogConfig} from '@angular/material/dialog'; -import {MatPaginator, PageEvent} from '@angular/material/paginator'; -import {MatSort, Sort} from '@angular/material/sort'; -import {MatTableDataSource} from '@angular/material/table'; -import {Router} from '@angular/router'; -import {EmptyPagination, Pagination} from '@core/model/pagination.model'; -import {RoleService} from '@core/user/role.service'; -import {TableSettingsService} from '@core/user/table-settings.service'; -import { - MultiSelectAutocompleteComponent -} from '@shared/components/multi-select-autocomplete/multi-select-autocomplete.component'; -import {TableType} from '@shared/components/multi-select-autocomplete/table-type.model'; -import {PartsAsBuiltConfigurationModel} from '@shared/components/parts-table/parts-as-built-configuration.model'; -import { - PartsAsBuiltCustomerConfigurationModel -} from '@shared/components/parts-table/parts-as-built-customer-configuration.model'; -import { - PartsAsBuiltSupplierConfigurationModel -} from '@shared/components/parts-table/parts-as-built-supplier-configuration.model'; -import {PartsAsPlannedConfigurationModel} from '@shared/components/parts-table/parts-as-planned-configuration.model'; -import { - PartsAsPlannedCustomerConfigurationModel -} from '@shared/components/parts-table/parts-as-planned-customer-configuration.model'; -import { - PartsAsPlannedSupplierConfigurationModel -} from '@shared/components/parts-table/parts-as-planned-supplier-configuration.model'; -import {TableViewConfig} from '@shared/components/parts-table/table-view-config.model'; -import {TableSettingsComponent} from '@shared/components/table-settings/table-settings.component'; +import { FormGroup } from '@angular/forms'; +import { MatDialog, MatDialogConfig } from '@angular/material/dialog'; +import { MatPaginator, PageEvent } from '@angular/material/paginator'; +import { MatSort, Sort } from '@angular/material/sort'; +import { MatTableDataSource } from '@angular/material/table'; +import { Router } from '@angular/router'; +import { EmptyPagination, Pagination } from '@core/model/pagination.model'; +import { RoleService } from '@core/user/role.service'; +import { TableSettingsService } from '@core/user/table-settings.service'; +import { MainAspectType } from '@page/parts/model/mainAspectType.enum'; +import { MultiSelectAutocompleteComponent } from '@shared/components/multi-select-autocomplete/multi-select-autocomplete.component'; +import { TableType } from '@shared/components/multi-select-autocomplete/table-type.model'; +import { PartsAsBuiltConfigurationModel } from '@shared/components/parts-table/parts-as-built-configuration.model'; +import { PartsAsBuiltCustomerConfigurationModel } from '@shared/components/parts-table/parts-as-built-customer-configuration.model'; +import { PartsAsBuiltSupplierConfigurationModel } from '@shared/components/parts-table/parts-as-built-supplier-configuration.model'; +import { PartsAsPlannedConfigurationModel } from '@shared/components/parts-table/parts-as-planned-configuration.model'; +import { PartsAsPlannedCustomerConfigurationModel } from '@shared/components/parts-table/parts-as-planned-customer-configuration.model'; +import { PartsAsPlannedSupplierConfigurationModel } from '@shared/components/parts-table/parts-as-planned-supplier-configuration.model'; +import { TableViewConfig } from '@shared/components/parts-table/table-view-config.model'; +import { TableSettingsComponent } from '@shared/components/table-settings/table-settings.component'; import { CreateHeaderFromColumns, TableConfig, TableEventConfig, TableHeaderSort, } from '@shared/components/table/table.model'; -import {ToastService} from '@shared/components/toasts/toast.service'; -import {isDateFilter} from '@shared/helper/filter-helper'; -import {addSelectedValues, removeSelectedValues} from '@shared/helper/table-helper'; -import {NotificationColumn} from '@shared/model/notification.model'; -import {DeeplinkService} from '@shared/service/deeplink.service'; +import { ToastService } from '@shared/components/toasts/toast.service'; +import { isDateFilter } from '@shared/helper/filter-helper'; +import { addSelectedValues, removeSelectedValues } from '@shared/helper/table-helper'; +import { NotificationColumn } from '@shared/model/notification.model'; +import { DeeplinkService } from '@shared/service/deeplink.service'; @Component({ @@ -93,6 +84,7 @@ export class PartsTableComponent implements OnInit { @Input() multiSortList: TableHeaderSort[]; @Input() tableType: TableType; + @Input() mainAspectType: MainAspectType; public tableConfig: TableConfig; @@ -218,7 +210,7 @@ export class PartsTableComponent implements OnInit { this.filterFormGroup.valueChanges.subscribe((formValues) => { this.filterActivated.emit(formValues); }); - + console.log(this.mainAspectType) } @@ -362,4 +354,5 @@ export class PartsTableComponent implements OnInit { } protected readonly TableType = TableType; + protected readonly MainAspectType = MainAspectType; } diff --git a/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.html b/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.html index e041210b75..37cdfbc044 100644 --- a/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.html +++ b/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.html @@ -78,13 +78,13 @@ {{ 'partDetail.investigation.tab.header' | i18n }} diff --git a/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.ts b/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.ts index d84d921302..d3b294bb19 100644 --- a/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.ts +++ b/frontend/src/app/modules/shared/modules/part-details/presentation/part-detail.component.ts @@ -54,6 +54,8 @@ export class PartDetailComponent implements AfterViewInit, OnDestroy { public readonly displayedColumns: string[]; + public isAsPlannedPart: boolean; + public customerOrPartSiteDetailsHeader$: Subscription; public customerOrPartSiteHeader: string; @@ -65,13 +67,19 @@ export class PartDetailComponent implements AfterViewInit, OnDestroy { private readonly isOpenState: State = new State(false); + public authorizationTooltipMessage: string; + constructor(private readonly partDetailsFacade: PartDetailsFacade, private readonly router: Router, public roleService: RoleService) { this.isOpen$ = this.isOpenState.observable; this.selectedPartDetails$ = this.partDetailsFacade.selectedPart$; this.shortenPartDetails$ = this.partDetailsFacade.selectedPart$.pipe( PartsAssembler.mapPartForView(), - tap(({ data }) => this.qualityTypeControl.patchValue(data.qualityType, { emitEvent: false, onlySelf: true })), + tap(({ data }) => { + this.qualityTypeControl.patchValue(data.qualityType, { emitEvent: false, onlySelf: true }) + this.isAsPlannedPart = data.semanticDataModel.toString() === 'PartAsPlanned'; + console.log(this.isAsPlannedPart); + }), ); this.manufacturerDetails$ = this.partDetailsFacade.selectedPart$.pipe(PartsAssembler.mapPartForManufacturerView()); @@ -95,6 +103,15 @@ export class PartDetailComponent implements AfterViewInit, OnDestroy { label: value, value: value, })); + + this.selectedPartDetails$.subscribe(part => { + if(part?.data?.children?.length > 0 ) { + this.authorizationTooltipMessage = this.getRestrictionMessageKey(true); + } else { + this.authorizationTooltipMessage = this.getRestrictionMessageKey(false); + } + }); + this.displayedColumns = [ 'position', 'productType', 'tractionBatteryCode' ]; } @@ -119,6 +136,23 @@ export class PartDetailComponent implements AfterViewInit, OnDestroy { this.router.navigate([ `parts/relations/${ part.id }` ]).then(_ => window.location.reload()); } + getRestrictionMessageKey(hasChildren: boolean): string { + if(this.isAsPlannedPart) { + return 'routing.notAllowedForAsPlanned'; + } + + else if(!hasChildren) { + return 'routing.noChildPartsForInvestigation'; + } + + else if(this.roleService.isAdmin()) { + return 'routing.unauthorized'; + } else { + return null; + } + + } + protected readonly NotificationAction = NotificationAction; protected readonly Owner = Owner; } From 60d18aa44aa18336991487a5eabcc2dbaca0c828 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Wed, 24 Jan 2024 07:20:42 +0100 Subject: [PATCH 016/311] chore(tx-backend): #XXX added changelog info --- CHANGELOG.md | 2 ++ .../MainAspectAsPlannedStrategyTest.java | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 36511a1528..c088dca37b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - SubmodelServerService for calling submodel server with feign client - Added GET /policies endpoint to retrieve accepted policies - Added POST assets/publish endpoint to publish transient assets +- Added AVD-KSV-0014 to trivy ignore ### Changed - Fixed security findings @@ -52,6 +53,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Updated github/codeql-action from 2 to 3 - Updated actions/download-artifact from 3 to 4actions/download-artifact from 3 to 4 - Updated com.nimbusds:nimbus-jose-jwt from 9.37.1 to 9.37.3 +- Changed some java implementations according to security findings ( business logic unchanged ) ### Removed - Shell descriptor entity with underlying logic diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java index 9b7f0706af..5fe5055645 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/MainAspectAsPlannedStrategyTest.java @@ -1,3 +1,21 @@ +/******************************************************************************** + * Copyright (c) 2024 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ package org.eclipse.tractusx.traceability.assets.domain.importpoc.service; import org.eclipse.tractusx.traceability.assets.domain.base.model.AssetBase; From 0ff9d458a6b005bf905682d11b26c441d2f3b432 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Wed, 24 Jan 2024 07:42:44 +0100 Subject: [PATCH 017/311] chore(tx-backend): #XXX added updated spring core and spring boot to 3.1.7 and 6.0.16 --- CHANGELOG.md | 2 ++ pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c088dca37b..6622eb6c18 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -80,6 +80,8 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - moved rights and roles matrix from arc42 doc to administration guide - Moved accepted policy to helm environments - Request IRS policy store to accept IRS policies in addition to our own policy +- Spring core updated from 6.0.14 to 6.0.16 +- Springboot updated from 3.1.6 to 3.1.7 ### Removed - Removed registry lookups feature diff --git a/pom.xml b/pom.xml index 13ba19ef12..aa82b25337 100644 --- a/pom.xml +++ b/pom.xml @@ -38,8 +38,8 @@ SPDX-License-Identifier: Apache-2.0 - 3.1.6 - 6.0.14 + 3.1.7 + 6.0.16 6.1.3 17 ${java.version} From 7a87b40390ed5f5d4a8f52d78f09b401e393863f Mon Sep 17 00:00:00 2001 From: ds-mwesener Date: Wed, 24 Jan 2024 07:32:40 +0000 Subject: [PATCH 018/311] Update Dependencies Backend Action --- DEPENDENCIES_BACKEND | 173 ++++++++++++++++++++++--------------------- 1 file changed, 90 insertions(+), 83 deletions(-) diff --git a/DEPENDENCIES_BACKEND b/DEPENDENCIES_BACKEND index 8c14543193..7280aa5bbe 100644 --- a/DEPENDENCIES_BACKEND +++ b/DEPENDENCIES_BACKEND @@ -1,6 +1,4 @@ -maven/mavencentral/ch.qos.logback/logback-classic/1.4.11, EPL-1.0 OR LGPL-2.1-only, approved, #3435 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-core/1.4.11, EPL-1.0 OR LGPL-2.1-only, approved, #3373 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/com.auth0/java-jwt/4.4.0, MIT, approved, #8459 @@ -104,9 +102,9 @@ maven/mavencentral/io.github.resilience4j/resilience4j-retry/2.0.2, Apache-2.0, maven/mavencentral/io.github.resilience4j/resilience4j-spring-boot3/2.0.2, Apache-2.0, approved, #7276 maven/mavencentral/io.github.resilience4j/resilience4j-spring6/2.0.2, Apache-2.0, approved, #7277 maven/mavencentral/io.github.resilience4j/resilience4j-timelimiter/2.0.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.micrometer/micrometer-commons/1.11.6, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9243 -maven/mavencentral/io.micrometer/micrometer-core/1.11.6, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9238 -maven/mavencentral/io.micrometer/micrometer-observation/1.11.6, Apache-2.0, approved, #9242 +maven/mavencentral/io.micrometer/micrometer-commons/1.11.7, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9243 +maven/mavencentral/io.micrometer/micrometer-core/1.11.7, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9238 +maven/mavencentral/io.micrometer/micrometer-observation/1.11.7, Apache-2.0, approved, #9242 maven/mavencentral/io.opentelemetry/opentelemetry-api/1.25.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.opentelemetry/opentelemetry-api/1.27.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.opentelemetry/opentelemetry-context/1.25.0, Apache-2.0, approved, clearlydefined @@ -158,11 +156,11 @@ maven/mavencentral/org.apache.commons/commons-lang3/3.11, Apache-2.0, approved, maven/mavencentral/org.apache.commons/commons-lang3/3.12.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.commons/commons-text/1.10.0, Apache-2.0, approved, clearlydefined maven/mavencentral/org.apache.groovy/groovy-json/4.0.11, Apache-2.0, approved, #7411 -maven/mavencentral/org.apache.groovy/groovy-json/4.0.15, Apache-2.0, approved, #7411 +maven/mavencentral/org.apache.groovy/groovy-json/4.0.16, Apache-2.0, approved, #7411 maven/mavencentral/org.apache.groovy/groovy-xml/4.0.11, Apache-2.0, approved, #10179 -maven/mavencentral/org.apache.groovy/groovy-xml/4.0.15, Apache-2.0, approved, #10179 +maven/mavencentral/org.apache.groovy/groovy-xml/4.0.16, Apache-2.0, approved, #10179 maven/mavencentral/org.apache.groovy/groovy/4.0.11, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 -maven/mavencentral/org.apache.groovy/groovy/4.0.15, Apache-2.0 AND BSD-3-Clause AND MIT, approved, #1742 +maven/mavencentral/org.apache.groovy/groovy/4.0.16, 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 @@ -171,11 +169,14 @@ maven/mavencentral/org.apache.logging.log4j/log4j-api/2.20.0, Apache-2.0, approv maven/mavencentral/org.apache.logging.log4j/log4j-to-slf4j/2.20.0, Apache-2.0, approved, #8799 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.16, 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.16, Apache-2.0, approved, #6997 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-core/10.1.17, 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.17, Apache-2.0, approved, #6997 maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.16, Apache-2.0, approved, #7920 +maven/mavencentral/org.apache.tomcat.embed/tomcat-embed-websocket/10.1.17, Apache-2.0, approved, #7920 maven/mavencentral/org.apache.tomcat/tomcat-annotations-api/10.1.16, Apache-2.0, approved, #8196 +maven/mavencentral/org.apache.tomcat/tomcat-annotations-api/10.1.17, Apache-2.0, approved, #8196 maven/mavencentral/org.apiguardian/apiguardian-api/1.1.2, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.aspectj/aspectjweaver/1.9.20.1, 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.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.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-proxy/3.0.0, Apache-2.0, approved, #11044 @@ -240,44 +241,44 @@ maven/mavencentral/org.eclipse.edc/web-spi/0.1.3, Apache-2.0, approved, technolo 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-client/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-client/11.0.19, 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-common/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-common/11.0.19, 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-core-server/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-core-server/11.0.19, 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-client/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-client/11.0.19, 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-common/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-common/11.0.19, 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-jakarta-server/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-jakarta-server/11.0.19, 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.websocket/websocket-servlet/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty.websocket/websocket-servlet/11.0.19, 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/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-alpn-client/11.0.19, 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-annotations/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-annotations/11.0.19, 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/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-client/11.0.19, 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-io/11.0.17, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-io/11.0.19, 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-jndi/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-jndi/11.0.19, 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/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-plus/11.0.19, 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/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-security/11.0.19, 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/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-server/11.0.19, 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-servlet/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-servlet/11.0.19, 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/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.19, 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-webapp/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.19, 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/11.0.18, EPL-2.0 OR Apache-2.0, approved, rt.jetty +maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.4.1-20231110.130443-8, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.4.1-20231110.130443-8, Apache-2.0, approved, automotive.tractusx maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.4.1-20231110.130443-8, Apache-2.0, approved, automotive.tractusx @@ -288,9 +289,13 @@ maven/mavencentral/org.glassfish.grizzly/grizzly-framework/2.3.25, EPL-2.0 OR GP 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.4, BSD-3-Clause, approved, ee4j.jaxb @@ -299,30 +304,30 @@ maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.4, BSD-3-Clause, approved maven/mavencentral/org.glassfish.jaxb/txw2/4.0.2, BSD-3-Clause, approved, ee4j.jaxb maven/mavencentral/org.glassfish.jaxb/txw2/4.0.4, BSD-3-Clause, approved, ee4j.jaxb maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.2, 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.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.2, 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.2, 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.2, 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.2, 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.2, 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.2, 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.2, 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.2, 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/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.2.13.Final, LGPL-2.1-only AND Apache-2.0 AND MIT AND CC-PDDC AND (EPL-2.0 OR BSD-3-Clause), approved, #9121 +maven/mavencentral/org.hibernate.orm/hibernate-core/6.2.17.Final, LGPL-2.1-only AND Apache-2.0 AND MIT AND CC-PDDC AND (EPL-2.0 OR BSD-3-Clause), approved, #9121 maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.1.Final, Apache-2.0, approved, clearlydefined maven/mavencentral/org.javassist/javassist/3.29.0-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 maven/mavencentral/org.javassist/javassist/3.29.2-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 @@ -371,61 +376,63 @@ maven/mavencentral/org.slf4j/slf4j-api/2.0.9, 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.1.6, Apache-2.0, approved, #9348 -maven/mavencentral/org.springframework.boot/spring-boot-actuator/3.1.6, Apache-2.0, approved, #9342 -maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.1.6, Apache-2.0, approved, #9341 -maven/mavencentral/org.springframework.boot/spring-boot-starter-actuator/3.1.6, Apache-2.0, approved, #9344 -maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.1.6, Apache-2.0, approved, #9338 -maven/mavencentral/org.springframework.boot/spring-boot-starter-data-jpa/3.1.6, Apache-2.0, approved, #9733 -maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.1.6, Apache-2.0, approved, #9737 -maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.1.6, Apache-2.0, approved, #9336 -maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.1.6, Apache-2.0, approved, #9343 -maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-client/3.1.6, Apache-2.0, approved, #8806 -maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-resource-server/3.1.6, Apache-2.0, approved, #8804 -maven/mavencentral/org.springframework.boot/spring-boot-starter-security/3.1.6, Apache-2.0, approved, #9337 -maven/mavencentral/org.springframework.boot/spring-boot-starter-test/3.1.6, Apache-2.0, approved, #9353 -maven/mavencentral/org.springframework.boot/spring-boot-starter-thymeleaf/3.1.6, Apache-2.0, approved, #10092 -maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.1.6, Apache-2.0, approved, #9351 -maven/mavencentral/org.springframework.boot/spring-boot-starter-validation/3.1.6, Apache-2.0, approved, #9335 -maven/mavencentral/org.springframework.boot/spring-boot-starter-web/3.1.6, Apache-2.0, approved, #9347 -maven/mavencentral/org.springframework.boot/spring-boot-starter/3.1.6, Apache-2.0, approved, #9349 -maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.1.6, Apache-2.0, approved, #9339 -maven/mavencentral/org.springframework.boot/spring-boot-test/3.1.6, Apache-2.0, approved, #9346 -maven/mavencentral/org.springframework.boot/spring-boot/3.1.6, Apache-2.0, approved, #9352 +maven/mavencentral/org.springframework.boot/spring-boot-actuator-autoconfigure/3.1.7, Apache-2.0, approved, #9348 +maven/mavencentral/org.springframework.boot/spring-boot-actuator/3.1.7, Apache-2.0, approved, #9342 +maven/mavencentral/org.springframework.boot/spring-boot-autoconfigure/3.1.7, Apache-2.0, approved, #9341 +maven/mavencentral/org.springframework.boot/spring-boot-starter-actuator/3.1.7, Apache-2.0, approved, #9344 +maven/mavencentral/org.springframework.boot/spring-boot-starter-aop/3.1.7, Apache-2.0, approved, #9338 +maven/mavencentral/org.springframework.boot/spring-boot-starter-data-jpa/3.1.7, Apache-2.0, approved, #9733 +maven/mavencentral/org.springframework.boot/spring-boot-starter-jdbc/3.1.7, Apache-2.0, approved, #9737 +maven/mavencentral/org.springframework.boot/spring-boot-starter-json/3.1.7, Apache-2.0, approved, #9336 +maven/mavencentral/org.springframework.boot/spring-boot-starter-logging/3.1.7, Apache-2.0, approved, #9343 +maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-client/3.1.7, Apache-2.0, approved, #8806 +maven/mavencentral/org.springframework.boot/spring-boot-starter-oauth2-resource-server/3.1.7, Apache-2.0, approved, #8804 +maven/mavencentral/org.springframework.boot/spring-boot-starter-security/3.1.7, Apache-2.0, approved, #9337 +maven/mavencentral/org.springframework.boot/spring-boot-starter-test/3.1.7, Apache-2.0, approved, #9353 +maven/mavencentral/org.springframework.boot/spring-boot-starter-thymeleaf/3.1.7, Apache-2.0, approved, #10092 +maven/mavencentral/org.springframework.boot/spring-boot-starter-tomcat/3.1.7, Apache-2.0, approved, #9351 +maven/mavencentral/org.springframework.boot/spring-boot-starter-validation/3.1.7, Apache-2.0, approved, #9335 +maven/mavencentral/org.springframework.boot/spring-boot-starter-web/3.1.7, Apache-2.0, approved, #9347 +maven/mavencentral/org.springframework.boot/spring-boot-starter/3.1.7, Apache-2.0, approved, #9349 +maven/mavencentral/org.springframework.boot/spring-boot-test-autoconfigure/3.1.7, Apache-2.0, approved, #9339 +maven/mavencentral/org.springframework.boot/spring-boot-test/3.1.7, Apache-2.0, approved, #9346 +maven/mavencentral/org.springframework.boot/spring-boot/3.1.7, Apache-2.0, approved, #9352 maven/mavencentral/org.springframework.cloud/spring-cloud-commons/4.0.3, Apache-2.0, approved, #7292 maven/mavencentral/org.springframework.cloud/spring-cloud-context/4.0.3, Apache-2.0, approved, #7306 maven/mavencentral/org.springframework.cloud/spring-cloud-openfeign-core/4.0.3, Apache-2.0, approved, #7305 maven/mavencentral/org.springframework.cloud/spring-cloud-starter-openfeign/4.0.3, Apache-2.0, approved, #7302 maven/mavencentral/org.springframework.cloud/spring-cloud-starter/4.0.3, Apache-2.0, approved, #7299 -maven/mavencentral/org.springframework.data/spring-data-commons/3.1.6, Apache-2.0, approved, #8805 -maven/mavencentral/org.springframework.data/spring-data-jpa/3.1.6, Apache-2.0, approved, #9120 +maven/mavencentral/org.springframework.data/spring-data-commons/3.1.7, Apache-2.0, approved, #8805 +maven/mavencentral/org.springframework.data/spring-data-jpa/3.1.7, Apache-2.0, approved, #9120 maven/mavencentral/org.springframework.security/spring-security-config/6.1.3, Apache-2.0, approved, #9736 -maven/mavencentral/org.springframework.security/spring-security-core/6.1.5, Apache-2.0, approved, #9801 -maven/mavencentral/org.springframework.security/spring-security-crypto/6.1.5, Apache-2.0 AND ISC, approved, #9735 -maven/mavencentral/org.springframework.security/spring-security-oauth2-client/6.1.5, Apache-2.0, approved, #9740 -maven/mavencentral/org.springframework.security/spring-security-oauth2-core/6.1.5, Apache-2.0, approved, #9741 -maven/mavencentral/org.springframework.security/spring-security-oauth2-jose/6.1.5, Apache-2.0, approved, #9345 -maven/mavencentral/org.springframework.security/spring-security-oauth2-resource-server/6.1.5, Apache-2.0, approved, #8798 +maven/mavencentral/org.springframework.security/spring-security-core/6.1.6, Apache-2.0, approved, #9801 +maven/mavencentral/org.springframework.security/spring-security-crypto/6.1.6, Apache-2.0 AND ISC, approved, #9735 +maven/mavencentral/org.springframework.security/spring-security-oauth2-client/6.1.6, Apache-2.0, approved, #9740 +maven/mavencentral/org.springframework.security/spring-security-oauth2-core/6.1.6, Apache-2.0, approved, #9741 +maven/mavencentral/org.springframework.security/spring-security-oauth2-jose/6.1.6, Apache-2.0, approved, #9345 +maven/mavencentral/org.springframework.security/spring-security-oauth2-resource-server/6.1.6, Apache-2.0, approved, #8798 maven/mavencentral/org.springframework.security/spring-security-rsa/1.0.11.RELEASE, Apache-2.0, approved, CQ20647 -maven/mavencentral/org.springframework.security/spring-security-test/6.1.5, Apache-2.0, approved, #10674 -maven/mavencentral/org.springframework.security/spring-security-web/6.1.5, Apache-2.0, approved, #9800 +maven/mavencentral/org.springframework.security/spring-security-test/6.1.6, Apache-2.0, approved, #10674 +maven/mavencentral/org.springframework.security/spring-security-web/6.1.6, Apache-2.0, approved, #9800 maven/mavencentral/org.springframework/spring-aop/6.0.11, Apache-2.0, approved, #5940 -maven/mavencentral/org.springframework/spring-aop/6.0.14, Apache-2.0, approved, #5940 -maven/mavencentral/org.springframework/spring-aspects/6.0.14, Apache-2.0, approved, #5930 +maven/mavencentral/org.springframework/spring-aop/6.0.15, Apache-2.0, approved, #5940 +maven/mavencentral/org.springframework/spring-aspects/6.0.15, Apache-2.0, approved, #5930 maven/mavencentral/org.springframework/spring-beans/6.0.11, Apache-2.0, approved, #5937 -maven/mavencentral/org.springframework/spring-beans/6.0.14, Apache-2.0, approved, #5937 +maven/mavencentral/org.springframework/spring-beans/6.0.15, Apache-2.0, approved, #5937 maven/mavencentral/org.springframework/spring-context/6.0.11, Apache-2.0, approved, #5936 -maven/mavencentral/org.springframework/spring-context/6.0.14, Apache-2.0, approved, #5936 -maven/mavencentral/org.springframework/spring-core/6.0.14, Apache-2.0 AND BSD-3-Clause, approved, #5948 -maven/mavencentral/org.springframework/spring-expression/6.0.14, Apache-2.0, approved, #3284 -maven/mavencentral/org.springframework/spring-jcl/6.0.14, Apache-2.0, approved, #3283 +maven/mavencentral/org.springframework/spring-context/6.0.15, Apache-2.0, approved, #5936 +maven/mavencentral/org.springframework/spring-core/6.0.16, Apache-2.0 AND BSD-3-Clause, approved, #5948 +maven/mavencentral/org.springframework/spring-expression/6.0.15, Apache-2.0, approved, #3284 +maven/mavencentral/org.springframework/spring-expression/6.0.16, Apache-2.0, approved, #3284 +maven/mavencentral/org.springframework/spring-jcl/6.0.15, Apache-2.0, approved, #3283 +maven/mavencentral/org.springframework/spring-jcl/6.0.16, Apache-2.0, approved, #3283 maven/mavencentral/org.springframework/spring-jdbc/6.0.13, Apache-2.0, approved, #5924 -maven/mavencentral/org.springframework/spring-jdbc/6.0.14, Apache-2.0, approved, #5924 -maven/mavencentral/org.springframework/spring-orm/6.0.14, Apache-2.0, approved, #5925 -maven/mavencentral/org.springframework/spring-test/6.0.14, Apache-2.0, approved, #7003 -maven/mavencentral/org.springframework/spring-tx/6.0.14, Apache-2.0, approved, #5926 -maven/mavencentral/org.springframework/spring-web/6.0.14, Apache-2.0, approved, #5942 -maven/mavencentral/org.springframework/spring-webmvc/6.0.14, Apache-2.0, approved, #5944 +maven/mavencentral/org.springframework/spring-jdbc/6.0.15, Apache-2.0, approved, #5924 +maven/mavencentral/org.springframework/spring-orm/6.0.15, Apache-2.0, approved, #5925 +maven/mavencentral/org.springframework/spring-test/6.0.15, Apache-2.0, approved, #7003 +maven/mavencentral/org.springframework/spring-tx/6.0.15, Apache-2.0, approved, #5926 +maven/mavencentral/org.springframework/spring-web/6.0.15, Apache-2.0, approved, #5942 +maven/mavencentral/org.springframework/spring-webmvc/6.0.15, Apache-2.0, approved, #5944 maven/mavencentral/org.testcontainers/database-commons/1.18.3, MIT, approved, clearlydefined maven/mavencentral/org.testcontainers/jdbc/1.18.3, MIT, approved, clearlydefined maven/mavencentral/org.testcontainers/junit-jupiter/1.19.1, MIT, approved, #10344 From a86c4778b8948b49ffd21eba1c08c12d168f3e0c Mon Sep 17 00:00:00 2001 From: ds-lcapellino Date: Wed, 24 Jan 2024 09:01:26 +0100 Subject: [PATCH 019/311] feature: 508 update postgres and pgadmin version --- charts/traceability-foss/Chart.yaml | 6 +++--- charts/traceability-foss/charts/backend/Chart.yaml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/charts/traceability-foss/Chart.yaml b/charts/traceability-foss/Chart.yaml index 93d75a3487..07ce1a93dc 100644 --- a/charts/traceability-foss/Chart.yaml +++ b/charts/traceability-foss/Chart.yaml @@ -34,11 +34,11 @@ dependencies: version: 1.3.27 - name: postgresql repository: https://charts.bitnami.com/bitnami - version: 12.1.6 + version: 12.12.10 condition: postgresql.enabled - name: pgadmin4 repository: https://helm.runix.net - version: 1.13.6 + version: 1.23.1 condition: pgadmin4.enabled - name: irs-helm repository: https://eclipse-tractusx.github.io/item-relationship-service @@ -51,5 +51,5 @@ dependencies: - name: postgresql alias: edc-postgresql repository: https://charts.bitnami.com/bitnami - version: 12.1.6 + version: 12.12.10 condition: edc-postgresql.enabled diff --git a/charts/traceability-foss/charts/backend/Chart.yaml b/charts/traceability-foss/charts/backend/Chart.yaml index a0404a17c9..c15e4eda68 100644 --- a/charts/traceability-foss/charts/backend/Chart.yaml +++ b/charts/traceability-foss/charts/backend/Chart.yaml @@ -25,11 +25,11 @@ appVersion: "10.2.1" dependencies: - name: postgresql repository: https://charts.bitnami.com/bitnami - version: 12.1.6 + version: 12.12.10 condition: postgresql.enabled - name: pgadmin4 repository: https://helm.runix.net - version: 1.13.6 + version: 1.23.1 condition: pgadmin4.enabled - name: irs-helm repository: https://eclipse-tractusx.github.io/item-relationship-service From 056ca099e4eaebd4e1c2dab5cd3bf3ee2041e3c7 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Wed, 24 Jan 2024 09:14:52 +0100 Subject: [PATCH 020/311] feature(assetState): #535 add tooltip messages to unavailable functionalities --- .../presentation/other-parts.component.html | 12 ++++++++++-- .../presentation/part-detail.component.ts | 12 ++++++------ frontend/src/assets/locales/de/common.json | 5 ++++- frontend/src/assets/locales/en/common.json | 5 ++++- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/frontend/src/app/modules/page/other-parts/presentation/other-parts.component.html b/frontend/src/app/modules/page/other-parts/presentation/other-parts.component.html index e62a5623b7..743cda2dff 100644 --- a/frontend/src/app/modules/page/other-parts/presentation/other-parts.component.html +++ b/frontend/src/app/modules/page/other-parts/presentation/other-parts.component.html @@ -87,10 +87,18 @@ [bomLifecycle]="MainAspectType.AS_PLANNED" > - - + +
{{ 'pageOtherParts.tab.customer' | i18n }} +
{ this.qualityTypeControl.patchValue(data.qualityType, { emitEvent: false, onlySelf: true }) - this.isAsPlannedPart = data.semanticDataModel.toString() === 'PartAsPlanned'; - console.log(this.isAsPlannedPart); }), ); @@ -105,6 +102,11 @@ export class PartDetailComponent implements AfterViewInit, OnDestroy { })); this.selectedPartDetails$.subscribe(part => { + + if(part?.data?.semanticDataModel) { + this.isAsPlannedPart = part.data.semanticDataModel.toString() === 'PartAsPlanned'; + } + if(part?.data?.children?.length > 0 ) { this.authorizationTooltipMessage = this.getRestrictionMessageKey(true); } else { @@ -140,11 +142,9 @@ export class PartDetailComponent implements AfterViewInit, OnDestroy { if(this.isAsPlannedPart) { return 'routing.notAllowedForAsPlanned'; } - else if(!hasChildren) { return 'routing.noChildPartsForInvestigation'; } - else if(this.roleService.isAdmin()) { return 'routing.unauthorized'; } else { diff --git a/frontend/src/assets/locales/de/common.json b/frontend/src/assets/locales/de/common.json index 9e9ced0054..d6b75dd673 100644 --- a/frontend/src/assets/locales/de/common.json +++ b/frontend/src/assets/locales/de/common.json @@ -13,7 +13,10 @@ "adminRegistry": "Registry-Abfragen", "adminBpn": "BPN - EDC Konfiguration", "adminImport": "Datenbereitstellung", - "unauthorized": "Die Funktion ist aufgrund einer fehlenden Rolle deaktiviert. Bitten Sie Ihren Administrator, die erforderliche Rolle für die Funktion bereitzustellen." + "unauthorized": "Die Funktion ist aufgrund einer fehlenden Rolle deaktiviert. Bitten Sie Ihren Administrator, die erforderliche Rolle für die Funktion bereitzustellen.", + "notAllowedForAsPlanned": "Diese Funktion ist für Produkte im Lebenszyklus \"AsPlanned\" nicht verfügbar.", + "noChildPartsForInvestigation": "Diese Funktion ist für Produkte ohne Bauteile nicht verfügbar.", + "noCustomerAsPlannedParts": "Produkte von Kunden im Lebenszyklus \"AsPlanned\" sind nicht verfügbar." }, "pageTitle": { "dashboard": "Dashboard", diff --git a/frontend/src/assets/locales/en/common.json b/frontend/src/assets/locales/en/common.json index c6af4a86f4..785289c0b2 100644 --- a/frontend/src/assets/locales/en/common.json +++ b/frontend/src/assets/locales/en/common.json @@ -13,7 +13,10 @@ "adminRegistry": "Registry lookups", "adminBpn": "BPN - EDC configuration", "adminImport": "Data provisioning", - "unauthorized": "Functionality is disabled because of missing role. Ask your administrator to provide the required role for the functionality." + "unauthorized": "Functionality is disabled because of missing role. Ask your administrator to provide the required role for the functionality.", + "notAllowedForAsPlanned": "This function is not available for Parts in the Lifecycle \"AsPlanned\". ", + "noChildPartsForInvestigation": "This function is not available for Parts without components.", + "noCustomerAsPlannedParts": "Customer parts in lifecycle \"AsPlanned\" are not available." }, "pageTitle": { "dashboard": "Dashboard", From 34c302d2032eeb242a8769c5df085eee38cf7e17 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Wed, 24 Jan 2024 09:17:55 +0100 Subject: [PATCH 021/311] feature(assetState): #535 add tooltip messages to unavailable functionalities --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a625600e3a..a3831ad728 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [UNRELEASED - DD.MM.YYYY] ### Added - +- Added tooltips on functionalities that are unauthorized or unavailable ### Changed ### Removed From 085b895b523341cf54cac8c0a47ccc9c441cede6 Mon Sep 17 00:00:00 2001 From: ds-lcapellino Date: Wed, 24 Jan 2024 09:23:42 +0100 Subject: [PATCH 022/311] feature: 508 update CHANGELOG.md --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 964c9eb19d..ec5cf5bd17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Added ### Changed +- Updated postgres to version 15.4 ### Removed From 23aaafc646c05b0b2abcdd49413a653497027d05 Mon Sep 17 00:00:00 2001 From: ds-ext-sceronik Date: Wed, 24 Jan 2024 10:27:07 +0100 Subject: [PATCH 023/311] chore(tx-backend): #414 Updated irs lib and reduced number of jobs created on irs --- CHANGELOG.md | 2 + pom.xml | 4 +- .../openapi/traceability-foss-backend.json | 2 +- .../domain/base/model/SemanticDataModel.java | 11 ++-- .../base/service/InvestigationsEDCFacade.java | 8 +-- .../DecentralRegistryRepository.java | 4 +- .../service/DecentralRegistryServiceImpl.java | 50 ++++++++--------- .../rest/DecentralRegistryRepositoryImpl.java | 5 +- tx-backend/src/main/resources/application.yml | 6 +- .../blackbox/InvestigationsEDCFacadeTest.java | 4 +- ...ntralDecentralRegistryServiceImplTest.java | 44 ++++++++++++++- .../DecentralRegistryRepositoryImplTest.java | 55 +++++++++++++++++-- 12 files changed, 140 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d6957e033a..ab43403c67 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - SubmodelServerService for calling submodel server with feign client - Added GET /policies endpoint to retrieve accepted policies - Added POST assets/publish endpoint to publish transient assets +- Updated Irs Library from 1.4.1-SNAPSHOT to 1.5.1-SNAPSHOT ### Changed - Fixed security findings @@ -44,6 +45,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Updated github/codeql-action from 2 to 3 - Updated actions/download-artifact from 3 to 4actions/download-artifact from 3 to 4 - Updated com.nimbusds:nimbus-jose-jwt from 9.37.1 to 9.37.3 +- Adjusted sync logic to create jobs only for related BomLifecycles ### Removed - Shell descriptor entity with underlying logic diff --git a/pom.xml b/pom.xml index 13ba19ef12..d4ab66d203 100644 --- a/pom.xml +++ b/pom.xml @@ -64,7 +64,7 @@ SPDX-License-Identifier: Apache-2.0 3.2.5 3.2.5 4.0.0-M11 - 0.1.3 + 0.2.1 0.0.1-SNAPSHOT 9.37.3 @@ -101,7 +101,7 @@ SPDX-License-Identifier: Apache-2.0 2.15.2 5.9.3 3.0.0 - 1.4.1-SNAPSHOT + 1.5.1-SNAPSHOT 5.4.0 jacoco diff --git a/tx-backend/openapi/traceability-foss-backend.json b/tx-backend/openapi/traceability-foss-backend.json index 507ba88901..4e323447e7 100644 --- a/tx-backend/openapi/traceability-foss-backend.json +++ b/tx-backend/openapi/traceability-foss-backend.json @@ -1 +1 @@ -{"openapi":"3.0.1","info":{"title":"Trace-FOSS - OpenAPI Documentation","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"]}],"tags":[{"name":"Investigations","description":"Operations on Investigation Notification"}],"paths":{"/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":{"200":{"description":"Returns the paged result found","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"200":{"description":"Returns the paged result found for BpnEdcMapping","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"200":{"description":"Returns the paged result found for BpnEdcMapping","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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":{}}}},"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."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations":{"post":{"tags":["Investigations"],"summary":"Start investigations by part ids","description":"The endpoint starts investigations based on part ids provided.","operationId":"investigateAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/update":{"post":{"tags":["Investigations"],"summary":"Update investigations by id","description":"The endpoint updates investigations by their id.","operationId":"updateInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"204":{"description":"No content."},"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/close":{"post":{"tags":["Investigations"],"summary":"Close investigations by id","description":"The endpoint closes investigations by their id.","operationId":"closeInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"204":{"description":"No content."},"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/cancel":{"post":{"tags":["Investigations"],"summary":"Cancles investigations by id","description":"The endpoint cancles investigations by their id.","operationId":"cancelInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/approve":{"post":{"tags":["Investigations"],"summary":"Approves investigations by id","description":"The endpoint approves investigations by their id.","operationId":"approveInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/filter":{"post":{"tags":["Investigations"],"summary":"Filter investigations defined by the request body","description":"The endpoint returns investigations as paged result.","operationId":"filterInvestigations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"}}}}},"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":{"200":{"description":"OK.","content":{"application/json":{}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."},"500":{"description":"Internal server error.","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":{"200":{"description":"Returns the paged result found for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."},"500":{"description":"Internal server error.","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"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts":{"post":{"tags":["Alerts"],"summary":"Start alert by part ids","description":"The endpoint starts alert based on part ids provided.","operationId":"alertAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/update":{"post":{"tags":["Alerts"],"summary":"Update alert by id","description":"The endpoint updates alert by their id.","operationId":"updateAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"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"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/close":{"post":{"tags":["Alerts"],"summary":"Close alert by id","description":"The endpoint closes alert by id.","operationId":"closeAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"204":{"description":"No content."},"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/cancel":{"post":{"tags":["Alerts"],"summary":"Cancels alert by id","description":"The endpoint cancels alert by id.","operationId":"cancelAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/approve":{"post":{"tags":["Alerts"],"summary":"Approves alert by id","description":"The endpoint approves alert by id.","operationId":"approveAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/filter":{"post":{"tags":["Alerts"],"summary":"Filter alerts defined by the request body","description":"The endpoint returns alerts as paged result.","operationId":"filterAlerts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns the paged result found for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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 updated asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Assets","items":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"202":{"description":"Created registry reload job."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/irs/job/callback":{"get":{"tags":["irs-callback-controller"],"operationId":"handleIrsJobCallback","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/investigations/{investigationId}":{"get":{"tags":["Investigations"],"summary":"Gets investigations by id","description":"The endpoint returns investigations as paged result by their id.","operationId":"getInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":-2147483648,"type":"array","description":"Investigations","items":{"$ref":"#/components/schemas/InvestigationResponse"}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/distinctFilterValues":{"get":{"tags":["Assets","Investigations"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/assets/as-planned/{assetId}/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":"assetId","in":"path","required":true,"schema":{"type":"string"}},{"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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/assets/as-built/{assetId}/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":"assetId","in":"path","required":true,"schema":{"type":"string"}},{"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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns the assets found","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}":{"get":{"tags":["Alerts"],"summary":"Gets Alert by id","description":"The endpoint returns alert by id.","operationId":"getAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Alerts","items":{"$ref":"#/components/schemas/AlertResponse"}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/distinctFilterValues":{"get":{"tags":["Assets","Alerts"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","operationId":"distinctFilterValues_3","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":{"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"200":{"description":"Okay"},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"Deleted."},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}}},"components":{"schemas":{"BpnMappingRequest":{"required":["bpn","url"],"type":"object","properties":{"bpn":{"maxLength":255,"minLength":0,"type":"string"},"url":{"maxLength":255,"minLength":0,"type":"string"}}},"ErrorResponse":{"type":"object","properties":{"message":{"maxLength":1000,"minLength":0,"pattern":"^.*$","type":"string"}}},"StartQualityNotificationRequest":{"required":["severity"],"type":"object","properties":{"partIds":{"maxItems":100,"minItems":1,"type":"array","items":{"type":"string"}},"description":{"maxLength":1000,"minLength":15,"type":"string"},"targetDate":{"type":"string","format":"date-time"},"severity":{"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE_THREATENING"]},"receiverBpn":{"type":"string"},"asBuilt":{"type":"boolean"}}},"QualityNotificationIdResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"}}},"UpdateQualityNotificationRequest":{"required":["status"],"type":"object","properties":{"status":{"type":"string","description":"The UpdateInvestigationStatus","enum":["ACKNOWLEDGED","ACCEPTED","DECLINED"]},"reason":{"type":"string"}}},"CloseQualityNotificationRequest":{"type":"object","properties":{"reason":{"maxLength":1000,"minLength":15,"type":"string"}}},"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"}}}},"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"},"accessPolicyId":{"type":"string"},"contractDefinitionId":{"type":"string"}}},"SyncAssetsRequest":{"type":"object","properties":{"globalAssetIds":{"maxItems":100,"minItems":1,"type":"array","description":"Assets","items":{"type":"string"}}}},"GetDetailInformationRequest":{"type":"object","properties":{"assetIds":{"maxItems":50,"minItems":1,"type":"array","items":{"type":"string"}}}},"UpdateAssetRequest":{"required":["qualityType"],"type":"object","properties":{"qualityType":{"type":"string","enum":["Ok","Minor","Major","Critical","LifeThreatening"]}}},"DescriptionsResponse":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsBuiltResponse":{"type":"object","properties":{"partId":{"maxLength":255,"minLength":0,"type":"string"},"customerPartId":{"maxLength":255,"minLength":0,"type":"string"},"nameAtCustomer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingCountry":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingDate":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsPlannedResponse":{"type":"object","properties":{"validityPeriodFrom":{"maxLength":255,"minLength":0,"type":"string"},"validityPeriodTo":{"maxLength":255,"minLength":0,"type":"string"}}},"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"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"},"subcomponents":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectDataTractionBatteryCodeSubcomponentResponse"}}}},"DetailAspectDataTractionBatteryCodeSubcomponentResponse":{"type":"object","properties":{"productType":{"maxLength":255,"minLength":0,"type":"string"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectModelResponse":{"type":"object","properties":{"type":{"type":"string","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"},"function":{"type":"string"},"functionValidFrom":{"type":"string"},"catenaXSiteId":{"type":"string"}}},"InvestigationResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}},"QualityNotificationReasonResponse":{"type":"object","properties":{"close":{"maxLength":1000,"minLength":0,"type":"string"},"accept":{"maxLength":1000,"minLength":0,"type":"string"},"decline":{"maxLength":1000,"minLength":0,"type":"string"}}},"DashboardResponse":{"type":"object","properties":{"asBuiltCustomerParts":{"type":"integer","format":"int64"},"asPlannedCustomerParts":{"type":"integer","format":"int64"},"asBuiltSupplierParts":{"type":"integer","format":"int64"},"asPlannedSupplierParts":{"type":"integer","format":"int64"},"asBuiltOwnParts":{"type":"integer","format":"int64"},"asPlannedOwnParts":{"type":"integer","format":"int64"},"myPartsWithOpenAlerts":{"type":"integer","format":"int64"},"myPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"supplierPartsWithOpenAlerts":{"type":"integer","format":"int64"},"customerPartsWithOpenAlerts":{"type":"integer","format":"int64"},"supplierPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"customerPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"receivedActiveAlerts":{"type":"integer","format":"int64"},"receivedActiveInvestigations":{"type":"integer","format":"int64"},"sentActiveAlerts":{"type":"integer","format":"int64"},"sentActiveInvestigations":{"type":"integer","format":"int64"}}},"AlertResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}}},"securitySchemes":{"oAuth2":{"type":"oauth2","flows":{"clientCredentials":{"scopes":{"profile email":""}}}}}}} \ No newline at end of file +{"openapi":"3.0.1","info":{"title":"Trace-FOSS - OpenAPI Documentation","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"]}],"tags":[{"name":"Investigations","description":"Operations on Investigation Notification"}],"paths":{"/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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"}}}}},"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":{"200":{"description":"Returns the paged result found for BpnEdcMapping","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"200":{"description":"Returns the paged result found for BpnEdcMapping","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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","content":{"application/json":{}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."}},"security":[{"oAuth2":["profile email"]}]}},"/investigations":{"post":{"tags":["Investigations"],"summary":"Start investigations by part ids","description":"The endpoint starts investigations based on part ids provided.","operationId":"investigateAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/update":{"post":{"tags":["Investigations"],"summary":"Update investigations by id","description":"The endpoint updates investigations by their id.","operationId":"updateInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/close":{"post":{"tags":["Investigations"],"summary":"Close investigations by id","description":"The endpoint closes investigations by their id.","operationId":"closeInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/cancel":{"post":{"tags":["Investigations"],"summary":"Cancles investigations by id","description":"The endpoint cancles investigations by their id.","operationId":"cancelInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/approve":{"post":{"tags":["Investigations"],"summary":"Approves investigations by id","description":"The endpoint approves investigations by their id.","operationId":"approveInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/filter":{"post":{"tags":["Investigations"],"summary":"Filter investigations defined by the request body","description":"The endpoint returns investigations as paged result.","operationId":"filterInvestigations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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 for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNotificationContractResponse"}}}}},"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","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterAssetRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"OK.","content":{"application/json":{}}}},"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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."}},"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":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."}},"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":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts":{"post":{"tags":["Alerts"],"summary":"Start alert by part ids","description":"The endpoint starts alert based on part ids provided.","operationId":"alertAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/update":{"post":{"tags":["Alerts"],"summary":"Update alert by id","description":"The endpoint updates alert by their id.","operationId":"updateAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/close":{"post":{"tags":["Alerts"],"summary":"Close alert by id","description":"The endpoint closes alert by id.","operationId":"closeAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/cancel":{"post":{"tags":["Alerts"],"summary":"Cancels alert by id","description":"The endpoint cancels alert by id.","operationId":"cancelAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/approve":{"post":{"tags":["Alerts"],"summary":"Approves alert by id","description":"The endpoint approves alert by id.","operationId":"approveAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No content."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/filter":{"post":{"tags":["Alerts"],"summary":"Filter alerts defined by the request body","description":"The endpoint returns alerts as paged result.","operationId":"filterAlerts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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 for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array"}}}}},"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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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 assets found","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Assets","items":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"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":{"404":{"description":"Not found.","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 updated asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Assets","items":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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 updated asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Assets","items":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","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."},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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 policies","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PolicyResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/irs/job/callback":{"get":{"tags":["irs-callback-controller"],"operationId":"handleIrsJobCallback","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/investigations/{investigationId}":{"get":{"tags":["Investigations"],"summary":"Gets investigations by id","description":"The endpoint returns investigations as paged result by their id.","operationId":"getInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Not found.","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":{"maxItems":2147483647,"minItems":-2147483648,"type":"array","description":"Investigations","items":{"$ref":"#/components/schemas/InvestigationResponse"}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/distinctFilterValues":{"get":{"tags":["Assets","Investigations"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","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":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"400":{"description":"Bad request.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/assets/as-planned/{assetId}/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":"assetId","in":"path","required":true,"schema":{"type":"string"}},{"name":"childId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"404":{"description":"Not found.","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 asset by childId","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Assets","items":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/assets/as-built/{assetId}/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":"assetId","in":"path","required":true,"schema":{"type":"string"}},{"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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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,"minItems":0,"type":"array"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}":{"get":{"tags":["Alerts"],"summary":"Gets Alert by id","description":"The endpoint returns alert by id.","operationId":"getAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"404":{"description":"Not found.","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":{"maxItems":2147483647,"type":"array","description":"Alerts","items":{"$ref":"#/components/schemas/AlertResponse"}}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/distinctFilterValues":{"get":{"tags":["Assets","Alerts"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","operationId":"distinctFilterValues_3","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":{"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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":{"404":{"description":"Not found.","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."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"No Content."}},"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":{"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Okay"},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"204":{"description":"Deleted."}},"security":[{"oAuth2":["profile email"]}]}}},"components":{"schemas":{"BpnMappingRequest":{"required":["bpn","url"],"type":"object","properties":{"bpn":{"maxLength":255,"minLength":0,"type":"string"},"url":{"maxLength":255,"minLength":0,"type":"string"}}},"ErrorResponse":{"type":"object","properties":{"message":{"maxLength":1000,"minLength":0,"pattern":"^.*$","type":"string"}}},"StartQualityNotificationRequest":{"required":["severity"],"type":"object","properties":{"partIds":{"maxItems":100,"minItems":1,"type":"array","items":{"type":"string"}},"description":{"maxLength":1000,"minLength":15,"type":"string"},"targetDate":{"type":"string","format":"date-time"},"severity":{"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE_THREATENING"]},"receiverBpn":{"type":"string"},"asBuilt":{"type":"boolean"}}},"QualityNotificationIdResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"}}},"UpdateQualityNotificationRequest":{"required":["status"],"type":"object","properties":{"status":{"type":"string","description":"The UpdateInvestigationStatus","enum":["ACKNOWLEDGED","ACCEPTED","DECLINED"]},"reason":{"type":"string"}}},"CloseQualityNotificationRequest":{"type":"object","properties":{"reason":{"maxLength":1000,"minLength":15,"type":"string"}}},"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"}}}},"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"},"accessPolicyId":{"type":"string"},"contractDefinitionId":{"type":"string"}}},"RegisterAssetRequest":{"required":["assetIds","policyId"],"type":"object","properties":{"policyId":{"type":"string"},"assetIds":{"type":"array","items":{"type":"string"}}}},"SyncAssetsRequest":{"type":"object","properties":{"globalAssetIds":{"maxItems":100,"minItems":1,"type":"array","description":"Assets","items":{"type":"string"}}}},"GetDetailInformationRequest":{"type":"object","properties":{"assetIds":{"maxItems":50,"minItems":1,"type":"array","items":{"type":"string"}}}},"UpdateAssetRequest":{"required":["qualityType"],"type":"object","properties":{"qualityType":{"type":"string","enum":["Ok","Minor","Major","Critical","LifeThreatening"]}}},"DescriptionsResponse":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsBuiltResponse":{"type":"object","properties":{"partId":{"maxLength":255,"minLength":0,"type":"string"},"customerPartId":{"maxLength":255,"minLength":0,"type":"string"},"nameAtCustomer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingCountry":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingDate":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsPlannedResponse":{"type":"object","properties":{"validityPeriodFrom":{"maxLength":255,"minLength":0,"type":"string"},"validityPeriodTo":{"maxLength":255,"minLength":0,"type":"string"}}},"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"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"},"subcomponents":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectDataTractionBatteryCodeSubcomponentResponse"}}}},"DetailAspectDataTractionBatteryCodeSubcomponentResponse":{"type":"object","properties":{"productType":{"maxLength":255,"minLength":0,"type":"string"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectModelResponse":{"type":"object","properties":{"type":{"type":"string","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"},"function":{"type":"string"},"functionValidFrom":{"type":"string"},"catenaXSiteId":{"type":"string"}}},"ConstraintResponse":{"type":"object","properties":{"leftOperand":{"type":"string"},"operatorTypeResponse":{"type":"string","enum":["EQ","NEQ","LT","GT","IN","LTEQ","GTEQ","ISA","HASPART","ISPARTOF","ISONEOF","ISALLOF","ISNONEOF"]},"rightOperands":{"type":"array","items":{"type":"string"}}}},"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","enum":["ACCESS","USE"]},"constraints":{"type":"array","items":{"$ref":"#/components/schemas/ConstraintsResponse"}}}},"PolicyResponse":{"type":"object","properties":{"policyId":{"type":"string"},"createdOn":{"type":"string","format":"date-time"},"validUntil":{"type":"string","format":"date-time"},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionResponse"}}}},"InvestigationResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}},"QualityNotificationReasonResponse":{"type":"object","properties":{"close":{"maxLength":1000,"minLength":0,"type":"string"},"accept":{"maxLength":1000,"minLength":0,"type":"string"},"decline":{"maxLength":1000,"minLength":0,"type":"string"}}},"DashboardResponse":{"type":"object","properties":{"asBuiltCustomerParts":{"type":"integer","format":"int64"},"asPlannedCustomerParts":{"type":"integer","format":"int64"},"asBuiltSupplierParts":{"type":"integer","format":"int64"},"asPlannedSupplierParts":{"type":"integer","format":"int64"},"asBuiltOwnParts":{"type":"integer","format":"int64"},"asPlannedOwnParts":{"type":"integer","format":"int64"},"myPartsWithOpenAlerts":{"type":"integer","format":"int64"},"myPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"supplierPartsWithOpenAlerts":{"type":"integer","format":"int64"},"customerPartsWithOpenAlerts":{"type":"integer","format":"int64"},"supplierPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"customerPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"receivedActiveAlerts":{"type":"integer","format":"int64"},"receivedActiveInvestigations":{"type":"integer","format":"int64"},"sentActiveAlerts":{"type":"integer","format":"int64"},"sentActiveInvestigations":{"type":"integer","format":"int64"}}},"AlertResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}}},"securitySchemes":{"oAuth2":{"type":"oauth2","flows":{"clientCredentials":{"scopes":{"profile email":""}}}}}}} \ No newline at end of file diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/base/model/SemanticDataModel.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/base/model/SemanticDataModel.java index 3123d9d50b..8e93653576 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/base/model/SemanticDataModel.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/base/model/SemanticDataModel.java @@ -19,12 +19,13 @@ package org.eclipse.tractusx.traceability.assets.domain.base.model; +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor public enum SemanticDataModel { BATCH("Batch"), SERIALPART("SerialPart"), UNKNOWN(""), PARTASPLANNED("PartAsPlanned"), JUSTINSEQUENCE("JustInSequence"); - private String name; - - SemanticDataModel(String name) { - this.name = name; - } + private final String value; } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/InvestigationsEDCFacade.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/InvestigationsEDCFacade.java index 6f053fcff0..ba27760881 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/InvestigationsEDCFacade.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/base/service/InvestigationsEDCFacade.java @@ -38,8 +38,6 @@ import org.eclipse.tractusx.irs.edc.client.EndpointDataReferenceStorage; import org.eclipse.tractusx.irs.edc.client.model.CatalogItem; import org.eclipse.tractusx.irs.edc.client.policy.PolicyCheckerService; -import org.eclipse.tractusx.traceability.qualitynotification.infrastructure.edc.model.EDCNotification; -import org.eclipse.tractusx.traceability.qualitynotification.infrastructure.edc.model.EDCNotificationFactory; import org.eclipse.tractusx.traceability.common.properties.EdcProperties; import org.eclipse.tractusx.traceability.qualitynotification.domain.base.exception.ContractNegotiationException; import org.eclipse.tractusx.traceability.qualitynotification.domain.base.exception.NoCatalogItemException; @@ -47,6 +45,8 @@ import org.eclipse.tractusx.traceability.qualitynotification.domain.base.exception.SendNotificationException; import org.eclipse.tractusx.traceability.qualitynotification.domain.base.model.QualityNotificationMessage; import org.eclipse.tractusx.traceability.qualitynotification.domain.base.model.QualityNotificationType; +import org.eclipse.tractusx.traceability.qualitynotification.infrastructure.edc.model.EDCNotification; +import org.eclipse.tractusx.traceability.qualitynotification.infrastructure.edc.model.EDCNotificationFactory; import org.springframework.stereotype.Component; import java.util.List; @@ -89,7 +89,7 @@ public void startEdcTransfer( String contractAgreementId = negotiateContractAgreement(receiverEdcUrl, catalogItem); - final EndpointDataReference dataReference = endpointDataReferenceStorage.remove(contractAgreementId) + final EndpointDataReference dataReference = endpointDataReferenceStorage.get(contractAgreementId) .orElseThrow(() -> new NoEndpointDataReferenceException("No EndpointDataReference was found")); notification.setContractAgreementId(contractAgreementId); @@ -120,7 +120,7 @@ private CatalogItem getCatalogItem(final QualityNotificationMessage notification return edcCatalogFacade.fetchCatalogItems( CatalogRequest.Builder.newInstance() .protocol(DEFAULT_PROTOCOL) - .providerUrl(receiverEdcUrl + edcProperties.getIdsPath()) + .counterPartyAddress(receiverEdcUrl + edcProperties.getIdsPath()) .querySpec(QuerySpec.Builder.newInstance() .filter( List.of(new Criterion(NAMESPACE_EDC + "notificationtype", "=", propertyNotificationTypeValue), diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/repository/DecentralRegistryRepository.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/repository/DecentralRegistryRepository.java index f0067e57d9..eb0d25749d 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/repository/DecentralRegistryRepository.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/repository/DecentralRegistryRepository.java @@ -19,8 +19,10 @@ package org.eclipse.tractusx.traceability.shelldescriptor.domain.repository; +import org.eclipse.tractusx.irs.component.assetadministrationshell.AssetAdministrationShellDescriptor; + import java.util.List; public interface DecentralRegistryRepository { - List retrieveShellDescriptorsByBpn(String bpn); + List retrieveShellDescriptorsByBpn(String bpn); } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/service/DecentralRegistryServiceImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/service/DecentralRegistryServiceImpl.java index 439581d259..af2ee1fbb1 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/service/DecentralRegistryServiceImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/service/DecentralRegistryServiceImpl.java @@ -33,8 +33,14 @@ import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; +import java.util.Collection; import java.util.List; +import static org.eclipse.tractusx.traceability.assets.domain.base.model.SemanticDataModel.BATCH; +import static org.eclipse.tractusx.traceability.assets.domain.base.model.SemanticDataModel.JUSTINSEQUENCE; +import static org.eclipse.tractusx.traceability.assets.domain.base.model.SemanticDataModel.PARTASPLANNED; +import static org.eclipse.tractusx.traceability.assets.domain.base.model.SemanticDataModel.SERIALPART; + @RequiredArgsConstructor @Slf4j @Component @@ -45,41 +51,29 @@ public class DecentralRegistryServiceImpl implements DecentralRegistryService { private final TraceabilityProperties traceabilityProperties; private final DecentralRegistryRepository decentralRegistryRepository; + private static final List AS_BUILT_ASPECT_TYPES = List.of(SERIALPART.getValue(), BATCH.getValue(), JUSTINSEQUENCE.getValue()); + private static final List AS_PLANNED_ASPECT_TYPES = List.of(PARTASPLANNED.getValue()); + @Override @Async(value = AssetsAsyncConfig.LOAD_SHELL_DESCRIPTORS_EXECUTOR) public void synchronizeAssets() { + Collection shellDescriptors = decentralRegistryRepository.retrieveShellDescriptorsByBpn(traceabilityProperties.getBpn().toString()); + Collection asBuiltShellDescriptors = shellDescriptors.stream().filter(this::isAsBuilt).toList(); + Collection asPlannedShellDescriptors = shellDescriptors.stream().filter(this::isAsPlanned).toList(); - // TODO we will retrieve Collections and need to filter for each semanticModelIdKey - // Example of response: "idShort": "SingleLevelUsageAsBuilt", - // "id": "urn:uuid:3fa9cf02-1064-459f-a17e-1cbc819c2f2e", - // "semanticId": { - // "type": "ExternalReference", - // "keys": [ - // { - // "type": "GlobalReference", - // "value": "urn:bamm:io.catenax.single_level_usage_as_built:2.0.0#SingleLevelUsageAsBuilt" - // } - // ] - // }, - // "supplementalSemanticId": [], - // "description": [], - // "displayName": [] - // } - // ] - // }, - // https://irs-aas-registry.dev.demo.catena-x.net/semantics/registry/api/v3.0/shell-descriptors - // Result should be a list of globalAssetIds associcated with asBuilt and another list asPlanned + asBuiltShellDescriptors.forEach(shellDescriptor -> assetAsBuiltService.synchronizeAssetsAsync(shellDescriptor.getGlobalAssetId())); + asPlannedShellDescriptors.forEach(shellDescriptor -> assetAsPlannedService.synchronizeAssetsAsync(shellDescriptor.getGlobalAssetId())); + } + // TODO: consider creating support method on AssetAdministrationShellDescriptor.is(BomLifecycle lifecycle) that will be usable on our code + // IRS already have BomLifecycle in their domain so we can use it there also + private boolean isAsBuilt(AssetAdministrationShellDescriptor shellDescriptor) { + return !shellDescriptor.filterDescriptorsByAspectTypes(AS_BUILT_ASPECT_TYPES).isEmpty(); + } - List globalAssetIdsForApplicationBpn = decentralRegistryRepository.retrieveShellDescriptorsByBpn(traceabilityProperties.getBpn().toString()); - globalAssetIdsForApplicationBpn - .forEach(globalAssetId -> { - //TODO: differentiate if this is either as-planned or as-built. Otherwise we have twice the load here. - // DT-Library offers methods to requests additional info to get the bomlifecycle - assetAsPlannedService.synchronizeAssetsAsync(globalAssetId); - assetAsBuiltService.synchronizeAssetsAsync(globalAssetId); - }); + private boolean isAsPlanned(AssetAdministrationShellDescriptor shellDescriptor) { + return !shellDescriptor.filterDescriptorsByAspectTypes(AS_PLANNED_ASPECT_TYPES).isEmpty(); } } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImpl.java index 206bcca5c4..fe4f5e8c2a 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImpl.java @@ -21,6 +21,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.eclipse.tractusx.irs.component.assetadministrationshell.AssetAdministrationShellDescriptor; import org.eclipse.tractusx.irs.registryclient.decentral.DecentralDigitalTwinRegistryService; import org.eclipse.tractusx.irs.registryclient.exceptions.RegistryServiceException; import org.eclipse.tractusx.traceability.shelldescriptor.domain.repository.DecentralRegistryRepository; @@ -37,9 +38,9 @@ public class DecentralRegistryRepositoryImpl implements DecentralRegistryReposit private final DecentralDigitalTwinRegistryService decentralDigitalTwinRegistryService; @Override - public List retrieveShellDescriptorsByBpn(String bpn) { + public List retrieveShellDescriptorsByBpn(String bpn) { try { - return decentralDigitalTwinRegistryService.lookupGlobalAssetIds(bpn).stream().toList(); + return decentralDigitalTwinRegistryService.lookupShellsByBPN(bpn).stream().toList(); } catch (RegistryServiceException exception) { log.error("Could not retrieve globalAssetIds by bpn " + bpn, exception); return Collections.emptyList(); diff --git a/tx-backend/src/main/resources/application.yml b/tx-backend/src/main/resources/application.yml index a6a48b32f8..db8e388798 100644 --- a/tx-backend/src/main/resources/application.yml +++ b/tx-backend/src/main/resources/application.yml @@ -109,6 +109,11 @@ irs-edc-client: timeout: read: PT90S # HTTP read timeout for the submodel client connect: PT90S # HTTP connect timeout for the submodel client + discoveryFinderClient: + cacheTTL: PT24H # Time to live for DiscoveryFinderClient for findDiscoveryEndpoints method cache + connectorEndpointService: + cacheTTL: PT24H # Time to live for ConnectorEndpointService for fetchConnectorEndpoints method cache + server: servlet: @@ -217,4 +222,3 @@ digitalTwinRegistryClient: descriptorEndpoint: "" # required if type is "central", must contain the placeholder {aasIdentifier} shellLookupEndpoint: "" # required if type is "central", must contain the placeholder {assetIds} - diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/infrastructure/edc/blackbox/InvestigationsEDCFacadeTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/infrastructure/edc/blackbox/InvestigationsEDCFacadeTest.java index a9b3957b88..1f1026ce53 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/infrastructure/edc/blackbox/InvestigationsEDCFacadeTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/infrastructure/edc/blackbox/InvestigationsEDCFacadeTest.java @@ -95,7 +95,7 @@ void givenCorrectInvestigationMessage_whenStartEdcTransfer_thenSendIt() throws E when(endpointDataReference.getAuthCode()).thenReturn("authCode"); when(endpointDataReference.getAuthKey()).thenReturn("authKey"); when(endpointDataReference.getEndpoint()).thenReturn(dataReferenceEndpoint); - when(endpointDataReferenceStorage.remove(agreementId)).thenReturn(Optional.ofNullable(endpointDataReference)); + when(endpointDataReferenceStorage.get(agreementId)).thenReturn(Optional.ofNullable(endpointDataReference)); when(objectMapper.writeValueAsString(any())).thenReturn("{body}"); // when @@ -129,7 +129,7 @@ void givenCorrectInvestigationMessageButSendRequestThrowsException_whenStartEdcT when(endpointDataReference.getAuthCode()).thenReturn("authCode"); when(endpointDataReference.getAuthKey()).thenReturn("authKey"); when(endpointDataReference.getEndpoint()).thenReturn(dataReferenceEndpoint); - when(endpointDataReferenceStorage.remove(agreementId)).thenReturn(Optional.ofNullable(endpointDataReference)); + when(endpointDataReferenceStorage.get(agreementId)).thenReturn(Optional.ofNullable(endpointDataReference)); when(objectMapper.writeValueAsString(any())).thenReturn("{body}"); doThrow(new RuntimeException()).when(httpCallService).sendRequest(any()); diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/DecentralDecentralRegistryServiceImplTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/DecentralDecentralRegistryServiceImplTest.java index 3c4719c637..1011159c6c 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/DecentralDecentralRegistryServiceImplTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/domain/DecentralDecentralRegistryServiceImplTest.java @@ -18,6 +18,10 @@ ********************************************************************************/ package org.eclipse.tractusx.traceability.shelldescriptor.domain; +import org.eclipse.tractusx.irs.component.assetadministrationshell.AssetAdministrationShellDescriptor; +import org.eclipse.tractusx.irs.component.assetadministrationshell.Reference; +import org.eclipse.tractusx.irs.component.assetadministrationshell.SemanticId; +import org.eclipse.tractusx.irs.component.assetadministrationshell.SubmodelDescriptor; import org.eclipse.tractusx.irs.registryclient.exceptions.RegistryServiceException; import org.eclipse.tractusx.traceability.assets.domain.asbuilt.service.AssetAsBuiltServiceImpl; import org.eclipse.tractusx.traceability.assets.domain.asplanned.service.AssetAsPlannedServiceImpl; @@ -59,14 +63,48 @@ class DecentralRegistryServiceImplTest { @Test void testUpdateShellDescriptorAndSynchronizeAssets() throws RegistryServiceException { // Given + AssetAdministrationShellDescriptor asBuilt = AssetAdministrationShellDescriptor.builder() + .globalAssetId("id1") + .submodelDescriptors(List.of( + SubmodelDescriptor.builder() + .semanticId( + Reference.builder() + .keys(List.of( + SemanticId.builder() + .type("GlobalReference") + .value("urn:bamm:io.catenax.single_level_usage_as_built:2.0.0#SerialPart").build() + ) + ) + .build() + ) + .build() + )) + .build(); + AssetAdministrationShellDescriptor asPlanned = AssetAdministrationShellDescriptor.builder() + .globalAssetId("id2") + .submodelDescriptors(List.of( + SubmodelDescriptor.builder() + .semanticId( + Reference.builder() + .keys(List.of( + SemanticId.builder() + .type("GlobalReference") + .value("urn:bamm:io.catenax.single_level_usage_as_built:2.0.0#PartAsPlanned").build() + ) + ) + .build() + ) + .build() + )) + .build(); when(traceabilityProperties.getBpn()).thenReturn(BPN.of("test")); - when(decentralRegistryRepository.retrieveShellDescriptorsByBpn(BPN.of("test").toString())).thenReturn(List.of("id1","id2")); + when(decentralRegistryRepository.retrieveShellDescriptorsByBpn(BPN.of("test").toString())).thenReturn(List.of(asBuilt, asPlanned)); // When registryFacade.synchronizeAssets(); // Then - verify(assetAsBuiltService, times(2)).synchronizeAssetsAsync(any(String.class)); - verify(assetAsPlannedService, times(2)).synchronizeAssetsAsync(any(String.class)); + verify(assetAsBuiltService, times(1)).synchronizeAssetsAsync(any(String.class)); + verify(assetAsPlannedService, times(1)).synchronizeAssetsAsync(any(String.class)); } } diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImplTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImplTest.java index cb8c3d1bd5..4eb00ecd34 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImplTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/shelldescriptor/infrastructure/rest/DecentralRegistryRepositoryImplTest.java @@ -18,6 +18,12 @@ ********************************************************************************/ package org.eclipse.tractusx.traceability.shelldescriptor.infrastructure.rest; +import org.eclipse.edc.spi.types.domain.asset.Asset; +import org.eclipse.tractusx.irs.component.assetadministrationshell.AssetAdministrationShellDescriptor; +import org.eclipse.tractusx.irs.component.assetadministrationshell.Reference; +import org.eclipse.tractusx.irs.component.assetadministrationshell.SemanticId; +import org.eclipse.tractusx.irs.component.assetadministrationshell.SubmodelDescriptor; +import org.eclipse.tractusx.irs.registryclient.DigitalTwinRegistryKey; import org.eclipse.tractusx.irs.registryclient.decentral.DecentralDigitalTwinRegistryService; import org.eclipse.tractusx.irs.registryclient.exceptions.RegistryServiceException; import org.junit.jupiter.api.Test; @@ -27,6 +33,7 @@ import org.mockito.junit.jupiter.MockitoExtension; import java.util.Arrays; +import java.util.Collection; import java.util.List; import static org.assertj.core.api.Assertions.assertThat; @@ -44,17 +51,53 @@ class DecentralRegistryRepositoryImplTest { void testRetrieveShellDescriptorsByBpnSuccess() throws RegistryServiceException { // Given String bpn = "12345"; - List globalAssetIds = Arrays.asList("asset1", "asset2"); + AssetAdministrationShellDescriptor asBuilt = AssetAdministrationShellDescriptor.builder() + .id("shellId1") + .globalAssetId("id1") + .submodelDescriptors(List.of( + SubmodelDescriptor.builder() + .semanticId( + Reference.builder() + .keys(List.of( + SemanticId.builder() + .type("GlobalReference") + .value("urn:bamm:io.catenax.single_level_usage_as_built:2.0.0#SerialPart").build() + ) + ) + .build() + ) + .build() + )) + .build(); + AssetAdministrationShellDescriptor asPlanned = AssetAdministrationShellDescriptor.builder() + .id("shellId2") + .globalAssetId("id2") + .submodelDescriptors(List.of( + SubmodelDescriptor.builder() + .semanticId( + Reference.builder() + .keys(List.of( + SemanticId.builder() + .type("GlobalReference") + .value("urn:bamm:io.catenax.single_level_usage_as_built:2.0.0#PartAsPlanned").build() + ) + ) + .build() + ) + .build() + )) + .build(); + List shells = List.of(asBuilt, asPlanned); - when(decentralDigitalTwinRegistryService.lookupGlobalAssetIds(bpn)).thenReturn(globalAssetIds); + when(decentralDigitalTwinRegistryService.lookupShellsByBPN(bpn)).thenReturn(shells); decentralRegistryRepository = new DecentralRegistryRepositoryImpl(decentralDigitalTwinRegistryService); // When - List actualDescriptors = decentralRegistryRepository.retrieveShellDescriptorsByBpn(bpn); + List actualDescriptors = decentralRegistryRepository.retrieveShellDescriptorsByBpn(bpn); // Then - assertThat(actualDescriptors).containsExactlyInAnyOrderElementsOf(List.of("asset1", "asset2")); + assertThat(actualDescriptors).containsExactlyInAnyOrderElementsOf(shells); } @Test @@ -62,12 +105,12 @@ void testRetrieveShellDescriptorsByBpnRegistryServiceException() throws Registry // Given String bpn = "12345"; - when(decentralDigitalTwinRegistryService.lookupGlobalAssetIds(bpn)).thenThrow(new RegistryServiceException("Error")); + when(decentralDigitalTwinRegistryService.lookupShellsByBPN(bpn)).thenThrow(new RegistryServiceException("Error")); decentralRegistryRepository = new DecentralRegistryRepositoryImpl(decentralDigitalTwinRegistryService); // When - List actualDescriptors = decentralRegistryRepository.retrieveShellDescriptorsByBpn(bpn); + List actualDescriptors = decentralRegistryRepository.retrieveShellDescriptorsByBpn(bpn); // Then assertThat(actualDescriptors).isEmpty(); From 45b8318ffc3366b2460a3fbc0ea49dc69600b7e9 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Wed, 24 Jan 2024 10:30:33 +0100 Subject: [PATCH 024/311] chore[534] updated methods --- .../infrastructure/base/irs/IrsService.java | 62 +++++++++---------- 1 file changed, 31 insertions(+), 31 deletions(-) diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java index b3159e2208..9d7f57dfaa 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java @@ -1,7 +1,7 @@ /******************************************************************************** * Copyright (c) 2022, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) * Copyright (c) 2022, 2023 ZF Friedrichshafen AG - * Copyright (c) 2022, 2023 Contributors to the Eclipse Foundation + * Copyright (c) 2022, 2023, 2024 Contributors to the Eclipse Foundation * * See the NOTICE file(s) distributed with this work for additional * information regarding copyright ownership. @@ -39,6 +39,7 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; +import java.util.Collections; import java.util.List; import java.util.Objects; import java.util.Optional; @@ -143,54 +144,53 @@ void saveOrUpdateAssets(AssetCallbackRepository repository, AssetBase asset) { @Override public void createIrsPolicyIfMissing() { log.info("Check if irs policy exists"); - List irsPolicies = irsApiClient.getPolicies(adminApiKey); + List irsPolicies = Objects.requireNonNullElse(irsApiClient.getPolicies(adminApiKey), Collections.emptyList()); log.info("Irs has following policies: {}", irsPolicies); - log.info("Required constraints from application yaml are : {}", traceabilityProperties.getRightOperand()); - boolean foundMatch = irsPolicies.stream() - .flatMap(irsPolicy -> irsPolicy.permissions().stream()) - .flatMap(permission -> permission.getConstraints().stream()) - .anyMatch(constraint -> { - boolean orMatch = constraint.getOr().stream() - .anyMatch(rightO -> rightO.getRightOperand().stream().anyMatch(value -> value.equals(traceabilityProperties.getRightOperand()))); - - boolean andMatch = constraint.getAnd().stream() - .allMatch(rightO -> rightO.getRightOperand().stream().allMatch(value -> value.equals(traceabilityProperties.getRightOperand()))); - - if (orMatch || andMatch) { - checkAndUpdatePolicy(irsPolicies); - return true; - } - - return false; - }); - - if (!foundMatch) { - createPolicy(); + PolicyResponse matchingIrsPolicy = irsPolicies.stream() + .filter(irsPolicy -> irsPolicy.permissions().stream() + .flatMap(permission -> permission.getConstraints().stream()) + .anyMatch(constraint -> + constraint.getOr().stream().anyMatch(rightO -> + rightO.getRightOperand().stream().anyMatch(value -> + value.equals(traceabilityProperties.getRightOperand()))) + || + constraint.getAnd().stream().allMatch(rightO -> + rightO.getRightOperand().stream().allMatch(value -> + value.equals(traceabilityProperties.getRightOperand()))) + )) + .findFirst() + .orElse(null); + + if (matchingIrsPolicy == null) { + createMissingPolicies(); + } else { + checkAndUpdateExpiredPolicies((matchingIrsPolicy)); } - } - private void createPolicy() { + private void createMissingPolicies() { log.info("Irs policy does not exist creating {}", traceabilityProperties.getRightOperand()); irsApiClient.registerPolicy(adminApiKey, RegisterPolicyRequest.from(traceabilityProperties.getLeftOperand(), OperatorType.fromValue(traceabilityProperties.getOperatorType()), traceabilityProperties.getRightOperand(), traceabilityProperties.getValidUntil())); } - private void checkAndUpdatePolicy(List requiredPolicies) { - Optional requiredPolicy = requiredPolicies.stream().filter(policyItem -> policyItem.policyId().equals(traceabilityProperties.getRightOperand())).findFirst(); - if (requiredPolicy.isPresent() && - traceabilityProperties.getValidUntil().isAfter(requiredPolicy.get().validUntil()) - ) { - log.info("IRS Policy {} has outdated validity updating new ttl {}", traceabilityProperties.getRightOperand(), requiredPolicy); + private void checkAndUpdateExpiredPolicies(PolicyResponse matchingIrsPolicy) { + if (isPolicyExpired(matchingIrsPolicy)) { + log.info("IRS Policy {} has outdated validity updating new ttl {}", traceabilityProperties.getRightOperand(), matchingIrsPolicy); irsApiClient.deletePolicy(adminApiKey, traceabilityProperties.getRightOperand()); irsApiClient.registerPolicy(adminApiKey, RegisterPolicyRequest.from(traceabilityProperties.getLeftOperand(), OperatorType.fromValue(traceabilityProperties.getOperatorType()), traceabilityProperties.getRightOperand(), traceabilityProperties.getValidUntil())); } } + private boolean isPolicyExpired(PolicyResponse requiredPolicy) { + return traceabilityProperties.getValidUntil().isAfter(requiredPolicy.validUntil()); + } + public List getPolicies() { return irsApiClient.getPolicies(adminApiKey); } + } From 3dceb1e7572cef430ef48a80779dd10f67c1e7f4 Mon Sep 17 00:00:00 2001 From: ds-lcapellino Date: Wed, 24 Jan 2024 10:33:29 +0100 Subject: [PATCH 025/311] helm: 508 update dependency check verion to 9.0.9 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index aa82b25337..583c6ca8ad 100644 --- a/pom.xml +++ b/pom.xml @@ -56,7 +56,7 @@ SPDX-License-Identifier: Apache-2.0 3.1.1 0.8.8 3.3.0 - 8.4.0 + 9.0.9 4.8.3.0 3.1.3 3.4.5 From 3037f4dbc12d60833c59e55b872ec5480980017a Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Wed, 24 Jan 2024 10:43:59 +0100 Subject: [PATCH 026/311] feature(assetState): #535 remove console.log --- .../shared/components/parts-table/parts-table.component.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts index 997b578e64..3e87d473b4 100644 --- a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts +++ b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.ts @@ -210,7 +210,6 @@ export class PartsTableComponent implements OnInit { this.filterFormGroup.valueChanges.subscribe((formValues) => { this.filterActivated.emit(formValues); }); - console.log(this.mainAspectType) } From b34413111094f3ebf7a3f28c8e0a0e1dceae3a02 Mon Sep 17 00:00:00 2001 From: ds-lcapellino Date: Wed, 24 Jan 2024 11:15:38 +0100 Subject: [PATCH 027/311] helm: 508 remove unused dependency --- tx-models/pom.xml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/tx-models/pom.xml b/tx-models/pom.xml index db74e7db81..49717227c0 100644 --- a/tx-models/pom.xml +++ b/tx-models/pom.xml @@ -35,10 +35,6 @@ SPDX-License-Identifier: Apache-2.0
- - org.springframework.boot - spring-boot-starter-data-jpa - io.swagger swagger-annotations @@ -52,8 +48,6 @@ SPDX-License-Identifier: Apache-2.0 org.springframework.boot spring-boot-starter-web - - org.apache.commons From 445a50ca707d2a1c425281c74fb1f06fc0b221e0 Mon Sep 17 00:00:00 2001 From: ds-lcapellino Date: Wed, 24 Jan 2024 11:17:57 +0100 Subject: [PATCH 028/311] Revert "helm: 508 remove unused dependency" This reverts commit b34413111094f3ebf7a3f28c8e0a0e1dceae3a02. --- tx-models/pom.xml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tx-models/pom.xml b/tx-models/pom.xml index 49717227c0..db74e7db81 100644 --- a/tx-models/pom.xml +++ b/tx-models/pom.xml @@ -35,6 +35,10 @@ SPDX-License-Identifier: Apache-2.0 + + org.springframework.boot + spring-boot-starter-data-jpa + io.swagger swagger-annotations @@ -48,6 +52,8 @@ SPDX-License-Identifier: Apache-2.0 org.springframework.boot spring-boot-starter-web + + org.apache.commons From 55085c0fed258588da2971e020320fccf0db5adb Mon Sep 17 00:00:00 2001 From: ds-mwesener Date: Wed, 24 Jan 2024 12:09:14 +0000 Subject: [PATCH 029/311] Update Dependencies Backend Action --- DEPENDENCIES_BACKEND | 126 +++++++++++++++++++++---------------------- 1 file changed, 63 insertions(+), 63 deletions(-) diff --git a/DEPENDENCIES_BACKEND b/DEPENDENCIES_BACKEND index 7280aa5bbe..0e6ef79cd9 100644 --- a/DEPENDENCIES_BACKEND +++ b/DEPENDENCIES_BACKEND @@ -106,9 +106,9 @@ maven/mavencentral/io.micrometer/micrometer-commons/1.11.7, Apache-2.0 AND (Apac maven/mavencentral/io.micrometer/micrometer-core/1.11.7, Apache-2.0 AND (Apache-2.0 AND MIT), approved, #9238 maven/mavencentral/io.micrometer/micrometer-observation/1.11.7, Apache-2.0, approved, #9242 maven/mavencentral/io.opentelemetry/opentelemetry-api/1.25.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.opentelemetry/opentelemetry-api/1.27.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/io.opentelemetry/opentelemetry-api/1.29.0, Apache-2.0, approved, #10088 maven/mavencentral/io.opentelemetry/opentelemetry-context/1.25.0, Apache-2.0, approved, clearlydefined -maven/mavencentral/io.opentelemetry/opentelemetry-context/1.27.0, Apache-2.0, approved, clearlydefined +maven/mavencentral/io.opentelemetry/opentelemetry-context/1.29.0, Apache-2.0, approved, #10090 maven/mavencentral/io.rest-assured/json-path/5.3.2, Apache-2.0, approved, #9261 maven/mavencentral/io.rest-assured/json-schema-validator/5.4.0, Apache-2.0, approved, clearlydefined maven/mavencentral/io.rest-assured/rest-assured-common/5.3.2, Apache-2.0, approved, #9264 @@ -183,61 +183,62 @@ maven/mavencentral/org.awaitility/awaitility-proxy/3.0.0, Apache-2.0, approved, maven/mavencentral/org.awaitility/awaitility/3.0.0, Apache-2.0, approved, #11042 maven/mavencentral/org.bitbucket.b_c/jose4j/0.9.3, Apache-2.0, approved, #4707 maven/mavencentral/org.bouncycastle/bcpkix-jdk15on/1.69, MIT, approved, clearlydefined -maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.75, MIT, approved, #9166 +maven/mavencentral/org.bouncycastle/bcpkix-jdk18on/1.76, MIT, approved, #9825 maven/mavencentral/org.bouncycastle/bcprov-jdk15on/1.69, MIT, approved, clearlydefined maven/mavencentral/org.bouncycastle/bcprov-jdk18on/1.76, MIT AND CC0-1.0, approved, #9827 maven/mavencentral/org.bouncycastle/bcutil-jdk15on/1.69, MIT, approved, clearlydefined -maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.75, MIT, approved, #9170 +maven/mavencentral/org.bouncycastle/bcutil-jdk18on/1.76, MIT, approved, #9828 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.1, 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.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/asset-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/catalog-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/connector-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/contract-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/control-plane-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/core-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-api-configuration/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-api/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-http-dispatcher/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-catalog/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-http-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-api/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-http-dispatcher/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-negotiation/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-api/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-http-dispatcher/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transfer-process/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp-transform/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/dsp/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/http/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jersey-providers/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/jetty-core/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/json-ld/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-engine/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-evaluator/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-model/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/policy-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/runtime-metamodel/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-datasource-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transaction-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-data-plane-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transfer-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/transform-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/util/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/validator-spi/0.1.3, Apache-2.0, approved, technology.edc -maven/mavencentral/org.eclipse.edc/web-spi/0.1.3, Apache-2.0, approved, technology.edc +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 @@ -279,9 +280,9 @@ maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.17, EPL-2.0 OR Apache-2.0 maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.19, 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/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.4.1-20231110.130443-8, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.4.1-20231110.130443-8, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.4.1-20231110.130443-8, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.5.1-20240123.143043-12, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.5.1-20240123.143043-12, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.5.1-20240123.143043-12, 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.16.3, Apache-2.0, approved, #7935 @@ -303,23 +304,23 @@ maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.2, BSD-3-Clause, approved maven/mavencentral/org.glassfish.jaxb/jaxb-runtime/4.0.4, 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.4, BSD-3-Clause, approved, ee4j.jaxb -maven/mavencentral/org.glassfish.jersey.containers/jersey-container-servlet-core/3.1.2, 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.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.2, 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.2, 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.2, 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.2, 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.2, 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.2, 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.2, 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.2, 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/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 @@ -329,7 +330,6 @@ maven/mavencentral/org.hdrhistogram/HdrHistogram/2.1.12, BSD-2-Clause OR License 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.2.17.Final, LGPL-2.1-only AND Apache-2.0 AND MIT AND CC-PDDC AND (EPL-2.0 OR BSD-3-Clause), approved, #9121 maven/mavencentral/org.hibernate.validator/hibernate-validator/8.0.1.Final, Apache-2.0, approved, clearlydefined -maven/mavencentral/org.javassist/javassist/3.29.0-GA, Apache-2.0 AND LGPL-2.1-or-later AND MPL-1.1, approved, #6023 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 From d8cdbb10732abe7fe6474d3ed50fafdf1111e0bf Mon Sep 17 00:00:00 2001 From: Christian Rehm Date: Wed, 24 Jan 2024 14:59:30 +0100 Subject: [PATCH 030/311] chore(concept): #521 create first draft --- .../#521-revoked-notification-handling.md | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md diff --git a/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md new file mode 100644 index 0000000000..d552b02728 --- /dev/null +++ b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md @@ -0,0 +1,43 @@ +# \[Concept\] \[#521\] Revoked notification handling + +| Key | Value | +|---------------|-----------------------------------------------------------------------| +| Autor | ds-crehm | +| Creation date | 24.01.2024 | +| Ticket Id | #521 https://github.com/eclipse-tractusx/traceability-foss/issues/521 | +| State | WIP | + +# Table of Contents +1. [Description](#description) +2. [Requirements](#requirements) +3. [Non-functional requirements](#non-functional-requirements) +4. [Out of scope](#out-of-scope) + +# Description + +After a notification is sent, the policy must first be checked for the asset and the relevant BPNs. +If the policies are invalid or expired, the notification must be rejected and the user notified of the rejection. + +# Requirements + +- The relevant policies must be fetched from the EDC +- The policies must be validated + - Is the policy active? + - Is the connection to the requested BPN allowed? + - Is the requested notification to this BPN allowed? +- If the policy is not valid, the notification must be rejected + - Status set to "REJECTED" + - Status information stored in the notification (detailed description why it failed) + - Pop-up informing the user ("The notification was rejected. Reason: XXX") + - (optional) Clicking on the pop-up sends you to the detail view of the notification +- Detailed information about the reason for the rejection must be shown in the detail view of the notification +- (optional) Detailed information about the relevant policy for that notification must be shown in the detail view of the notification. Policy implementation is in progress and must be considered -> A link to the policy implementation is another possibility +- The user must be able to review the notification (and the policy -> policy implementation) and resend it + +# Non-functional requirements + +- The time it takes for a notification to be rejected is reasonable. If it takes too long, it will be canceled and the user will be notified. + +# Out of scope + +- Policies are part of the EDC From 57b57c8aae719d2bdee507ed8936d435473d4608 Mon Sep 17 00:00:00 2001 From: Christian Rehm Date: Wed, 24 Jan 2024 16:09:05 +0100 Subject: [PATCH 031/311] chore(concept): #521 add more information --- .../#521-revoked-notification-handling.md | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md index d552b02728..a5d0bb1ea6 100644 --- a/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md +++ b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md @@ -8,31 +8,41 @@ | State | WIP | # Table of Contents -1. [Description](#description) -2. [Requirements](#requirements) -3. [Non-functional requirements](#non-functional-requirements) -4. [Out of scope](#out-of-scope) +1. [Background](#background) +2. [Scope](#Scope) +3. [Requirements](#requirements) +4. [Non-functional requirements](#non-functional-requirements) +5. [Out of scope](#out-of-scope) -# Description +# Background -After a notification is sent, the policy must first be checked for the asset and the relevant BPNs. -If the policies are invalid or expired, the notification must be rejected and the user notified of the rejection. +After a notification is sent, a contract negotiation starts by accessing the EDC. +During the negotiation the validity of the policy and relevant permissions are checked. +When the check is successful, the notification will be sent. +When the check is unsuccessful, the notification will not be sent. +Currently, in both cases the user will be informed that the notification was successfully sent. + +# Scope + +When the policy check is unsuccessful, the user must be notified of this failure as soon as possible. +It must be possible for him to view detailed information about the reason for this failure. He must be able to resend the notification. # Requirements -- The relevant policies must be fetched from the EDC - The policies must be validated - - Is the policy active? - - Is the connection to the requested BPN allowed? - - Is the requested notification to this BPN allowed? + - Does a matching policy exist at all? + - Is the policy active? (validUntil date >= currentDateTime) - If the policy is not valid, the notification must be rejected - - Status set to "REJECTED" - - Status information stored in the notification (detailed description why it failed) - - Pop-up informing the user ("The notification was rejected. Reason: XXX") + - New notification status. E.g. "REJECTED"/"FAILED" + - Notification set to this status + - Detailed status information stored in the message history of the notification + - Pop-up informing the user (e.g. "The notification was not successful. Reason: XXX") - (optional) Clicking on the pop-up sends you to the detail view of the notification - Detailed information about the reason for the rejection must be shown in the detail view of the notification - (optional) Detailed information about the relevant policy for that notification must be shown in the detail view of the notification. Policy implementation is in progress and must be considered -> A link to the policy implementation is another possibility -- The user must be able to review the notification (and the policy -> policy implementation) and resend it +- User must be able to resend the notification + - In the notification overview + - In the detail view # Non-functional requirements @@ -41,3 +51,4 @@ If the policies are invalid or expired, the notification must be rejected and th # Out of scope - Policies are part of the EDC +- Contract negotiation is part of the EDC From 3a821aedf63369c25386ba16f168600381d1a217 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Wed, 24 Jan 2024 17:02:21 +0100 Subject: [PATCH 032/311] feature(assetState): #535 implemented first working asset publish state --- .../parts/presentation/parts.component.html | 1 + .../parts/presentation/parts.component.ts | 44 +++++++++--------- .../page/policies/model/policy.model.ts | 39 ++++++++++++++++ .../asset-publisher.component.html | 23 +++++++--- .../asset-publisher.component.spec.ts | 11 ++--- .../asset-publisher.component.ts | 45 +++++++++++++++---- .../asset-publisher/policy.model.ts | 4 -- .../components/chip/chip.component.scss | 2 +- .../shared/service/asset-publisher.service.ts | 35 --------------- ...service.spec.ts => policy.service.spec.ts} | 6 +-- .../modules/shared/service/policy.service.ts | 22 +++++++++ frontend/src/assets/locales/de/common.json | 3 +- frontend/src/assets/locales/en/common.json | 5 ++- 13 files changed, 152 insertions(+), 88 deletions(-) create mode 100644 frontend/src/app/modules/page/policies/model/policy.model.ts delete mode 100644 frontend/src/app/modules/shared/components/asset-publisher/policy.model.ts delete mode 100644 frontend/src/app/modules/shared/service/asset-publisher.service.ts rename frontend/src/app/modules/shared/service/{asset-publisher.service.spec.ts => policy.service.spec.ts} (60%) create mode 100644 frontend/src/app/modules/shared/service/policy.service.ts diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.html b/frontend/src/app/modules/page/parts/presentation/parts.component.html index d99d9c3778..0ab7d4b096 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.html +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.html @@ -131,6 +131,7 @@ diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.ts b/frontend/src/app/modules/page/parts/presentation/parts.component.ts index ebfc8184fa..eeb73429a0 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.ts +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.ts @@ -19,27 +19,27 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -import {AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChildren} from '@angular/core'; -import {FormControl, FormGroup} from '@angular/forms'; -import {Pagination} from '@core/model/pagination.model'; -import {PartsFacade} from '@page/parts/core/parts.facade'; -import {resetMultiSelectionAutoCompleteComponent} from '@page/parts/core/parts.helper'; -import {MainAspectType} from '@page/parts/model/mainAspectType.enum'; -import {AssetAsBuiltFilter, AssetAsPlannedFilter, Part} from '@page/parts/model/parts.model'; -import {BomLifecycleSize} from '@shared/components/bom-lifecycle-activator/bom-lifecycle-activator.model'; -import {TableType} from '@shared/components/multi-select-autocomplete/table-type.model'; -import {PartsTableComponent} from '@shared/components/parts-table/parts-table.component'; -import {TableEventConfig, TableHeaderSort} from '@shared/components/table/table.model'; -import {ToastService} from '@shared/components/toasts/toast.service'; -import {toAssetFilter, toGlobalSearchAssetFilter} from '@shared/helper/filter-helper'; -import {NotificationType} from '@shared/model/notification.model'; -import {View} from '@shared/model/view.model'; -import {PartDetailsFacade} from '@shared/modules/part-details/core/partDetails.facade'; -import {BomLifecycleSettingsService, UserSettingView} from '@shared/service/bom-lifecycle-settings.service'; -import {StaticIdService} from '@shared/service/staticId.service'; -import {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs'; -import {map} from 'rxjs/operators'; -import {RoleService} from "@core/user/role.service"; +import { AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core'; +import { FormControl, FormGroup } from '@angular/forms'; +import { Pagination } from '@core/model/pagination.model'; +import { RoleService } from '@core/user/role.service'; +import { PartsFacade } from '@page/parts/core/parts.facade'; +import { resetMultiSelectionAutoCompleteComponent } from '@page/parts/core/parts.helper'; +import { MainAspectType } from '@page/parts/model/mainAspectType.enum'; +import { AssetAsBuiltFilter, AssetAsPlannedFilter, Part } from '@page/parts/model/parts.model'; +import { BomLifecycleSize } from '@shared/components/bom-lifecycle-activator/bom-lifecycle-activator.model'; +import { TableType } from '@shared/components/multi-select-autocomplete/table-type.model'; +import { PartsTableComponent } from '@shared/components/parts-table/parts-table.component'; +import { TableEventConfig, TableHeaderSort } from '@shared/components/table/table.model'; +import { ToastService } from '@shared/components/toasts/toast.service'; +import { toAssetFilter, toGlobalSearchAssetFilter } from '@shared/helper/filter-helper'; +import { NotificationType } from '@shared/model/notification.model'; +import { View } from '@shared/model/view.model'; +import { PartDetailsFacade } from '@shared/modules/part-details/core/partDetails.facade'; +import { BomLifecycleSettingsService, UserSettingView } from '@shared/service/bom-lifecycle-settings.service'; +import { StaticIdService } from '@shared/service/staticId.service'; +import { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs'; +import { map } from 'rxjs/operators'; @Component({ @@ -71,7 +71,7 @@ export class PartsComponent implements OnInit, OnDestroy, AfterViewInit { public DEFAULT_PAGE_SIZE = 50; public ctrlKeyState = false; - isPublisherOpen$ = new BehaviorSubject(false); + isPublisherOpen$ = new Subject(); @ViewChildren(PartsTableComponent) partsTableComponents: QueryList; diff --git a/frontend/src/app/modules/page/policies/model/policy.model.ts b/frontend/src/app/modules/page/policies/model/policy.model.ts new file mode 100644 index 0000000000..b54a6af0cc --- /dev/null +++ b/frontend/src/app/modules/page/policies/model/policy.model.ts @@ -0,0 +1,39 @@ +// TODO: Decide if long term a Policy state, facade, ResponseType and Assembler is needed +export interface Policy { + policyId: string; + createdOn: string; + validUntil: string; + permissions?: PolicyPermission[]; +} + +export interface PolicyPermission { + action: PolicyType; + constraints?: Constraint[]; +} + +export enum PolicyType { + ACCESS="ACCESS", + USE="USE" +} + +export interface Constraint { + leftOperand: string; + operator: OperatorType; + rightOperand: string[]; +} + +export enum OperatorType { + EQ = 'eq', + NEQ = 'neq', + LT = 'lt', + GT = 'gt', + IN = 'in', + LTEQ = 'lteq', + GTEQ = 'gteq', + ISA = 'isA', + HASPART = 'hasPart', + ISPARTOF = 'isPartOf', + ISONEOF = 'isOneOf', + ISALLOF = 'isAllOf', + ISNONEOF = 'isNoneOf', +} diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.html b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.html index 739aafacdf..83fd99528e 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.html +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.html @@ -3,10 +3,10 @@

{{'actions.publishAssets' | i18n}}

{{'publisher.selectedAssets' | i18n}}:

- + - {{item.nameAtManufacturer}} - {{item.id}} + {{asset.nameAtManufacturer}} + {{asset.id}} @@ -17,21 +17,30 @@

{{'publisher.policyToApply' | i18n}}:

{{'publisher.selectPolicyLabel' | i18n}} - - {{policy.name}} + + {{policy.policyId}} {{'publisher.selectPolicyError' | i18n}} -
+
+
{{'publisher.publish' | i18n}} +
diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts index 07ace2da15..952e901e07 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts @@ -1,4 +1,4 @@ -import { Policy } from '@shared/components/asset-publisher/policy.model'; +import { Policy } from '@page/policies/model/policy.model'; import { renderComponent } from '@tests/test-render.utils'; import { AssetPublisherComponent } from './asset-publisher.component'; @@ -20,15 +20,16 @@ describe('AssetPublisherComponent', () => { it('should publish assets and emit submitted event', async () => { const {fixture} = await renderAssetPublisherComponent(); const {componentInstance} = fixture - const publishSpy = spyOn(componentInstance.assetPublisherService, 'publishAssets'); + const publishSpy = spyOn(componentInstance.policyService, 'publishAssets'); const submittedSpy = spyOn(componentInstance.submitted, 'emit'); - const dummyPolicy: Policy = { id: 'id-1', name: 'myPolicy' }; - componentInstance.policyFormControl.setValue(dummyPolicy.id); + const dummyPolicy: Policy = { policyId: 'id-1', createdOn: 'testdate', validUntil: 'testdate' }; + componentInstance.policyFormControl.setValue(dummyPolicy.policyId); + componentInstance.selectedAssets = []; componentInstance.publish(); - expect(publishSpy).toHaveBeenCalledWith(dummyPolicy.id); + expect(publishSpy).toHaveBeenCalledWith([],dummyPolicy.policyId); expect(componentInstance.policyFormControl.value).toBeNull(); expect(submittedSpy).toHaveBeenCalled(); diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts index 3530b0080b..94e93e6855 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts @@ -1,8 +1,9 @@ import { Component, EventEmitter, Input, Output } from '@angular/core'; import { FormControl, Validators } from '@angular/forms'; -import { Part } from '@page/parts/model/parts.model'; -import { Policy } from '@shared/components/asset-publisher/policy.model'; -import { AssetPublisherService } from '@shared/service/asset-publisher.service'; +import { ImportState, Part } from '@page/parts/model/parts.model'; +import { Policy } from '@page/policies/model/policy.model'; +import { PolicyService } from '@shared/service/policy.service'; +import { Observable, Subscription } from 'rxjs'; @Component({ selector: 'app-asset-publisher', @@ -12,23 +13,51 @@ import { AssetPublisherService } from '@shared/service/asset-publisher.service'; export class AssetPublisherComponent { @Input() selectedAssets: Part[] = []; + @Input() isOpen: Observable; + isOpenSubscription: Subscription; @Output() submitted = new EventEmitter(); - policies: Policy[]; + policiesSubscription: Subscription; + policiesList: Policy[] = []; policyFormControl = new FormControl('', [Validators.required]) - constructor(readonly assetPublisherService: AssetPublisherService) {} + constructor(readonly policyService: PolicyService) {} ngOnInit(): void { - this.policies = this.assetPublisherService.getPolicies(); + this.isOpenSubscription = this.isOpen.subscribe(next => { + if(!next) { + this.policyFormControl.reset(); + return; + } + this.getPolicies(); + }) + } + + ngOnDestroy():void { + if (this.isOpenSubscription) { + this.isOpenSubscription.unsubscribe(); + } + if(this.policiesSubscription) { + this.policiesSubscription.unsubscribe(); + } } publish() { - this.assetPublisherService.publishAssets(this.policyFormControl.value) + const selectedAssetIds = this.selectedAssets.map(part => part.id) + this.policyService.publishAssets(selectedAssetIds, this.policyFormControl.value).subscribe(next=> console.log(next)); this.policyFormControl.reset(); this.submitted.emit(); - console.log("IMPORT") + } + + private getPolicies() { + this.policiesSubscription = this.policyService.getPolicies().subscribe(data => { + this.policiesList = data; + }) + } + + checkForNonTransientPart(): boolean { + return this.selectedAssets.some(part => part.importState !== ImportState.TRANSIENT) } } diff --git a/frontend/src/app/modules/shared/components/asset-publisher/policy.model.ts b/frontend/src/app/modules/shared/components/asset-publisher/policy.model.ts deleted file mode 100644 index e59b64b502..0000000000 --- a/frontend/src/app/modules/shared/components/asset-publisher/policy.model.ts +++ /dev/null @@ -1,4 +0,0 @@ -export interface Policy { - id: string; - name: string; -} diff --git a/frontend/src/app/modules/shared/components/chip/chip.component.scss b/frontend/src/app/modules/shared/components/chip/chip.component.scss index b4fe293c79..9a50021b93 100644 --- a/frontend/src/app/modules/shared/components/chip/chip.component.scss +++ b/frontend/src/app/modules/shared/components/chip/chip.component.scss @@ -1,6 +1,6 @@ .chip-container { padding: 0.25rem 0.75rem 0.25rem 0.75rem; - width: 148px; + width: 161px; background-color: currentColor; display: flex; justify-content: center; diff --git a/frontend/src/app/modules/shared/service/asset-publisher.service.ts b/frontend/src/app/modules/shared/service/asset-publisher.service.ts deleted file mode 100644 index 1acc0cebaa..0000000000 --- a/frontend/src/app/modules/shared/service/asset-publisher.service.ts +++ /dev/null @@ -1,35 +0,0 @@ -import {Injectable} from '@angular/core'; -import {Policy} from '@shared/components/asset-publisher/policy.model'; - -@Injectable({ - providedIn: 'root' -}) -export class AssetPublisherService { - - POLICIES: Policy[] = [ - { - id: 'policy_id1', - name: 'EDC Policy' - }, - { - id: 'policy_id2', - name: 'Assets Policy', - }, - { - id: 'policy_id3', - name: 'Investigations Policy' - }, - { - id: 'policy_id4', - name: 'Alerts Policy', - }, - ] - - getPolicies(): Policy[] { - return this.POLICIES; - } - - publishAssets(policyId: string) { - return "successfully published assets under policy with id " + policyId; - } -} diff --git a/frontend/src/app/modules/shared/service/asset-publisher.service.spec.ts b/frontend/src/app/modules/shared/service/policy.service.spec.ts similarity index 60% rename from frontend/src/app/modules/shared/service/asset-publisher.service.spec.ts rename to frontend/src/app/modules/shared/service/policy.service.spec.ts index 3b31de8bf3..6240e97fe4 100644 --- a/frontend/src/app/modules/shared/service/asset-publisher.service.spec.ts +++ b/frontend/src/app/modules/shared/service/policy.service.spec.ts @@ -1,13 +1,13 @@ import { TestBed } from '@angular/core/testing'; -import { AssetPublisherService } from './asset-publisher.service'; +import { PolicyService } from './policy.service'; describe('AssetPublisherService', () => { - let service: AssetPublisherService; + let service: PolicyService; beforeEach(() => { TestBed.configureTestingModule({}); - service = TestBed.inject(AssetPublisherService); + service = TestBed.inject(PolicyService); }); it('should be created', () => { diff --git a/frontend/src/app/modules/shared/service/policy.service.ts b/frontend/src/app/modules/shared/service/policy.service.ts new file mode 100644 index 0000000000..2154cb5f92 --- /dev/null +++ b/frontend/src/app/modules/shared/service/policy.service.ts @@ -0,0 +1,22 @@ +import { Injectable } from '@angular/core'; +import { ApiService } from '@core/api/api.service'; +import { environment } from '@env'; +import { Policy } from '@page/policies/model/policy.model'; +import { Observable } from 'rxjs'; + +@Injectable({ + providedIn: 'root' +}) +export class PolicyService { + private readonly url = environment.apiUrl; + constructor(private readonly apiService: ApiService) {} + + getPolicies(): Observable { + return this.apiService + .getBy(`${this.url}/policies`); + } + + publishAssets(assetIds: string[],policyId: string) { + return this.apiService.post(`${this.url}/assets/publish`, {assetIds, policyId}); + } +} diff --git a/frontend/src/assets/locales/de/common.json b/frontend/src/assets/locales/de/common.json index d6b75dd673..72a23a0248 100644 --- a/frontend/src/assets/locales/de/common.json +++ b/frontend/src/assets/locales/de/common.json @@ -16,7 +16,8 @@ "unauthorized": "Die Funktion ist aufgrund einer fehlenden Rolle deaktiviert. Bitten Sie Ihren Administrator, die erforderliche Rolle für die Funktion bereitzustellen.", "notAllowedForAsPlanned": "Diese Funktion ist für Produkte im Lebenszyklus \"AsPlanned\" nicht verfügbar.", "noChildPartsForInvestigation": "Diese Funktion ist für Produkte ohne Bauteile nicht verfügbar.", - "noCustomerAsPlannedParts": "Produkte von Kunden im Lebenszyklus \"AsPlanned\" sind nicht verfügbar." + "noCustomerAsPlannedParts": "Produkte von Kunden im Lebenszyklus \"AsPlanned\" sind nicht verfügbar.", + "nonTransientPart": "Ein oder mehrere ausgewählte Produkte befinden sich nicht im erforderlichen Importstatus \"TRANSIENT\"." }, "pageTitle": { "dashboard": "Dashboard", diff --git a/frontend/src/assets/locales/en/common.json b/frontend/src/assets/locales/en/common.json index 785289c0b2..07f8362bef 100644 --- a/frontend/src/assets/locales/en/common.json +++ b/frontend/src/assets/locales/en/common.json @@ -14,9 +14,10 @@ "adminBpn": "BPN - EDC configuration", "adminImport": "Data provisioning", "unauthorized": "Functionality is disabled because of missing role. Ask your administrator to provide the required role for the functionality.", - "notAllowedForAsPlanned": "This function is not available for Parts in the Lifecycle \"AsPlanned\". ", + "notAllowedForAsPlanned": "This function is not available for Parts in the Lifecycle \"AsPlanned\".", "noChildPartsForInvestigation": "This function is not available for Parts without components.", - "noCustomerAsPlannedParts": "Customer parts in lifecycle \"AsPlanned\" are not available." + "noCustomerAsPlannedParts": "Customer parts in lifecycle \"AsPlanned\" are not available.", + "nonTransientPart": "One or more selected parts are not in the required import state \"TRANSIENT\"." }, "pageTitle": { "dashboard": "Dashboard", From 3f480c038ccf16ccad64b3e20b7e4b539815c2e1 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Wed, 24 Jan 2024 17:09:04 +0100 Subject: [PATCH 033/311] feature(assetState): #535 added CHANGELOG entry --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aca15f5ad..3296b95232 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,13 +10,14 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ### Added - Added AVD-KSV-0014 to trivy ignore - Added tooltips on functionalities that are unauthorized or unavailable -- + ### Changed - Updated Irs Library from 1.4.1-SNAPSHOT to 1.5.1-SNAPSHOT - Changed some java implementations according to security findings ( business logic unchanged ) - Adjusted sync logic to create jobs only for related BomLifecycles - Spring core updated from 6.0.14 to 6.0.16 - Springboot updated from 3.1.6 to 3.1.7 +- Implemented asset publisher component functionality ### Removed From f91b8da5d245be8fdfcaf3eca857155bb4729fb2 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Thu, 25 Jan 2024 10:24:17 +0100 Subject: [PATCH 034/311] chore[xxx] updated error handling in publishAssets method --- CHANGELOG.md | 1 + .../importpoc/service/PublishServiceImpl.java | 27 ++++++++++++++----- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2aca15f5ad..7b37c772a1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -65,6 +65,7 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). - Updated github/codeql-action from 2 to 3 - Updated actions/download-artifact from 3 to 4actions/download-artifact from 3 to 4 - Updated com.nimbusds:nimbus-jose-jwt from 9.37.1 to 9.37.3 +- Implemented error handling to throw exceptions for assets not in 'TRANSIENT' state within the publishAssets method ### Removed - Shell descriptor entity with underlying logic diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java index a260261071..b577b1937e 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java @@ -21,6 +21,7 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.eclipse.tractusx.traceability.assets.application.importpoc.PublishService; +import org.eclipse.tractusx.traceability.assets.domain.asbuilt.exception.AssetNotFoundException; import org.eclipse.tractusx.traceability.assets.domain.asbuilt.repository.AssetAsBuiltRepository; import org.eclipse.tractusx.traceability.assets.domain.asplanned.repository.AssetAsPlannedRepository; import org.eclipse.tractusx.traceability.assets.domain.base.model.AssetBase; @@ -37,21 +38,33 @@ public class PublishServiceImpl implements PublishService { private final AssetAsPlannedRepository assetAsPlannedRepository; private final AssetAsBuiltRepository assetAsBuiltRepository; + private static void checkImportState(AssetBase assetBase) { + if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { + throw new AssetNotFoundException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); + } + } + @Override public void publishAssets(String policyId, List assetIds) { - //Update assets with policy id + List assetAsPlannedList = assetAsPlannedRepository.getAssetsById(assetIds).stream() - .filter(assetAsPlanned -> ImportState.TRANSIENT.equals(assetAsPlanned.getImportState())) - .peek(assetAsPlanned -> assetAsPlanned.setImportState(ImportState.IN_SYNCHRONIZATION)) - .peek(assetAsPlanned -> assetAsPlanned.setPolicyId(policyId)) + .peek(assetAsPlanned -> { + checkImportState(assetAsPlanned); + assetAsPlanned.setImportState(ImportState.IN_SYNCHRONIZATION); + assetAsPlanned.setPolicyId(policyId); + }) .toList(); assetAsPlannedRepository.saveAll(assetAsPlannedList); List assetAsBuiltList = assetAsBuiltRepository.getAssetsById(assetIds).stream() - .filter(assetAsBuilt -> ImportState.TRANSIENT.equals(assetAsBuilt.getImportState())) - .peek(assetAsBuilt -> assetAsBuilt.setImportState(ImportState.IN_SYNCHRONIZATION)) - .peek(assetAsBuilt -> assetAsBuilt.setPolicyId(policyId)) + .peek(assetAsBuilt -> { + checkImportState(assetAsBuilt); + assetAsBuilt.setImportState(ImportState.IN_SYNCHRONIZATION); + assetAsBuilt.setPolicyId(policyId); + }) .toList(); assetAsBuiltRepository.saveAll(assetAsBuiltList); } + + } From bea3ac9bb7e3e9039ed75240ac35c78c4b990130 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Thu, 25 Jan 2024 10:27:57 +0100 Subject: [PATCH 035/311] chore[xxx] formatted code --- .../domain/importpoc/service/PublishServiceImpl.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java index b577b1937e..2850ebeca9 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java @@ -38,11 +38,6 @@ public class PublishServiceImpl implements PublishService { private final AssetAsPlannedRepository assetAsPlannedRepository; private final AssetAsBuiltRepository assetAsBuiltRepository; - private static void checkImportState(AssetBase assetBase) { - if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { - throw new AssetNotFoundException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); - } - } @Override public void publishAssets(String policyId, List assetIds) { @@ -66,5 +61,10 @@ public void publishAssets(String policyId, List assetIds) { assetAsBuiltRepository.saveAll(assetAsBuiltList); } + private static void checkImportState(AssetBase assetBase) { + if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { + throw new AssetNotFoundException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); + } + } } From 8b0523a7acfdfd90122ae8b2fb1225578fa55c50 Mon Sep 17 00:00:00 2001 From: Maximilian Wesener Date: Thu, 25 Jan 2024 10:39:54 +0100 Subject: [PATCH 036/311] chore(deployment): 552 updated doc --- .../docs/administration/configuration.adoc | 2 +- .../administration/portal-configuration.adoc | 46 +++++++++++++++++++ 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 docs/src/docs/administration/portal-configuration.adoc diff --git a/docs/src/docs/administration/configuration.adoc b/docs/src/docs/administration/configuration.adoc index 35c04df754..e8413e25be 100644 --- a/docs/src/docs/administration/configuration.adoc +++ b/docs/src/docs/administration/configuration.adoc @@ -2,8 +2,8 @@ = Configuration :toc: - include::frontend-configuration.adoc[leveloffset=+1] include::backend-configuration.adoc[leveloffset=+1] +include::portal-configuration.adoc[leveloffset=+1] diff --git a/docs/src/docs/administration/portal-configuration.adoc b/docs/src/docs/administration/portal-configuration.adoc new file mode 100644 index 0000000000..d204926784 --- /dev/null +++ b/docs/src/docs/administration/portal-configuration.adoc @@ -0,0 +1,46 @@ +[#_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] + +=== 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] + +=== Additional info +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] + +=== 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. + +== 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. + +== 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] + +=== Additional info +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] From 00f4d993728447e767f92061daa24a5f3b281180 Mon Sep 17 00:00:00 2001 From: ds-mwesener Date: Thu, 25 Jan 2024 09:42:10 +0000 Subject: [PATCH 037/311] Update Dependencies Backend Action --- DEPENDENCIES_BACKEND | 6 +++--- DEPENDENCIES_FRONTEND | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/DEPENDENCIES_BACKEND b/DEPENDENCIES_BACKEND index 0e6ef79cd9..2b556ad23c 100644 --- a/DEPENDENCIES_BACKEND +++ b/DEPENDENCIES_BACKEND @@ -280,9 +280,9 @@ maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.17, EPL-2.0 OR Apache-2.0 maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.19, 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/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.5.1-20240123.143043-12, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.5.1-20240123.143043-12, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.5.1-20240123.143043-12, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.5.1-20240124.153013-13, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.5.1-20240124.153013-13, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.5.1-20240124.153013-13, 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.16.3, Apache-2.0, approved, #7935 diff --git a/DEPENDENCIES_FRONTEND b/DEPENDENCIES_FRONTEND index 392c6a0de0..1e5a23fc0f 100644 --- a/DEPENDENCIES_FRONTEND +++ b/DEPENDENCIES_FRONTEND @@ -577,7 +577,7 @@ npm/npmjs/-/json-stable-stringify-without-jsonify/1.0.1, MIT, approved, clearlyd npm/npmjs/-/json-stringify-safe/5.0.1, ISC, approved, clearlydefined npm/npmjs/-/json5/1.0.2, MIT, approved, CQ22351 npm/npmjs/-/json5/2.2.3, MIT, approved, #2126 -npm/npmjs/-/jsonc-parser/3.2.0, MIT, approved, clearlydefined +npm/npmjs/-/jsonc-parser/3.2.0, MIT, approved, #12891 npm/npmjs/-/jsonfile/4.0.0, MIT, approved, clearlydefined npm/npmjs/-/jsonfile/6.1.0, MIT, approved, clearlydefined npm/npmjs/-/jsonparse/1.3.1, MIT, approved, clearlydefined From 13e6226c7ebd4da3e5eb2147891203f6e248f1ef Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Thu, 25 Jan 2024 11:00:20 +0100 Subject: [PATCH 038/311] feature(publish): #535 show Toast on success or error --- .../page/parts/presentation/parts.component.html | 4 ++-- .../page/parts/presentation/parts.component.ts | 11 +++++++++++ .../asset-publisher/asset-publisher.component.ts | 14 +++++++++----- 3 files changed, 22 insertions(+), 7 deletions(-) diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.html b/frontend/src/app/modules/page/parts/presentation/parts.component.html index 0ab7d4b096..5621bb1ac1 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.html +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.html @@ -47,7 +47,7 @@ matTooltipPosition="above" [class.mdc-tooltip--multiline]="true" [matTooltipShowDelay]="1000" - [matTooltipDisabled]="roleService.hasAccess(['wip'])" + [matTooltipDisabled]="roleService.hasAccess(['admin'])" > diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.ts b/frontend/src/app/modules/page/parts/presentation/parts.component.ts index eeb73429a0..7add524f4c 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.ts +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.ts @@ -136,6 +136,17 @@ export class PartsComponent implements OnInit, OnDestroy, AfterViewInit { } + refreshPartsOnPublish(success: boolean) { + if(!success) { + this.toastService.error("Failed to publish Assets"); + } else { + this.toastService.success("Request to publish Assets was successful") + this.partsFacade.setPartsAsBuilt(); + this.partsFacade.setPartsAsPlanned(); + this.partsTableComponents.map(component => component.clearAllRows()) + } + } + private resetFilterAndShowToast() { let filterIsSet = resetMultiSelectionAutoCompleteComponent(this.partsTableComponents, false); if (filterIsSet) { diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts index 94e93e6855..de3bab343d 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts @@ -16,7 +16,7 @@ export class AssetPublisherComponent { @Input() isOpen: Observable; isOpenSubscription: Subscription; - @Output() submitted = new EventEmitter(); + @Output() submitted = new EventEmitter(); policiesSubscription: Subscription; policiesList: Policy[] = []; @@ -44,11 +44,15 @@ export class AssetPublisherComponent { } - publish() { - const selectedAssetIds = this.selectedAssets.map(part => part.id) - this.policyService.publishAssets(selectedAssetIds, this.policyFormControl.value).subscribe(next=> console.log(next)); + publish(): void { + const selectedAssetIds = this.selectedAssets.map(part => part.id); this.policyFormControl.reset(); - this.submitted.emit(); + this.selectedAssets = []; + this.policyService.publishAssets(selectedAssetIds, this.policyFormControl.value).subscribe({ + next: data => {this.submitted.emit(true);}, + error: error => {this.submitted.emit(false);} + }); + } private getPolicies() { From d3f0d029d40d78112d942702b0be94404391a733 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Thu, 25 Jan 2024 11:29:40 +0100 Subject: [PATCH 039/311] chore[xxx] added new Exception & renamed method --- .../exception/PublishAssetException.java | 25 +++++++++++++++++++ .../importpoc/service/PublishServiceImpl.java | 18 ++++++------- 2 files changed, 34 insertions(+), 9 deletions(-) create mode 100644 tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/exception/PublishAssetException.java diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/exception/PublishAssetException.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/exception/PublishAssetException.java new file mode 100644 index 0000000000..d5ede6f93b --- /dev/null +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/exception/PublishAssetException.java @@ -0,0 +1,25 @@ +/******************************************************************************** + * Copyright (c) 2023, 2024 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ +package org.eclipse.tractusx.traceability.assets.domain.importpoc.exception; + +public class PublishAssetException extends RuntimeException { + public PublishAssetException(String message) { + super(message); + } +} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java index 2850ebeca9..2e9da731b0 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java @@ -21,11 +21,11 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.eclipse.tractusx.traceability.assets.application.importpoc.PublishService; -import org.eclipse.tractusx.traceability.assets.domain.asbuilt.exception.AssetNotFoundException; import org.eclipse.tractusx.traceability.assets.domain.asbuilt.repository.AssetAsBuiltRepository; import org.eclipse.tractusx.traceability.assets.domain.asplanned.repository.AssetAsPlannedRepository; import org.eclipse.tractusx.traceability.assets.domain.base.model.AssetBase; import org.eclipse.tractusx.traceability.assets.domain.base.model.ImportState; +import org.eclipse.tractusx.traceability.assets.domain.importpoc.exception.PublishAssetException; import org.springframework.stereotype.Service; import java.util.List; @@ -39,12 +39,18 @@ public class PublishServiceImpl implements PublishService { private final AssetAsBuiltRepository assetAsBuiltRepository; + private static void validTransientState(AssetBase assetBase) { + if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { + throw new PublishAssetException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); + } + } + @Override public void publishAssets(String policyId, List assetIds) { List assetAsPlannedList = assetAsPlannedRepository.getAssetsById(assetIds).stream() .peek(assetAsPlanned -> { - checkImportState(assetAsPlanned); + validTransientState(assetAsPlanned); assetAsPlanned.setImportState(ImportState.IN_SYNCHRONIZATION); assetAsPlanned.setPolicyId(policyId); }) @@ -53,7 +59,7 @@ public void publishAssets(String policyId, List assetIds) { List assetAsBuiltList = assetAsBuiltRepository.getAssetsById(assetIds).stream() .peek(assetAsBuilt -> { - checkImportState(assetAsBuilt); + validTransientState(assetAsBuilt); assetAsBuilt.setImportState(ImportState.IN_SYNCHRONIZATION); assetAsBuilt.setPolicyId(policyId); }) @@ -61,10 +67,4 @@ public void publishAssets(String policyId, List assetIds) { assetAsBuiltRepository.saveAll(assetAsBuiltList); } - private static void checkImportState(AssetBase assetBase) { - if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { - throw new AssetNotFoundException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); - } - } - } From 34385d6f8547bc71d6494f1690a6839b942b0297 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Thu, 25 Jan 2024 12:21:28 +0100 Subject: [PATCH 040/311] chore[xxx] added new method saveAssetsInRepository --- .../importpoc/service/PublishServiceImpl.java | 39 ++++++++----------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java index 2e9da731b0..d51fe432e2 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java @@ -23,6 +23,7 @@ import org.eclipse.tractusx.traceability.assets.application.importpoc.PublishService; import org.eclipse.tractusx.traceability.assets.domain.asbuilt.repository.AssetAsBuiltRepository; import org.eclipse.tractusx.traceability.assets.domain.asplanned.repository.AssetAsPlannedRepository; +import org.eclipse.tractusx.traceability.assets.domain.base.AssetRepository; import org.eclipse.tractusx.traceability.assets.domain.base.model.AssetBase; import org.eclipse.tractusx.traceability.assets.domain.base.model.ImportState; import org.eclipse.tractusx.traceability.assets.domain.importpoc.exception.PublishAssetException; @@ -38,33 +39,27 @@ public class PublishServiceImpl implements PublishService { private final AssetAsPlannedRepository assetAsPlannedRepository; private final AssetAsBuiltRepository assetAsBuiltRepository; - - private static void validTransientState(AssetBase assetBase) { - if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { - throw new PublishAssetException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); - } - } - @Override public void publishAssets(String policyId, List assetIds) { + saveAssetsInRepository(policyId, assetIds, assetAsPlannedRepository); + saveAssetsInRepository(policyId, assetIds, assetAsBuiltRepository); + } - List assetAsPlannedList = assetAsPlannedRepository.getAssetsById(assetIds).stream() - .peek(assetAsPlanned -> { - validTransientState(assetAsPlanned); - assetAsPlanned.setImportState(ImportState.IN_SYNCHRONIZATION); - assetAsPlanned.setPolicyId(policyId); - }) - .toList(); - assetAsPlannedRepository.saveAll(assetAsPlannedList); - - List assetAsBuiltList = assetAsBuiltRepository.getAssetsById(assetIds).stream() - .peek(assetAsBuilt -> { - validTransientState(assetAsBuilt); - assetAsBuilt.setImportState(ImportState.IN_SYNCHRONIZATION); - assetAsBuilt.setPolicyId(policyId); + private void saveAssetsInRepository(String policyId, List assetIds, AssetRepository repository) { + List assetList = repository.getAssetsById(assetIds).stream() + .peek(asset -> { + validTransientState(asset); + asset.setImportState(ImportState.IN_SYNCHRONIZATION); + asset.setPolicyId(policyId); }) .toList(); - assetAsBuiltRepository.saveAll(assetAsBuiltList); + repository.saveAll(assetList); } + private static void validTransientState(AssetBase assetBase) { + if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { + throw new PublishAssetException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); + } + + } } From 0f48476e5f1c2354ff6a534b6741f64e3714b75d Mon Sep 17 00:00:00 2001 From: Christian Rehm Date: Thu, 25 Jan 2024 13:59:15 +0100 Subject: [PATCH 041/311] chore(concept): #521 rework concept --- .../#521-revoked-notification-handling.md | 110 +++++++++++++----- .../UsagePolicyExpiredException-Mockup.png | Bin 0 -> 176829 bytes .../UsagePolicyPermissionException-Mockup.png | Bin 0 -> 178772 bytes 3 files changed, 78 insertions(+), 32 deletions(-) create mode 100644 docs/concept/#521-revoked-notification-handling/UsagePolicyExpiredException-Mockup.png create mode 100644 docs/concept/#521-revoked-notification-handling/UsagePolicyPermissionException-Mockup.png diff --git a/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md index a5d0bb1ea6..f848bf6977 100644 --- a/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md +++ b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md @@ -1,54 +1,100 @@ -# \[Concept\] \[#521\] Revoked notification handling +# Concept #521: Revoked notification handling | Key | Value | |---------------|-----------------------------------------------------------------------| -| Autor | ds-crehm | +| Author | ds-crehm | | Creation date | 24.01.2024 | | Ticket Id | #521 https://github.com/eclipse-tractusx/traceability-foss/issues/521 | | State | WIP | # Table of Contents -1. [Background](#background) -2. [Scope](#Scope) -3. [Requirements](#requirements) -4. [Non-functional requirements](#non-functional-requirements) -5. [Out of scope](#out-of-scope) +1. [Overview](#overview) +2. [Summary](#summary) +3. [Problem Statement](#problem-statement) +4. [Requirements](#requirements) +5. [NFR](#nfr) +6. [Out of scope](#out-of-scope) +7. [Assumptions](#assumptions) +8. [Concept](#concept) +9. [Glossary](#glossary) +10. [References](#references) +11. [Additional Details](#additional-details) -# Background +# Overview -After a notification is sent, a contract negotiation starts by accessing the EDC. -During the negotiation the validity of the policy and relevant permissions are checked. -When the check is successful, the notification will be sent. -When the check is unsuccessful, the notification will not be sent. -Currently, in both cases the user will be informed that the notification was successfully sent. +After a notification is created and approved, a negotiation in the EDC is initiated. +Once the EDC approves access to the BPN, Trace-X fetches their usage policy. +There are three possibilities: +1. The policy is valid (validUntil >= current DateTime) and the notification is permitted to be sent. +2. The policy is valid (validUntil >= current DateTime) but the notification is **not** permitted to be sent. +3. The policy is **not** valid (validUntil < current DateTime) and the notification is **not** permitted to be sent (policy details are not relevant in this case). -# Scope +# Summary -When the policy check is unsuccessful, the user must be notified of this failure as soon as possible. -It must be possible for him to view detailed information about the reason for this failure. He must be able to resend the notification. +Currently, there is only one error message and no differentiation between case 2 and 3. +When the notification is not permitted, the user is only notified about the failure but not about the reason. +This must now be implemented so that the user knows about the reason behind the rejection and can act accordingly. + +# Problem Statement # Requirements -- The policies must be validated - - Does a matching policy exist at all? - - Is the policy active? (validUntil date >= currentDateTime) -- If the policy is not valid, the notification must be rejected - - New notification status. E.g. "REJECTED"/"FAILED" +- During policy check, throw separate Exceptions based on the type of failure. + - If policy is not valid -> UsagePolicyExpiredException + - If policy is valid but notification not permitted -> UsagePolicyPermissionException +- New quality investigation & alert status: "Failed" - Notification set to this status - - Detailed status information stored in the message history of the notification - - Pop-up informing the user (e.g. "The notification was not successful. Reason: XXX") - - (optional) Clicking on the pop-up sends you to the detail view of the notification +- Detailed status information stored in the message history of the notification +- Pop-up informing the user - Detailed information about the reason for the rejection must be shown in the detail view of the notification -- (optional) Detailed information about the relevant policy for that notification must be shown in the detail view of the notification. Policy implementation is in progress and must be considered -> A link to the policy implementation is another possibility - User must be able to resend the notification - - In the notification overview - - In the detail view - -# Non-functional requirements -- The time it takes for a notification to be rejected is reasonable. If it takes too long, it will be canceled and the user will be notified. +# NFR # Out of scope -- Policies are part of the EDC -- Contract negotiation is part of the EDC +# Assumptions + +# Concept + +### Backend + +Instead of only having one UsagePolicyException, there must be two different exceptions. + +UsagePolicyException must be renamed to *UsagePolicyPermissionException* and a new *UsagePolicyExpiredException* must be created. +UsagePolicyPermissionException is thrown whenever the notification is not compliant with the permissions of the policy. +UsagePolicyExpiredException is thrown whenever +policy.validUntil < currentTime + +A new notification status "Failed" must be implemented. + +### Frontend + +After creating and approving the notification and one of those errors is thrown: +1. A pop-up must be shown to the user +2. The notification status must be changed to "Failed" +3. A new message must be created and shown in the message history including the error description + +UsagePolicyPermissionException: +![UsagePolicyPermissionException-Mockup.png](UsagePolicyPermissionException-Mockup.png) +UsagePolicyExpiredException: +![UsagePolicyExpiredException-Mockup.png](UsagePolicyExpiredException-Mockup.png) + +# Glossary + +| Abbreviation | Name | Description | +|--------------|------|---------------| +| | | | +| | | | + +# References + +# LOP + +- How does Trace-X check policies/permissions/constraints currently? +- When is the UsagePolicyException thrown? +- How does it look like when this exception is thrown right now? + +# 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/#521-revoked-notification-handling/UsagePolicyExpiredException-Mockup.png b/docs/concept/#521-revoked-notification-handling/UsagePolicyExpiredException-Mockup.png new file mode 100644 index 0000000000000000000000000000000000000000..723872f23e305cec3aeb3984ca9a7a996cdd9671 GIT binary patch literal 176829 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�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 z%0A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 F{|DoD;)4JH literal 0 HcmV?d00001 diff --git a/docs/concept/#521-revoked-notification-handling/UsagePolicyPermissionException-Mockup.png b/docs/concept/#521-revoked-notification-handling/UsagePolicyPermissionException-Mockup.png new file mode 100644 index 0000000000000000000000000000000000000000..787b4675633191152e11be4a4e83ed47a7aee50f GIT binary patch literal 178772 zcmaI8c{tQ<*gssiqO6JROHrwWEM=KNvQ-=oz`7Qdso;C|3ALEfDM_BIM)_8E_ z$nl9IN9b5i(1S-JJf8jre;oCEpndB|X^#Nyhhz3?_tcIYDMvBwSse#IpLDxz;(6o< zYb)*dQJibO?U5sgAMa?WJ@m0y+Ghw5-42{Q%p4!kyHI_GnrUNJv93SEg)4tOq9=eW z7nHASa~II|h>i8qd?lgtRze4ZZJ5}sUiPS4YM@R)PJTj4?s_oQVQc*N_52Q-GLJ^^ zFi*(7<9+hwr_hQIRQMP}So4u%H>cX9nriJA$6V@(&ZJU4;@$TwXmM`~FFRt7of!Oq z6MU(*2IJY9t`lA7^BW^epcIdc%~q$GdArEl$~Jzq9jWEAkxm)1ktnvjmr>=gUR~;Q zqlPqSr~Q;{?&T!b8OI?$aj(qW@{KVl$x?0)AxVHr%wmhi8GLyRr zXNS3Mq@_cmEO1=rzj<{A>Pz562bu5BFx^_O(EUSKl_DD!-5hVr&zfL4!n!L(UEs_k zDKU7GQIo91?nUBaY?)$d^p;=UMg8`Yjc~b(uxmMxD0<<+*wW`xB(L=D$1RTEmC|_P zi`rwoA)>p59C$9v!A2{pDf!VDpGWBh(--z(L+?d9Uptisxi)ViL83bL4Buc$-%Cn(*odUVO=K(Q7(y=1pMCBXAAt_< z^Vr_!VNDAi#td2++sZ>g1by{Zo5hR@3J{*@)~M5A4IFP_Z{s#UWjH|J`=1dc>@!nL zow*}!XI$Mahs`6Mx#d3buYQ4R*kA!YxB3xwr zbIQ;yQmFrV%9NFmd=Kx-+{Yvv!ZvstObr!lQgJj_=d=RSrm;l zurwOTFxq#o<5rWrQ5)-alPYqmc~+^l6>~;pht&IiJX#j zcx>AC)Cg!8@_C376BzyOC*q?(?L0N!icfD_v%O>D#vKH{pE{PE zjjSbCOvuiLC5Pk5xu4({vhn1cK|b*Cbe535&Q+noS?Ocmxr(6-UQ#(|EZ4-Hm%2Ls zklLbF|GRlf>~|O`Gj7MJ_nnbv#$Q~{!A|=m?N<9ks~0zGCFXq||6Q(ldas(wDai>* zd^*lcY>$;P^Cc8}E!->5oB>(B)RTT@yv^uq&UL;%pN}ZRF}m>FhaTL92A9 zvQqV;gEM!3^tw1^y%uiwLJNF$E@YZoDRaJZ(E&=m!XsYL3_B*`V{Q+Y{%;voGlA8c zM34KraYJ*knsnIFkb4rXqFDC$MI&(0I%jK{3?J6a8oSMh5S>LDEfT;EwImXY#X=)J z%P2plBwz6mpMkQf{mkrCc#^;1MM@@iix6L_wv^=iHl>f9&U@9fYl>>F0fvu8$> z_bU|Yf_LKDh+Zp(7qt``fry|-Knet>DL!7<5pR^XH_@V40!b_NRwZ>h3_k-GA&_Uf zk*kFco1pEL$Exj&VkIN(ow;ea48DDINt9*+J-`z$e7W-PW@Q0_XmdJlExh~1N}nXy z``I4h=^%#o&C9Mn5ABU^T_k3oBc5!^OFEYb(?)|5qVzf#-dF z9JrwwSj}0CNoY2#uNKb9F?O77NlUKKEZd!UNvU$Oyd3t&WY(SN&{8+?82SNXbz1UY^yNg1p>SpoOW%nH2H+=5E%DKGSbVLyJX16_V1aA#r^SNwjvfQ@}cJ8A8q_i z-*X@}eVSyoYM6wEO8Q1h(TT)32Bcv8(o;}=ic##8;q+1ONKmvwH9rN|7QKC**gM=t z&caVptR=#6-h!y#dJf=(eS$|afb&d1$d#Jifq5a7KXz9@pw+Q1{yM9xS#W#tF7aSbEKa8j7MsSc;CbU9FA%{q-w7(w#@VOxUZ&m81uLWpr%2ywZJ)C)WSBZ|%LI0#XV zoS>Eb{}vZQtR;k2Tt|sahHm=W)Ji#>NTvE+D#4C6n+aq4c|5$`AiR)U~x0qmS{NkoHceRvGX&Oy9$P5%@d zSxE>_y!|^#CRA&~$6Sm0`>O&Y1!+fHBtSst;2S><&H}WW z2>=y%5Y-uMML(GFBJSXnhS2?1UH^!rkF9(T zz+RT6rv)b|EoD8ne^mMVt&sd>dGtB{YQXH+<_1@tJweEm5q& z`C9)3N<_X;Z!_2*RuYYs)s%${pU6AWF!q0rfi~+SAF5}#|3HU#`eb=JK#@qA8UU2+ z&Fbid4I61B3!#=U%J42lp#kzrEnI81&dfEHodU`{F@an@QEk|H)f7EFE`FNu?3#X3 zZ+SX{x2RBGx>7Nk@a)O(JuykR1C@t%!n*Hvd;nNV7-b`eYJ01RV))NjEIKGqMLOEr zz1b7y;m1X2XoUvs+e@6uhHY^W=55rm%jJPLtO3!K$_Am_Xz#?b$Q-};6kkq6xXB+! zKp5mdc87a52!P@Zr^9MG&o@KaBUP($;ogZKMua#<5j431t{c2B*ml-nXKrZ4Vhg~# zw+_%;oXv?vUC(1|^A;L7Z;9I1pWeNF`;^=lj%?DZh5Vn)1Jr;v4bg#8@%F;r*1yaV ztK}tsHPrtHI25%~6;Cpl<*FBb0GhaIPzR19-LDyTI^$|=QGl7u@LVN$AIgii6G*=A z9Mhg|!!*8;CKe=VA^8TUIS|&5%R2yk&)eW?NzguV%GQ+Wl9- z5*?(*-a?>-gi)4JuZRdQc}m4)y8uAy4v%a8RuLJ{5~LuO!XV!Xb2bBlEfTB-d+ZR6 zM_)86pPul&rq4-3jUU9?b@XofsqwZp2g3;flAvBN>Y&o-SSUJte7y}PJc2ZlLZG;6 zY2aA{Rw(E=bwKa3EWZm)gro{S2IO1GkFV|N`vT_@9N&+lAong&Eu5hFIGd;?EoF9S znwUr%z9Ck7U1RIaI3nmcAO>)fmY$xZM_Ms1#$|feG6@k7>OGZTLCv33|63?P19^Gr z>*(Y{Zq!fm_II8T8YK4t<@n^Uum>NO{}&Z=Us5;$*;f;R+^^ww0ktwXJMEsH%}$J` z#hYV8S% zwUTtCbZtKXw=1F8tY+BNRUeAxOROwSuK`)M0ACp?)fv4+O`MC4r_dys`@bXrc1;NY zI|{IEsVrEakCL@ay?=o<`#-kL2W(3|U%SgoG&!%In-uSXiUB*(pYA3+ejG)sF=mz} ztvfu^l7M6Hg6DA%egD;Ju{5m~LgQTkS|7vw$B0D_l;Mtqi2K7gqIRl7E>#q3rC&rz zcu!~$4W{?60ntd~@X}O#7JQx_^?Mc23@6KCcQpk1iJz=V@JIke?yY`f7T{?7!*Fl* zGox(QURXd@1$6vGNl+KF=c<_uZzE?uwR<KMxvWv-J4_Tcr=YK!e@-BuO5UiBO`QA0OfHBb?}`%I;_Lw~;DNGvBA;WG zp6#A~=bp2^gBNz;b2}XtA1>P!=r8%gIYGm7&T!lx?8)eX;jnDWM{#C-gUGV3`76A*OTfxvC4P|1%{)?f*4#XJaRb#k0u& zF~RpFVb}uqu|YoIb3t{m`);-0a?o+*X1jr+`8#!}H*$aQf%k5lq-bs^Z{>MPYz+tZ zKW7Vaa2EKIw_iUaDnMzl|g%Fj1_(fmI|sYXY^hI$m@Yv3Ce4v}oHF;s-bC*}kJXr7Qfs#h~z@t*E!N-jyH*Gwrc9z!Ib%2$+ zsL1xe@(@TkAiuQ`PI9?8brFoATyd%k7N`rnMJ4c@x*(FM_|43+0RP}~H$`0-Cy0o`Gt8=&o>XnTxMa$8!!xbuvPj6tDmo3%|oOm7;A4|5N-P>V)rqgL9?=Q3-RhjfP{my?(E}jUe-UFmAOD6 z^i4^<Xz#@jlMODIysDkW-+ZXnHKtOMV8F5%3_t0+=WwH!$L@&@6v75CWVO1t$7$ zpaQM8!8s5B!{_Erb7=DRas~hONFZ+?Db+Tmcidj1;5D5s0`D;quRa$(AIP~kJ|^Ty zz`ashgZ;AZEu}O!?V5{D1RkDJc^SS?+Mk=fZ7Uo!J5B$vDj&yQx99UpVB$h;Q^cS+ z|KpJ*+|Ho5Psw(2JsAO8h_!pOYqD22P{8VLBU#L8mTWp@H-%nm-5nI2R;{4#TTal=kTplosHpbHSI% zq#4a&7f+p@)lYCckS-|m^$|^{0MK_a6iR+0e?ptLe85mRVyA(51`Hmx&;!VZ0u*2f zvAb+4NLzz?+10_kMy76t5k#pPfPukYowQ2(1)b(Kv~RO;9N%N^Xf4>YNCJ5vL| zJaoXlz~`*=m7;-|1m7ewI0*tIBS+7M2eg=QlEGX2-@F0ZnXa*ByAD)J(*H%@*)Zhj*0&>pULcuJYdCYpkWiLLJMQ#YoAl}*t?Wr3x_hIg2jWm*DfNeJDNH)!8I zV}t8^Vecj!+GB0>kNQ%Nm{6xmUa?JglJZUS^wJNk+Jms`Nr7O+yRX^C{= zTvoI48N<$~^O{J$v3Q_S{>S3<2!u{a?pPz3b#v~egH@*q)^eZwC>$rKB3cZ6MW!U~ zNj5Zv^(olU-+J4;<1e`S?NkR{42PBBrv@Y!^+2UgPtijA|3b!`)hx=flVmNx`&R^s zlX~YdHLTqZ!p>I=Qrjqy__&Tt%cfExI`xw{>fN7I;gZ${HfG=Vy~F~lvO-Mo!4ozW z{|fdh7s@Yx{kuMs6M@GUjU{c|rq4ZOJ9K);vVX);JNO?%r@;|SeI&n){*2M2y&IxY ztK^XJ=}@YH>Sku;mc{iyVGHT|{O0wQAM`$>mV!a_SwJ1*Q_@7n=y^D3 zl2npeP)oGz_x~^tEV1kqaQQQmQDl)IXXD*Z?l5AtwN&R!`y-e17x4=}$DU311Ns1Q z;_4~FJ$B+{TzTNAARvgpUKRW!~cI%Z{F_a2xBVj2}&K?sMXn?X4(*W)6Mf z*1CE=Ih3T6RYr#X*YM3S5P51|m`WAZ+Yw z$75m1G#@UM%GwE`z&|I1e7D%42&nM)=BoXToUa;4q3;|t0|d;XU^|}dj^3@*nUk?I zkpumeyTC(t&&7y?a+kLH3P}7MG5+0%B$5#Lu^%ssW6 z*`CjAJ6iCfq%1Y2MCQ`#2 z{p*xaPeTkVXv`gKilB*M>x4*24Aba*2~mDvx#KdY|JJ8Rb%)6V)Tv;BXE-e7wJ*{4 zs{O=aR@@Wep<4b6sxj0F`RBX(mDzW5)6VU-owxeB+x57~?@XX)ruz2|)DyP@tJ{y+ z;w^%|o$6H=&haA;@sBj@b8T9@ir%nn?fG8RY4^R#tjsa*n-T#l^^DNuw|LJS>yq;p z7PxxPym9rtH}6%9(|q76!o|$El^~l@`ua;_!B9hh;pWfl&iS*+rA;w{RW75s(w~;| ze;QjpBoL^6N#Y(sWN0}acJTOYvb$ypa{Jff*iSy2oy`ex(jKXjpCpGcY46V=f>znN zqeO{+S-u>$w|vM=};S6P^2EdJt8sJJwc4?ub- zFasOpmFM8bO!evoP_*a+?qb;rXPS(+8bf&aN^M_ z!%#q

ZaO!U!poDoo^%ny`c*^J+oa&cLtd5J8ynaC)i+8au`cvJvpiY9SN&Ep?#q zk^hrE*viKoqYh|N?@(!NM5Dz@@$2_yx6nAP)gJx0DRoPMR?iZS{N?nUW``QiPwWRU zx7jq7X+n2Rk2eLLh;1^_7@TgTf~RN+`&?96)ED=A4OF zLBphqNXosD202LcEAc&s5;719)NS}B=l9SoXs*M?XXoL$7(VS=1V>Z?#l01)q`%}* z)y+Aa5+?Xl1^BtY-Cj-a&+kC1+RH5%`}(r!dq1&q1o?U`%W}m5rDUs%M{H5yf?B*(2q~N-P5ofVpV_GZ?lylb!@dEST({m$c=}p@@3d= zqDXR4`>>kT_qsC4{X6yh)#(*U(XqC%pMu@+O6yq?i$sKWC>HO+`DR!o@00m!vxnIa zUpy+bJ2SR66QiUn8PE z@t^~58GO7eb@)DE`~}B+#R{9HA5X6!BrJC`$R$|4e_{N`Eq9oXd<9eI)iZAgpLpBp z#4i0>P*G`$aju#)acuafDkI!hIkyYpuqdQu6vQhz_vVS!hD`jjTq)t)IU)-{y8-eH zh&*W73uPrAZZB`!&&&6NcpK$`?B0Muzv{V3R7LeVSqZeJurMT zi%u-#zN_Ed!G)s--)1ifkKf-d>fvUkWH0pC_!d86M)jgqujO@HKbgtdR4e6RaweV< z8nc_M8Td_`;Se4N?Fm^B#(^AyoufZ}1-K$!M5?ZC*7?PEJG@QLU)#&N|4O^lemqUZ zomn5cDOd4ctZKbHA1=n(KlrnNkmKrg+NHr}LBPytvP`>e)2d3f^|g5RJC$?U$jcW$ zfyk8--nt+ph##~o+>f((8U|V|tUtfyz{PffodbRkxVYhxmm}~Gn>4ol2cL-3<1pEEUXO$cA zXqUdqgrh8E3;;?_K`=q^x9@qHnbN{JRI;Vm3Df#qL)D#%E|%Wwvmf9mGpM`PRvCC? z3bmD`oy^flmt0M2_r~+<{DVo$dz3DZg$wY;&*mF0dS5CB@z#y%MLrD9pg%i-+A(~# zaFBZX`-S$J!hRbYjA8bI#U$^|M|ry|6F>MFH<#o@L6W1+^|#v*;VsCvWR!#UKXP57 zM8SX0M535~vg>yEuol*dPF18!_|dX&hKgat52LCE@5pADY+UEtpxZa)C5s$+A4Y&y ze(Ag`n=8c81f**JZ%5(u7~=c6ah(Je5$< zdNC;Ivg`LSnSE6%t@{gPVl`nOp?Zk2Y~L_$tQH<`8=B}^5KQ^HykB-0#ul`asp+x{ zX`IEbL^G&{ecML3eAr#;ys)HUy+u1{!IDzu zzY{m@3He)&P0w-6XB zSb*0ulKEO0(1n5TQqyagm$jJ~q?K#JWw0xa*1{9>!!^=!BO#%ocaw&Paz0dWeHUc!?$ zdh1CLhYjC`=j+UGGprGq_p2=&mMxzZ8?x8$o=3Iv3{)+sTo1#L_*`zP>8Y_-talj< zTnjx~)sX$|j7!7jki~|1MR7uzRc#r^3j`exk8$3&-}G`Ha2#jA5`#XV7a}7h+I^rp z?)}?TjpLgRa$rO(?#-VO$wb0)O}8G-VRHWd5-FcKlIrbMK=_1I&GGbT9P(4Hr=rb> zLUPsO*_Z9Ok}f}dlq4!%b86mGXJFWxbLdZYV7E?yF@fKRATFi;Z1<`k~6P-Ogi zm3|Jw?X6q!E|7_CE|!s_lc|kHvvl{!Y&Tuj!>NK zC}W&@sB>z=QBY{;`>pIiOXR70cZ0rNI*@Z^CX+VknC5joU615B{ZpH@S@KP!aaR!o z8#gJ3ebqvI&hHRXmkd7Tt2kd-U>AoTzfi5Zy7Vlq>suRBud++bGHGK0jhcN7mo0?c zN`y#OS=bp0>ZL28ieup9wF`yAUVlWJJ_(GTNzZ4LTIVDnNEKHW2?qCx(Q8JC1EZ=q z5Gpxz)Pd&s2havseEQcHj`fS!!jZn+67caa6E4a9-Q#Q1 z;ffe-diXS{D2j1yci`u^c~eNR<4E(sn=%m-(Mh{fYU5Nz(TXH0WT{YcZ=9PnuxuBJ zCJGC*LsYLP91=D~ECSbA9&S?3+RWUr2-?3c@ICD-14Z~p&~X3y`wq_Q!EPTOC=aER zKNqc(9!F-wS4)bdte*J`kY67%w8r*6*;tFH?iL`#+wuo*m8&+p2K+&;;3u~;O>GY_ zWxGle3c*xlFk28=K1c^bMjdSR4lpgB#YDERexKZv82dfB4Vx^{JG>O6lfE3hH|9D; zXxt}IMK>)2*VJ4XxuYo+!KZBwrw#+054~0`gQlCTp4u^)0qcQ>4ZSv4P+j*tvD?o8uVe;osxC|IzE(XHcbS|wmYU`c-VS!?YCKqMI(kSE3pRyCPWEpacQhV; zJKPm#*6%KIY2rLH(blsuyfVJ}xt2OXeMZ=-Az@H@5;L9O>Jyh$pvCQDlHv^8bfT zS>Sz`8FFqqa>W_0zqis@9$h-bX#1uz$I`{=iAF4-@+hzNh|9?ocf6YsbK7Qug!UXQ~yEIgLuC zfsYo$Z7^|B$z3mJ$LvzxF6P}aPqsU~IX^Uve{2-uu|eSsMoBy|C%c_0C6g#igpSe4nH5)k?5pI1!-^awV7OLvTuX(&!hMIS4@mR1t zdc1YOE?&2Cdi>ihIlZe-u3d|4wA#@6D94b}Cdl)6WN1@+=*<_&{-GtDcWb_13ah<` zZiCg80&Uz#;f^3r3@LlPV0O$8-wgAKr9eN)f=L4~{59=Ed2^svAo`h~hfm<^@srEE z_ZCuL_DdD^iyRHK^w8m>rg7uoU)`Ox2c!oZ_7tk zZs_>dp<&e}r!^PQ|M`+iW+Z7UN2xI(F~KxV!dd&!=X`h9@czrvMm9lXODZZdnZJqK z)FFAj=;!oGsf*Js6nV#wRJ(%_#{b-Ee8kLreb(7XbZ4XgLi=)=@WI_sf0C-gb%7oZ zcG{3;%;jRjOM?aFkPBW_Vy7o|9em__W+mqf%C58&bTdjwR{e=bmw#k2neP#;u{uU{ z^f%R&$07D>l@1RoR#qi9_?lK)OkBRYEWg4}`FLBY zju62>(R|0>+Jq+y{w@TP9PgdUf&^eFNpkzO#rAdPF2UEHug&~3R}lD?@G+yT*oY zwMJ?W^20aU&3q5%wN`cWtOopDuiD&BUS1pv+d_+Jt>zt9n**7@+PcEQ^d3*pcHNPR zf$FhJA7R0f_{lDJ7bRXi2jdd=72HaZe%v{2qT=h#X?f*jmZ-qe zM*pALY&QL$z_M?Oj@y7xKpNorF)&v%8gDHM!SiY$U~~zpRGx%)lk@q*@AWeaZ{9-+ z%jgS#L{AF`|GMgtYHJ3Xhv@ukbiL4EdNEmXgCVY)_fp4(dn|12p3dmHix&sqESL{=Uq;y4_D)fq%4Wx$vR5RnU^%sY z2~EewE$TxpRnQinT^pkLYwYTD&y|+hurJNN+|RUV%qdM?2mbSWZxUkKf4Qu6H%(90 z^YB#TLAEcnsibsyhOu!zL?wWj{L6hu=F=JTFUZ61_ZO%TNLlo;o#4aK!nsK5z5#_V zdZA3@QvlZ^bz!ZpE!QVMf7F{kRh@x#R7&db8&@gzWvciw0=WvQTG(3@-gj~F<2{*k z`r=QIF@NpN)?KMXQkjjTJBxTKcFb2ly{nx;Wkro#xqKMH=EQCmS`~L=nLp)Wmr73h zW(Zrv(Dqx`{Zn@f`6_QpP4AD9YgVT0Rr1m=ip~bF*97YWa|?@1K9y$D9DMl3vR{v5 z&9#cjDVf^3TT|$Ay>ioGSo1AY%F|n=$r>yBQ}A~ewX{B!Szt;*o{YHl<1R-M$BL|Q#B0h1_rg?f|wZ6OowG>S+J;g0Rw|zDCe$25;k#+ z8@qB4pr)F8;Yty1XRAf&;;(yLHB>tPt0}iGa!z0gg)c4pQ6~|Z>B)p(8$lMkx{gw& zCmtJDa_716qxhJd8ODtnhZC(#$=9$Rys|n)3uKDMGn0>gM-}3-Q(U^Q7H2h9o*Go{ zT5xuG*n4urK@isVhjhLB&-E!=J!QWgKLb3a!sEx{T5=eZuCv)ZgdL2xA^x!FW(9i*Y#=sB-}g`dGP;4E9FBkW4-L55z*(gw*u{tCJ)W~aa3>oy=JY9h=~RMGVB*`7R`)@o1J`IwSSE=dUXol9YDN$po*SuewwCiTpYx({KVOV>mCcD zL;RAl>N-2KUeSK4i5Bwk#Mmxfe(3|%S&B*J@SEB0Z7AokS5`qVYxC#@FYoH2T}Q>c zi~jiQjXB4?mqB~%3;dU{TTMLWbQeb!15#*$UvxU~itWROj0K0X=5J`6`^+E3G$?`( zr?eq}q3cje{zy^xBzc>%!8W^<{LJpU&jd(d#D3v_ z4265*dPT6g#}VlqJPY~ST2|s?{yPSy4E@epNG!${XcyZy<{Vp?Yu4|X9 z0<2HRlfFMoRgx$x<|Vf>jqRu#GC3>?+;XBGDHIn^gguVMWPEdTv(%crf9m?+U`LO* zra@R-*4v-54vvO|S6yZK>b^F@q@wlJmfrzMgNU30B>n!Zrvn^rKqZ{!9Q>2z;&$$0 zZ4*&dVX!mkw!VjtJUuf0>ssPba|K`eT#=Rl;S{)t{67h>AL{gC1gNW|> zD@j%Py9a&ef%NR@j{B_e+Bot@`_aljFIxQ3ToZYNHhF@_+w3|Xpiqp6$+Bk)Hv=c- zOd-4XA3g|OA9c(m?eyLFP^w+zw`Z5$&NMH6{{i7e`@~riiC{p0l)TueZe&j?!i^nA zC^I_x_sLyq4y6B1l73tuWK$*K((z5=re2EQ)s3QcX1(mX&-|L2B=4TGhfNIhc$q0_ zkQCSUeDF)!{U9H>X`O=wnR?gVu&u=2gehgx_l*WBYD!d}{v|;+L`p>&bGW>)M!%2h z#8Ky;$;)aXCF-g7rUHg|4)#6O5KSpJu{({A8g48)3*&GD-pj@W$KOmdqb*17?%YC; z+A+SJ*BP`?544<=PMFoS+1g^V*;?;DQelc4B+Dig7fSE_GPLP|l4y2AH4J8SaOq%~3B47|RIz{7 zbYQI;{5|D$_R7S_nXlV2h;1?L)#&0QGG?}3{--qW9TgB~n|g7pD%f#SGAV947^)bf zdVk*kAuQ+(Mo5$8=pNCeYG2mIr(Py1rsoJB7(6i9i=oJYb?N})og*plzQD7qoj5f~ zifhj{GPHJ4cR%BPda7i!%%W6<{NKm<1@D=pNm2}UzyETPf3|q5y+9Wc?D*xktVu_a zpvFBcMkT$Wqo)%b|CB4W8vCr5erTmrP(H4|@fi%gw!dZr3`Fk^uID+I<&@rOU`^bJ zsG5Ja-I!I)c4otcU`?sN(*B$T=8OXr&2N7TED{G`q zE(?+n-EUH5U~#)E77t`1RhI*JE&b_yR?kdra8GK$o39?|@3TnMTQ==;<#Ktin*Y3V zP=0WFYJJw` z<&xVzss=-`!JE;n^^?t{m>azySJ;)goQXpQwZnW4 zJM2vdZ8DZKQ_w5$1d8?U*y2L!u0O3&tCV+WULuAjisqRmlD{R%u7%`Dr71NDPXsR_ z55QbT+SxCK4>$x?GQLND#L+m$&o)x9%PY-*ofVa(dvAnQft3J;c>wqA1msu`#jE5WC!8y;8TDDE5u|0VA{U;)lrF*fUgkGn_xM@ZHKGpNU(BsSg?`xK797Gp#}2Imn-xn8G`d zY&-2ddiJ6*^4b8gc;aPpj<2m+dLEl^ou;X7^5N3663JWHe$z_O&v9=Hp|(bG1%c)o zh&xAn3S5$lxQq4;x$%StFXHz2yzV-a7QbxU*c-^m6=@Qa7^n(h8q-UP>(!}oYC)ix zg}RR24WVRqiiag=5(chiN1|pm;Iccp@&iG&am%ENThk2!f+VGmV5j&v{p@NH273>) zKGml1_cPX)r?vd+Qsbe8zzO!&Uf7(9Y6>5IPv^;Q8%(se7|EaEz|Hk zH$rCaEi&6R;3&C-Vv!&q7d27At4l_w9ZQ!gq2qq^D1W# zO{STB8<}1wR#Ll>^eLWOloaQrO}#AnPjT5jereF;=%rU&mCSktyHS`XPO9}24|bL+ zJB3VR)URgV%F2Q10Hc#6db?Djg8x#Q-?~|J#an|v9o`oQH{PY(@^!zV_cRHe?aJsv zzNg@Sga2o`AvNO&o&Zb6SsB*9**b@bq2JXxW9D zE_&Lu_j7>tXP@^1AlOn6zyFz4oxU-6{KmU~= zH1{((r_zPlMLFzJ_qSU{c1>IfW*ErJY$4Ax`&|yDmzxWi-sJyg%(+99oY&9zlJe?? zoEPg^DKTUJ068R8bUqXVD~#+@QOKqonkb}9mL4Cg4moF=sTek1ZQ}K3BcE_bIiVBN zm%mwbP0FmH@jl9CW4A85?jKwxB$nxCN&X_w{arMiIs^Ce0_HkmFGyJ3#-E|WQ|Er} zrlOoo(0edhNALaXlm=DB|7z{x7=u`1BKH@zh^Nn=cgR*-BKir_rx#yEX zP`UW-&nY%r`~634tB$W$Djhh9{c~wSNLx>#ex40A8-mkbHGY&`H+cAKf#=}7>hqbN zvpw9X=^9l0bO264X%{!Ru6ZQb8_s;8Asb!ZN^*d46DaeO zo36z$43Zy@vTJ0RZZh;H%p{H-VRXW+7=ueXgD{s&KJHcX0Nia08aN|g;O#S*>s6{G z>CEI{R+Oqocmx%f8NjNI%KXx=udHT)>U6@3xnISe`!ikK-XSFVys*<+0Ad{fep6+m z@w}mOZzcM!L>YNW-P?#hLpkHc_A=AB-3#=*lfh-txxtOg5)aERuZ>k*%E+{g;z;>8CVa8W?C}%(|L6*fam!9xp;-XY+6<1htuC%fsrvzP%PcWdpf$L+E^gbnF~Zo=R~=g_Wq}RRSK<4*OW|+d z{k?7dZTWC{n{e>86%q?(&xR*7<_9vfJQjBGs#IU|vHdHsUfq_8+JN=z0?H}n!V`95 zT+y#juUrU9ZQa%1k30;|i7_3JLx_kLooZV5Z$i;HS7aaEwC`_vKbd^@>JZ(w<>cYB zxZaW(Y}34d)pGD!UJzgN=%bCWK*NR+A<&CiiLCs22)aL(sa>#5eXV{SX!7$W|6K`l z?EXdXf$Dilt=#v%hYTvugZDbw1yo-bl(s5vV_c=DX+w zEMx}rUs*J*R6Wu6rBpWDv&^~$OxCAcg1aZPdX}`D+qJ=cWn5r#%7OCcTy^BTTfVPW zI!b534Iv-m-Q*2-Ij>POI+h2FLO~1Jfoy@>IzAW6g!@0oUQ$Hs9mXi_TOmwG z)GfD9XY^25^{?B+k=alGoWF4cZ^yX&c@fJ)$!|-ke|qd!jdazgkb+nO4}YebJ(9zt z!b!TeAv$7Dz;>8w?Qn3K>jt%wVEuGj#F4S$J|3I954GnqGBAE0Ic9Kjd4tsERCMD_ z_a99Jq?=6?f<6Z8|D1pMvKnIfpQk^o&6`5AB@v201$idYb}lAb#qr+!e;P`xA=jeP|e|`keq-J?IXd z(mx~>nWiXAXMp)7XRY3Fr9&`0X~{oD8?auC1Do_grdr#aIk5KkO@;a{f#rU)6Fn~0 zx{0b5f7p<-dvyVF$7%+9?+~k}`z!nBYx*V)qWif?_>yXy>ob8qPw4^$B@}$CkGQDE zW^c4i2R~tU>;=-tc z*%&&#%t_A z(LF6W7KtnypQGu4${o;5RK=#WM17_~%_Fo@@bC&JDOKEErACu@1EJuq#MTzC?!eD_ zujcjml+a0XMi};7E=0}74;t9>X#}2zh8wv=wTM{>wK?1P8GHTXeFT|^ z!__~R^g8QT9hFlge=TS7x8Zc?6b$4dCZUC!hRS+#pKZq=|7^{r7zEr&A5uJ};l0fh zv|nxz(0C)O)bj`|@Tgpbx+2qWy%C%@JO7XLtV9?$$4I>O-~W&z-aC7)=3&wN=z3lzD&0}51?wm1C-<504ax8S;p)BPsr>)=|K6okR;BEbR5TEk zJt`c%BO^-2AtZb6UAC;WWUoRL*_>l!E3!8Shd9DH$B0AL_j&2_`F=mY-+y(xah&VA zUe|L!A9onj*U+b#l5hD@`849YFR>=*;+=4CmitZT2!=gF0Sh$D#d4RwyIM+`-ien^ zELRUOULAE=a2EdFYm;V^U&5@zY8Im*99o#3sP1m}ruF4wa=t`Yy3njRPC%_i40&@Lg;v z=%tJI@1=jYEP7n@eO9kadw9}!T&{^?7aME%z;0($ZpB)oQyCsR;JVah?@s2@X-t_$ zH;uA?{jB}8G3ZjckQLqC*k{b>D9@T=N+zZwmvGb(&3c3^^qOu0M`=bmNWnZ|sF$pS zKet@XGnx!+3wfleIhm_oYS(h#xbyB683x{(-I`4@sw%_{20g?x2F_KM-QAJR36}N8 zH)hpyfB8Oe%G2JBY0R(})yQ7IDdy87X0d|tgLIjBY?b6jR+{JD=;Cg^@d!0Sp!=Y_ zZ5+$+*k^ZB?x}ybfe zm)0xbcPaVx47)ASMqcDoTqBXUVZCu;#-7=$pmY=uBjvUY$lPI-_|u8%R6H~opwbWf zPrMga%Jn*D?r9U^&|?jqq2Bv?Lq#dMsHjW0+Usp?0_h8heIdEuImj~_Bv0ouda@I{ zb{Fp9b0@{BcMpea9~nwLZ=F{k5ccn1WBNJMXM6*vcAl?ULt8Vla?4x4B_Gu~crlY% zTLb+rXgN82P81Vi5$BotXXu6tB=0GWHbBYw{9_y_0;`x4vApF7CNR^&)CM)$&)hoRh9#dum z{asoHtVhWrN#9O@Yzpiq3_X8w*!o$slhBz0T*_=7HZbg$&b9vg6TMwoC7azbywUhD zzLcg{YAw{dL1eRKo&C|llbc^78r)6{vAVGGz9P1W$Any5MU_;UQHl7G7Z={TZv3d{h>5?u!#yJ*};4q^g%hm+d zIhl_^ZgEp+sc5FLJ`?>+pCf)L8lxYR8L@pnzs`yry%?kSFmpS1eS^k>-G4Z($d0)`sFYiY7wOq)#si-NGGuQee2FF29 zmf+`n7uL2k#)q#uvMrL1wkb1vblB8%y8J~_K#|Ue?74V_6pRX67w#}h+0&X~N&`m^ zYq!Qz630)CNp*g(wW|2kA{jH07h^+hn!_sZu3e_2Vn1FMO4@mn=*h!=ir3N$KkZoY z`SaXP7Adx*Dm?Qz8NWCt9zBNFc>VhA8Ei5AsYrB7N4t`0(yK*5r^?*zm%B~(DD&Uj zPtRSXd4WE+8&+^EUi67vWo&x2*~OD%;nn2S(TLOdp_9KKg={ zp8P`?zs<2Mb%0-UK2c~Me0im3p7wx~GfM@bC}u!1P*R{$JMAXgm(Y1~PA|vaKqgZ+ zq*+5#FZ|Pjeqwuz!V?E}w#}?A*=s*wtQF;2L}iSP3UoQ2<}tdt04t8+3SgQ_#D*9m zCfH?#Bkb-OM%q=Lt8AstEbO#BkKgWM%vcYiWnJQWPP*$eHM>AR*&`Hzk6!klt8TCJ z+IMbl)4y=v4mnJC%jf1kp`X!sZNtM85qI5pzkd_VxT zug*E@L0Tk&RzW%J^Lt;q8{{u6{YEBuTt+lgaV>E{V{0^SU;M?UMQ(0ZjaH>42NxMx zSI3hzu-YkmoSqELJ^3_GA;FcpG8d}Fu&WvCd@j0rYB#FR(`OG1iA4T5?E5cqYWEw5 zd<-V<#P|=8rT`J0RA`ARfPBQ@4`Y8%XziOuKd#A718)icHqJahbSp9L_M_7G@zMDMu{P}l$@{*-l6}-G- z)7OXdnvWylh@o@Me(zK6(=MyiAIj9##lz)#GvkNqo4MlaxZmbYlJ7iN(wW{FJ-Fqv z&1L(Et$vej$8g6~pmJP&)4^g@adp$=V9+JQMw?i_V~etrKK8qAg-H~-D-m9DGX5zw zU!FzaWwbh~LzCZ(%<6d_zuPkqGf)&MCo37{_AQ&TNcNFRR;pBjrMLqa+s$G2+4v3R z-l!ca)Z1tyD~gq+gj|XQ#tOgPWF_ud=i%-*zBv}1vi>clPHp?Q-zY=B+@_OUbnTMF z!tHC?gbL^F``$B7yQxWQ8FD*zU853DgZf&<-^3L8C9BCUvJwy6Wgqq|jv*B;)N^m} zv~0~gR(M(utl|G$8Wt^EGYA&0RJPvL-u)A@bai)wu*AL7(=n;-yDBDpMKm|EH}%*)M`OYZR+Tj8=9=B%iEe8>$iULI~kF@}|K zWS0l@Az&424Yti$;NGJIJvRwgW5 z_PjRleBzJK&7q#v*%!W-(vtZK6Rz-V3UHTVt_3F+DbBu2M44*vSbD~mNX!uW-GsaQ z{1dzBf2+~)3Kek>o!H;$R!2;zh!vXDZQgHFrR7l~nt44!Z>l}pSiOGj_1hp>{p+gk z1Y}gdAzg;6Q|94q4d)aFJ$1Q(AeRW0%a2Z93E7#D4n9xle5e^{#{K3PcXf@$(zXLf zYu6O^RSY?Sh0Csa8>rH>EbTmTG0c&-vu8D#+q|JI(EjH4=^OQ4 z`AlP2fA+NPB%Q{=(fGC6iKHZ(mhXZ$duGqMBt3+U!>{e{VMORx!(fxEymK@?d5++D z&9KUXT)RPtGT*(q@)&g>XQdslq9HYBrM%RZVOT5AAQzzov+X-aqoiXq#uC>i>*9*| zEt9m%x-6jpIf+pp@bIScU?s#1h~`Do#xhvHnIG0j%G%aesrlpU?s+0eWDzRN+ijhoZS(K6bwhF4ZTJ%8>sKNyyE7FJy!MJhsYX-Qg#whHG7b1a~sv+ z6+x~w2l;^-rSkdo{n%6T?s9L&BTBn;Y^v?zN58!hpNlw zKyNJm*3C=0eJ)mcZS`^8H;D|VHt|&^N3Wl1gw!x}CQZ>L`JnS!YbZtfb#Zihac!x>~$=f6=O~iTsG)Wj%Rh2+>tB$M8>);`RR1yU(Z@$4)ottFNB{VWJ=V)j>h+tNYO;xdx z$8w2GZbMJ<68nt`&wO5d)t$O($Xu+AO7MxIFi6HtZPyxk&&SRzjkaAXUmDhS*j$@` zr|YA!U5yDI?V4w){LSWSxN*_8YFW~9Sa4EFPAbB!IgET_Om4w7%1x|RX0jCH@ZgK< zs-&QepploAjt#-orlOjjhIAt9AOl&uL~j3=#hu)mC5@JlID^r#dbQo=l&-fvD`no7 zpdM0uMG%ipr$leBt1VF5pin=Qz2B^C&-<8fd~bu?))!ko z(Y&h#u+_UMEhQCwB3xoDnu*@n)Afic>lz+(0ogycjtwf95}Gv#3XXE~D;07(Vj- zekr20+IFT~{CTC*MmA?WD&I3XH@~H+AmR{}D6>Y)tB{w^bXLPrxChMIomx6i+X_Wj zXV9NV27(q|5!8F-GHegbFSgfX-h4LS(}S_%X{<#Hqn2k^AE!L%)JKP!aeGlI{f;3I z*KEp0O-U>fycyaq=(^iA>Z}Im_&Bgn6{-~FHU3_zeUSL=vbJ5$^ms*I!keukcb+oF z+9P2fB>1gT`UT}_$j^9wPM=DvEa2wcp3455(}PJ&kwq$ zYWoC;=($MmH=Zlf;b}|si9S5ctFT7(k3K5X3SV`ao$#DZeO%`GOz9JS^$w?LoaQX+ z%MNb!%@1$Ooaxff3dvXfW2Zp&-dB+&l&T=Z{9UwoQFbu+Y8Fi|`#g{HZ@Sd-^8Kcf zRpumCc}){Kk>&Yf2Itk2V*v#(xo`(~r1N0@tC^8;fOy-ToLyHGJ>Maewr{2F*S%}s zuHDe}j@?dH@EAMdGTv*_c3gUS)``B(i~ng^N$aKZy-%H*qtE18FwymyipS~&<*XU?ij_@ned`f7>^TrO00W?`j|bG! z@;~hFFw+XI!?q(<_8<=uN3D5QV z6qNEaX3@a1PjHSWyE$UW+U-)?WHAN`>L)wX~ z_Qw;w5+w|*a|Mn!XM(sjqI)hT${0ozmfq~WRx(vLq&epqs8pFdvM{)Dhxo(9Y5a7d zY7)wJ{<5TGpUK6m%pUhSb;~bax=>rOY}4(a&*E$?HpdqK6_%2`Q#_pnV$hlK8)G5Oi_xZ2 z>#vm3<@8qx?J(7o+OBlVtGM&9+lGC2jfc_68ZXhOW*7InV=h0XR*k|lhy-M7Wr-D2 zFZywFHX5F!c1XV%DwN1oA1%k$nfddDL^pRE!=#GMF+*9Y=iGkQv}U@^F?y%I=1a>4 zSK=MK?a+^wiMRI8qwgsk_zVEx!JN^CS6+=(olXAP zk2WpNcSNS$s8X_>JDU30i8ck?x|~*W?t_sFtc}g!aW`^=6Z2T=`TCY?+PLLI{>U`! zmvS-#nb(3CoV8r0l<9M#hUEV2ywCMZX58Vlvsa|aty)*_qoGLbb4|3ebw0|h{dAdw zicPo@WlprD!$xHK!FiF#?XDHlI@;)g@6WxZy)H9+;9SP%m@RFEdH=j$nvtD;G^-=A zdE>dNR_XWOdW2r9NYu%`;xqZ>EPNeI>9=umITw{3em|yPzNo9Au91~2mC{TzbYd)k z|AIh$nA2R9mIcinwtCpbMkZkqsUy@69z+}tdV-a&7RN@V!Xk6?@xuZXeASmnhjy{k zq6XIkDNZ^)>$v#&K_AXpa(U=(T+y@mir7wB7e=$32a632R_<0CY&)C3PDSYZ%2z!> zH!4LNDD;ooIN!y6jd^)cy3_eU?9ZYr-==kAwo`PfbMmzP+E(F9C$+zJncBtXbAdw4 zLlqV=PqL5vdQl$pQor`N0_^uzZ$IN1U11I=CkVM5SpQ1MT#O@WFZP4_Qf#4_eTU(Q zniLc^{g#XF56=sh`aPkPhZD~a7}Spal&E~Ld)2*UhhT4W-cZl>)JWtl{B~mQVs*K% zPD1N;7hlT2+c33lBB5lTAa4)N9joG)rNS*7*_UBwNN)3q_hP`V%I3xK*5!P!W~pA9 z-ZM6qapOCnSDL?RE4{HGtnasBHB4P>09)Ddl7E(DcE>4`pgkTQv2e>}NE>Foy~{1h zi?2l;ce=-N52Y~#zggL7G#sx{Lk*R=GFbM^ORxRb@ZKKqlNnoWcf%K$MNJCHZJZuU zE4?tXEyum9DZtgref%NheoZb#Hsq~P*j4V2!-c|b1IU@30TIvksw)j^x19;KqeU>T zGwdRrE`k}3MtS~|AM>7C9Ka=^XK8J7Y{-v1EjX)i zRkLxJ=M`ZZy>7JWs-F!FG{Yz71Zms8^Fb7-GSk%?(F09|#6b{#m%jHaDlPs}u6PNwxR-?{q6iorK{g zFKcEH50hYPml>kfS(GTHIWa=~xUF+$30-xwJ2UB<)vfX0m{J=Zxzv&9`82Xp*8c3z zWceBuHQrjBxi9PINIL$@uQsmhb@p~g&E;L7%4CKa&B#)`Vu??jp?*6yu(Y4)I6;7fbl9SJI&4jTN!8q+LOQCIf7k5!<1`8QM|BdkV|pR;a}X&DR=xg z-r>+S-nojOG5Ov{)DmAECuj9JwaUBCrU`|}+SM&qoM6Z`W$>B4B);5x;dOCPJ(kK& z(|LeSEkCuW>eNQiIT%Pqxf;<~dYZvHTDB^;mZ4Oy(=CIW5_jScl~jCcWvA}U=UNG{ zl$(}+bV;wdmy*jutCE(9K~>r2biWph4t^UQotA^qlu-*rVcF}wJZ=iMKVi=JQpmKS zc#8i%;a6Y#Rqj8JdM7Pm%{jgDGj(5N{hY5%0A|<~hAm7Uc`Is+yk|T48`%HzYp!LJ7BEy4Mw5Yx4nCqyxC8bd+s-?qVj^==d17*QCT_t!#p~ zi|1~GG~0Ym@xvmy)i>dbf*E7y48+95c=*bW#Z@S_h&$0Xi&%AClg|C&HYRcH`OC?B zE;XNS7nTRu;RWZiII1 zb?Ikw@obN$V^gyo6l}bX$kg)ai@$kR7scuv*_N(}&O~Jz{~{?_*zoE8G3y-djkvcl z@gS_b{;Ii!?M;t)Doj1W!dAWGRf&(e_JHDyb*$;#&!1ZaUUamnZ$A9w8=KRtHP9k{ zF*heBV@;y$3rEHDobPCspqIO@o*ZBPVV&tDh*T7G?z6{x{;|j3I-cX1S&|YK(PEc( zskR`(vUn{r?bD}|%us*MBF!tV60^-&ZY1btea>RuIH=fi+42T@faT&PcJ;pNk@Q0Y zrJ}131?8g_5*D;6?{)L?Ow6e7j(onVYX;wJpp1N+s276+?#2 z>b0(de59f=HfzE*^p`4V2`drIj41h{!Vsy9D8U{ ziLZHaxBbv!?r}EFU!vQ0*i=Lz#QhFMxsn`il-5+3w}1w>erD8tu7W>Ut?Oo7~$ZW zR+`qc(XEX|YmU_HpIfx9Sw``jkYC-fC}y&poMc3H?#{)*zGY+56*e2YaW^ zq;m0@toKZ1tgjy|sT6ps1gWr^TC^oEepi>M^ifx>-!ul-B3a&y0`&!RW{_jJESksO z^^QbELySLupd!Ne=aZz`DUms!-3{sAmAgNk%wELAMw@iVasH7xCVQ8inAa~8|2f%7 zAY(IB(&l8}U380p23dmbP+y^u&3Bf&Rw16mwB-8XL+V<6p`%;(52|RGEmIWi}Tzx`?~j!^VM4H#PGg3Nzt*oOYV%(%s=qSHEii4-BsjTqpcm@ zH@0>j`G`Wig4_qj3_C1u1ToQ=ETCXk%}f`mleuiq{w)4%n32b{qaPDdsm%S)8=G zk>(k&{*1v_U2p9G_s-#DPm=iXCaU3(+eIgY`Uv6-6P@A<|S^KAY_ z%u4}szlBOn$v$K+hb`yKwGb*+nT~YKspge(J1<7|5f`sf*j0h8jmT1qNYIcYrC%_m zcd{p>p)1TM_$!4xLAk5h^PPUXKSu5Hr%Q9W`V^h|Urr+1D(-$iUEh4vf6TSYTG2kQ zT|8A}$th55)!gT6SQ%(xBj~nTr62vKvse6&%?Cr$CrPxPoeuh~cYeE=i$-R8#V3K3 zdygyhn~F;rZpmK0|2B6%^DSA)rGzey*-w`)3CoG(O#3le% zb;#coi^~Qk2VX@`#W70E9elvRX4?L1i&1>}r-nYijgpTZgQXsZ(pU03b#Y6B!()!> zj;@)!Q)PlNHZHqu!{QIpF{wu`8tj0RF(aIxMLnvW955i>i$f3dA`Zr9JZ5P4c3SJ}EGdHT1`6|-J*`JI|A&TY1=*JT+& zlGHJ@QHyGIz11b-9q*lA`q7VD(#L>iL{cY9`RzB;+>s(pbnw=Esc5%>o>EjRH`9~e zW!4f-7Y|FB3J!^yPXjWY(F<*t_4yx=B`^WzBsK*L4f^(zE~$5Ilu?8-hL1KMeco)t z9kDPPF6p^dc2{ZrcT}21OGx^6%5Zh|RGP$ue5OG<&5FJ9SeeXbBRsR zK-kfF*DY>57wb^+)}Bs(#$XHA2e(@`X18#JrlqXth>3YwVSkG3F`kT33hUdNl~=s$ zopO=*kNroSTQ&szH>PSs`K9qYAql-l_; z&wQhtAe+V|8s4h1*49(P?dopI^NyGfpJn|vmR3!^m!o$8s++;P8$bDX3IxmL%CIq_ zoRJMKt0h%J#hgQ#DvCXME!%qiubv8JOi#-ZhwC&OuenlpvPF?Ruf*==SdwW{c`GXw zeQY%5En52=up2lENP{VY*i-Sm@g9-IHGRL7Nd$=(-$lsCwzX}pVC?uv5$qzH!p2ne z?H6KI%^IyKvS|OwCna~~&Bqx?n`d8y2xUMmr@qyymw5U(dS^-rRjb{qPby5Y^ocuz z>R}qDT(l9SbpH91NEG=IQ7RyTmXbXYHJfJYSmBW2^(Vxbt<4KHv85e&w%k7Aed34ViSQ%QucL!bD)7?AO&&Nx@jB=?AmxKVrx4<%oBOLP^_$S1Xwr$#$*K(yyaC1rJ9ZqN=V;TXtvZ+B^| z4KNXrxkBu>U@BWIm_mq3>O!R|JMWahR{1*!d|iF0HifpM4WZ3JtcoqMc(_C6-i<5O zm;ODg`R<)zBg5`&w8i-Dq|o;BwSRK7ZL6bNzk{AeaNe`0qDkS2f|`xRt_&8uohcH? zhNJduz3#bT<b%HFtN?H%X-%^n0fo(OG-;E$31L?-G3Sp-A3e}ZzYGz5_v$(O5`1q&vqhTp z$&c9JbMC6CCgLZ%Um5wav2OS}v(ee0`DxTrin)7bL=L$rpZHuKgA+b7Ud5aJ(GF## zc;M)zgkp2vO^%}r=L1y4KS>?CZW95dC6}%Y1jRJ@C_^f2;Yro;yE2UY7Frga zh3w4^m?s>3R;N~1tpo7a()#mfkEV=Y#3-K@v!L~R6GNK*JjG8uED)|FXQ#klXm$2= z$bkygx2^h19Zb>qis5~8Dp?6}9d>7z(2Vpy4F)3}5zq!aXV9F~0PRvG*Nk@nooKMs zI|~kUJIB(pHqN928iyCsaMA=X^VgflSG{-nlO=VY`Um4XOV55vP@r~Y_&sZzPVHt3 zO$}(R@9FT*Nl1Zc_`!}=ZEL>vJxBug0_(zqS0Zx-pKK$(ufxzfyKj3 zFID2K==BMNu@L1!X)N8ihu0X-t^buv zHB4D^D5~b#T95BeJyo5t$+wvMTJuLt?$hU$4@z7Eg4%Tz5!SKqE@iBm_EuRFhD@>w zG6j18Nk#vJ-mL&IWAzybX6$e2#P~Hf6%??u_u3wpV3Z0E4;X~h(y{6z$w`JNv;&iB zvPAS%!Wq>Ri4g16Cnlc02UkBhdZOBXG3O|qajInBj{!OVtF0sujvXm2J;@D{?I5f@ zjL=|$PExtWL`;BG3wbAz%wUzFW?DU+Wzd2mwmf(BEcC|?a!;#H0pnvZ?kAO-!;4z9 zegvux!zlmi((o+k@re>JoCz09Spbr9o4-6k2R;p?QvHutBMQS9PLR~T%5>`h#!946 z`n{X;p}un!;=aqYQ7Mx1ZDCi%wL70?-egUJD(#T3^FU-^Y)FPjdIaqB#RMzp(zSi%pd0T-z&)#X-r2VDn#XE3r;mG2@hL5S zHe_j(yRMpwl`D*TvC@SoA&>G)Cgz&rSKC^rXs9Xn&SD{sMdw52g~JX}+>uqq(s^T8 zvfo30HOs@NOJb}F5;aCXTK+=0&PYg87OuK)39}OO4D_D!F5`36%r$={x8&Rki*Sxz zX`rG|Wq4g`24UA1QXsncmoFC2YYfuyw6!u&sq{YMR240xzkI!Nq+-S~5d8nJ51DRt z)0eGr&hyK>nG%;-ql?V?w9@brj74V!d+Y|(ms6gtkL9*(5v|#IGTh1A2i6;wM72aI zX^9KWQx__gX6$MrSFQ3NdD)zZ?awOkw&0YxnsRH=n7&_-4DV^eVEGBQS}q3~J#E8* zs17@-KAJU4XZk)9S5tY&AAN3HzEc>E`KCxq_2f!X;paw6V!cYA=vi9o%szH(few|K zAV|yQh~CrxWKAR~QEq$J1a0&wvm9+VHa9lVGZZwrn{+-+zdA}qFg5d|rj5xzBg;1n z@D~gN^`n0^-u;~`CKm8)h@~)^myzb-a3#|zT#&VwD%y2?_T-;FPsfU;r`4HxJ>O@z z{-82Th-&TmN=b;IdWJ2p(BInO=Y?SFJrb5EtQpvof?&|r=4tuH<$4O$+K zMr6ueLB8;Exst|aX?3oxRoo#It{P>PmMzOyhW+C^rh*nDcWu8628IHh|G~c?52!kR zeu!XA-0r5kINMV$VU+hV7%fR_ILh2w+Wy7Mfd6Jvkvd=)6HL-Fghdg*onjw(V+21HdSt%M z*P8k2kuXH=6@iU`+*%}{Oq6fgGk~c-@%%sZfG=i8iKv*5#%G5AG&xjXej3fqFtJm2 znypXNcz~waiMarWy=^XL3|in1&#IjVQVxw9+(6L1&$b10*>QG2^pMV%BxPhiuEO(ldR0oZH?JzFLO0~5X&7!GAjJsVv*LhI!wWT zv~0tpC(EqWj4@1$eUgPLd?US?9Yb_JH*&Z}BY%n%ujIDU#4uz=dW(M^1z9*5C-;FV z>{i;XFYoef3{_)CZV+ko2#-+ZWS#$^*WGZl3IO~PAS5*kV6}86OqT|RNzFnDTp$b{ zf+(ILG^3HButGT`B)4+WPG+FWd{}pq$>EdFT6%=@XzElZSws~q)9#+1mMc#Ie zb%m71C{n#VhO3ISWd^~)b4pAh`QPQhRd7Uq~)U?c*f&OMui#s{Qi|kzc zcfEw_@9DFm*?PhUSKXU#x!-WRC|W#!w%keuo`1SAmH`2J*f@Jl0#xYEE$b{$$b2@4 z7jYj5lva+B1Xz9#0&| zRR1N0gk4c^J2BSXy>+j9Fv~!y&6w~fA>@2DNXF2xi}jlL4LUgw+`qOucei=_KE0ughN-%4odM$OWCA`2Q7$FeAUC-H=U!8l0ekG<)lc=x~w3#ea_mmAZM{H zkWtK^1$uz3q_8i@wgXG%+o@&*^P&ogUOM(BcqNY3S3C&OPzK1Cm{XcS5&-TdLRSKb zcpB2bp(GGo-jD%=)G<&-LObjU7 zfE;e`$ffd2_%F5ub(IS}C&FQZFB51m90>b@He>W(XJzG;gogR*3B`p`cN(mlyLYS{ zy?&*$o{Smwi73)7F0YE~xOIx3b^t~CH23rPtr#*$8F-IxZ?7jQS*nlqGJ96O@+p|) zuN|w_z%Fa?-7O)iw?dDI z%PuZl664|jMw1XQ0tB`Zsx?3xFgZMH@Ls8+IUP1{BYRPlAm=?T+iQT+bFr^Epi~il z&I?iP1Y`nI?qa$JysBqZZoEJMTDE%ar3I8c0O;LB2!Q>s#jbtQyo6vs0U#$1Rh1W{ zLy^QYVJqd-CXGOx3f+V2=$qX}0-8FIoCm<*Z+^-{kOMsu<(w4*uhHz@Ycw1QFKxYs z3>T=wAV`qohCSqGubx*6FIoD;_MAY=hCz@{l>cuGU?@e)!thomK|Jw1Q< z_7Zyt^!`Fd0VC3#G1^1o_z-zuu4GoEG_NW%lHaUr^Yp*=%rx_2>H{%}vw6AJtY3q^ zb8XFV$jCNBjb@5n+wiW9brug!f~}ub6J|Q|L8ZHR5BUTYCS=lc3AkweXweX?i!>b-1hMtd4208R68h?io+&4Z=uPD4|33s{KZ0OHE2Hfh01MX2D9Stuh$)gk z0#bX)jLSgUSJ1k82S`~goZ3k=)=hs(8h}*)@qL9SaN*BV5#loaR~} zxoDDY3_T&l2-yg{9rB_^vR0wjg_MU*&l1jtQ*xHvH8lcFN^%H7*mn0QQN`VjY1G8T z>+(=?Tg^_+n$KeeY@5^0^FN-K3L~0au7ZLl(A~m*Eg{<0!i`R4TWq*?;JE-Pla>J) zncAaseWpVwa0J^pV=w;lO=cYMisSZUsF57P0T&Srt_#SlKoN8%z~ciJ(RuZN z23^%^MQl6_85VZ*MVb-(F95rfiUZe*R~#jcM4*hbZ|elaCr8pt3ALbLAj#+ z3((B;bFR{ju4rf)eVIQ$IbQ-BOjJ^8PUP~Eqmrg(>w_e$ zOvzRXJzE##?*EgviCtXcn^(`V)fD5-v@GQw%kamBLPU1Ca0Iph7(sO09igdRy_Vgq zGzA$Ez-u}rfFL3^yr+pjk36hBB=WNedkPOGANZ|#Q{a36U55aY;ME9rxy0pCm&~y`Bw2eH9S{PfQ~QB}hsm_mCq^~7aAwjO zNQeN|O5Y4nDCaJe)2u!jRCTtO)9*?GS?u8CBU&!1sgmEzOQIaKHqNko=;k|xS-a8w zCZU8iQn5HHEhh=?I>fJR(D5%!=-LZ9(I@<|?Z*b<0<&IQAQTeYmI|gQFfkyQ*3WUA z{RiV4E?lx}`R!4rWfnVP$^&w(=xNPLYkiM{QeJkJPPLn+UKF}dq{_g!H&(OkHK9-| z1TCNJt(&RE-)d&_pkZ(joY7Vs(^h8|dvWLvgbpPy1T!XvZoAviyG@T#D-|K1v=Ku5LWRmwlf~j5wFEF#Dd1)m5 zgt7U0G(dm=j(FQ1K%7nav+eL(zy>FF0!}ay9sv-YLA@qw`rEMxP`GmA9`kruc8#eH zIHeF%ZgKqbJ>BI4KtcF~L4G&DkRkHS!;v7*yxs0`l!&Qbhoci8nlHvgv!K%am1^hX zl~Au8M=El)oWT9Dr2*dcs*H@;1>lW2AWT67{EJYqnU9c;D7ne&mpL{AyYw&md5=yD zG*bxurAB}6%lGRb6Lzi`R6B6ryUA7b=8nN#29j4bliYT+!1`DXv0iL^Jb>a`$Uy${ z^Vpcjc<2ml)HhV6EHs92%{DRk<}vTCD$}iZR~)i=?WOpVYnOs>q!CIVK%5cd0MA0b zOeq6G9-w~PI*+df1K{94z+`||v2w$B=)(y6EIg1>%?AV)c=4m3OU&UB!d-oQJrGVH z+}AFEYJ&d=nN>CR^cE!8Gq;k&qZUxg?TesR{+Hu}4vQrE9-=q^t=CkrA$m|SG1`#; zzmozH!JuF!BLK?A@9qH_dJj^3?}`J3gC(3A6otT7L0obnd(SmF7-LV@j^=i9kj|F# zUBEO0Y78KR=?+OAdUr4JN~7GMK-t{UMLZ+=CE@NMn794dH>EpA5_67B4y16_letRP zq(TPm=99UrOt${OGEQ@)M)BHWi|tQYxFT~PAOfhEh|!{Ui|(odHV6@8ukshgr^>Ql zs)wVl&d|8KOGbcbdpe^pcjVBbwJM|RlDEJPMf1lxG0StY%Pe@YD~ozbO3eiyoov}) zW{_Pw^zuP(X;8A>U}+@=4tgy_w0k%g0PxNOjq3~#E>0`j)=j+5XM~e$$i=I_G!YNG z?|U(EN7eA+h0=N2G?`yO)MTpT#kQa9L{9=;1x}&dEo@DJOd#-%TS*N~t_7UqFJ(X? zZxCEe6XIfI0p(g4!ZAAQ3T|D~_wEHoz)sUae~y+2G)+6~prG|FKnFOBsX(+;59sRl z=s{mXG^9nPG=8YE4h!J9NXi*wQvnKjr5wD-+vi9|6W2VLcNOvY(e`AgV5L3uJ4g6j zdqhTw9fyqk`GDiN>ciQGe3doq~-gY|)eslf_cpr0>GI{W; z_-G=yl^}TxBb0YkAZqB3n>oz&qv}rcT5&P<4b}Q^DNk<+U3#_6>F1YoHL|{~&`8;( z--dk>87@SUZqLVMfW>B)&eIcCfc4Gu<>5f-Wd$q0fEqy{CVGzpr9k5mW~9{Z#Q;dJ zgYe#);oWxfN5Sz02Lg;Q2;^(K5C+a@V`&vqk&pfl-Wt6EQuOa;RsB8EXKsPRft+Mo z+n$-4375r4fPcX6U*dU1fHPnD+SM+iK z_MKGuL~_n-G8FTqAs2x_3Yny|cjLs})xbp&j+4@bWC1~VeqmJ?IK{~h?Ta_FBL6)V zQM!xI+{tEMIH1a?)$BZneBdFsJ**o5kscx#c@41rR~led4roS1Se0XU%sj^g6-ky! z$sWiyDwtyilcRu{ZsB_+&<#S7Gz8LT+XOrosCza!^VtH(tMOzPPP`mo@$rrP#P*RnGmWinw>C=QD0tr9xlk$ z&S=Cr>Hbu5&oA8{=XnsU0q$vzOm@z z9)oK$0qRAnt=)a6dI|X(lt~+j?>;?Tk%09(Q{LRLc8u*ul`a&|aG?OHhhC09HBi$* z3})W-9`k4x1?`BSb^hmE8Fz63N#XMQ^W~e8-_h&Gh9eV|+~Bg$3Y9lQv&97a4gic@ zNwAV}32_vlRVvO4o^#d~=v9hW9w7YmK!i63iagYiq*^mypd%TdbpWORP--ab>YJT_ zDSx=s@Gvm-u+7o`ABH-E>+4Mg@2Y+{+{rf}e(myumn1@D4|a@~}3j2P0IR53LFC=fQNse?FWqrs+sSSnCc+ zafla(!V3$)4iVyQ*liaL|N-aDW1i=OJEzmXVD8QZUC9YrpK+CXz z;c?RiC?6onKVAI+m}M{Eg2UTJUGLzY1t+`(dDW0S4s4BkC@C|P)L$E6KVDS&pIr z45MJirn51}K??Q)hWinGMDm^$`X6X^I<|2Sn!U-2q$~hrgM!QxyIgRX*Sm1wH^GI=UUhmF%&kVkt8-?%_G1C5WkL|baA00R zFbC*wq2dWaZ(7os^Oyu<50SQ@zpIcJfdC6uw_`-S92-Fbw$yPxu;V>RXW%tBB@p`#)o4}WqC+PjB92)QR|61*EU zhU%F{8*3FPHeOKYN`*RC!x_+oWp*2a7<2@&Z7u}0OT7A2ZZMmw)aCP?9SA0$kjDd- zmHrBniYUGarz6!JgB5iJINOlpA7y|WF(?Ri50kF1?PtZili)x?=@P2=P;d!3jiC%p zJwuD(_4jHk!JT_Iqe44oqWz4A$cNtnnvFQ7QH#f7Qd_`kd@Obp%H_Jod(_H-&)1Zo zdGG*MBGaY9jNsr~d_2ZDhEV465|&yZ%@NBGmPwX!c1GfT=%fB63EKj(69HHh0;QUP zlsQ=4V(gLLf6M(bayok1+CzzZ4*3NDB{jbvJ^`iT#J%?b>bHSPKzz>8!!L~ra195^72qc2HI-gA zixl$#SetF&#}*Lec_1q!Om8xv4A7I*A8NLFJvJ3 zER65Jjzn%!STF1lYdeEg`+gMhbO7;_^TS3_17sSbc^0k-1{hcn0HzsIVG`gP2{Nq3 zIR#|dpv}-LMF_5wUo)`dd-(~H8UQI8DXL5e(!&1rt^Z4qk3;z0 zd=Q`q)ykM=j56SI|YB66+I!4}c^u4_OEhd!QP7@(2;*`{SM? zl?mLTZHOF@&@#j|Nsbps09tvYb&EaH(~trH*dDwVsU>Cf9&~d+l2-O`2zhAJaM^tR zA)p$XfxYlzvo>F2uig&VghV88)(1X=_d9unl$-&fSF;mr@1yr{&VTE${|zOG_Mw4p zkXa)oIN)t$k4S_L`r_i?`X50_2O(SkQiZSw2}jSC_CSSFt6>fC8-Tn~MN0FXoq~|d zGIEY^QoBJhX!48d1zsqU6(LpX;J-te@JW;Z;66(EIb+3VI|T)s;vInve+leGJCp(% zo;9t(&Ma`4D6RRDgPLY6q}0+Kh0 zc!&&fFYbC>OU0T(U<9(Q>zs%NAxb(Ei)5ML4me7|SDnY$jp#jx3zhmWhJECTGj>Aw z?~N!wkg@q%4Du8m2*?n49mo1%$~msis>6=31PbJJ_GjkED&8kO{D165#)zg=2=-kh ziz)(J=al@g_u4-KgGtJR6Ohw9)y#oJp144#Dg;N)a%(S^A{cxC|A&O;G2Ih+8IXe= zz_KC+!yImlGXs3R5XjvS?)r%ELDx(q#w<$@K&IbD?r5 z2hwH8618b$q1?cT^SGu)1r-`d^ITY<1roV8$~r0okyrocPk}0u@(^e30nt^v1_j@` zgH>%g2N}nIu(f8MRPd)42lJ$?Ge)NlQM42&+rJ(+MDSe$?(?7^*pUn zNt3^nddSnx{O2|)`g?s(_Y!}}_X@$VLx#JjTL9MyZ_(>On7M$u$#@s!zJF~>^nX)4 z#J27QU*(NQ$dJQB_+hRUO*jOtd{9b)^`T26(5bgAX14jiEM^Fl=pVh_^f&DC5eNiP z4e%Azq9wH8K%}YMj1K=&tpEh?P!a?pQ0@l5YZ({7K8;Y9k+2C0nLx$fI!f|yb}@Er zJcW#^fLUd##dTk33NfoSO>uDczFc%yZ7dh z=qaDjzQ?<4?==lpvvox2iCtr^PlsXcBZLv7Oo-08y0s%Tl7{FiMN}Sv9}wq zWAN_QRAw)k>x7yvheu8x(hOsNe#^i7owHr%ahYJ{1<^weUIz>!=F@q_<$23AZ)Qwi zk+6L}6n0c0JZenYh;+dHb-`gSOe9nNPx0t++VCM#P^O2`R_OoX>dWJyT;ujnNh(_< z`*upDC`+;qrV?5Rm8E3Q&J5Z25R-K(*+U3Lh-{7B$b{_sGQ*hcX2w3YF~579bKdv; z{Qip!&vQTD<@#RN_1ri9oY+f#`U&wa9a_!0Q+9t1`9x2$#7rvj)q9kj8h@<;7tfvS z(ALOo9D88qe_Y+gL=vM``9#4J)5j5oa2Czd{GciQYVi;AN7Gk?a^WmB1>~5iA~Rmu z8>5DLk+KtnlfOY$`|M1^ zV=+Fpdwjck9o z#&fX7!)$Scepz@$eBtttkz@;Mp)-No5GJ-NTi5Xl`xy4Bb>&UW^B)3^)K%7L-y{K@ zkTmap>kH;r&-x`85PqDga0afqBEPXVgRKHJ?pobMe1Bw)ki+RWqX zD5id~kQGz@;mz5hgeC3UEElnszp7|Q-5bL`Ey^<|b%=gK@_v`G{gQEIQTuR3p-`m; zHf6)6`DtZg@+$CFExCWp|eFbhOgZyt3j5)a*h`;;Al9(W2^&hixWxfn&IIc}PV+dykX6deKkJ z{>w>Rl=Pf1Uk!@y)OL1L$DiscNrJG*cn>Y9(OJQDq;Qc$^hWP1yw%!c=Lw-5vLe1S z^AxEdmOvj=Ra__!qcaPd(kGm@sgzr*GyM4ziWx8K+ww%7}VS?~Vk z^b_nbW*|6G`9XO{Sf>m+#Z%9Hzx5mMM5%nAL4sV?)$rs*j5H^5G}q>A*n0bTCCt9} zGFsT<`r7m4#^$CJ`L&~N7A@ATS#aau;k*ekkkW-G-QS~1Y(x$RraW1}CLuLE`jj>` zv!cI^H|=50XH%hn zbvT+?Q`?7Nla6M)e7%VEvjKO6+1l|NLlck59TjJTv6Sy`E@Q z_ydgL@oD|$t{|c{a85gs)Y9bo93-5*u|zj zGnNRM=0*D;b*AM%5wwgmna9$u$33{Bcq`lebT=)*B_tdM@jc>YKc2Dz6{!O2xObZE zjvmeWR4z^PcGvLNQN)F3*lONRqj|NRH>#i55sS++#%2Rke&o3i*RrXG@hkO>HLs6@ z6H~!CpD+ZID-__QidiAR$rzUy@lep^TcAJCk3*k|tOt+~jizhY8USMcAmL)=!2!1n z>`NMc0x^GDOZiKj>1gqaM%DK_=~u457i9nd47^br59U8-C$lx6rinwolq|5s%suD< z5OT$ZG;psB%{Tf}OCeU&SgFE|eig^k#pt>SXxUXTu1K)CCxn?0m{bmE$XGffrCVwB zdeKJalyZ_^`Dy1-vn%gK)$XYQE*=a~i!993tvA$A9N_YvxWmW6T>wA_2uq)=J7D%= zeg!uByqCuN)!9TF>8>LTLJO}eZ0bj4-9SBO#G?D=^t+rRS}4?iLuzGNio^|&z-A3# zy~n4F{?@5*Tv_oZ4Vaw77H`qrDBz?ox*GJj(hZv`NHMyi!$rrJgLYSR!m+QN=`v_} zJPM!?@E>%k@l!Qkg1&PFFJCjYB3)r@GQD)JE{?CD6U-9f>MlAC?q(65vq!udL1-nr zfIkP$v9ePDplZ7HR`#yt6wv;%&noK!D4zX4BNhFso&YhKzFlJoeWD1)I$h)gGg9Gg zt=%ZV*_R+mmWn^<#ts0A!Pl8!pEPi0;T2zb7&wtz5DeVi;22@^W6VUG(^zX*K(dbM z=ImyBad@BpLB!0X@hVQwP~n}8m)Aef%2C&D8$I^A#Y_gS9=dRfaIJqfI9^dX%Zda? z?P3o95C(OR@PiwiTLU!Qi-6SuhY*43c!2Ovz<|60BQXe=>DF)j&SUh0ah=rZ<6Pye zp?ls*M5Saru%HUQm_2(_0Qm}c|f!_N~=1PJnbIigDh%f7& zR9CtXPyYFKRyPT_N~#OI=)VW|I&uyvY3fWjQJ z^gEq?ZXQS#0Sa2y7FgTFJsMR`W8oJkID-JWgP;$ybRN0z8N~*p!qpxZ27Dg1M*o%@ zy7y`r6_o`6DLRnQUAwcWpQEDf|V2!SY`iCU=W0b zyP1{%D0kOi<-IUn$$XZ3ZqC_QlvJ+?`fatMZgru@HIS&0DKmms~<|P4!FnL2=1Kz zKIrSk-&#kIGp1kZnZUUE9QB>fxeRsy%PAKh*d5p6;LiEzMdA~^NSywbMA9H9y`nsE zXL*o6`^Me-pBh0@_@zvC4ru)JdrgQRXHPGJRl>JQu=ryX6$;Q0DiydeRF|u&VDMX} zAHy>jD6?JkZ+$QZ7+e$F(jsoD3S;S0O1HZcKs`t}s1HDF_uvLc1%ld;3z@!(S_2$0 z52;XmxixTC_A!o0Em(}STDQo>(39v42mT{x}w<&k7p&|61D?o|LXf&w; za|~GDYA#_=cXBSGgu!;OV6YLV3xxku9^v$W`@iLpK74y}GkO8l<`mG{yuo3VbjE{T z8U?&G+$ZkFfYjIWY9j;M#WE+0g0ZMS$`Vg^MvJfJ(yT zk!N>Z=eE=~95`@S zfc={ae5xY=O6ZH`6ff|2M^+~C-RRjLT3yu)Mr`pO%g}1`o8xdmCL|xnxI(u8uMYac zq%D}uK_%uP$`R%{(m#zynIdHw@%Oy5uviyW%VSmeI0d$7K#D~9QL5>KmNDu-}Z_GUhr6eEKU zN656mwq?l^1_2)psNmy#?HuZsK9(~ghu6R!T90hHrQfiT532vT3WDJnS^3Q_J~onc zCHCOHJ8SQm0KY9IwbkpV8DL!wyfr{P@ti@)gTiN&eg$+D;?FGLf2PBEx+`bU!2QR7;GL9cy!Jb6pj8{Y~T9v^Q8r(wkw z2W}MLFO(p1axMs{_@05+ZQFR?wM3i=_Y%TTC%u7KIU7TmECOgcxoCtyXSkzCbulmM zr=b6)g9u&S{0$IyjTKmu{}A^-O`)rH*tZ&h9&j1Bkm^Z*QZ!ua3q`{*p00|P9gzQB znM&{`86GUHcn_PS3%5)-C}jJL;B!8uTbx*X0E(pl#YS{dRpad>NfGs3frNPC2*}re zP{GOpDu@AFJ{z0^r~n8vBS0Vc;D5b>f2I52@v>RZ!tTzFQs5FMkcI5i<=5TaebO{#_^diU zjp@br0(sLGQp}w75UfSwd)(+`k;K|eL6zsCemR*7pQio-Xb!aLs?kl(a-_cs^U&9@ zTRwI)D?rwI-E`pwV+);-1ccN2~`Lw$@9Of6$~B*f4d& zyNQk_xxf^4&_lykpDQ_m4y2o|1w_M}1f}nDSOp9ybpS;6*rgv)P7$?KO}Tt22km#z zFam`)H#e6Z>o*;}F%VpEJ$0=9CqKOAlq#dqlP8Tj`+sz%`0H2rSHL2MC0-0%zFdPj z>MCj=Pm%iW#y`|FVOAZ;FV63mgbO@n=rpw(91R28AyZ~pe``f&W&80E3aYEXc`6Q6 zW94X!s}ETzVIXy`!%@=GZTDKjpoEp9y!*BxyzcagRgIw~b+FAko}SIk05^e|=sZs&_&aN-&Y$D`?`eEd zcvkDnS-)XipA+MsxFx}qY&rwoL(pCp@1ly)YhBRdtM>;R5zCzfZ{^b?1&%W-Vf!jI zTUn!>F^S7l<*C1llQ6cB;>k8*qN{98(JS+_n2sK5TTHjzN)nlp)mkc^Yi$FL*W)jq zT$nkt+LhkC^7Ymq?lV(MUkD111e-T;_j`iJBS&LBc}FP=J2h3Wr{cEfaJZlA=FBhd zjY`$;Dpkl=^o;Zd|41#Kj10s%4sM2S7db(cn*zxCOA;)TS`V(~8Ws~u>&B~MBPyN| zhju(q%CbHhC2}4oy}%jw0P~;AK~>)W-$raz{qdh!pI&)D(#Vhg1HX=K@KiK0pqPxk z?gA?;C=fubtOQo#uQJyockNYNy}%0&kbUDAWQ$v+r6q8Nw#U&ScnnFVeSbw1;0J(a z+9v~tfc=F25)@sgNtit5#q}%Bc@ThU`rHX9VGeGq|I>&-!P;yL7!d}z7C<#iP%Xim z6rkML^i;b#(nq*EUZLS`#Ua1}0TLYQfz);=a^53@CrL4D$U zW{+92=A@~J58^z6GM7XOe?_U;yS!&VCIOo`5k@gKgik#lJhT59f32uy{aO*$o7Yd? ztZB3}$_VApY-s9#-0(uaIHZl#VQf_E&cR)bYm)UCCE>1KfloB=l#gX@Z1x+LV;vo~ zBcIlNt#H+L?h=@^y5)DK9Lrs)o4S4Y!DBWni(Mr-39^NU^WkJ2)yO5BAhGn82>OCK z;ui&&sfH*Ca``4%y*Vl#Ch?AyHZG*h?9ay4kuj_rGp?>2#tu;KTqf6jZwU?0flY~t zh6)sHbk1v};>8mQ&8uTbQnlolMHlA9)KaR6Qvunls6M=Q-cvd7IyXVwZ(;MDhv~yz z7xgg&5ev4vtf>f4q-_>)>2Pb_U+GWwbTZK!T5HpO_HY(k=g-={m{{VeZX#MP0eau3 zbEtxVO%9+5gC+{RI9%*Rlu9hf^pO}{B(FGqZ1+e!;&qC1I0iftH1Oct@lg7Fr=~P0 z<<0+$W)A+qeqnuTociJ6Oy@DWFBI}mLjrHXhWeCt&($R<&_#rkI*bSL!3(|srq>Yl z)#s_@pk&6<{Z3k5Q|IJ4Kszcv7*atyQfH(KDfILPfD9B?(7SH~)i|OQ$+aANu^%_w`e{B>v$OT zM=NnRs(vd9>=*f#)TO+pwe|jw5b5)>sjfndj=Py5a?5a~w|yblca5ubEpMfyrM)Vv zuD-&LVIyGC`?J$2nr=z7O!m+>P@}8r0vTs_D|D60g7fZiFDJLj_G_7{o6z{`p4GhU z8iJXdFLHUpaV>*6Chxrpr|w^f+R8)ezty)rFc<-T!E z!*^8geInRhPWgT1gQ=KYUT(d|4&CnwsM_kJ`@~0QY?LK#6IM|`ctj(LzzqK+m zbD8@f4#F2|$hel#T-;dx%nr_%KpIBXWQ7!n3lPCjreo)%9QCj{};;;3r zrl`}8p)Z@^lBC3Kn?T+LrI4htcTmf(ndNod*fiE(ZN=)wT~bf)nKf_=cimFMoNO^H z!cX;HPjM)C8)x=1Yr%89i)3zWBF74jLL*Tff>~+W&Jni)s18ifL1X&YVsCw6 zG?RrCeuIRlmZ%avi|V7>`n~g;f%1O9rtpK!GiK*H0i9!02%u3EFcT~TpQZwsrkbbz zn6B`sTqw1Mi6H(BFn8dU~1a0c$rUyaEG-g0>JruP1hEC)BL0thU|{hki9S zHI0Steuwte!JVCdLif;6I}BFfImE=oWNS6CUVwvS=0}w69~!dqQKU|=JYY*rP2C#C zs3vp^TfcLClQIAMH%m%NO4EH3*o$QN1@L~_gM+jn`tgcjt)MXidiWIT{0 z^o)A=|FB`z6qB6tN>6IYkT+{7Pc*w}ym&Zpw@FNC2yPBcY8g;SC;|hYj0w};8!fTl zGr@9Q^n`u1*=q8`O{X(x3F!V6`c#3HjLy`=FO7Tjs`*C_(P(-E&D0AlJk$(F`Ga02fjhP&2(6-9t^$1ns`&jW|AbV7-rt3;(dd;AFth5z^h z+wY`vU?4}j4E5NNIFWwnY%`_7pbfZaK;UV3o)R2Y0cHZ`Kdo}@D_~{^ zT^%%c59vWLVs&yfGWc980TbqmRkhIr2|6w`A1YA*02xq9fcH^{w^-34SECXZqb_|sCl+}p9_M%X?w!)(m#gPnHj5Gz94b9&3^qkQe=|~_e`^>b77x$xUv^IfJt%q{9 za$hpSpFK!x`*=2uIziLUxF*|DmA5Orzs$4)^6@K^_x?ERu5^Yjo?4S$drc1Udx76j&VXth5gNp`%MJ(;H#1ch?Mh=|uwB>S9-mLmZRoxWm3 z9uN+v^Ct{c*GJp~p6%*Hn?%wd+JYoO$21KXa&3%ihx$)7*I;oXT*|sz{5o}#nOt|MzY#61K z_5NIiU!tBz*CB@p;zuTu_q#R(YgCrfSD#S`e8{7zDkB3r z&L-LY{T~A!VM{}WYNsjgT`eltAEWV9J!)bfs}4@XOU3YJVH(!AxnQ_71y;Lpb~OEK zZgpS~b0KL|y>^G=RCd2nY0|#yga(z-6tWYyz67Od1qHcZAUZAe2}RZR7pAd?dtMM6 z6JaKqYzJqf_yvXw&7BO*jlBBEW|}bFE9?wx#CsVsJipQ1sc+qx7*J-T_4mckV9-ab ze2mVWAT=6P$OsG;nx8~IRZ3#A20xr<;wGg~R6YONAWmNDUV6@7I!o~XD3zf zW>s%~*U*2}#7;Z`z8N7_CBrjRXwK5bME|>wy$%Df{hda^pDW+=A?UZ*V;J{h7p<;~ zg2RRR*IcB!)RnWZJ-zfEVQ*OovsEbL&(syV$kSi@(n2tT(J&IculmXgWhj+0n{}R% zY3*5mO7NXOn8&Q-nit#kwB34pOswEe+uFjy!n)r>Jay5GhPqtiElTYC5ry7GLiZIoxw-SYk|U`AAq^QW2ZB%KvGU95 z!r{gHs&(VU%84R)fkh1q{4V-XhMG9SEAZWon8;#zoVN()nKMZS7Hhj=;^OngK~!;- z)n6hzC-w@8P;F;$KI*E%al(k8J%VtV$Kqg#=-*Q-3fLFzS9h47W{IBcUtai=3a@(- z^bA~jZ(gpDB<>zUIFTP#6`bz7a5-R1K#1+LzhWJ^CMyFjVphqA3q%-BQr6eIRVd>! zp3mxt>?-ST0)wI=BiH-30tfs1qg7%Zyo;A}b1zcKHTkq2P2quJ+xCR3JN6II7{YER zhCqv1&Vy1T!p#8NB;iv}xeWNS66S=#jYMuHHhpm8|oSYrZdc_#5Pnbh? zPgRv+0h19C19TI@*!d;e}^RM1^OB0TZklQ0Kn2>!F>+&E$4_1~jD>50|(LxhJD^X^1 z6qT>ZF2)_tP<2Q)(ukT`cC|gN;Usp~h0&xmD^5vcbbd^}zt=4^yT2f<($D4g?uGJ* zx^1$C*g#)T;R~XaxQ|IEBQpZHk4`+RC>=~%`Zru9imA!ez64}L2 zq3jIh$C`E$ddL8(;-%vTl73yj~t3Nh$0 z+u#0+Q=ZkjX}3Yh0lULP-EXnIR96|3E*nni;qsly#C-l(6*l_Rac-p=mgAT4)V5yK_ny${@EDulAItbynyJ!{h1_%QD0in_rDf@tAAjmQR9ki} zS4D1qxihGuIcmPq7@oJA;PjDb?NK(RN)(>X)$*1scFdmkdZt#tJBD>9*HU^+ye2fg zaIW0g-F4r5Sn)?lP>^`xJkQ72^s_2+n5c}LRMOR6vrlqgYSZpq??FxL^wrZ=xKSiY zuin+ESAnR?IaQvbqB;C$(orT)Q3BWa6HS*(2?$1vXAb-KuvMuIoAYUnFNJQO3+fTn zSe0s=ESgLr>A!DGYrG^>o-lr!cbu1P@qyB6_GJi9FZE?fT3A(+3e1+B#G<}(Dflxf z_iT>Xxt^~et3h@@3x$NUEb1Z2!)PjvirmLOq5Y2$2m~SL@$SHS58l_>}ymP=(40x)Z*Oh3-Ju zS_q=8AcMYQ>}6Y)J2S~)+@>Gtq-UAKfY{UTHmm^z{)ukGH*3n&^}cmHdyo-wo`Ul$ z7V0jp+i~y(Cne=!)YzsR6ns~wC2Q9oQoRNA6|cZ>HOUgFxpTf#5u)p_+Y0;@@2t7- z%o4uT7c6(4+F^oj1q<0K_L>G!H++p|117iSpxb}q)_+O{>eUl#1dkUl%?`s^iu|GE zx?PxWmmf}zMhT+j6@Q&wu5%i>rXu0yZ9t*^m`%TLCMN4IC_vr5%Up-_f5P@@ulaC2 zlH8uBx^Wq`)(P1VmG|DbW(GBzO;_=2$&xl3LU}CCiJNUl1{!-Spw>9J_guHfCiZg? zL9yh$`jcCCSz~9R+pRk5yPe3(Pz#Ga;UfZDik@qjaI5RkbQ;L{^|8i+-R-0Y=nVF~ z`V)0)Y2-OdFhK!+6|Ez*%!7txB*NM2k6nVgHVk1Xp=!$YNT~3ZTUf?<@8w3O4b0nY zd8q2%c~&@ov+D;aWlKq6bd5m6K=!1OYtZkB)r88Vtm>5g{Xo=m z6Z6Jar*P`G^y^73cJaPhm4wbJM-qr6zAMv z>~6W_(p_R=65GNb(L-hJa&W(tqHT;!fB#!H;@>FE(zY}Yb#{b@{0yiWN4<`sQK^A6 zr4Y4D@>f`&Jj&yLAVz`kB7*)X8CCbUbkivL7C|> zdF2L}B}|eeP?Mc5m)N6Js$>Lus35_EZz>DBm{*3lVvn;BHD>07F4bf!2<1A!UF-~( z&SKdG`oG`R^eo6{5$Ft!w0*46#n*~Xpv-jweB)v#U#hYCt?^?zYxLp+%f@(1fF|%s zBuI_z8qv1&q~58WQODwe zi5boz=uQu^#lU!Nx1LfZQyH2XY;X{TL{!K?^j2iLXh5PG$J_<=7*`b?uTb`>NM+DXe zmS_K>75}v_d?YO`&DVPt-`$}TxID|uKEWP%4liH79aDENEkjptcW=#gyY*CH^p?Lc zZ40xZzv$3UbC|@u7nYax=Yu9Jtf{kRbT(2;+a>t@Qj3xBJQUnNO<>Xo!nbkz5cF)L z_>ySvGI0vo_w~v5x!hFPy$lDT!07GPq-><>==yU537NA^etF^OT?Y2}zMqUL*ROp| zlatCqP=Y3mHMp-j=8>?~cC!f@J2P16ow3m)SiNp7!|_L&UPG*X`zZ!H-Oi)(&F`=T=PFy#8seV>VkVvF6R_T|5wgZ2;Y zj1k%U+zN(zR&$U&8AVjlTHVoG1L`{6F*N@-rbgc%>>^f`v7TsI_r=vCtmOP$NO4bR z->7A+wud19t-$1FW_$?u_ZzXYNK?zF(S9sp!zs zBwvdET9XQ^n!f9Mvl?gJ&ehj3WU5XZsX~Mo81`lCulyA+yYc7|)&@nX0Kns?qn&l* zJz`Whdj0mzADdh6yRX*QCL83TA;r((`A_Z!ZKI*{nX`kA6MLS$aTMqcq=e~Ral_)A zpU83TO4aXSPZdk~Evvt}U|O!0eUF{gJ{kS(!=Sc&20P)Mn6}9GM2J*d0znG@hJ-jEo%umeeg-g8B%Q17 zIe(0F=?&s|%eoU7H#nGc&!B^`ClKzE=3u(GdldX|)7eW`EW#=1YKks-f_Bft_QQwB zrM$Gs&z?O!{X5fLefzhKcY5(GOl{h!ay=N;P3eFfX-!z{*P5SUqbaw;ykfg+?(L`v z@4Tryk!(11Z688b>lpK0&i4p3W)+^$0m;$leV@xTtV`jVo71daM?qWAcDvcaEMd8* zVr*-(vc8ZkQVipOA4lIzs+7QU{;4_l%vrB#cGjr1Ame)&#d)k^UVJ(R-I$h{e|1^g#*T7p%Riz&YVo<#X^6ZUH@uiqU@m9*kTCZILR4AA7UXqC)vE0{b1}T`Kqw=68hfNcXYdXp*oJbaj zhC6H#Tz+yI&SgmMd4E~%#HS*EQXUCr(7X=Q*bfT@`fmmCFDIz@L$+K0GWF>~(->X~ z+p=}+@vJU;tceBU)Jz4DE0_<(7zKYPNAFotlPxz*l~WDqj6MOvw$-nKnQhmpu5tkU zk1#?n6Xf>l?{Z0+eh3t&@KTmLd(sS3+~y>T=d)yELi=T;vN8ty#+`S_D9xV z5puHZx(^{5hFyQvR*8HO%nsYn7PNBp$nacRZ}VJS@Z>fbwO(lV>R#m(pZ~#a&|4cs z6EX1`dYEs=`*E`l+dqK2rS53+%h~(&|vTViUD?!{R*I#rvOY zN+Tn!0{XEN>KDeuzErrqOd+tAW!JoY>g%beX$XynOJ+?=I(;lGdEg*Cu47V?<~|W5 z^vOe(VaGsTtfrC@ty@|ff5NahcbajroZX2rJ|SNBZro!j&PM7d z+MD^CezInCwBKmC7U{8S0J%F_mlNVp%~Wp1s`n6LQ(BN#QD~;wRgAl3tsT%WAfBi1 zIQXbBg?m1%9P;^ECe}309(Dv0J`>ORcym#(Qwm2*M1Rd>B9qhX0PhdNuKt9 zm;i#$$%xCR$1Us(U2aoE+Biv4uQjg<{&us71r)#&Hy4E>V~;;Nk36N)cdes{_mtit zE(ngeI%S-1#Gb~Wxv&eK;c7lc0>HN;FZI>9ktbbJ;hS;eXVQ@t&kLXCVh{Ty<$p(K znv@{ip)Pm2T27C|gGT<_?Nrz2Xs*af&kbFkSKi80){@G%wTfDRSvI~` zLccX>1nr-vGgPd#p;7tsQ0}fKZcG7U^fOxq5@V*F^08k_QXWm zYc{@HmPKgSI76Yed>AhMRrXT(km-Hly-B7Gqu<$0kYd=(9a;}E@UfZ4Z)4;ofks6x zx7+n3)Z%*kipyUc)l+E{vsupi8Wk3DSZBeA;=AnSPUDWD34&EgcFY2{+n z4Cl1}uJ_hnjcjZp_yPQ~!G#ulJV9U}Mmj}UGq5QH*;<(#dTBxkcPktre7{cEVQWv| zV=*+SEP+Kow31@E7=uIxUlLQs68&g11}IZ6MF?bf4p zSBn3hMT)=~nsrX_2#fBU9oeft+`a6oSW~|>6*d3pq0WhA`6*1cg*`8}mWAOx z=|7k^a3<*SrVOjSt>t{bKxs46;7&9+?im2;Q^n(k#-EqBx9@VQ#;zo_1kCtsSw%KM zXvIg%+tLwac7$J`zc;_g{uYnfovj>Y0v}G_-B2Nm;&!Amz2$73WR7G&I<8TVuX}E{ z)Dgqm{a}_`bGownsKysbYTf4gn7|sOcb3TC8!IEFRXduov$1`Qq+!C~S7x=8o8G9> z-xL3_yi4_-mr6y#l>gYSr+sBWr6;r;%CxOqy*`F1==D2V*0)U^&A?Lm>e6=Nj#ht( zGc0l>6WTpKS@{k%m=b+A?eaGC=3BVu-}>#Vv8&dnrIfelc3ORej(il%L(=+V(L)1} zPsOIQq8CQD$tr52ga$JIKyiU_wX@*P{Fi~f9S4f^=!PQ&NoJUs^{jIqb=?j#+#dF) zzAbz~Zetf1z)m*AHVk*t`7>cHO)2__3=EyB5aUbikKh`;f-G}4&*%EO*eZPTlbsHM zIJRo{H>LsNs{gH-Hp%=3g&9P@U_1Jx{C6fV8`i1qznW0|_s_GZI$gE`11@JYe)}Z@ zGnroF$^Jkj>0A6v0tldLsAKeSQ3Lj>(_QFrf|X zrsU`ZPu}p8yoJVqC29?8jLmYZXs>2#fI{xtf_>~8fyausWnw34%;b;&^8P#qA8Qnk zA8_!N6}YSDxmqDO2*SL^#akZMkrh4xXCc>|NG5!FO6?#U1`CFHl@G8mIhFf9Wt|YN zQ-(fiSovV)5~nE`$8ZJwGK7LzI6_1ozLsTr{=HNT1m47Eu=OeyawIZo$I9vV9AZiQNnew?>Qi`3#hUozQoEtm}M3)L4Z>DYmo7 zU{`UWz$S#*^LR{^SemdS&NQ4sRns%@9a>>;_$eHm1g~>snd9(+^BLT>JI*TuTIsW) zjPOtHkG}7%!|3Ja?$tkw6dDqA?LT_urphtuPB}CV8@fyt_>4`O`jLGz|FU?lvus-b zpw+W^*!3gUw|rxJ-(u}bi(X*#RQUa#X_`CPO66D2v*(KNoM}V9QmgJoB%kw1@|Af< zGFN6lXTe6&)9?b-8H7fN8cJBtS)9SjyRPid#r(Ng0xC6j&#sM4!@VB-nt3Ck@G9(c zR#GVvax~kIMbjN>4(2FnWwV2EN-#JRdncrtTj8^<)$1h#eGnc@od1?xS0stGC%6QA z4B^SBzWS}<4T+OJK<&pXp)rAu<((gXb-bK9qu%LKv8Gb|m77 zHxyc44FB0`D|oM%wQ8*(Rlp6^N8^)1B@vHt)#D2O%D9|dg#}9ED`sBzJFU;Tr@QRP!K2PgUEvTC*zH<9EtSbxBiAj~Ec44W_nSE{dq`A z4-NO%+E-X5bO_4_3d7yd1v4?|p{|Vfy+2G7?E4d(HQdmN2b{YDpRamtt;pks5_kSw zt+BQA+iDa9`v_P-&S0{;2`mUVuNupAv)cpvb+2z#TOK3M3=3JhkRyd+=S?RYV4M$} z40ovW$JjtXOoCEoYa8_s%n!vYzka1sA#(-gZ{#g-HB77DlCAs-o&c~=%HMcW zNLFAltpWU&a8H|9;t7@o(~r7f^7m3G6`y%2bR>3Rga^FxsehDh_U6wHvFzY;K1NO@ zY1$!^FxEd7A>bl-2Gg2DE|;T&1skPR_(9hEW#z-;&~alu;^8Gcwfn5YZs*U(UQ;Ex zpF7u=_nWgj@zg(r&v+s{Hy~zZy)lFxbB`_AA->FYD*y-sRdv%RFgk2)V&rtgRr>SB=C{O;DK8lL2NI&(SC@Ca8B1NmAjSEH_+$nJCL^}rfXJ)=nCI)N z8z}vNZAIB%k!_=9H4QCAYpqmgEzX*uHf?XNwz=VGAK;?GeG2{pY%TuAK8|N%v07oy zsuBR@&&sgXcMM^IGvM;Yxif@<-JeKd5VF!ADqrE(Rs!(&<=@g7h7A)gXx1H%<>_sA zA)IkWrJgh_qG<>tEDz?D{B$x$h7N0eeQs{}K9wAVEPM~96vetVhoHa@-ckIxws1to z*GcY9{h@X=J`FAp-+nc&^xX3j;M5W63r+LQoc-W20 zd5aB`3t&ss0L zxXDU{SC*8KqIf81pZfrPFozgCcY zlI^GeDvO!Kf?1VPI7&I01qlUDp=H^>Ay_c@fUb*FtkRj8iv<=YwguD4k6^3xGEJfJ zCkOgo0-{l+>U;QHLw6At+2@5wLg&P(ee%HpdX25ul;cWzbVRAgV{>@17oi;^9e;uw1`j zD-dDb^aw-yNK9P@qDP7H6$016UjtqDC+NdTB*uUGFbd2}ji7GwbhznRh68j5;%g~7 z@mrJMqPp2Dd@ZSrW24UznaYmKQ=ImWtlifyt1OZWkmBX#Ek=)R7?~yMUzE)Zr+f~9 zuq_#&c~1P%n`?AYU>D2kE*ie&cccWcx(xK0%-qo2&d~gESMEf8tT`Zf7-E+U0z9SO zA->38m}d)L`}_27f${8Ul2pR%iKCw4faht@!-Azd1|rAdxaOG>lg41|XOa4pn&3lN z$&=&RxcW5h{NZ#1I>mDgT15atjWK=%QEQMDu-=M?u&`dW0Rlu(6`7l23>rXxbW?()r>TJFLuW`<>8Y6V&u z7-x@$qEh$Gl|pWoC~KvIh-aC$nCrNMqNhspc_i^f^wJ5oxj?NS1H>zW9ii8Nq}KO! z1S&9;_D^1=?=o8LdOKYX4e{=GdF=JjI)Y#kWfKO8C0NLSt^9bvXB(D?gCu*0uzqGqUs}*IFTF!BY5+n^ zi%y93^Rg{z0FmvGl~2*VYcAK>vj$mie~38$ez}OX*a(?sKXEU2CTZmQUem)YHKxm( z`F+31vs5h7?1l<$i@&EabY7$t9Ebf!b(@(Sus_*d!~#)!t9(MG)8z)`{sF4=3kLha zfUeK7cu=^Hs;^4nC+UUT{Gf0{c)F?g{z!ty2f8xAvOx3GBN5oZ{gwS`dE}CDucx+^ zAEeV?B`P_BOz!nloh?ul;TtKp?c}d)Dc(>>G!ZrU-Uw#?T>b#k+R2Al2nGiWwo0S2 zZwQ6aK>|PiBZ>3>2MHi*cn+dwO@LAo6S0*Ho(Jhjn%3jvV5i<4~t2?XkWFgWtk z2gg-ztOYP+un-MEQMlk&HKxuv&KtXUM>A0NM<^ZCj6E{H!G11wBov}%p?nVKL=!kQ_<&9dQYknX>)>$23uw5E7nKAFW>8b2 z@4F)alLF{bdV!%UCI8VY*kep!jFbXE|7h&&&Hm9~Z<$kI6WVgc{t3+pa?t&WuG+zG zL>3wrMS~Q(BkLEhUVmDp8ek713Mmoy4`c1zYu)p-F1yqr9 zf+KX338-}Gdc0S`gk{N0a(ZU?gU|p2?^_s|>rxJfd&o=E?qTuWuveidZs0S?KhMCl z{x^V)Wy!yqSjfsuqobdxwuy@+wc%#E8}A7+jcJt$iYrF>PZSbUpn<9}UnTCC-P6#} zxHx_sT0@~1ke+XXCkPe`D@PG)fB!B~S)YVO5Z^LVitO-7^hWcmD$H~66boRsn=;cj z6hq%CUzzV_v#buu_W5gvIk$AL+4CqsuI2z#fB<-cht2Yhxg8@Z-fJ5V2pR}+MUC{%0}MC^ohOEFzyViuK7#ml6jT9vRr;rJ z@Y4%NdX)D)>oQR3qx_s~S$ke)(px`(-CR6<--B;r?_NoI=%w(Dj))im*uVGNMS)T< z$o49w_1w~Or<->djL&rS%7vh1=X~g{R=x_JCxBBKF59;kfz+KSq-9aHOKa&V;?4o{ zCZhpJ03jk3ehUn^rRWvqW5?;Om&6Eqk`$;6gV^=mp;Ii8e*kf9GVcbKpvbr5T_+$= z+Rs*L^3v0U8DN#zxxm}yNC;p}y5B+kTx`>9I`$7jB`Bpd^ek5V0;{cQ}^ZcfRUV8bo z`MXm~Lob~2<(dEvUQLwqok_Os%>#WyYyG%vjn_uZ8xD9+0FPSc_(vH-6_V~tc9>nX zY#kyCBEo@VavO@v#gQV9vh1a^J|CFLz29fw0Jj|=>)1X;Krb~xu7w96pFZ1ATzq{G zt^qlU_CI+yJ6(Dwopj1R`d-uBVmukEsCE|D$+J~m>hSA{m(=pz!?Xo$RIifE)8B7# z;sR@LA82cqr6g1D9unP(2)>e18lgJ({c%6LG->x8%Ms1p<;SwGj%!lC#W*9f9c2o- z1Y@_kN>*NG{QWIN=cGcg-oz!u$Kr-J!ohsDIYlXM2B+`DRWGmzEK*Bv2dE7rPq6Ld zhb{E&U#SH=5c_a_>u_k`oeD-h5;xoalXyk6#l$79;e<;(=_iK;_|*Cmp1_Q3xt0^7!dzAOS)xG9&dCu4N1jQ^$8sw&r z6vk?e%xRVgm!r1Tt>-H^pOdsX5p9c;(04Tj~m!5ps-#(rVJMj04iPwlIC ze59hK)uto&`hKEECvLKG5zf!5v;^q>qp*IJHzZ#k! z``v*e4tPrawex*YpVRuBnUth&`Oiy&d;Ugo9X6tuHj@iCt>U<6x(z3XG{^??ZF}M` zDz6nhgr6wk430Ms=b_yCTxK@Yo8VaAuWq0G|Hyjtc&OL+fBb!pN{gt37Rzx;g-Sw} z2^CTaNk~Fbjh!+KCY;C;AxUK4_a)h9ETJgb#=gzi!dPaAVPY)5>os-W@6Ye?{pb8a z2lIN}_jO;_bGwt)+Ygqce!25d{a!14;i>)(rV;8D1 zQ#aS=syCMMr}(OW`UuXr>YblkZ)q4AgXa4B%f3pqgd%;`%I&FP;)WCLE8n@={AVWo z#K_s>ysZHS=7*0~c!w%wliw8RwYOYKIQSGP%LItj zqI;&U7KdT{8CqL6UV@Kd5K{hSCx$mJ_m0r8CyYqz0oZ8<PrTPBkc?HGIw(LKK;C(9^~+`)N8L0lvuHbjMjT!O2rT8(&9zPMyY01 zVQ1|FVn$xYYl`YeK2vc&efGYP`pW!CwC{GIw*`^*MJ?O?+$8Qbq0KJ})%+p!Omb+) zOQ!xG-c^4dsUp3W9PpC-ggeSj56va-?;Y`<`^<~ZKI`zFt9B2)!yzXAPTZXW9j==p z=SzdTZBAZ2p8Zu3w>+D8`{ZRF9v;}k$Q{<5ot-Iu4DF|*+^b^Fg26NV#I67rK_zWh zSNX2a&bC(14M&#XuD8Y0wCZX32G&F~e;GGfT53O}1$L|P+iek{p$9id<~Qa?WmdTZ z*PMdc6jl#Wd<4mlEo7&qG+g|W-OeGxNXP(Z$G)ATv}BV{0T|LODhINt_H}>27{2lj zzRMqOIkZ+&6Dtzih4xFvN2^|L5`eClQWLAWL9q*gu`i7|B7v6z*>&v>T9dj1I=uYb zA(FUP4G1UG-{9B)a)2ywZ%I!2OC#s`WJ0%Mc^^8Up+y)61P+M@wctJS#HBV%<^G8IGbtDy;vB({?cP1 zES_?4Z8T7#yN+4q&ZJY#J?6cIDA_%TW*a}9m2Ghk#vuxShy44+WobkksSf(&h^4N@ z?)eQ6e4Ch#x769&lkj@gg5(M4${(3s&lnN#bM8jJo#$+z+c?}-hmNvNxTNl0+%DY* zA%7JWPVDE0)|g@vG%)SF4W8?N3Stc}xt$v;#Uqaz=M5kq@~Al`FaFb}Bx8;Wp7c;H zuO;!qonljVO^J#^1th_K!(>CXGjcg> zvJ#|TJL&LRRQ1m(s5}y@&GsH)NO`2==U{XtGB=Yc%lP&ae z|3ilkQNrTaQmWiJxaMXyN~_m3Ll*auA3iuXq{>fb&h8`s+qWk%B{{PPq;Pm6FPK03QaLVA!9=7fd}F#Y20mI2ukJ zdC!j3kNt283;lW;=!*aJPBea2fN-!|#_-$#!!2+R_C4pK<$U36z{tM+Xs2g^z-TMv zo5w~eaUq~ogufhyVq}&q5f@ftU~XZhEWJ?TXX*eT(0EYl1>14oU{Kmkm&x_+{L1A! zijj*$uE5Rcbb^W6lxwcNz2%Fq*HEON^BA@={NC;&v42nkeixU-$K9LIe zE27D7N|65EoWCS2RF8Jx7uM25B3INbgWpmr}`5??Z05sG9 zhQ~i(XyT0;h(q-Z3tqzbC6cTLVcdXmpdML$N0o_+>3X!og>?l`71F){aADW}OhB{= zQCnVjh{tCSKEBQnYlH_3BbSB2rJb~s0^OwV{3HWHT>-hlE&%s=T$#~?AtVDNh$VEnu%Da+Iwms0xU{qdR%+Rw}#u*9+gm+^;#wRv+@daa$ee%jci+w zEG0QdS1Fi4k$8ICYo5#}hadYrjwUg~CvzYEZ8T1f@iIr%2?P8qF!)Xco}7o#x1+y` z0q6!E$>V9X#g*u=!&F(GcdJP;^1=`dPTlkC&t|>tJKR zv6mDw$^lRy!kDRJsvR8At^@kMwpWrs3PtXzt!!1d7#sQx)Xsi&g1$@wa`>ehX z!s!3qnmuT!@W$`+{y{^3q5w#60eeK|XFz@mjCY9Q)1iLFc%zJ{P`Z;bHyBADIRHt$ z@IdxXxEHMWiQznT>>dM?09eVgoc7}8{A2~+(wGrG4ZS*Ij6uPom9s~pUL16@A(cO~ zUcPMl9{Z{e7oXqO0?22YZ0af0f!6gy5wPuU2)>xYQ&V{sE79BwpAUT|0k>5JbvXaj!${!- zre2I!GM*dZ5?yG18V?K*{hnr=Ij*>`WDthcH|Fpq1foVG%m&P_Wp?2z76vDw{JjxJ zieF=e=o4Sykl>CWu_jOn@wvXF>ewHzvjJG+6`V>`j&06cS(Oukj8+1vCmZ3fcwo>j ztQh?#3Mh#8Tbz^iMCGE`MG8oPnTN=5$982|*=8+*Jnf!DJvj{D*ABt0o zfX8#|-FzLc7RBFHSo2Ka8K5(RnKzx!bVFEdO$5JAlCQd3I>uj5y6(@NEA7E9nuk zlHzOJ15~kqD?8j%XYEeeov@JM+R3w`tilI;md3x!X5ZktOXhQ|3>zC;k?Z24JEeB9 z8|f8)WxZ_bjB%*L{mBkoKxg5UrsX$KBPgeVh^1Ln7x960leYNN-oB#g-GWL0w~3f7 zkw@Osj)m@ZWCtCn6ZAJwqZ*+MA>}EBxmOQUx)r+(z?g~QI2pXbL<{_93!In#@2OCh z{?SG7){BF|)TVvJbuq1)`=lMgGg_cqV`E49n2@vh0dG{@k3oq8eL?kzz8r9&p4g9H z?3Qlc9&drAQtNOV8^$?%R7qE^Ik_yfHz;^OpaJrxCSKAhUIR}ppL-0 zfS=CsY55K2B$vtyV@g3R4;m>U4Nk}5(S;)1NQ1%SkO46)e04zxY&`&5!y2Mq+wektlP@bo zp2Dxz0;<_xMdH~v9pqYlR2hFAt@s9`%jd5eE)9~ukEjcbBdys34HD4s5G$h=3P^iE z4a`4qcnyyE6EC`O(7A>^H*7ix?Np~4f8RUdA`P2{CtTD<4LIqM!#@o@2HnyDV&y-f z#+eNuH`s>)aMIU7Q1$V);OXt0(^?Ma8RA0)r29_D!GyCwcZm)>VFP`!k{Jr&T>uEr zL0m>*o`8sk8efI3FJKnX;M#q?K|7^@{Sbr8(vB36IDMgsa(;N;j9D_QPk^55gg^&! z9tp$B2PC=xj{E^f5#%*L64Oc<5deT3L8$kV^3UfxgxF}jgT@h_?-byXsT@ehp+gFi zN03VQTnGDkc0Xqk&`|IZn5Obhk{v_h(@OC>GF&FpTGIb>S{y+rZ&aB&9|_r&@WFOAIoxR7rphXRF<|+m?IU@I&7VGUM2hG5>-k`K z?Ukaoh?wo$eIYFHkfEHk(7Y#T=$2sZJ*)fWG5v43J9f(fy+j_)pdGu<>xdA|POh*q z_75I6zz79WIiSsg3hu)<_)Z>=-aQvy?ifVlsi^^^@;q%9$8=w$ez_Dsz?(qu4Yy1` zzQC3B>15+DO#)$rwg5XcTN67j1Jy6Y9GIhQ_=hwOKUnL%$nKWek;J@=g`M<}%+oiL z5Emr;{s?k(G9TV1#rg5jbhcsNGLVMPfTfFK*-Tb~X#-wHR8Dwf0v(kn-q*p46oGjx zYVwj7uJ`vE-=SDBmJp|Df6d4l1~r+}M&JGcQNqNVFJ1)D?jhUUoPdbd*VM3v4T%-YAWR#k>2{ z|J~KlTo-$x0+B-6mwO2|zb{hc5w`Pph2MsKv|~mqY4FZAAQ)j_Kp}F$Eza4s9Qy)cs{!;ShKAfX4Megl-d-lxx!!-%C zW6FuKLE0ARt2yMu{2ipDO=h%vz!|jg_luO6*O;N|Ac2jy9|otspZ?VF@&f2m>fZzm z!!dbNkg?U5ZgU;Z>b919s*Ih!%li*Bdy7d19xdTR!&=&+4$CHi`OF*@c(x?ki@EI3 z2dx=W;Cq5D!5#qJ@WNjB(KGrhCL}=*n+Bkwn+Siy1YHUDd?C-I+53v$@_8^M>cG(m zBUxPnZQErSp?X^`+?9=zHfjWj;8k3ZNS;y6?KtrrRGr^D03B0{FnJtP9xuO5FH^jj zZ|=gcyRF{DQlfm>*Iv0$jE|N1=?#r^Q8t4eD)PUTJz9YX!zXZY`K(tT>X1Z$aYM|} z+Z<)xl(C(&-s#txH~D^~Olr@7ZaW+uBF+E<=*K*R(FN%eU(wXx!h)59UTDLh%>J9e z%US)gl2nf0MS500>;V))3Ty#r_*&DxZ~*bg0ZsVznjhy+IATJc`Y?|U-t=98W&;`L zyGWqH04lcdSDWYuuN}Mf5kd~LUc2Ao-4t(TrsKa&VH$Dwol_yoCOEO7$#QJ{92XOmGRT^uMdyOTOUq%L|s3H z7Y?v)D2`QEHWiYwY8V~pXwQrd(LTJ3b^>o*n(yv^2k)C%?)d7^9YTgaD!0JgKWar< zwts0pKB(W^ApSt-9NSoF^Ins!bUUlIyzHw4Atw~UeW#vl5gAVf4!0`LKpt(SW@&z5G4H`zy`aK|GZ}|xQ3MZ>y z5!ZlH5W}u#&Pfwi#{%DiNO(cooAZPrA<$VFIbRbCl`Ml+j~riAVBEz$q5hqM`5A@O zdqgb-gjCVt8sI-!I(xepGhcq@J<*0m$13Zfv(H7C-A6uzEey)RI_7lH=cxxGN1(Wu z9}gL+lud2!yRACMpIY+3tD7e$gd!y}n=2ih8g+xlF-R<%3@dPj0e$ zyvtibm$ZMn!;5s1osH`$MOK&!xHN?;TNTsi(xvjr=K8?RdHGi+FOuCNRrc7?l zP36AwJ0{VnU0 z8x0t&GMz)QI4!2JxIwnN{RPNB3kvOX_IzrG> z(l4I`p%?4W_;U32c;5Q#G%}6=vO4Qis*TxB)cN0;-XW{+zay~5|L|^xBt$4nF z@SSkp5jZ&c`$CZl10$uA#06mViO?aD7Hv;fC|3vT=L~7Fa|&KZizAAFuPEb6Hl61T z6RF@a&RgdV4iS7aY&x#tX=u}QY}Kl2lst8u{^3Y)LPX{4l_=cWLHb7PdZe8T=7?VL z?$l8?BOw{aG0Mc8M`UpH%1*b>JM2?U2g`#L@a((qyZ>S6-$Af2 z+O)7rb-UyK#6N(xE*x8OPp~;&Ib@;<$K$^F%#2EZR^#1;WmJ^OW*BOx8M5QCueW`_rFNE&+L{XYlhPCb3MK8XCr0((gfTO zxi3%iWu%(>Tb(0cnp1EUZtftLUSP^K#iAPSDaAUh&QM74KgEna))k9j;Ty@?maSM9 z-3$Klxbt+h2S4A*Gk1H|`lQh`+*F8<%&la1txmlNBFS@e_d0{wlIT;IMhwk&k*^#b zmq@pink0%3Jymk2HhL0APifvV51NAt`SDkU^u|a3+un~0mlQq@p>jY2?&ag`3mv*k zV(dF}g1JL}lK>|*M>6?uxdUCXZyMa6!SwJHWDhE+Z0Pti_7$E`AuxJ_VV37_U4Qa| zdIpyJWiuQv2!+Rwz;MtLbT)f{Z7WvgI>YR#8SWic%~>u5tqX-^#DNxpj1<@{Dg+Qd zm_h3GnG6C5Mo%b%Sh%~3TH}TChp)Yz1Z9j!Nysi9vXHw+Iyo9MX<3Py;|>3WO& z)5wezg*=I)o_|-&lV?QBq@Z+RIdxak9@5vjsskQrD+i>tMyVgK9y!0d@Odby)qU0& zGwLNTy`Eu-p^MHXn4T{SGNV?Ux~43{knR{dtrQX*?V2K5f%cO3V~o?odtztd2I84W zh1GS>_+)ky#rBrit7wl6(_49!+FU;?WOk3uS1lQ?_A|B9lhZWQeeykIjTv4z7j0gN zKF+XNizjVRL(37N_FMco&@?Nihm;x8PJefnWy{~gSrB&J9(fUm8fK_ZE} zxI;@}MfFbE@cz}G612qJrH7c$uIU{y@`V=N6}pt9!@DxFY;O=i{Y~mOCts0uU!+Q- z`$LQ7HBFNSOl=ZfKJ@Sp@+hWRM_5u5QcKtW(TY_Jo3LWwXtRbzlqJ5lp&rIf$HVz< zt*T3Rs0Am=XP8Cv6jy0u`ca9`pwg7nUY16PhstIMyi2YklW#; z%O+D&KlN-zBC%t#Il)ru5wYNSWfXa1V{wXYGFIDOo_RD1wRnO$CKF+@S#E8qXLyO= zIc1AJv{vv7y%FG?LC_n-;I0?pM^OsbFRLpH27l0ZKx-NYhkIKNNr`!R-zQyl9pr-) zn=kuF_gMy@x1b3Xl>`IO+u%ugIQw_Q*}wB3XyePa0N&x6XZ80k+Q}>^`k+f0HflVB zur7VMPqxzngtG_-t9fV-$@^iPp{ZpWCkk*)@QbLpGSE0P z^|6L+>M5%&Sb22MLUr@t$X=>-KljLU2KhpbaRh(DM7_c)Q^Y>qPzp_)T?wRknJQg1 zvc8j|KXoU%~5I%6|0MwxnO6j>lP6+mffcr!U`VUI+*V->^tgk zgi{sO7x*eS_D5|jj7^Ox7d~fv-!5Z^_a<*gXoy?T!58O5M{$f) z2G=o5KGT=DDqg2)#$RlxoKVE92iT0b%eymcipTrSGmJx)Hl_RQL>&*HE=h~Gv0Wb4H?oG~SY*TlVWlcD(-WgKt3`#Nz_=As#NXSXz zm^!A_)B$bijjKw+A-kXhb^$aWK>NTzN*iebh;A#uTfkKS!XXhs;q(TV#)1&3bewaW zbM`Bk{SOR;^CzKx&A2PDF90Dw3{zp=8&`t|egF=p-cA$%k>dB`WraVC0VfAw&J)^Z z5H&$8g|Bn+9xqhk7Uu_RC2#tswVxdfo-+BTtwsOgu!G>6EsPhR4v>Y6@Nsc>3tots zpThiX8^P4R1`+VP^HOK=Mojstn7G?5n_=kOW%T_kBbChpFKJQr%O3sZ6Q=Y$p9+C5 zClyB4H$%GXnHiaiOJ0#{UePa>k1D!RCoM;s1U3H z&qM7Cy=P=n3<^;`3@5FTN+LfQE$F0ROrK28Oz|sCldL*nvort1B;VEM=M2jtinl?V zt`VM2#oQEMDsD)~^~u}#eo)$;Yy(T#iJr{fqvNwIpA>gHqf6=X!-o=We66GNN`Vs_ zJ=&JWhJ=lunM?rD6=nhJ6=OgEo>7 zu>n{zG+HelO*a;edWgN**cRzEEMfi!#=emook7%EUr$zboF)Vyt~&sv<1C zqp5F^(phSHIeVXXXQNRwL`%F7wz3vW5kGxC;*nOg`sNZ9id`V1{dkMKZ(4JtdOnj9 zUi86L6=koG;)STSVpJI7j=aw`r>#@4EGbPD80t-omCY@W$g&x!)MfHh zt_c|7JkJ|y7^rR`}aqa-(}^ymgz>-gjSO$T!L^^O5!AbhE3MOv_C( zE91LLoZ6>FWZO|8aTgsYn$va3OEP%ZtMYoqT+>F28MY69x|{%Z^Mm-+-v}kbMU0i3 zI!XBS2D9OXT!W}!?2#cC#L7hJZD9kj`Ux+C1EM89AeJGF@`VT5Ul}{G8gg7oa$D7% zwm@$?3sP1;z^qQT23bDDZK+Yr>IEXZ>*#F~@ZWY@q3x|Q$GM(?5(XR==ae1DSt4o2 z1iC{np`g1x+pxR_p&E(jIk?3EGY73S0I|N#yf7w>c0ycK51yk9~ScuwB3BUpzxTd(8em)K}~$HWM}V zB6Wtck-m#Uoa}BN(~xaT?(ZqQQcIA@BfKbGYBQ~V%G(?(>o;-TQ^5Ggciya-QN_Vx zM(GE^0PM?~n#4tVF;+mc<55eh8v5yTyVC+ms`m5qf^+?9sJO~^N*&(*M~ZS`uSGKx2|vj^!gWQC+hj5WU-vFYyH>`btR?@o<2P=^-gnl zzw1rrfWgDQ9)SIlkEW64YyenCVDN3gtUKu)`(^git=_1(y6!LNXY3;ujHb-4=4vocDxA^QK>)dWV1_5|I9;>$$D_Y|= zj^UqtJs04_rK6&NPp@Te@3Osfjjx*F5_QgzQ^2#Honmj~d!mm|x`Lr=jpkmToR;X= z(Gi?7Hnhfer@IMPKbJJ_xy~6|?4Y0-?Y`4}A|m95YwMXV$15QxD?(g2=AybU2FT{5 zep7PeY>t-kn`n*Be+SLz^51xSqr);5J%Q%9%eH2bjq$4jl_M$g(u?0qJ0yfMQo8g0 z$jWhvQSxXct_sc^_n0lcb%U5mn(GX3JV3Utc+Ti6x>rNQ4DLAIk(ploT1$Byqd=v1 zP`-1wq-odH$|2V`SsBZ%i`SFqUD0aQ){wuDWo1lY4d)a{szZm&C1Su zV^N#TXwN*SP~+I-F9~dsKh_?$&}NlC;6zz}o2CN>C%X#nsD z`a6VSf(Gs10VD;K5x_36?B|!W!AQV$&5QYQ;>W(Ol7~ssg(G;4u@b!7IdeSW}hG@#&#D3-uWh&zH7*3XLHoK*p{{4aXMz| zmEbq;=ZsG+aOiw9b?Nz3G*GZoFw|b2E~vRU(F#+6R%)Q#-K#vd-m6Rygv!rhwUIJDy7w#ih!VDGwahK70gml|)n=DPY3H>8!XG%gn}X%S#9krU`OS0Qvqiy|8Dn@7C>c&R?8e?JimqKS`ht_mK8s z8-qU?3W*j{g5ZAu)KKccAPCqf7sDg3I$-^2e??AORpuT0K%pHNOm7#%@*=hkVBLE2 zp6?;;)*&?m>MZds?+Y|eeb6{L16%WOJJL9TcQ0*F47<%7QVdvJIOwf*3M1rG7_?hb z`~%^+8^FB)UntNU%E~4P-vJEdaldr^G=mBWi6r$nBXwkE+k_GI`L7W*&Hmo=w-!S) zbe=g02bZDk)f=u(TXs&H94w7`r#M!O=}V5z%yVqpM^?|wnwMXV$DV8}jglW}3L&0) z$WM-@k-?kjS?B*Jq80Hd*DLVo@^Yg0Vl|?wVp6Yy_NUehtTb*7m$? z%Iq|nigaDHB*)0pA-*xkz8R9v-YSVzebaUkIxsNi-c8q~geh0Qh!Y#Uq+yVoKB=GA zp|ny$oR~hBb=FR%P>cFQDVDctlAZo#m6!Tc;1->pi>Z-sXruQzPSF|0*IM-$I;TwQ z_mJe%3@jPNWe-H%$to_B{w7_$noD0VW@VjB^P8*i$y@7tNMBhTy427TtD!CtsZz*W z<(=n|c3t^2l!11`O5`NF())S#o-|j^snpY}!zO31nxmrm#RnCAo%P=VYj40pLv#d) z3EcgKg8e}!K{9iotMWaVXMq9iUw`3#=hnhhENH28t0VKW`n9ra}g8@AytEFIeFIM$2UoL_fpf27wve{l^!lohJkb zkfHA<*Dq})gb63c`s^9t(YRZ>^PvyQ$kvyQK-BjHas)&HdwO&A!SN#aMz~1)ue<&) zUO*t4%jAWn*(}XYqT(wp0}$b#4RdtC=8QI$Z9D)KZ~!A{wMT(2(-t^9Qd#U5wNJ6= zd#O;eyyGMhB2+ujb}pe=+;ywWTNgsGyF1>FGuqWnV_dndf_i%MAzulWU3zM*I`djGRpd_FM}SK zZAWWwfsor%dYC#c!=(Zkv^5q{TO#xV*j_jg=sYB$$?M2__r+*%zmZbgp zlf{D?F1PWh7LkTBqc$j z00f*IYu(9MQ)A>5D4N#9h69QWGRcz#?l-q$_04$QY|t?OWgYn|i_rJZiw$qE+-7&w zsIj-^i=DJxHt0401P0YyqVW#l5-F7%*w-D?%RznM1HARtc&{&lGPLZ}b&zgVQz)AR zrHKmUQMvABQSj=JQP+vEs37PVrm)yH>R24-l*#^kuoMdr4H*ay*hR7j(!Dx)ISx+| zCwqvEyFV9geyqXZSx`eoN0-zEP@SJ!AI*}tlVO7cHaD|tmj8TdZdn{z+7lKBDo|_X z(_ChT$E!OE+cJfT>Oa2k5g`mr6&$Xy(dvz#L)F#-l)%0>@51B?>2X^p*^(FLdjwoDaW^t6=YG1?DZR#?=d;4KZvMJubDq-b( z2aOp~_4A-x&tdJ3U{nb2$@AVG^c&otjf%z$Ynet>?(94=vt7#0OSadhAr3aKjtRGY zdJs+HBz>^P))JrTi`c$8Cj061E+&TAyGb=+Z6=%P}x4u|#Nz8txCqJGMkZ(8Jtz^2*k~F%hj<$|R7fv>%gshWA zD~?mAD{FKVe~Xkac8&|AKehkiO{P^QM-@d{0KZA8Zkqq-*$8?a$zg(}M>4DV|5eeVL(X2E$-xbQlE3(QH ztD^EYr^}`7C$2|HZMxuxd$@FJN)*I0ZPVHtfxxY)ZgWj- z49!(k4clXAUl%P~X5V4f%HvaK1bZ(SiA80ke0X-w?yh!^$Kv@r(u@;PPSXTvdGk{r zFt*#4Z>nP&E8YPXTTTyT%1%p6G?uEFinQ*PH&NeY{OGWl7%Z2@wpdd>9KR;oT|Tgf zjBbC7u8hsANPpRFKX`fTOi+ncbyMdJHEX#M5N*QT3}pqe$}`I zj1uQ6M~oP{4>csZ=A9^RnVE$_fwY_}M7XGTga}C%}1w&tx!Z zJ?XCcc(eO0>K<}-)M`e-ldZ;UHHDV6m&q37gLCQGLb-{n4q?#>Y!GJ*bk!q+|D!n-J}D5qCh{SzIgYG7$ft! z0m0E_^3=g@o7XHknam>qyWCu~b6tia{pRibsh3yv&kC^JDjAo@|Exr}H(3HW8k0OF zv$=G2wN}kES>oTk>L>L3>4?ltn*%g-)|4sm?@Q&d4nE*;o#Dgm-jg>J!7mPmnyQ z)_gU%k7Ry`JGN-8+rHy!;ZHS1`J2iY^u8LKkGQYqlw+D|)i4t?hk53*b<+2D-KUN`e8zxB9xE_5~wo#=P?Cl45Ljp-!)2%>HN;*?$UQDkYdMJ%Wp;xUC&o!=F*3h*Z6WlzoC#mFE}~S zrKxSYE}}36c@B;f1@wzm*S(hy9MrF@n>Vr9J{J|0b~M+0d5%t$jkzKfq7d+?1r^$| z{)KO9bk6u1A6#QV-;k|(J<$?(wWGK-Le_I!y9j?42399H@H!DGeBg8ACddN0(0_CK z?_g@w4>u?u@lg2>j9u_Ky)tfkG?U276*aAL8=mw<|gosM!xSbr6 z9^t)x=7dn;B%F?oFN`7@x3C|iwgM`VrC9|jZq6L?7*?>6?lIoGzo=F7PGu)z6zT=r*%4O@kL5Q_mT`HvvcJQ_5ypyt6m982L1t97A9hd$A%1kxE&*TI( zp?>*dfPH1Ol0!X_{vkq0MTjtZx}Pk6ZMQF_F!8`PCZ!DX{& znlsH-r*Ybe2K+K%6HRfs#yyxQN$=(_k;^-y)~7WnD=x~#d=lyQo)nD2=y-m@N_y41 zJd=Pr=DPCA9s#MD?QVTJ1|8VV5-+O{zKnhNHPZ2prm6gdBQU?%-M)Km=_&+U;@TPx zQCdx1d7uf6=eT_K%OA7JV0P>N z@btLQ&=i}h{Kr{z_w^{t%At;Q;$HRBDIq4#%6c5LX#~%of_Ki~qMSGSqz}iM;+W&= zO-YW*j=OVdWHqOm&5QQ(Cd@J+r!A+R&V@{UZH}FqCtnQLth`mZa?Y*wt9nP1r9|?< z{Ed?&{Mj`3HK}a!(!5Ek+rk*52Oo;9NZZkBLbxkhn8k(G^l zh0(YTrn=+CVXRhwAB#Q^EM@kaYMFaAl*ka*SKLG+TqF?aN7NEm_|Cv zU&Hj@uD2IT@UcDzNVdSZf#@I6z9Rjo-Tq6M(oasupCvOP5T)p_?NZvugW$+H`HW=2 zicK^0LT%q?_T;y!QGLkj(T}L6!0gNW$V+Ev`v-E}L|d46+2XbdTa=|*%^|lZUw68> zP2E{-l`%~S<84YaTntX_Fj?eW9c0)gq!xGtERNqPGC#gelpK?AYM@x?kwH#cI&bv_ z?em1!y!rjA)}=i+)xP~lMg*6sg|a`XuRU{)ngF7$Iiu|UjJ)QGenmA@Zf0!BT<=xu zo!Iukey;BWW2F6orR|TX3i^Ds1R1q{X8rs?qcb%Ef5$!W^=)%;+pgC9*pkeb&Yz0R z4<`|{2vr}>QX^!j=ePEAts03LE!_xCCbVlAmC`zc37X8*EU$o>*Zl<-9C}{nTG-p9 zpE4>XX6+uZXl{|y`+SP1n44Da?aXUkidKxr9_M*0tyAob%gVAY8Ym0Ww~jE_c~alD z_o7c~(5+Nb{^;wo)S}#y#RIu_N@KfiLv+fW&i6LAD|dBQ;q;ug-%`MVc(k<@Gg`Cj7O%#mBxWRMR+mzbnDvaM zJMr9|<=Sg*KQkZFzvyZ#d2ZQySlp7mIwNP~24LKd(n3v2)j(g{5AgwZ$?P*KdS4byMQ% zYYaUv>QXlnDS4e13|-G3y1Ru4_yQHe(};~9nctEwqm=V+=G(OkN^F!ps1awbtgXI1 z+rPB%@MeRBP#{fIV3m8{n(9_%J98cKzOJR2@kL8U&sx>~VpCMU$K>L|`n8c#T~Gbb zVH3kNu>OFv2e3JghQ)uTAq?pFj2IT)He%wnfnE!~xq(Q)@naBm#R<<4I=kO=`mHV#s2hTJMu+@0+961g%R`IrkM`m3UZPb0)4%3Z`Ux{E%Ax5iZ;QI!no_jg01+kheJ3!Il@K7{}~><5j0% z7BX%3vVgShxpNNNsNRI(lrSmZIaa=eaOM+6;;h6gt2a$~pd0UsJvs}z@e7R4f&6gbTb?qoU*FkFRJztQ2lH zLwVOIexjI|`FW$HR5AGhQox?DB|&@K=I!u;%JFI8Zc53Uf-MZ{NP*vSku9*o`S^cFzsRl_hbl&RgbbRF{RrE{_%5wgA)-VX@_+Gq;1e%d8BT%j+{Rr-n6HXPO zeW2A+t^lTh-8p;Sj4*nn%wVEk*QV9LL4v{Qi;=hs$@`#jzI_QS4X%4cZl6dbWynE< z_!dQOucX^2ggN{rj}8o zO%o@(b27AOXZSk`ud;*h2y)#L+6&xY=R3&e+MtEmu|_alBhQ=FJc0rQU_yTVvV2Gs zC+H}o;B@Z!!iNFtE>NH_S{#6*jML1Db(C?BBk?+U_-U~_We&n5?2!AEZgU~JRdBUl zw(8>X7>7S|jS1)6t?an3y7+-H#+<0Qb=%@ycz}>Z2tO2*t=nKR-6u6~38sONak%9* zZMqQg+_Hp>lqxm;!FQ+d-uL3NqxOR@1&|&H>FO&}V>Avz3=a=~Pbe!8;lKJ^fAG#z zJi_G))v=HKDIWU~o7Sg&U4RAIjO1R92B$54EE5OB4g^{m9XvoP^|QX~ zjXE3wX=dQM0DI46=Oc~|3<1(9Kw?f905{Md&RRCC9PB-Vbs@Bg;nUfJk}TOf2;MHA z$pXO}=|ls?&VRZONkxK;DHudS*o-v?Vv`j#@Ot=k6U)q?s>nYiE+$5qEo@D*>_`jx z%m@wLi%0HRp|p6?hN?}K6<qJCiT zKKLqB8Rnz;4)NPrN{pX=pu~X3We1Pz@98e;Td?*gL(I8zV#6|+sUZ;noRI7gVQFIk zemFtk23VO69yJhU>||r`=O<^x{8?tl0|^1Xkzk57Y8)=J)0@x?6@X^|WYs~rsL5LX zL7k&qDsQp}-of#)#~iiDH~1LxB5q*W*a)w8P`MRK{%3_mglN8yve5VudaM`Jzfn8p zfGAiw6g>Cv;Y0d_Z1p>nAeh6stmlgVS2~lCQs5=xVn^fdI>%!xe^DK0J(!xaKV!v_C*| zIHNU+?EZ_Sz!TmmHW-E=^!Hj!5TXSH-Ip+{*n;ucwkFn=i#-^2F(Uc`ofkZ?zMx~O z4rrt=TGKC&aMgW|d0qKb8lweKCS;RR9m(GBL8*vN5j{N0`jh+V^{>5#< zQzk5|iw)uqkCyG4W0jci)-Kwt*dI5{;}Xz|dM+kMnF9j@SJ;nb_HCgmQn5-2*Wr6BlLB!vMRP z;~~KPchn|g5rzg*9&coZH&_XwUA3Pk!G}0{pAV!a;H{o$v)clW|FmJd9pm@Cz*Xl@ zi(nvCC(HpZ&;gRoITe-?_z}BFpYGqr{s})@5Mg{fD*ponKE!ojo1HC)J@}{F9*EpWBw^4^{ z!N85`0Ve0&w34#mUbyQ3jQ${SKDG&-HwpBz_nA=#iT zSXE$v4di9uNA`6RceG##4D5!V@T2c$8W_^sIX?BITAOM>3QQ`y(9;`m8p^xO?Y_K#EOE}IZ4ecu%dCZh zW)%|-cT$ z$k(3st#J|jbgTd7WpCE?1_rLAo7?I!5@7Fz+-fn$2$?c=2r0@#y{H4)qaGt`E<2oIl z=I7+3NVUkRgv@2@=U%HmUOF;Er3fU%jTm>zzTP>SP>hn00qe($%GK(*+H~K4l(EN1ON7> zIfSo3Tfr!Sfg8kh@AL!JRDmSW5Bcd#oEve-vbJN>H% zljrZYwzi&%s9qDHk_fWyS*}0N!>zNJr7nY+?6JB7oO4vg^-e|ULl<32w?L{n&T$(j zIK1I-2W2E2MXZYl!`8N9&nXQwzE3G!MS8ukGlAvMDoOb1(GvZz5GnkfC;+$GLub$n z4Ym&Hg(7_R67lfz|2s>=gM~8^mfL?LX2W}-wO@zv7mT;yv;*LSToQhNz|kDKF0j*i zc|#)%37j|>$`8j6LyUy@FVj8f>{zCI*PXPzh{m1e3$69Efs+WV`Y5Em=N@EJ$7Tf{A!zBb-4X8*+E)|4L;em8P8h`G;N~AQdFw8yx z5}phxE7w@5RM!&$gn_WwKSSAktf+qM%3-L1_Xi zB2Ai<03k$0suUGLdX(M~sfH2}1?e4x0HH`XgdRvpa!){=nfKnc?myr6ESI`8JUM-r zv-fY?F4QBoB9*q80Za)tUW!GjB!hSPt^*ep(@+JMRgXHVKEby{)@=my3JQ|Kh+%0aAXE6NRIl<_c8Wk)M+++kLn(53@K4Tx>qPPheuaUkCp01H5^iZ5G4bWqvC z7zCv-tyG{Eme1e2u@7V@7(J=Dh&Z%kOEc7WxxhhkKeQXr0YLgSHi7_~zk&dvS=%@i z5FL8W{Sc@R^lTm|qJILHE*RsNH|9N(o*>PWkt%6}{2-kuh&g)r*xZK*ux+6r%~;L%bx*AJon8;~n zhVoB10O(Z8=1zp1EvSPa7(Uzo)1++oJEMV6t@N`wc`^TIW;igFbZ4iTZYi)|w1D%l z&e}dUwPJfiehvBn6u2NJ(I|Zc7Q7W&2DGSZ`gwLJZP7hfqZxjr0gD11k z=WYcB{RAWdogUbOKxYHY><-Z7Z}ljo0+01(?HzUvu~##4m%*cUTB3&kT|WMkg~r zITL_e!1@HGnE^)(RFck+_SWIEMFsm!wg55* zh*|kY3qY|sJZQX?*qL1+1(+5Wq=73$YQwNhdJ1UcTI4^OUYm+1K$T?fVSLo{l#Hx2?ihrLYB0taxhZBsiwS-J%R-ZT@?t^f!n5`cjS z9E>1o8>C4wcV~IgbaF-Q{tQQs!0pqAxko|0r(&iYV&>}ug4I{YDBN^X*U6uu+RN#C zY61FL>76p5H-J&vFrA=Z*eO031-vf5q%2YMG8kSk*{;qUJX;(!rhol0Gg;*kSgSUW z-NEypDl%?5CTHAKKwkGce`S|@ifC@MQ)>Nd&RK{_W%NyM&Wy+?W(4>5q~Jrt@%kXY z3LNwkpgzM^lXim1{{tKyz^>2(m8#yFUHOG=`U|8=Y)2pf%8`pq+b&R9C4AcVySpjx z)_OQouKRA99as`SNkulmt^;ST#@h&wTipIqocKcV;%$?&oXbZwsf>x-(Bo^Rk4B4;d%fk(f~aBp*_H_1bB4Y z$5ynfvvm$LTPzi{1Ar~knP7`U2PQwf9D&8ETHV`2So_0~gV4-VB^}}xQDnvIl+GT%EHyUDGK=Y}EGjjWU zqfd7FN}M{G-{J7h{F0R{Ksav&cMVGWf)xg?kV9 zK+ECjTsO69Fs>Kp}N}@c;<22grE=H6-k2sW=mVwgpTBc!={S8l zfOGVfkQPgf=rh?(r%;^wsjdaax|FZO6sbVcQG4`jo-b_tTh$e+qN}}^pCj_pEh;Me zilGTUnFblkra^|&b3#Nju~}w@_`&n5c|+KMQb#+@we(_;Wvl@$@nE}VO8(=x_wKAJ zr_0h>f;8c7RRv8|wF)o8+qfdfTWftBp;Yuj;8)P_-KavaJBesd@b=8R%78 zPTUQG4scU~Wy4HI-0?(N`l(xi&o1(AP+7&BlG?b{$lwyV;-xoNV zJj6`_v;zdQv(Jwo9^!8SIlsSYf8*FsC>3*so`b+CvxWHpev0NrmCRE>&-8@c0_AlS z)yW{h6*$OKL50m?ekLvzct5!MUTo>Krj5)z#{jT;(*W8t00h~0f43NFO%9nqQ!1^0 zn+b(@!Zf;x>OvO*sIpBY<6A4hS8c15%+TvCdCe4Pe2fuCleaCMLf(TmWjls+;Opb7 z32PhHoAO_Csy6HqkJnZ=FAV9SVbQW zQtzsr!Xww6oh@CpgjWtVIH6tGn1KjSU^c^(A|~_KQmDG76I7{GEn1{fR_eTz0>c6H_Rs>e`B58 z0+}}unb!JSxu-J#>at}j0wS(HvOEG1^9%)c?Gh=Z{I>}{S6fEBQLT6+$BI< z0#E8TMYLlOmtlC8Ge|x*bK!x7mxG0i!#xvJ%K`CsvA)$Si{0)#!m^Cer^tl#q-Q$pY9(ozY3#$YjsJo{ZGxcpSC{>m zgi9v&@L%LJ=6%4`fqzra&iBNoAdiiz3JyvGg4*&ea4>_3s{b4@e^{uz2(X`+{tqSr z0(kLU*ykfb`6O{*&<};F<||792Gx7OC~R?+(veKS0=(;cQvk#Ru)r(16Eldv&I zat0OIO`Xr7>+Cq$M;g17kURT$FSv_55szJP2q6TF(7Hpk26c8hng>_iKpwd6c}Wg^ z>a|^WeH2_Y48z!T`nF#36eq`v(^>9Ya~~id8YlD9hmFgn(=y9%Qe(x_X+I1L@Y$o~ zX15|u8d_ddoUMv89X);ZZk`#|TU(_=TU!uiso+sYKA@*uFxCrd#}4^b)H!FC)LHLh zoqE&!*8Av}*{q8{bvBz?#;frd(~ahomLGfuhu-fmT5_S$fftd zx^>IR$i!@dOB?~9ih^JLKpV9_1FXoP*&vga1HxDh$MXrXhOe#fjg=4BeOX5o8T>78 zRD(}WoxWqL+;q=fMJ>`5;MvF@I_{!2U419}yC&&C=c zb}}}Td79YWb`g_j4vdf z{ksOK`3r;>w=n#JYfE%!Z-59~aPQSt!^D26RlNK>TgBAejvn7mvPsur+W0kqv<+4q z@Ho_d%{Q2oVDcSqF+pbsfR}6O&>(LRQA{Y`S+X!*0i0k!t^~T_nt@*ru(q}Df#?j* zp*y$B;xtVgKLWr6Gua)0l@0DSC4)7-`e0ih0tPmyd)GLf4}vr!IOl;={mgsodlxo5 z)XtOvy*owzCHrt|X)KT0`w9^CpiJlS#k<{7#?>T311IJXb{Lj{dhsy01MI*e-RjiuQ+5$)xe>qP5bO`a{t0~H!;m(=lZE?LvE1>a;JW2EXz&uaQPzkUf4)iW?f z9XQQ7(3g9XpH6?ZVb0TqBQJ%_3GS|>U{gykQN1c#o*J6<$&}dR@b2MRUA}GhmsbF# z%}HGYQ;i+SjwCnB<-XI|Wh)*2(2m1l7cr$JbkXEI?(_Temk8>gA&Eum_Wo`00pa6p z)nOO3+&4)#w@;mT0RMygwK0x6Xc2_=9>9Yh=Ude3OJtRPb`LHq zLOqf6)kbDhHN}u2RPeSWa27AKX>F2Qf=}1c$3MXw$t=lxqua34!_}tX&zg#(EpFaw z^S6XORkW+j3h3bxY4^fs>YQ&0SF=Yj;jB#6c!%n9m5T^9CeM}WbN9n?*8uzO$K_!r z9hEKoCq$@k3nBzWNG6aH z&jMg%9h1x4SSfY!+84enf}GLDM{|T8nZCW8Bjxz`jx|U1efIPCgORj$HEApabwirK zQH`6VHtYVqV0r(*SFs67J-UTUn(lMc)cXxOW0T}t>p`3gf3YSTNX}BX(3iK9i+UK8 zFW;ZtuQy~PU#9P7PfS?Mn<-2SV*4NU*P}Pd?NPLb0+9)C3JfFjoDmZ$Ja(~oA3S; zGFa@RwVOB63E}|oc6jJ1-|#5MHOqF6TQ$>$nY2G_Qw#2nM6vCraL>P8LF32aoVEMk zyQM7>yrM2y;{@T4Z};S1v4f8+p@o_^V_$kdymQcQMxfo-NN4V{?I;{iErI4r`QClI zW3~rl5LDuhUpTzC^3%n>dxl*$hIw-`s(QCO+a1FRn$7$IWmWCIdU^+N@gg0dVsoqP6;KrR0fYQZzG>P8}+_`IsY~3yH+Y!Zv0UYl5anMW_00JJ@R^)+jYOS<-8j{ z4|?1%d!49nOE=E&ccUeoz!y&Pg%*8vKCe=+l_y3##`SYh{i z65`raK|$)!apkTlX6?eg=nHJ5>CeHpf8f|pmWu8=vZ?kUrk&W81)beNf3qODLu591 z7tt@^ThfCw4JwO|GF4d})`RyFUmuC5zY3>!+r{7Gh@OV@f?CLi85$-f0LgTM=0S-( zIKyZdc~hMyzj{xND~s{vc7J2$3-{1b#)pqM8SJR&5lzcz5N`brn}{~P1g?s=uX4W> zqBJPFpyDL}8HBz?Rp>>fpABQoUx_rf+8sL1xq~;nkkd|!cmJ4e-R1cXF3C{6L7s-9 zZ$DmpY__D?o`}wHSo*_Eht*QK>BnfbR0~%J?ZlNr^|hmsM)L~Eq~;UN`*tnpocG2`prDMa&_T1EACd13p;Zirdxsg!dU?Kq!67G7)g`~c!oP_A)w zx!=Uh6XmXd=f6jX?m(3ku5CEc$TlUHs3z~UsV1*#oJ=!~9(-%!9pyezjB+X)!LTaq ztFW~prU%HKQ&t`BRnun;&YwW~D3BGlUe3O*bUGIvh}?nJ;l8lv(1&ZaR1lm~ zkPnJfQjTYvxykeh;2zEDC??J7C<{$=Uot>;UdUFw&;Et5%EjloKwsGPU%zW#d}V)!kFMMXjCwQu2e&e)MuKF0ORl7mLz&d{3n}Rv!CAz1r!BSPy2E zT#ytK%UTA7sMTB2c~<3TfZ^cv=(;}v0{fi zh5X2BJGq<_~&plk%P~Mgi&-ciJ{K&AW#vx4L_=9!y z)mPmm1CK>dZ=T89l(%ioWN%%+x6{1C>7K<9>GRs>r-o7LVb5*-ajaRQTx0hqTH6n^ zK90FLmyx9P4pSh6u;N|VyPJQRYqxogC}-!2=&2ER-u{S&_QlF}%-=ieiw5r9Qw-pQ zCr!J4rNE!KXhp$(hvQ>nW4R<&jMLi}=N8dKW=0>^cEmgu>{c zBsJhH-*|j`&*j21{$8ItD$VmumG9n2%;*_it|$Jk&V>$GQ3A=G&(}ySw2DI?&RgIwCh?%z4_(+Jba8s! z`YVh`PRg&oGb_lWBbxI^?TfjL*LtT59?I`ti;PH_jKJsyU#-s9@a&@MCK)q3bi|4`+bP>RLRG19n&(Ytq5)QWQRXK_IL>I>`9vDZ7)+LL5I~?gps3t=On{< zAd2U}7k-jIdm{{zprD>Eva)gP=|S*MpD&(OD8}sGO}?&6IQ2?hEG8y;x*L3rUDH(R>_nK|{_dZF3HspOkwyrBTf(`5B6Q_h*MLCkc%mg2rBi`*Dog1yU z5L9#Veh_BqqZP9#mxIrNh|BswsxfxCefB;WzHw@-`??G)eAQ@n@g2-#9|luDv)t_M zJBQNitB+u@Fi&iwkgU&!KSli0B`HT{pV;-9xM6A~q7eI#*;A&TQ&l6D)|m51d;3n- zCe$?rgB^zcTATtm%D)#T1=e5nG@OzOFb|K}EX6{`rMz+%dzI?;WY-bbvgU3I_463@ zOoUG9r|8JT%x7iBH#$(ob>^^$MTctAtVbr^%4aZlYJyxbBoC?9fwd^i7M_K0B(^Ed zTH5;LwxiAt?_M>^F6$x64NF#sdYcY8!L-Aa(p}aaCOw8!dhr=`-bz?=H*^otdR8uF zS-TEIBmABpp*n45*=#>j&1hm-+$i@o_kARvq)W@Ty0%v+w?9PaJAYTms`Cc5;w8hT ziqx;WpRzZS4KSQDDrjo5TKC{7FbrEX(y7;TF$(kM_cwqId7{0#QF6O2=4g|Jb>_bO zs_81TOLdlffe}rlspZ8tbK`pCeou>aIUXn02yCSigs-})ml_Vy_l<9xavRbi#|9Ft zs~l8%#~1Lu%Wvn3V3T&a8On*es0Tfn^+Obe<%#}#kiDdz>kCZF-NC0^!|+8t+L!Bj zdWpJMeMo=J(x_nuh`NTgh5RZrBxP@L#`~kFcY}dy$x%|~N|($a_A$lP4pq7PUOPVS z^FC00x~{ClS?1Dc7mq=YyQyXAs+&8icX@GP#)lf}=ZJZ|Cs)E+HHps`s#aD@QNRw} zpR@FXh`S?u>i4qY2%hL}BVEI?FkX_Rw^nZLltx70sv9i4Ya^80LW#*KOqzF7nHztA zGG(*iGHbgBw$6VV&p8|kr^5!v6D^!e?vJWuC&>%udlaZ{D1_jaPZt*yN`aQwiz#L6 zEed>j$m!Fw;1cST)0F)t=hN|hpTRn|4$HDhXtg|$J6o!xS9T?lV@Mq~L@_dkvOtc+ z>g|*p7CGYBLyhr1;FY_BXK1&qPgPz0Zq=K!YkUQ@3bQnwP;z8ofuF8CL=x}5z!PB$ zmRp`vPT{cpO3bp6?$o$3i6vsywS!WgGm3wbZ+$lGznkHcw@XirD6|$7Gjf(#C7?M3 ze~>c1#b$gPLlPI4#Wre5?QdVaSgCmk%?Qd;|Dth3YvbW2Ot!Zy@AZw*zb-k9JAeLe z=@nd}(mRqJpsSyeqmW3%4z<>2m_o&mRDo4pcPnF0a|%S%4eGh>=8Mz+!=s|5m)V1U zh_xF!L4Am;8ba6CE}a`0C0C#%vR#y*78#3f8TEtS*sjIgh@w>oSs!CJ)kxcapG-k6 zhc!L>CIJPm+ie)>fN$vr8UU8D&N^_TxCSz;*o|8{#^-y-m~vt?^!2wHE~T(TuiI*; zZlpYUAChN2CLR$|Hrw`~wu}XEwe`zPhq&xzO2SP)%RzM6uwf?*lrP=+uj6N2BzFOnE7P#JrOoD~g5NxvlYzNh@+>?(&T{I$j-|ke zE-W0IPiGSxs8U8fcdp~p=*TR8a3K7o=EDU8OSY&JdtATEBn1Yhq%A7UK0JkY7$0p~ z_6l1(JOpza^1+7|8V(tbPjtV*r?ff=9C@7Q(&x?VYdXYUov`?RR;hbD;?H+o<93xg z5MMlVrxV@xlV+9jrbfHEEv>2|dhrgZ_&}(xyVk0U{4fFnOJ6+e1Gx`OCVI|Xk?*Oz zvcqPQSR6Rx97ac}w^0eA`2Xo$F(`Apevl1D-_wIzYc}v1$2Cmswd^ zJGt4N6pncZ<4@k@GuHUxD0|Yz#4;}=HAJ>}$@%MdvazrzA50Re@2|J(i>o_7r)A}Y zOGt@|4|cWi`jmY5zWzGu#1SOt9Pu4Yy{^7S>L`emyFj(hxWm|aa*KDBPJ}XnYi?2GfBVr5 z`Z0ZwC~-@-1-kKfPom3v$TxfL({BdGWkm(@>d7G8G@9bLp)oB!BuaUsFe~E&I}&S^ zKIyz!3fpls@_%2qvXGQi3*tK$mZq|3_3$^njE$ouz8kKu%D?k>BbT+^-c*RA@?W>U z;T(4q9;Kzp{xw_+{qH$*k#pFpxmGV~JbR$-7R0bEZ164gRadE~dEjnl{e zJ1OehZV7?^zVBy@iSVe|@5Ol`l>cYw#ea7i_zd$d=zpZ>&+Fm;N+WQ%Y~{QBHSGVp zU7yRh;^(9}|1ULG#LN@ABV+HcEp{QO;mS|<@0G*D8tNRKnI7Z21322JPrxF6H|lB3 ztzY-sM@CWi$ma*rP>WTok2NU+%T?X751*^oZ2Ti-KYu^EJqE2$IY=oL933`oCx%?m zyILwA@F$XQztr^R=u8s0Sw$L1GxJ5L>)`uBA>9$8rX&B1?YijCQ8e|0uJ%W&agc-u z*uM2hYnG{AJHIS}*JP}M_aNEZtIb$#_9Vb_I{ajEQ9=cd(`h%X#OCY*Gp{P63Ouwt zV^2{i9(uX%ue^&bFZ=v+wlLQMv-X65z%WPWbbgfqLFGd5W17sEi;Gw0Xkrdyo^Iw= zkD8Dn*PG4|$)cIbJ5Bi5=^|k40+lr%eR&pk@hD6y2T^Y&kuo z0l~=|KWvUuGw=9Q^M_bZm=n(9yi%h|*##h`{-o6%hku`Mo>{+=CH=|t$5k>)?=k8! z0>k8a!DQT!g)Ui^)XT3x!P;<|0Ax&cg_Hb{mxW>rb%vcXZ7FyJs;K3*a7J(d@zs$b zq$}RLQSNt|Wo4Oqcg5xb2T^dMYpo-In}4PVv^}8gU4Nb#dBNPyM(}OpX9!=XMC5=j z{cj@P^$}LdL+{d@^?kUI#X_ca^|&o z#q?;HnHzcck5=~~gP8A^!y~dX7knrD*osrFaFC^7c70ke7v+X zZbM`0*vWncn(O!e3BOvyv^>!W|3-c@n-1Zsq`>|Q2PEhxfwT>u6Z>MEL?WA!0UZX)P65Fu~!n1EdVu9R8X5wqsej2skmC^Iuw&@y|fMS}K+? zLf~BSd=Rvog6L>mWm_2v#Ai*6>@kBwMia>z&}qC{+v)tY!@lpMxaid(^!M)1L-+%1 zEr$+r?(mnbHR!9*CBzE~>g$OQqg@cPW>x9WdI5e@pFeJ93~kuO;9|elwkMEE>&`Jl zYv%@XIq7stlCsnAW60^n`q^p3ap7X?HX+)Me(CoSl#=DT*?}2rvV1#R6aS1EIy)_S zn1upcd2GIU;48i*K^v>K#!mXugD9B%<;VCCkX^Dw0c&= zstQwWH^%ssW<*VAR?Fl%0$N!vQaL)RhgfY%kP0)%&6o%W+2wPps+@$YfyGV4VPw$m z9OY?!giQO|TGf#p&CZB<$2T}Gcl}E~kLG<;)Dd!Fow)hDw0Jv2N00~2C)cdP3%%jj zeZ(n4l5Qb|@^*QWkIRVj#oh^0FBvx}F#X-`3*UYYdSrKXX`-toFKw-mhc;H|ja}+c zFk8ML8pRRX4khtqEVQny!zv9eHhgDwOWR`^cBwtVG`HL2nvXdRVaQ52!TZtl^R+z! zFfEoShm}H8ejC>&M=bdTAGX>DLmv^~;YpvHALS&m+Keyppe&7{Y$Ro^Kn{WA*7O}F z_{#XZg~!Yu+9%v}7fc=smY__wxUbx+@K9E*{Fd|kwElc`J5o4Hq2V#gZ4^D$U8P*| zW)s8%4VX)7p{M~f1B>76>VniZhTm2d-@9@;(d`SDcgyLp;%o;vaX(LqKC+UdeM0_q zhv>Xxs)cI*ML1GLhfpo4j+WqiLm#CXyc1E!;BtZ;O`_hwVfZ&rYReG=wZ*ui2w%o+ zLE873n^@aR;$|LbmLWrF%|h%kGYUrJq=14JYYD4Mp2vnHyj!PmRPBA+KjQcz*H3Bu zqrV74-?+_-nj2N15&gNq0P~ntq`#)HALt^{&D6?1*GpAOhfg2_);c@C$htLKnNAPl zO>JDsLIeD6mo`RV*^WG^H#k|aoD(d?LeC8zcnzByS2#{f&ZM!m0AJjzHe7tRsfXUw!g;<4+Du8=)v=UU0!rsnrYZlD z(mX$9KRXnr)zAwuF&(^e)x$&o{KP?74uLnS6>ECAwol_Ib7fLcE%nQi9@wNS@71mII7 zFipgNOO0P=7}Fy$B&}7ehP1tR4_7^H>ON^U7=!u|{g<()p@Qc!+eOkpKL&UcKeY{k z;RNzFeFcAWDgP>rEMw0sy%3y0x zX&qZo63gjC~^vadRmIa!~-n{k+6xD5m8I zke=yBSF2iQ;_n~){kBV$e8pu>-0mK1db*_FK^{Ov4R>I?uNR`_S2>&?)myN}Qp_w$ zc3N^cvyo16EpV=|{m`7TP8r}fWLnls<2{O-sMD)7hu3SWPG$6#E()9Uo>kPVhkoq4vRg}JNVS&Yaeyd@>h9^m=-dRkS!W}W>=2cU4#AMwAAIe&*435pj|Gpj zqCc`dM%PcB!y$8bWQvUN4EONrzrFox?T6~~YHv`?gsJ~22C_rb%_`Px2^Tdk1e1V0 z#13`pn@3R=K{njaC;gK^uWzZU=K>JgWf5yX`XgaCm@!8WInWOH5_@hz1?O`Xv{onU zcp8<%4oA)48d&U=$v$2lKz>}K+TA6sg(T1GLYZ+&;HPHWzP?+d6(BA$3hquLQ@Pb@ zH=pQJi%BWMGH2h*qwZ}rY`bw%KlkO%y(AS@c7fF4;X|lH6?S{WM-wd)l}Zfz&QZpg z-9LL)GOQm*`r|mB>T0su`g%NX;3W}7LEiwSW`91hnm=`8o%V&+F1)hVkZRT?pTV8C z3@exIa2JzBQF>cn9Q(TN2Lb)a#H3=?8Gz0SdC)-22J<#z`}yZJ5~Ec)$VW;QyNd!5 zFcxk~bZ_g*rR^~@=PPm|_}bace^snpMoZa0nBCen;MNK}(i6X=(5+8M4Qpr#;(+IV zlG#wLx99V%@9+|13nY75RzO-^*+@RX7TE3~_+8)O=iX>IURhQ~p2hcSGQ;Y@!JQ*P;AYJ$fqr>f4h0YWnUAi9Wvx_gY7 z!Ja>=Z&A?QC%L-X?Bq7}tGAI>{~l*geon%TM^ky$;Nxen*O)CT|7yYe(0_M_WO?9* zRvr&0u&6#!+)sVonqjam8qWUuJhR1{5wf@T3Vps8*#yo;f^@q&|7(~gVvu}-GrFwv z?aItJEJe_u(*3Z*>F_Qa%CYUW6U;drn0dd+&U>L1KQlTdckL=+er0AO!S7Y>;N|#` zoGd2}oa$xS_-8iD-|+v;I`eOm#0Do%0zs{b?z6XQ^@sG#N|#Prq^`0ybvepyeiz}b zMk)E4W1G;^Gk_!+*sADn&UkEb-T3!69~$P+C-<_>jB#MpG7`L%61^K6+y-U}Qj5%& zy|D|{WIcS6Pkyq~Te#2nQ%b9<+#Ta-ti@&fXT}UM=d2SEQm37C5-pQKC<~%}7qt3$ zKDH=mEkpO8LxH(<_S!FT4|A|}6&adcu5U@y5v>~4Ux`PnTx`0jdcF@$J?u7{@VZON z2^SOH8@{ZxOgX+%C3)){hB^-yi-ujQ6ljOWr)6H9c>NKTv?<6-m`E z*atSo_7|t+za}Ivxr^J3PhQVHLD0(SJ92&Q@~lsm;^i=WZ)bGK&4G%XM7gT+m*#`L zsb(joYlE+!G+H{Ky1e%r`iGRtwSPlzLLE}H zFI_q^H_7>UYmG#@h+OcDaM}>BqGbx(%{nvZ`$YTAC8tXpC5;V-pJnA#HKh~0{7 zVOkYBMCueaIkEeLA=34oznp{7Rs3C5w`o=k8RQhgVOlVsPsQnSz7#q~HFU-b}?6xM~E7+8Fr zoBC3umh8)y+Q>GS>8ugD-WmM9WMDDpEJ3+M(Z^Z7$HDl@oMxO&Thg8E!O8>(`Yvx& z343bW+xzg6n~rJRNnWoY-gdmiAooxj2bNZW&GIDfFaA(!iky4oktm+!tj~MH&?$xL zyCf7R?{p{;-2k2Om$lD2`@;8+ViL(+`DT|shwAyZf}sm}wc~WgB6G+7endvUi&c^` z+!++1M8&xYHwv=geXa=noYgb5rgi0}m5d?MLQR8ph+HM#(IJX{POp|z&py3E@_bso z(%LnHp3m)(=+qE*qVgs(N?oVBBO@{*b%UdU|BTgmEK8_N2Pvi2}T z-w1QWpzTVUg}Fu_ee#)GZ$rUbafp3STfJ*0k{3k}b4qp^eiyJN3pSUlr3ol2W(pAk*Gkdg3^tBSbU*2UIVS3-90U@=5JZoRc)LLp}R(gwRL9{X+v zm$lCg(;Q5cUnylxeaM+kByAoX(i35NVASuwZ@svOl!tdpA-AA*wI~sRt)PANiu>KJ z9|h_B)u3|HQq)uzi}oz1LH0BPiWaY$6y)x-47-SwAG|n~h}>PZA#9OGLQkZ)wTjhu zbkyTs4pZUqj4zy7esb^?OYfHcf;0})+T2Q*F8WcclJ5>dgv4_6uY9qLwtXiXClAU~3k9xPo>t^g)4o`6%URIr`vkP1v_-dwB1cHCj5#?oA;OPBsv zo*+-^OHqjo{cwdR!)`Nb-5HGgsu!<1t^Xw`&rtDBw|YJsO$#uWc4e=kE}3TKeuy&B zjPBxuDg{qg)A0t~6|cRsAt@1p@PM#l=M1SLCF83o&nb?PEu1}~eX%!ne$ui6>Z zAN)3xKU}Ay`P>DSXO_wm)tB2mxoH{d)YjrLKJW2lTelzm&3$OBJodxiS&8VwW}CBz zZHJ#&&h(HrchaV_;hpe#vpiH;TQmJ_-b!9kdRJ2fYCnyV&uPG&lhM*Pc#csrvL|kN zUOda=w*2wlp>s~AtUQpUX>4kx)YO{Yd1_q|8;*W@NEEzUmUFH^_enm=5tux&=UdFcbjI?NaOe}b; zxUQDQ#MazxcXZ_`q-1006q(+t zhft2TvW&NBk6E0CYJ)Ji#=UJ98yg#6331d{9sYp+jEJ2v(bSF>Ck@L#slb?>f4^4k zT~%sy9|-S3T6~5gR~HMdKi79dcavC!I+D}X)$FigK~Dq+iE1&A_T@XzdF?*z zF%s&A7L819=MpUGaXiK->3XQ{gI@p*Xlrnw;6VID; z7=I0(K~L}#JdgN2d);BjQi-Hd_7!_h=c=m@uE`1Rgw z24B^5UcoYvG}QK#R&(SMbRw8Q3*Y59ferSnp)T{Ecu@T@4gnd7Cs28HD>sCo=*>e= z)TR^^w|D@(J|wL5Z8~}L1{+TVgOyBQI^a+Bbrm`|>GWa8Wd5MLi zP<}?8wgY%K*58-wKOu_`hzCEEw(P?iS1!D^Si~`?Eapbv&x`Ut5L92tU-QZDvG|yc z-h5O65e%~zF)-5UWF1_G_MI zeGB~=b#{Ja-7;@!&*170GLNjB;B~45ftsL0gb{8I+~@8djo`1vJ{6&DP3#U_ z?=iK%lCQ6WRCYC5B9j*29Mvs)@wdmu?god2P54|m+R)H&FIrw7)u6{;$?z%Ok)}p6 zHFTSbUH+kpSPVqeowfSTud?vE;TZcc9L7@#FH3roFC&NEw61pTQ_FP?IjXb4zKR@c zwfI|1EGqX&)4LSHdMNfMKE#6f z5sUkXiwm&!^Io=x*oc%q6TX*h*30qGO-T-1Y1Ciu`}5g`p|vLv3*RE^8Z#Kqej~J< zb{RG%EQ?xDEH3m?ARUYPef{>t$rVvJZ3WjPn9+>j}DXRb)zZV~4HJWk|* zC_NH6Pdgq-rn;J=6T+Wey%vrMPMtFBP;^e3;h;aI(if%j`(W!6A#ZDto^R<+GpEO! z-%qVi1`&#cv7tT%VJgn#s!9cWQJB<>!I9$+-3AEjb@FsC?FC;#JyooHEt~OtWN0dm zHJjW!b@2OWXw=3XF4W3S0(6nFzMNWnM6OZo<}W9wj|F%j|~ z^zl8HUY|8Edp|zTIzP!kkq(to?w>v5X^xLQ}}vRc)R|=kP?Cevb0GwRad} zuFc+}knf9u`p&V2!s1fVeoL#ehkh6p1!kV5wUA5lD{1kVhhzlqO926Y@qS{!?3){# zlk*iDbcQdc41r0x+S=oPaO^4(2dT8jDmp172Kv&@=(AI=^}JOM@NkzM`(Pylr_Ce0 z?&qtj-g|HLov<-%hO;s?5=T`Hb&K*W4Y0t!YoNVH<3?zs9BcYuZw;_?C*nUr=PB$Q zsCRLx>?dRsKUN_ap=85>uE7k*XUdhLgyt&Y>Xv6sZPz%|ctR^`9n1xEh-j9uSZ7cKP2vz;WuBr78!9DN_0nZ=w5mh+JasWDN~ zc&x=^YH}dY;!wTfL8CXc=8qHiN~;FEt?r)8u|^uSO~8{ z5Z3Qd=d2rc^;Wvc3qxYHFD#ar_58ldz)Y3yB4zjP7xCF__8VNr5heoRA0jMhvoPO< zD$)`Svl(nlHT&RWR=aTOS^pp-?~o6<2J!9+ZUB-eSNm*6mmWeA6K&Rwh--M?Kw6+u z(O;n!#6Li%STN1wS&!wTFKBme1767V8=EPY#i*!?o9*Pm;v~HfeOyLXig7 z%jC-L@7`yqErI1!Bz!Cwk@4;}rCw!o8M82QHPWR8l#|9w@h;n|hpw}e99=q-a>?Bn zr8f|bo4D1TqGOtFPQbIhnC328>{+1o&iYdqZYmH#_)-O@DdH%r1?41B_;)l8!GZR< zuOi_;t75t^01Ky9Z?Mg8v{+WI4T!5SD3P1 z=gHMBuT5^mavqglr;DxT-nR!PRzFql>S^NGI-p zvB1>^5pdyFPxvYW7ZuT_A1!mZ z(MZS9xF#XCk=z{frIT&<)7Q6@yRzTuH=7o-kv(Z$1Z>=1Sp!%R?bL>>8f5+2o^Suuw)_{5w#?=!i^wJDD?#IpUPZ%yWK>8$9-G#sXAf^BvY|L(9 z4bFKS{YY?=)<<4g;Lnj#EY$HL97%66Zx)JI*p0dT(q85Tls5gkQrca-o_yMR_PbcK z(L1iDj}K^OcT38N#x*YmGcKRFQ4lwEx735zo+HN9_RNT5LyaASZ?ZM6^?R1IQMtGL zu$W&W{=2KX;&6Vy<;B@3x?_Ht{UTk^cj?nk4hgOfG>qh|Mf62<@6I;w`XRIW)&SCT^ruX|8{>%F3WD_MA9Ud`q`@;+`&)%^ z<r#U8K0jFmG(d%uLnBSsMy+=H_r09x+sF=$Ny^JIZQ$ex`yl;{JOr zUcK;y8HF&$Rjpa`&s`OL`Pf##nB)1a|J`ovfxw?Fz5Gw?XVB>L5oYX8`L3-7Y@dcw z0)K6V@0R`juU7`B{rsZsH*XE%XXnj6KSayNM|6t|n^UV~a!LmSTn<;C_|MDAPJ5Ch zK0HdCxRaaG(?))N*s?8PMn6WuMP+|4v8Imkr=nFDR(}7Ylk7QtV-X?tfCnaJ2}1#p zTiC(37?Gz3%S8U&jB#*GhdoAmO~jHGzoqYQ%-NmWr#pfW_HFu}7;jwSyc?>rft*LJ zJFIPRPs9HHjB7ZzysK1utB$Gwk)<3Pmk|HA=C-S{X(C)h5z&JwOyq1te)fk zNY97%$xGQg;#`Wy;Jg^`&|2@6+f}E9s z4!(W_)pcC+d%=OzK?fO-xbTO~H?{A!`byeSR)m4<-@iTK+bgfuWojoW?yg6;PY7Z2 zhfC{aKg1$Q?%J2wp2*m;zQpS@17>@qwEoi}M~ekWd4wUR>RG+K#Wi!;+a-5Sa)f#A zZfeqADdBv0pH{!Qi9{?;P97X^gB}_qsJZe!J1!hsijQ1kpIAKyMWIj!Y}_J2OK$#W zB@LF2R4F#bT(N|Vs`))@%;8euXc>D!fPJ-qq7&+&$fr2^GK+_zNT=KzB<>(XLi>(} z=Y}M1^eqnF0LNS_mA8tg*6Ty>=>JV?0ZWkQf0rOL+NC=8KVP}M4+fuXZHw(wfrtI) zM*Pnx32iMBm;Dw4BW5XYaX3a}ZK^B_ZDq}^tH1w}ZoyLqcsX5_f>g4#w@)dewxR+$ zA3Z$qg9JT?zFaBW@&~F>swgMt*?dy9B>e-!Z^uMTp2T?AffaHG-18iieS$O%y+)rm z^)X06W6FzcUlB5K3@lWiMhxgCe@@IQ%TW^(#m`_Z=SKLPpKF*vnhehE~EsDmjlggx5;b^ud7v# zDIVJ$5G}w$>^bJYF@E^f4AD$eWyT1Q({rx5X8WAezT#z=8`Tz_Au{rC@X7alN#7k8QpD=IrVlE6K)#5+U1_}JqOH4MjGq2u z0PEKUGp@Z=z-O}WPlelKSG?z2Bo%FBP9F;_zf-xj%8i`Cg%8XnOSbcgv}%oDUsdp$^CG*yq>strkq?AzR|djHPVvj8;k#c2z#rz zHoIUCxBX~wDbNy%mf~IPjuWsKfG=^msI6sq}$kh%5Pjm_bfuK$|iKH<72B zx*r$W?xA_1Syg^xK}bouxc?&*EnG3DMS};{o*z7Th9?_w9)^9|BmD5sra}h%Lq0CS z%20EY{GQhZ?)f)B!W;ng?6Q-GD)9l~3a3xK(w1dlfOu>;3UR(#UNJ}CYbD&V$fujY z!B?YH%sTx{K^@a_rMbr-o8UC3ja-|PSYrJd$p=k&TWiw6W?w2QxCP@Vy@r$WBo201 zSP)??%;B0z6 z+x_N#b(d7!&^5m%x~{fK6l)1uKIZ7WY%4D~s*-P)y`-i0WBZhnmqQ0OBz(hjDjA1qR2EYORDB|U7|kfm z^R*wt?aJ9Lq8S}ZE-#?q#F?vaNpP%jtFkIway`tze1ZuDGPVPAg<_5^%Cg%;Z%5A9 z(bNV@R+1xRwWeiEH2)Ft^%bZ2@b_!e@-@Szt|h0huI?KN8kLI5{cCOw6_A#U%o25e z+d1W@&%e-33Xg5dY55UBM!~(`5h$^7D)LTlj7bp@^re>KjYUZC4~2Mp+Y0u9>|=@h zgUI>mOnh#^lYKbV%YVY)XQqogN62wvOtZCm^tI8=FY!GWbYz2Ca%F#AsyoPf^S**W z8);F&m^OI*81PNnoOe`;32lgZnpsMZKdAWEo0}Vktf5KpjXJEAi!r^{EZPX5mJgFt z5|exMU}{KR$tuHGV&x_K(>)jAPq4_3oEm=0zSO5uXm5$Aq`wWiiTQ8o7gVWvawO{d zxN^AVvmx%O@4E3xmYghxmcI;n-BnDM0-F%qAx?`O@VWVDx3LgJ@05NhAi z-yN-QLbiIeMfklbUU#YYo9>rFc`P<|r%zM@=;T&vCQph~2`-bG?}CDYKGIxm)0LDJ zmR3f-Bjzs~`KJheq2j(oem+@fj~+?G-v5z9%xe_DvzG*Npmyi!5w@v{Y74&l{Vw`| zyMrg^M?*^luTDk>f;#qQN570Il6T+f*XWTpOCVj}G?L_-yiL`4gs8`rNBW3D)p?Zq z(tgBdb-X)uBB&WPTQ$IqT!&U3VsRgtF2k&%_8Dsm0OfN)B;(WceZd->WYN*ke6JZy zTXlxM?OlhHNQ>nVHCmvSGOd*sR(dKUf9Mkyfz#D-K-j8?h}9nN{N}|%_Hxtfazf2b zfevKE*j(;_TsQtAqv^QMP$X^(xwXFv~X`ZWni(d z00QOJL=hPtkSLh}iEp<@9mmJtGwLXHc0GRK;Qbla^N|GF6^dH*(hipk_u~glx_ejM zWPHgj&6}Vs+QBh0j?HBQz-j7Z`oS7ieRS9Cb)K19INCDyCYPik#FW z8x-;&)6=0eS-vdHu82Xr0mw%w(QT&EZg)QLT3P$ATHsqlANc?);l;&l*xTsi&OrQq zyO`=`{9mVNH~fT73ksV74#py$@xKs}mDV$(etKsY4g`ScusF;We<1&M;%z zvm=(BsieZ@R*)11ge-${(;5J__C%%U@dOn zNO~x*pDsO$0&m;>``23egKYWX`o#E52LfS=p*@p>aU8Bf8x7dwDIAe2iv#hX$9kzt zmcVpt>isjop1M@%GyZ?e!kazhW99eTQ9Z?rH=sCto0rh53tmYw6DR6WSF_Un zON>yN466= zcN#BVDu`^p7l!7%9cl26%LnSrsjfCZE#jp^DUtFkebGkL-j)8a`Sk(Y*Ic{J(wzI> z09qST-lWCX8GO7gy!zW|`7G2#3U6N%Xr^;r(zaK;^4q5*yf@ovVI$o6UEPu#cQ;zP zSh2|D-cAxQp(!R{#9?u0s}a5L!s*J8Rmn`%JsQnX2&PwA0>-@$3i$b9fV8Ecl=N@} z4(FVhoKp0Wp`jS1{bH~5+eBIkAF;AH`gUFodzOUj4-0!*^b$d5d1O^BTj$>`s)CN& zi~4EYUGqO^*SvLt8s;qntt&lfNGR+qJn_WlooqUGH6>H+iehTIuR=zk19WBipSsb8 zI5er$uO^n4rF1ku(T!J0$WvzptvEp}Kw4m)p$a*-}gvX&dguS#@0KF^T>?DFEulN&ksUL;A zS$6z`w3jQn>!*6v%!p4<=e9a0LfP*xnq_cr+&xzC@uUn!0DD|}%aXYy-v`la``gRB z{*2n!>9Tw(t&%S$9JpL$&4q2rvgA|8L()5YF68p`J~B&tlS|1+9oy} zK7%5^TkA6|^Z$7~whs9^J}0gKRXt5=EeX8ogtc^d@qApZNPeM7?SH2KhhV+|x~OEv zi&lkvkh&)8rET{AE6tDn@uNfU627n=d7GeMl|VJ1bj8?lEX2^`it`8nr^-u<_*wBi zlbu3j1kCBujqG7)@?Jhb6~nfypMqQ9o!;{+?*u2A^T&d~4ancj!iKZ@&S%k}JBmB@ zN8Zhq-xy2$HJ2T&6)|pH?l^UIy@-X7?zQ(IOzf4HW)WLBGp$-DnSehXi!?Xg+mkcP z(x$Q`IX{Koyg^yhcTKFNIfBqRLGjueODWqUum_*Vy2T@2?W~n1DLiJe)V9)& z)}*LX_M&nv1wQ@v-;N}NF-J&Foi6+4Pw9F)JnE+3uect(s;Hj3^G)VbH|aBUn|;+j z{Ez6clHoqSY|v53KT)?oN!YHbOL^m^QLHdy2v;|@17c#>n=*S=WsQg?=U!pDcR)s+;h4Gj`6X$^ zQ0lai$6{+`?&widQKkmNqof~*2zfglTry;WH-+0ye3U;XCHvSK9A=JM_Zkd+?p_s) z`o5P|yk(udXi$wMi)qY2lfurR5@?N1e`R#_F=c(_puEgVPXLt8#$SySQY3oTmBHt6 z#e{2_QeZ*ZyA;P^M$)h9$DKQVQAR(3)B~=2J66Ci*E`?HMnjnGPs3M4wcoh*Ve$gc_`sOO9bU=Q znnJejcfm$R_Jqe50;2Lt27aT&Koqx8!Y0)P4JFkd)cj0h7Pd3g#Hqm~ZRrYp#sD$h zY&Mhwr2b0HA+jjdUXyj#*|?Jj`Ogre@Y7=aS&y5wQtJ?1-G+38S)`jYw#Hkw@6U|P zOJ4K+Cp;!YGMnkr+HDc@D=!(WatDG)zje2Vz2nL=gp<rRY`k6~` zSC=X62DS1KGxyo)+zG3mzL!aOLtGW6-EWRMf6EXfuN@7%i={zZlgq88i>{SjwR3kA z#^{5M^*396`NG+~FdY+T@RXOtO0`0c+jGLYj474_aN;3U%~6NfiYnEbgkbDl?nW0# z506ppFP;01yG#Vtw_;7`UXTSp;VDH5pkG!7-gw@YyglZ_x{FxONC<36cIf|;;y=oN zDx3F`s^m`!{s|-VybEz=odo%}Z<0lO<*Aab55HdLa1SX|RaX9HU_jB6zX|7dQ%)la zE#BNlIi9AWfN;IX)%V7;YNrb?AueJW`*T@^z*Dt3eUk9ME@fUqVlJ;@Kc_8cLUQW@ z^XeAe8Ft)DfZKb_@A|K}Oxts~(1I@CXI*a(Ti}aw3>Djz({>DDNIBKJ6biWuTS~~9 z;aqS#(GN!l6xil{P@e$lNUHvLE7hi2X)&9RwN##ddKOB}!GRgkB~`65YQO|;lWB2A z6K?Gye7pG)XGB+?vXphPJ3rP=DtVZ`F}o(j)dh((O&JV>k?1CLjb_Fnl~$*j8tT&i zrC0^QiQ>i|RFsRJXnG)tj6-lOsS;-{r@mIawk-5)?Kx*ouuHdlveU&1g)76n$v0Uv zu8%6;vv_~n$>MU2DCC8Ntk@4`rn3^Zp@4^Ti$6ui)6mS`^{S~W7tOoL4HlJHCHCrc z)nA-Xj3arQFH}cQ?&JAYhE}FMF=TmxU0e#G|!UEDJ~t z%kV#PN`9)7jwdzzqZAlciiCW)KJ-E6D2tp0s|G}8CgXgt@{)h`RS~mI+oG#Iq?1C;p}pA1Q_9U`-M5>5nI;z3&fHq znT5v+WtHXc$-AH=ZqeB-3PdyE&u#MrZ9K>ao12C0eUzpCMNp84Od_jOrtc3up&NnT z-Ifd`tL(I1gymiuqOuhAa&r2+oQnbycm{93EIv|d(6qHb+6h`W% zfWP9&#AGcZw6EwVA-g_c&Z#Nonc0HF2-&ImDfz#vz?)^BZ9_a&i8NKM64s_aw{jkE zHxM%uf9ig5g-xE5w3_juTZx^@6S52JQZ`@p;o9QPYv*7mI~V$6vR26WFNKoj)J(?R zp~NF}Z{LFW%pQl?q}8&>E*q?O4Zm=~vvGwmhm0vtFAc=9Fjel@+T`UFi_M8v{I#_b zlLXBvUchaNVJg?LbmdHpx@lD+^T*m|YSa=E^%qyJDkRkbDiL6d;~iDq>!s`u-oj#| zUKe-f7Dc%#em~S)GI>l6(wV7n_=Jjw#@!F06?dDvxzO^ciX*br1%lJjD`~`6Nc-b? zr7qfO!nq0767gBQg8-B)ZT724`w#wsM6zUNYgJ3?obm)@E%4+^&JpNH5EfI z=JXQvL_G9r9wJd8fkzxv6Pw+t!b{;nR_kD1OKfVN3W;jC%SIyo1bEPusJG``1d8Y?YFF_U=XKqQj`$oOkL+?t`=8Ku-{~+{H zLefX|X4asnZgO5AFrJ0gXy2qY`MfL1A0fJ=(V>*4jJYwic7c4=zk~VXwIsYpdFk`h z6D7mKgNuP((*|(5?E{TdY?3cuXz7YWr>AM~78I*)^SB1yj@0R*Z`6gcy-Zhkc6C+t z+a;-Z>c|6XIFB_wh{_@jC2R@l!ZBBGU_g~{b#MkWZ zRQ{P6CdA+uMkh*e`rF{xxzL6dBlkSU{p}uo&sKdpW1U{{`+dCLl)Ri1K3}!v^Igb^ zB5<^W5s%kt<4wh{By-KHftDKQhXbfIV`(lYBARlGAkgf^jWYh?e&OHd;&L8Pi4=;j zQr@v(|JvB3)puJ#T}oouF)yZFnoReZj|?p-$vyH%B39zJ7g?T?H)FmB>V(~4mt8*EjOpEIB#XkTU7TF8|x9qyZI4IN`8dT#ygtVT2^o|SROrOG3Cb9G{ zjzIb70?xbDs&%_}#Vqrt*KDZ#4$z6b;#1D{J~p}ZA3qJ?WiW}+W-;lZo8M)_|1C>o z!4%bN-2NKd0AOKmlk=%JEFev3HBCj-$$=_3n5HRnC|g2Hn7OB#*9+MyOKTz%KRW0Z zw=5SfG>B|rUL4V5+-2d7=hAWS(JGi;=lUr>FKDZT$s~(+AZJoDee9PRLFoMY|F}QW z@%P1aep|WS*Y5ix3Gme_OB0k8-SiQ^ZPM8D3`F`=%Zb+nRU*zA6LZdDFI$cq5?x?n*$! zt||7-#<(M2M6Hfnwb43Bug@95nD8SyM$DZWVpeg$!)^Md?eNp`G1=uT`Xu&A0D~p6yew_+FM^cW!${{(YF%PN0vYGRB}# z46odWN7}r{uft@NiEOBBvIA4M(dNa0?;kjr=*)KdiZOnkWUO0NlRJHz&ZJmnb#IED zQA6{&GfcEan+rmAz(PmnS?T#YClU~?rCl<2=@T9|TpV1-WFVO zhQWIm5}RCFYIdE}z5anf#4=1<$!1fvi8Xrg8qpFIs{@vHG$-tUp&|HXy!Ox0&Ru(_ zwNon3$dZ1XtJC-Gm2z@!cdx7!k+2@R1O(KgRHr1>Z)fja91U`|fe)&yYkDSnKDhCa zclsMbII#1{bQ8p?LeAXgdGX#Qh->Pi3tgF2H`I0w43OfGvkI)E@3h5TFgn3OG~B%Y zJ4K*Pe#AiNX;;r^%7(0owhtQ{#i+ZUGAlcspOwysQ<0-t`h6X+uUCwIO{p`O2Ge;e z9&fFr%#PnAmC}~%i1)Tn6;!NvtTOHLDSB|($Sl`;y5rZM^Ps_57WBV{C$(7l?mO}1 zJsA>{qMEWyB4hw_66=Bdhjz*0YbHFF{9SYby?g&?>~GQ8kg| z&)gsJy(t~)mU$V?QN2gJ8VeQfJ=iFNAqYu&kabe%KD(7W;v3L}xCVF)_5wjg2P%^y z*t-gIpbR><3M7!_jWSh5ZHt*gC1(OengSP8-MD+j)GR8hA>FxKc<-|%a4+iP_6aIB z1yuf4f|C^V74S`8nK0iHx3HLkf+?>5#QJNir3|J^-(DHkRdjTdr#t=*fw-#?26Hp+ z_gjfyz?`G!!J3W0b-c`P22p2kQ$5!n7a(T}d^{)Nzd>`ZzZU{RBU|!DsJ}A)J#ldu zPmI69#%{`z%k_{>$zQxuO)v>p9RzHu=R!Y`0RXiB7@kj=)`G&(yT>Pg*W@hF4*vL$opyN}n_EFYE<%dhd_XUwXut?!s#`q4|LT$_bA0gLYUI+X4!i_Pu@V5*ZFQL>hMDfurag~hcQvl(OO88ZbAf7_EQ zDp=Y8PjPmz8~TRg`flrI$nw(-D-%DlxMd_tt=}rLj(PbQQ{y`e(NLM12x7%2yBKv6Yx27ho`{VZK;;I7d0k)W7^84px!FR%PG#Qk!_;|BDS_!h#im0&$t z5hpg0CD1V&T{Et_W3rPNqi(QW^7jK_L6gL0n^$?a8C!OW`Nj}2OI`AZ1JppQrA7u6 z)_nGj>Zp`+1qk(w@>=^Z900%Nap%rHYlr?u8j0*=qjBY>>0RLC23B*w8oonZJqnoK z@;H~GCtby^l13qAp&Vz4Rpa{CZo@D72*tSX6EaR7ocv}{Mt0_0Ab}2y<4D7K11Y>S zIrAfu>|R?kJ6p5@Xl{Hai~z|w&-b9_$^zzn2bd|kG?*vOWWPQ zZ7(OMc+z=l?eHoW9P`_z(0w#!)%BIS+4-C@yXCP67dp&dBusjO7LHUq? z!e+hgPyZ;jxg~d4Szb^i-ODM|TjvG;>9VeQz2`xJ^NA^UtjpNi4|2ZqR_m>`@?a zz3aR9lryv67#@T3ynLSwSR0c57ue#*4J~Gs{Si{JDHh7c zSXxerYE5}P*8a%rmwZ&|0r?bhmX$fiW#dB>x-0M zL##k~S3gz0M6n#x<%YL^O$MuCQz9By6Vyk(ZJUg0k((YR^SD2a(0|XY95+P_G!)MH z3~J4g4t*$3miLZWbO5g3{QL)BNOz+IYsqamEoMUhWGSiVD5DiMvNHeL@l9HRl2Jeo zKfOf?Z<%jI6z-sxEneG9&!N!+;?<$Gx}eJ`)3fnE9SOGwIEi-K*mfhH&ZP^o8{KjugO@Yf-$0Ojb!A&`>25YqQZC0c9DGyH$EDzf=3ZhDZ znO7}7nr9Oo;*X3JFx`K_Gz-%!k0VJ(o4bN9gAcMT7*;R3+wEs6pZlY$xcB^V&POSi z*PvoDh~04s3l(G;z);bs+=gMkkov)(*^nBgyYZFoa3kwlnADL$bUDKF`-G~ftSslQ z#?(#53;S8fo8gta0)EL8fqO}=MD7LB_S^}CPlX>mo-7!&vsW&Ny|3e^n#|0FOJ3en za!$-*-6bU#3yP`Bqyc95^+3gr0&gdW(RGf{5zoXHRVyacd4A;G_I29`?R{_^@|Zv` zKL(uOxcMNN3#AJc>=#)F)}LGZ@J6?Y+H{+L*oEZb%=G}!e%IXLWplyOTMkU?-oI?b zH>^u8&fTi+=ua55^5iTr9&0@|syI|unDF^ERjJUUGiUn}WVo^$V)d{r7H727S~GhzFejD!OsDxzm=3W zj>llb!!Gx;jXuoBf_IccbNh-CBJBILus>sd*T}?fhlW$MF=uH2Ny7})$jS~9U;Z`R zXtVvezGz-KNg;lJJ?8Vm&x;u`zF+*8+d0FrysoR9*J>A@a{;_$sS$`@3b0Emn9Fll z8@~sa6qse@>%E!xdb7%)_xwN=xK9q}ArxR{Yj$0c&~{Q9a%0@#a2TKZ*f6?5zTB3^ zjJBr-j~KghX}emat+pgV7=+v$7k3*^qsVifh^48xX|DTN({li9`!*uEg72qmO_R_p z_yBB6b>W90Sk;aEU12sDDK4`yWKqGtzZn%oJq2>Lj!4_KA)aTy$$W_rdW0zSjZ{@P zY;3eBxjPm>+4Ftz%#0)`&M9EA_jfMK-tv%`aYb5p^bQ9@5J>EB2L6|wFLsd9<9I9Kg2F;C36*Gq@DCI_z$qd$m>%U7f zE+;w$O7$J&z#c8DmWUgZwso^Qui~*mgQ!NwZ8mRs2E=5#X9E5w))xJeVY{B*a2W0T zK+Dg_#LQe><3#;6S6f)4k}peHiC>Wv5z`@KMB3yC4wE_37c zm}=qfgC3(4oYzmv+WN6yEely#+-Q{VpzP4$ z@}g(VmdkEfBf#zQDEc2!P&wcJhN3&%1FsgN$mZbZ5xQu`sNwNJFmUCq<6ooxGBu%b zO<8$W0#fKBr-n&8Ud&amHV8*E}pzdRE39^ndY1QM3xQErkPk9Y)>6jUhd%R zLivdzs;=mLotKmtTbRWhr_AqgJpLe9>`8VB0x+sHg8tLoxFYu%uBc20k z;@S>o8?0&OnOV*6%K$G_?!RE)8*Sv{#qy-)ckg69wHBum$3!29Ef8|eu{mC_KYo(r z5`f>$>eE#7Rqq;q{_FFpH2F_v_`eb2{~uQJ#&d7yrGXk9{m%z)&cScCM>BTH&qsr@ zMdefF_!Qk(GXIM|_J$U%)(|x;(*-7qG}@-7T{6m{vi(Z|ypYRl`v&^oW=ifQ4Qes7 zNZ~HjfldE~KEI?aU)J*i=X!nef^oDjOOah*1XFy-!8JA)?+R|7W4~#f$k1bn=O-5jeNEcM0^}GfDsY zn_ebu@WkU;jvToV&)V&XN{Yq!w!M3PO-jmx9ruhBkX1}i`BJ(u{LaSCZ{&W-_f+EW zhJ48h=MoKVMxOY3$qQl8%kOHgSNaUpD_swPDUoJA%r94X_l=8W6pUWqo$g&TCx7|L z$yzx!ypMr3GIE!|&^RD`f2}^{6 z>$70}NbMe>Ny{Et0P<&IKi`ckrrI%;0`Apym&mY58;I~4fq}RZ?RJBbX+RWz&tH9I z@647K;*fqG!j?y$VlXWEp9F2`Pbuy74rofzNq_QO!PULc`b$9C%}Vj>II>loKIB}FG7JixYTL%RlD@e zdp}nvP~{P*E>D*}s@pkz&;qCpFctl_`bIh_W@A9JpV=0|Ls0R#DLZaU(L@()8ZmEx6-aR>YnKayp&|T^jNGCyym&q<0x8(e|wV5YWBTp zi}kjj<@JMI2?ms}PigLp6+Sa|+((IC-JK*`K2jEOFG%0a6E3@kr`|Z;hYFxxBscJ=@q9jbEN3@=R0oi zV621=%8dyPK`56Xno0PZ&JdvAsSTO;9FSt#Ykd7|0dVbmv1U$lw6-t(S)cB1+lU8qaZ1GI(l>VuB#arnF@qB@iPD;)a<2u{!)fp(M=TDv zV1miCs82 zoSP=hD#&d=wBa0@O8N*AcH$x-=1&e;ExS$k4ek+&sji~GWv~; zit2}*{6}~_=J>qskJaDT?iUkgDXov3G_=^KOV>{w731QF`>%WtXJdr5Ho{t#z>|!q z0}qQgF^W?t$3Eb6@Ad7-rMdv7`gk`JU00og^EEZU^=o0jA2{4!l^1hWl0?0y5+Dn_ z-(a>kZ55{Qkg}y6jv1URKwN3p3X+B$C#LKDS>>B!9`tcLf|o5=nwkT6^vsoK^55wh z{d)syCrk38Kagl+bR1+3L%>s6{l9^kt2ph+QkgVaM)OkVUEA2>`SLC4`dui?cN9ZV zR*U7-?dEve_D7zEH#8Fy%N;+rk4@oMl;*jAU^Lim-2TGy+G47;XD!qTd^nG>Zi&aA znfMZtL!H!%j@8`DGX^KGpVN`%{>}`~h}s-RiEZp7U#^z$puf1n6Vg#do`>PfuI-?W z030>wTy{e+aQQk5bLn{u2UxCIX^D1vN&TNGjsGgX30{9WixjAukJoSSkG6gSd%yVf zIv2pM-&{Yf;cn>^{LXnDLTYr=;r86!Uo1E4w1Rq``S7;g?+9s&Ikm4<=^?IFO5hK2 zJH~}&3mfsX(@WL6-i`j?=L0-ee1`)u->cf?^XWpT6ppQrzE>G`CueIJfl^)^=ev4m zV@jq~`W>H_p8NFN4GxG@Q>O|}))*^u*Iz6eE7;a=nUQ&U>JRjx%dLLh_F{<`>p$Mk zV@v5I2_|O6M`6N#9OP9VjHOC)Z1e_pW$YhH`KjiysB> z55&Vv?+EUbbK^}$bMhs&J`dk_dk!l|I{NnZ4bR2HJCi)a2FczFlx@f zK8}~P!s%sB!xBv84^x*J$|cKdw8fzRt626W4l5tH1??~8_=@%=@0nFvI7 zgQn=sgEt-hM7=$5Calg8uonEkfA=DS{%0wRZPHWXkZ~UMFG#xl8J8Gd*ub26a1{*FC9tuF7+3^H^Guujca@@$JIxl4+_A)Ba&LOV{Dm@*P(2J+uqV^IYD( zf4&elL~KT!e8{f;_{7@u>bZPVJ@GjD>+pi1!Bgc>$;YA|hja0#r;99Q^_bHW^5=ejtFqz)xZk&h>i=5$OL5w@pMu(e#OGW!3z*1AE%Zxt|AOY@ zOM}<^61pHrI`ZPslk1t;FCXY!9*qTiDXu2PO5LwWwWjtn+)1cuZyZmSMLfO;T3GpvDMEa|g8s9m)cREcm#D^U%(vQoiBg2Z$_CrO^~ znH@_UKWPpxLiQxp8%Y7 z>81u$`IeVN2^h4k3Ep=)v9IgwbhOXVV%#4lNt#uCBu)AWyUfHMA06k>(Z4qX;;0U`)V+)k9}2VQ z+8)mg;7xCpo}9uu7A~M#CDBqCbi8y?2B(TtrST*YAt%*_AmXh5$&lx*+y8WxGXQtN zHpBR^_SFXrDUdLt`$7uPr$s%YPU% zd-pXHO|vtl0dk#Z!HEV$Ekx|q9Q8EyqUClLJ4HiOf4Cw`gckYLQ(>NK0b(+&c51qp z%H9<3<9)2OU=IA;z5|dcx1xL&h25X-RFHk4ym9ld(ibkDs0vklB(&Q2dnF~48C}#c zFffKkMyfH!)Cw+RiScDXrqs|>$=~V2Y#K{Ow%)SEUBre4w&4R>N-P=;6B>j+#f+<6 zpS~i&fnX{c_N)$xY3He5@3;PB)-%qw%?GYr7=EqW7ZdZVbbP2n&o=J29KUF=XX8%3 z>E!0*I-T__WRT+wtkJb{#1D%c`6j5H(93WMEi2uoN`1nvq4Y+TR(W>aJQg?>(U**{ z{Vh7_lJX7*pbGES$)#X~2QzBO1r_9@>H&Ei6VN@KG=J16ss($u2WJj#J2-@!N>AN? zl@+XO@E^iTniaOioA<#lDy__|u-#FXOP=s1^YCCRuD^>3<4^q0L$sS&`sAsySQe{u zko!j}u{u-f0#6m()?DJ=bFtf#Y^}iq1eLff-r4@C z8;_=vFWL`;c@(^#T(?8zv3L6hO2tQR^4Obu)7y=EWHGviHp%xvGjCYq)>wj*pJ2o^ zBp*j5hwMO`I}7TH=3F$i5IZ(7a$YU_VEugo(2(Xf)3mP#W=-;O($wDph`9Dlh2NE9 zUU08^xwF*r5aFi8DdzQA5RB*s>onYjz~9-L4eY8FvT<^DkHaBYMtY`jQ}SRTyw=k= z4E*O?Ga7RACYIRtUy^OyQ5$2G3Z0Z-H`#G5+@WZ#^*Qq$F;(sNk~)BD>q?CJI}PPD zgOT66{HXG*zncY<#NrFqREyKDZqImm9q6&C_XZHkNa}?iHLh2Nk?8@U(I@(oWdqjS z5e4Aq=rN+~W-79H8^)WHe7`E@i#>@%D>%6Gw2X~bX@5E;Y)+)N{f^xVbY35ycGjjP zXhsoo=->SAaHu-t{;tpS4fIw+xWx&?$gW2?m>8>xMp`qxPWuYvO zdx4_E8M_s}=wYpD;`UIg!71{5K9m3x4lOr$P!pY>VtGcNZ0;v*J6zWXy|>mGBPssa zsTf^+Ew(InLYFj>S}ph|S4?)(EH6di_wPnSJnYR^dAEop$Ir9c$v(ltIR!UDlB@Nn z9m~8w^OEoOO(>M|>JxVX?0ytZAXD~@fatAA;xMuDC%(j*_umgO)d4;aO&x>U$hOBZ z(qqv2My!P=`$oE{O2p|&VRR;$Ns-@;GV}eIyJvpZEb_dm)rV3?*<=9$Q{%3DaZ&LA zLpO>f#I)jPriQgEyE!n#q{!K5OB>}5w$+#U^NHI(dUPX$&5C#Zqv-c+(tR4=&bq^B zc+t!;mrq^>Y1g&iEelIZ3&x#x>T7L$rIVYn_CDu6>__P!cA-8uvg^h3H~S;M>kRDl zz}WMJumRH$67X%&a4plt`$@pj=Ui+SDYDH+o?eGxiqL*1+XHRh1ZtE3$QX948E+;} zL#CQ={`;=OJYHMO>~Df7cbOOjBylWHw#= zxJHR3&$r;^vu^`&5A2gqUt&X|h=@9dc~!j-3|8M~pa#uKP9s~=GA;un5APg?7Y-}S`>;XSrqhgej&!;}M)Doz zKJ#9FCRb%v<%Q&e#t*eNvFi>&cl1CD$R=#3DUnuB=X1w>(w{?|rFmIY zH}}GRCOG4(>=g!=?BCEsf=9XW&Cf#<0Q_*2+ zr2BAvI8+ruPq~?nLbk118Q9^o>UHZL&r_aH@7~79&{ph$uRHfV?@rUsH0^<*r6ZrJVb$#(lQ;4=s^1B$98Wf z-^X756MJ*^ol#BVM8p+-O1hld^Q+s@*5uZ{C`PHdX^gUr2F&A!(j-}JIn@)_%g@#J zJDd1Bbif8i95+1l5M7~N8Xlonw6uCGn&4Kj3y{7~5C^z+mWGOGj;-}zuH&4UtgtrI z#4ywMlxg(UL1+Et;&D<-#5u?9&F(}_Ep}x2ZY|>P#q^qoJ}&>F^UpxdcE>Uc^Cs=1 zYk2Itm7hx8)D?BK2NpRk)d5S1=%Z4>Y9)|(jd~a7-60rk%diugeu^ric|~m!NYqCA z@qA*C196)elw5W7gX=?pNxtb1$C)Vas=uGDmXftK zQ?tZ}yi{i6VFKDXmQB^%^nG-P!bxW?H4QbtO%e$o@XUA_)E%)1k~3;l-KLlC?&=A- zXrY*|D~O59d$$1nO*e9FHpfj&q;u(_ve`x_Oz{qIj4G?`+~+@CA~5Q4Xu3zckJita z)0_)@nP;e4$$fHIR9KOp^mE$rv-cujlD6lF2jZIi&waA(| zDDZ+9y54%C9LqLOCmQrfu_{rX$>!_O?`x~h@jAQ@@t@MfLdx@E*-8?A3Q+}OHLGTg zV{)#-9MF^=R=tL=+qBP#cFMaPSEV&cg?ihl`J3}Jnc>-jH*~o)6%;uz;O%2LAIuvs z1Zl8-(tD<@(|D+~95Lmo1vbHYlxz54#40@GVKrD!=`X#MG4a)K#kk$SF}lM=HvvUG3S@$ha>;WdRTFpr-l~=9?3O^b ziBb)(PS*BI``cBQ7}p)4a}7_St{}fg9(*$2gqXglJ^@{~BjIt~$cYw<1JxLXRI>CW z=&*c5hZ8myX~MukDhJjKd%h^oc*t@uPm0HtWxNZQd!ybJ1%Awq|MfVt9a|45qXJ%y zNxub$i~Wbh6;2bT+O> zw*FX*(%*Kgg{Z=Ec3Z1)ep|2vYZO?0hz$Nzz??j=p|Gb*3A1D=^r$kK5@J~_zO+<8 z`9&l5k>7=4{+i5S3Vu!4u1ycG#~*ELXk0M1C@LQ1x@M-)S7mWW zXj(o$l*24Xc=<$!**SQD?-j~D_oq-Tsm5;G)Kn>D&^JkZQKY&Od+eo~1&(2!KUdO&R6brxyy;IA)*`GX!A(o#)pz>Gy zPv9rjJde8)DBK0I5g!zhrIvG=8q|1lDhXX8^QSvqP~J<|X!Z27In6o^2Qp&_nQUnS zE9~@S+>pHhie{(1kAx{i232l?@j?%Q3ZuJ-f%;SINY7oQ^x8`>2s9Bq0SA0+AGw#6 zriGEcI3h1**cNg+mTG`i&yO=i&p++oxr(FA_9M9tmZ~!!xpCEb-s{)szfM!k_(S~( zoi#U#X?eZ8e5H_=Y$bG`TK3#~wsAsozC}y}yw?{NkTa+Y3?7IBznQ|$#HKq(Scte< z0X9!<3DfPx1zmPna18otxRTw)aaZkn!yS&RIwk1AmPT`}kMD~|7CEQBS;Y6`pU#E5j ziYZ+ho9h37-El^Hp1-P^_^{Z8a#Sb@|uM3Qf$>p7!7+aHAw~WOJOQ|G#5H)6dnoAC~W?oo1?@xhY)Z;Z?I56w8tNLre6(jSJ|ap*}+QUolpp>;GZR) zwKZbqj}iza&F~GN(bTO_p++(|M1QEHJkfZ|q{d@ZJpH1>t2f0&e(A{TQe1{!#7D`- zFlNLfl{g%YU1y-X8M!+_eR4{pejr^P2)@6yzB`F{ zd%WmDqSru}`~9)Hiak*NC8 zbd#obgW}a&=J!HtXZvR*?opM7)r4{%Ty=mBfA}wDUlo)2EzT(F2NbpdTyT$_Ay{4t z_2u32*LGWwK8eG(i6o7JWe8hY{W^BvK5fi@A|Uvusw9|@$En$<*iSfDWqJ{ECAJdq zzSL^#O%_mRE@}zYH z%EGt;I2eaNVQls$c-^WstA5@Zk{hYYNvlWPRypUFSksZA!tw1cJs|Vr!rJn zY6da=0EAeiaoaRnlbGu^B=e-}g##aAn9aRUt86s=ac$^4e|pCqCl3VNd+fUovL9O0 z6KyD|@qo*?JwJWp8^GtFu3R(68BK&M)+`-V3r(D7PJPDRUL|*SMt$AI$m*mE%mxY{ z9>y04-x94VkMzo7T!8*K2%yKGJV(y;PF<+MABt;d2@;fg<>qmQcCy)i_aS9h8+=F3 zW|arhBK=1GgZ5QHQX_kCTB~=`f*5O{;l_{6rdZN``Y}fJ zsYBkU(tm%qIKY*ZXv2==dTNcX0_3q+?5UrDP21^1c5?#MqIIJ?voSwiP{f25KZ!H& zHz5jS7ox}`)K7R7xJ>XAU*P$cGajuMO78PGNXv1hyHYXT{33c6H~pCQL43LBkfD+b zx^BAJ`cc#?Av!rTqY-`O8-9w2p>AN&n9s$p$L$;;q1iAkT3?D)E4z07!&OpW8=bT( zv2@_TJ*dW6N+OKKx)=H_pR>NGhWKP6mNan#w_BOcV87i0Nbzbj$0|F-JQE%Pj$UNl%KknK4 zlqOZLH{eLQMOYz)2juIAoT6(27bvJH;U3t%i@D?Eziw8FbA0iSQy&7}#NJqr8E=)5@u{F2rJ2 zk;tI&aw)I6BNsE-fEvI!W;XvF{SmJsf?U~B_P&8Mz^=q!tPsLC3f%UD^y05N)cS5X z$>oNnRu~}jfOe7~?SRWIxsuuNfv;RXL)4I5!-I%Su2tpZt`Mf0y>IwwE=((lL3tEQ^`UycJ%g1_|)`0eo&eP|~mHB+r z-v}nPx46&ve!yDcT4uwE>TyYNHr|7OwseztfWyYr2MbA>nFrz%H-CFVPfi9CvV}oW zdU7^9;>n{6$SKg_Fyyi6x2my>;cUjIGRZXv<_{R*jUkitL(*nvLq6HWfm}H^l`rs9 zQ^2`fwzM%IYeLhNi^OKWd4S$W`**WsvZTC1vCQ4mc#To#hno{)k-T$DV4jEgPXU6? z57M*tThAuLXbRu40K#vT?i{m$|mS6PVr1%4gd>dApgYnYmBcc279K1u>B5Su?IiQ{n zXm&m28K_E|i^H6hccr~)(eWDAe#!b`@(;a=Xtu{qz{tvLqXv(NY2P0%H3@8v=(LC5 zm_#*!TJ6*Tzc^L;H;#^!8N;#$;nxDM|HLi%w{c%BH(VY!Dej;_}h@v&upE# zLQb)IcfrGfu3TA)x#Ll)d!xww4>r2wUwcwJPo#9|=Y1yfRw#)xcqxU?tf+y=opYq> z&_I+Mv0I`1Ktf9nAJ;U>LHu<{K2P0@(ZtN8YTT%^Ka=0=nONmer{F2C=|zri1-&mF z;l8oZJ|}$7q6|7;6_~@K3R{*w5S=t&Sf5zu-w)S62>8|z{aIABX*np6i$lSsVbk0t zfaSA8&YWwGre4B*k*2nZU$RXGJAE{cnXMbU$ms;yIVF#fNJqn~ZRnO0p2?A%Xqp$# zzRqEd*2zL&@xu-JOd*QMZ_m$&SrLq5{_y zKA3!h+3dGvh&U5h_q!T(4~l_WGL8N$8cYkG3QY>McWT?j1Ux=$hn?>TZhFZ{dFx2j zG^I`4m(aixB=UsZN>%anxC+P*Ms@~gwv?m>aScAJ!HVV4x8(*^ z$@L0Y8o$xqpUwte2j$F@qWkwM6KGkYZf8og>Q}T)Ud%rp5ZW7bRf1lCuIp+ zzKMHS4^w0`{Yx%?MX5(0?fVFxqy0US?z2vjDCIkAA3KWO8QzVC5(~#jKhcKitjkP~ zmB?AkjkH;m%?SI$w@*#d+&h7}XmADa^1eX(rOc@O#Zy8}g)(lQzoRyfBQPV{mk2#i zoCG)P6mGFo`(Uol`%f)Pd-q^f#E{nRORPd~Do}nVkx$QZb(;$1u*Ok!gjUX5E4pHA zT_?BXS|^y{&8&@PEjm3c)9UG4qi$<-x0{S+$i(58@?NB}DJ?s>N98o}#WYsfPs$Pg z95kJpNLJa!KH7zOY#nlpjDJ2IdD9rZx6t~z!L`YHk6gRX+h7b8cz<`bu{mqs zZh$#}zZulae(oYqP)R{HCuKPmLm)9`2+bcDt?N>_(#T-alUq>m^2A{@2F$qI{YKjr zoD2LIF9KQbhZEAn6UrZEuat#!?cdu^-T#f0_ZUQ{zU!eC$D zor5MXsxP^(z3~n+yksC*s|Ojr0%=dn3XATKeoK947jcJf>w61D7ZHV>bbc~r-8{AiUj537*@s9&>b3zs5HDBO1CTpEKJ zXIhX$GHg4%`Pet($8kP`WMLY&sHHNdD%k4Z-p7~ahLQ+e z-&jc-e*Qk4EC!Sz(Q&`a&VWZb=RQ)ww5R7S0YRhVYOUYgSE>nw`Iq4X;>^d6lOF-3 z@(32*T-nG-{w#&okK62UH^TDdtDQC%9kpY9I`-sTn3t*LgNG2wYH#{N$Nj&2;u+^) z1L1=a@#6WaCcu11#9Q|IOwp545F&-f~03Qt|cq^adI?J)#CIejmKXZ?m9- zNGwC#<>)F?a2wR|Z3wN_A9yy42MYB0UcEZUCm}}RKUtKB8n$?67nND#UV?QzAaOch z9Qlf6zBW`i)6EL_{LP2?5kAJo*N!2FxM0l8-+IDZJ=%YouHKeE9ROm2T!^!J+nqfp zf`CJoGN0YO(lmYi#vml?dVte_k+7hJ!*o8P#A|L8^itmM?hJZ-N?Sxi`>j~`QwvY> z`}c(hziIK}LbKX-UIM1u)jrhb)n`5_awB5>+w%iBSZtG42ys<8vLJI9*c(Wh^Pl@p z&Y|VgFZ)Hf;iPis@Ry*_7awM3*hR3nOAk>aeq+Hvox`a&Iry}rczleZF$TbX{aX2( zG!QpkldKCJ6soO16C-9Q8`+cJSBa&CfQ(08>0!?+wwa;UEYe?gRhs5tS{bZi##MWs zXUx3wHkytK6ews$^+ya%k=%2|*H(h44UBR9u^?62l|+W589786$Dp@`ErT~9WIm0? zI+X^GQte%m#2woD05ERCd66JdeDj_sAI>j+z4X)|@vy_FTAFE9Y<&E;6qHv>l*TxO zTsmzaMUh{$k52M{&pp8tc!!u0k)Xo5Mp86ua%F`OMCHeDD9UL6jioCARAQv-$c*^& zuBF|N_(pjeJUD;#(zcN^KN>naqxVYyUH|5)cs9s-KXHc|cA9PjNfbZo zQcp%7yKvCri@u=IUZRQ!%}WtlH>|-63I692P1gr$(X+{Ap%ds!KEHD)5|i#G>iL^pc>k^-#ZA`u%* zxY+8Zq6eOlY_QmVor1cl*PgVUm|HZxj+O^)&a14`o=zdJtNRnC(%WURcKz~qFk7Yy zc3!q*$u_YYYze8*T_CGp(PxeDaBAQYpK>i=SrnmyUW6H^SHaoCQt5l7zoX4&WbS07 z!KA1VT7o7xlwedJjtObDYDPI_DI2xU(3FO>siZ`cezvxsoV<4A|}4chwu5IN;( z=)#y)ti+|-Zx`gVKE~{?2HpTQ*SL3o4UI;dD}@+K@373^?>zixFrHS~O_!sC!m8%8fK9JGkuHp}!LV%Q;jLO$ zNS1V4eOCxGM&A6h@|jgH5V}mETt$dN&x<)QcPaSix{PYh;vEua?Exj?Kk-Z_XpLZ~ zt*k&*skZlrvix@7-)lLtG;JNpe-G91oC_9an3|K?xJoXd#~T!L`1zKwC=J zjF_1&%0rh1NJ_!f6B#q)$BT20%7Q4~2%p9SDXou?>(E$kvjpv>=h@ok;Kzi9ZRS2? z^-}ZcAJj>IiUk%-W)3X-saMBMTe9isTM+eqJoNWJK=pJyY%`LwXFW{Hh8YY}7Y(_y zpXJhd954o6_39xFlv9z+jfe2TJlT->1~0b4#jr#ILJ~3q->?glKX?n;Zhs|>0#3O* z!2|tte=B29rs~>PxA}b$_ zEl;<7VN@#XJUL*!$zeO^vKduUQX(9lMNCS&d@H7(W^;={c80P@ktkNKrkVlZ}e z#^f2SKdM~PP|U8=Rnrc!YV(R$977uO5*77GLE>r3`jl~LusgQ+ z&nW5g(skt=UccV>!rS046fq>qW0uSRnuDTSXX1k2Amrr(XGPh4e20aT0$B%;rYnmY z3ISkJo^&_%KceyNh0t2$IA-T|mr2P*hb8+tlS7q^hDAeb6*1mn%)d$}_F;F@-E;W! zJPS2b1-=fvctA=e#MLQ2pdtApveB#qjQS&<$`xO2wO?#|*|$D1wxAJ>RBC)&zZDr^ zn~leGE=mo_**SblzM@rvcQ~MhYr4(1J?KSSX(0ll;}T_KzA3hyKY(2gzq7!$h5L{9 zI|{=ce!XFWNPJig@g=L90rrn7cP0m8o&hc1DtAV=?wUYwLt@Z+ZLpC}dKnk&+x~`i zsv$*P$V7-+(@BqM=V%DdqHk^-yOO8&FbmL6fTH3I9{|{CieV*CkhU`c& zZ}YG58RhSnJCg|+**%dE;~bSb<2u}L7k|-_9({ZA-k}4{4^~5hyF;H>Rh`Xh(Krp- zUu?~0xfZrH7mjEnrW3A+O>9Xy0s~C`ilEKUSWzCe=w?FwKIJ%)b>lkt%u74o_A>aH|6+RiiD z51h6-x(y10;ClwA5R~|u2axD13!#fL=9#L><^Sw<*=*QW9L+F{wxV;dF6RSk2B&8M zX<@%te?DB5%YCP)^SHxR`Q(;F0DBu~i}M&yQuERe46<<4`EF0R#;~bVU-YxwxKDYU z;F%VFlb&&ZigJ}KceCnbI2LK_L$U_S2P8;XUfxf3n>u{-SSulHv+8Dfb=B_0hTeO# zPse)_m(WOgYr`+WrlHb&?(4l*@EY4I#ar=}(Ta<2dRnbM#y4n3BgmkJ=_j$)k)@c3 zu&f~b2b_E(91ib^F&^3o#31}eLPGya~S)? z^{m?|8E&p2(D2S#5f5m6J_pE6zcP7_t!$qe>aZca?I z{1b!!}IzdGo|MKEEn$_q2yz{2DNm?z?8Q* z5&`{i0y*wfR)w+)ZNFa=Bh9NMknhGn9O;tK4tVeUp5&9>CgUqp)9RAioB7RovLJJn zLVXw>E^=bKl0){IK4}AyCF~*s$6un#K3RScvX7A4-RQ!svr0Q8WPiQ7qP3UhDeq{D zOzM*J2NR;w$Xb0j5C6re9p%M$Rq(NL-Ffi0su(zve*kz? zWYxu}!v-?pQLmeq-#S!W=x&(zY&-i1j_M9RCFaZ6%M$e#Q*}qah%&DADkor5i;{3c zNT!3@e*KPwM>KW&n4T@l!`Wdetgj zx$;n>%23OC)6r(XqgLT`mu6X{S2NGkh-|^1>ZdV}sdh8=gc470#`LLy{CN zv1}w&CV%G%)d-%oWn@4-I7}n@YGs`8$4lLT7@AT&C@9JwMe7WOU z8m1@Ug@-n>FYFBb?WE@0&8!t*`n5IGf-W`X=9d;0*4L$bviqJ z9QM+>JD(|p40uf&GN$_ZN0_n(rSQY#4PgETREJ;nY^1ZFdphvTs~lJzS(M@(;}7sx zbcfCQCPB*(zi}#F>k4}L^tu*UdAw3+^@1*)LF!|=I+tW!Ez5Qa74^dHR|CFW>h8V` zo|=Zt(2WE;(@!1cS@ue}qhZruc)K+{_U%H8=&5~3o!x%;PoC>kY-PM1#!ti2vuJ-6 zTd=OXLAN^^n|iH~j+7F|G)w?py4L{s|MZ!P|F~U#R#C(%@3j z-e!Z^>@P)?LJmv~t)R7B%HT(bBs`0Kugj>2Z(?0Q^%-_t#^%ig;ukG2b2t8#AaDlnM-UE=Gg)*Ni=K)X)g1#Jjn^w=O=qJ2 zUghH@(6yx=xfIpwg+tNc93%g&FDHjup;WSi0-&I@G^K4Kr)w|MQ&zNj>S|jtZG2JP z{Hi?bBc`pAIbRuVfsf-e<x*sXxG31ZusM&x_v>oACMimK(Y(Wj^UKH6pH0foDx1%)ZyJf>{MA8Q3U2XL zGo#af2W>bZC#Xd{u*vjBj+|us%f67-^BRB%ql2l7tx;yRNUsy3I z&#o&wsv-pJj<+R#Fa2Zcbn~OtX->u21mECmb0QzhpwF`T5+mfI>c_J*(dBZKxc|^~oW%=&C(qkAfcr|e;?jw?YpCXd|77k@c{_S2^Vou|U;TE;$s%e)p> zXQP1JqD8dpLQu$_GK9GcW2hVSg_tmnd}Gamcz9DYQ#^;Yhc3Sw)GF zr(>6c54Pu_m|3;d03!=huS{Dj{0r6#PM{VG_?vabWE&FnX@tnJ=ozT*z7G>WCA8XS z+l0PgY6+QJcIfVSR0DEp;{42!QM0G=h=MsMGuSM#Uanm1iZ?}BdqZOZ=fDsXpS;|B zE`W2iII~}_J?I~je|w&`5i}flVDYy=K~8~DaxM}98y^yjon@lNlqJfHaDayTMO=?4 zZw%b1Ah3s|@?GUSx0f*atKoL}rCVi7$3)c%eoh^tQwcJg`nYZN#wGe6BT<4O23m{7 zxOOb@%BrLCJPhQwy3{V$V-EP9wCr2Y?|YXp`sh%qov$G^BTWxErKB_$zA-f3(ArtR z^O=I&!PfiWc|$|Pltkm!HE>2R@}g2%gVSBWZkW!~HX|#(>m~~3sjHE6$BuJcM*o+- zRX1z+)E2p?%4^h~?QZH{hhF2lv2{%i)FlU^EL)4IHe4lzbeu*|)4 zel;5)z<0{RwD|l3w9XM+%gZxc=REAM#c0+?(xCO8p&z~;66?8DT+SMYBrFz=Sa)cw zv>c4?2@$%`*M4z2d?Fshm$mz>ol zoMETaF=17NKdRD}?T47-|BlKTT`SQN*2vU9t|CGPI0fer=!K(?3zda7CdV}_nqx9g z%H10W3y6(7M=fX15{v24Y&>Zv-eTpm?(dVLQsxf62WiG*%i{!*e%~T@scOA@9MVT} zVbLN&Ft3v2`1JU|70@Vp1fL1LjDLt8$*B?wif0RgF#*Otd^>B58Zw7`J{xr4fo_Ss z@IU23q|5TKCvIRRELP3}pfv~0_!JWG%GAZ#uu)$BmhI~?CNgSzH6C zYa^~+$^3!;BbKnfE&TyOU-Lk&mi5nbiC@mSlOD=k{XQ{i0xw1!y36HSzwSzNgg+4? z!nT`fo!LWI2Gr)I(zT&U)~5;6&Fs@oyV2NTfRS4s6vDP^-04dh--!5LHKi(M-&Ha1 z{?-~uOXWn(NobE`B#%o2maxLV&67LSIIKF%xXX0MM!I@&y+@_l4_6@h;U`7huxN7* zAhoXOHu2c^edx{rxlyYZ%dX*J*X0&F5e`B9E}zgR06reNE&{tScvQ1CnM~baC7o{! zGW_$@3l|2|@GR7YA*F=RYX7=&Z?QeTXQo5H!TFyTe1ttDY*;JoJRT}X@@Sgp?tpc~ zPBz7XUw4PcRMOXpPb8putay*`Vf$IG$l}OQkh*b`2aONaKC7f*n8UZ|RvXer0g*|6 zp;G^}CK4LM_?*|j6uCP7lw-oES$<~{(eDh=%+CCyODhDMLkb~0M8my$v7ij3r zhENUM;?H{&s!_LSEmx5#* zA=S)-Lp}*#+~0q=!E^^r!M(@2LW+s1I!>N43DoQFfHVUc=Z3;d(1r@u_Td!Z-9UTr zfEbloeMI3jx5dq-e9(DcM$qj%Rc7mO+Mh1iZ>4$4Nu=>j7op7ALOkTOn`a1a^(iaz z@n@>ky6?BoW<~@Vy$vgB?LJT$6{qf(e5pF;|K-2D+7cp@3~9s1;pg~p)On;tUYbJi ztFhCml@>qRc#Wwe$4^_4FrmI%7cHSN^QeIWZ6nv5;*onLA3SR~-pcC;jhXa<2M#|j znK7{OyI%RWqo?=Y1x09HTFB8h0OKXff}QbNzs+5-%imrx1zopL1s=1VHMK~|-0j6D zS*71Rxl}@LVexT{5bVsXte7AEiHSxje9?oM&|^9O9j(HiM75?K?fE7AY-g zde<&)M+8vtfc2T2=#|ik6+P9s#^sd5o9~a4TJgzKqZn8F4&}PpLFoEZN5Ml5?b^Um z8lvRRIWN*@3V%z5TfHXZJRK{!e4}@J~%*sxtL60a=gINvhtuCKbV$Lx{=%6QMpg1 zL1PzG)gh?26$SBSxbd9f6h}yP_%N>=){ZY6v|VBjC^hr7UjH&3=xCnU_n|VXjFplk zOih_CiO^zWwJ;XOUbzS1b3Y}L{X#rN=G^jmezy|5pZ!K>FXGdCMg$=tqm>r)mT>UhVW>9~2 zyfKtrt=UB4t&KjAQQp5Cov@M)dC^u-WszAvaAG}NA0$a){y8o$$-qP!FFBp|RkDWT z=c3!4j$%-MHjKIH%+RXFn?7fu%HJ`+=x`Nztb{G%^6hF9qEIuY2yqdvYM07;C$04z z@gxehOT*HInH|Xx37n%99?CZ^kaScphv zI6T{QyW{$FhdK4o)4iZ*mEB!BRrpuC=G7i?ilu#rW@5eHq8;+We{8A%H5F`&tQ@W< zEi1JgpVf4AMQCB>|9PG#FUzE#3R7blD3oLUG-)TQ>WhimaMJM^9($g|D3CG6o2aJcfiWv_KREbq&$P^zDAEw+PBgElnqTg^EKOe`;965_Wq+sX401! z3^^sRsBO?7lnWPg$UsXV-H;7Ez{+WB8V&7C^Uz$Z30(E%)KzP_74Yl{R^6iSj>q6# zw?+s_&zdZ%@EZk-yq0w0ob+RuCCF}1m_^sSJM->H`*L!3b-vo3eAVJoY?1Mp&Y-n# z>;___+0{fdq0RNFtyB8qQ+yMl@Ys7xaXx>T*)8Xz$6PZmybwi zqid?Y>EXEC&<-DB5ivU*eA)37J`o0}x0RiQw)dC5Yn+-;IO?xSFzX<-6=Bh0GVgJX zxO^tis#-hOTj9sP#aNlY47nm}1b%#*2w6=iK1N+?(n|;ZOu-AGIosor6s`BU?N#d^ zwdmur6&cd5SV_$2w;|Kh_|QQH>S(;mUIONMCuGP$SyuU+TlwX;Jd*6-pzvN#5M$3y zL%DH_Hyh9FexF23dg~)o%HeFBG`kHDx^~YrU2}615c1xip_#sCMl9q>6}4O0q;~7s zg9FUDz@^hM?Mx|JC%PfT+?T3dDy|yQo=HQPUKg~AN2v+yUFory3V5R)h0kG07Gv9)`PxXg7slklC!m&P-<^g(YFDBR&6!^4%`C3S}X z&Tsv1GSW(8TVhw+pS07=d-TKFUYGxbc!6Om+*46eVP}1;Y+s*c$crwyvapC#F0|ZWCg%);R&6D=a+)#DkG4N#Oh1oU9bie(M3;A$0S_t zYv?t7JA*aP^}0A`;blvyAk3P=Wm&1eyKj6&VaSLYH`96h#<`)94gNX=uzaA^9CZ0C z-Av8PK{(Cj7s5>OH;6~;;8u|}kK;<0tRa!Xmj_`UtlQ;B%J14Aj(B=5%^p@P0PX-k zeRKF@O*4Z6bL9){>k<@T^7-IFI26?Ek1R4M|P?+2u+5>&Axu zeg~=pyDNL@rMZehU6t^RyNIo0r^uoGeaWpfZs5qi!bwLaQ2ph zQ{D1sw#u8yvxs-{)AK)?rCOKi=v6d=$)d8ZuD`cNE^tQV%0&L-WN>S*$}eJ%d}$~F z2@N~;zF1kf3eC<@|3+}!g|PkSEgAf==1&b+Y946 zc007p!K3ffovmIQi(}P~0jX!Rvk1+ACgIai{~o>Bh-4{EnqaWym4tDRLQ|}%Cll7U zzG2)a5~Ne!nbX*)Nv=v`SZU+g}%0L|5U^llw@5&B@blq83ign^f~jq}EQL*(K#TQ@P8D_4zC-v2 z87x+{nin%&P*oRr^_J4T-P+iSlE(Lov4X===sC(~aM1EORZw;r&_u7w!F@;Kk9MTP zKFxl8Ea5?TCig(ElfUNf+tq8aQoT+x;$89L$zQ5&GX9C*oAp&Kq<9p^Y@5S!40Ar;`pN4oQ=| z4#Va{(LnG*Q$cAnB3!$JSyFdk-``bJFYEx%#qNKo>X!W#D$o#vd09k)Oy@6 zB-%u}Z?VoC$SJ>v920BwT)+%Ah8E)^AVCOd_q<4i@b1XhY$o7h?+UhQlH!=M>^RU; ze&A2ms&SC;(dO>E+k4!ocZ&bLSXnGAju}@+7QptGqX@v3WVrZX#z?W@wA+n{x)=Li zyW{*;le+qmZD8Z8(^|{dzwGC$C>x`^8+i0u_Zv1K8%km z@6tWIix#=UR3 zYzkSZ&Hg^+DJOLnL`FTD{I~H@Tzf}Fy!?S=i|aLr${4{camLa5@nFwbi+*9KH@tz% zG=O*3mYC<^j9!tVUOK(pNS03tpxK@vGAFg@V2pvfeB-;j!sT(~Xf^WVY`s8X{cqP( z9=#v-sD5Rt?GN>2gIEo|o0M0wnd5B)?sx*dXQu=+n%i$8No<>`tvrB*2W^7CoZYWS zkzHje_*pY;kKL8Q{Q@J+;;}iV9Pg_v91WyFOTBr0zJDw;xG*xB_C6-M&jy1Hi;kE2 z=;Z>^`9!XD>yEAXAJKpaxncvdQ1!3&i^0p6QREf$i|MrP^ewJ%3B}wT&9k`Stfu`( zo5>Z9D(&2-sG}qGl8?DDqQ8|!xA#OKjw9+ZIt{_3BpBMkZo3iB?1AshlU{ORNqU%> zu}TB`YhGE~+vj}noOhAgll5pxf1nI>8|zAZ=*S0`+UuKZw_KR{e6h&eRZGa+U&*8j zSymYt%5s*3B2VXRt<_;faO_m)0~HqjOT6-uq+kA@1xm$Mi{k=B|H>ynMiEotl{A)(uamf&o(Bk8KB1JU5Q#a~H(iN1?h=>D@} z#4oQs$z9B4i*t>ckHye058#%&M8;~~__IyuGO;b^`HW#|#Z>0@Zf=V`jqIM68w1OA zfc@Xp^@Tv2DNj+VMu1SYazydmMbZ02Dg7PDaP7#@W}^8hu6osvIU`NMdv@{VwAt4k5k{UGbBDgo!i0JTH_OxQP`b^4r-_+Zf!XDLr z5ACzoGJ~KjI6OFgmqDt)P4Rd6&oXq3c^P z&|bfE3Ru1!JFmkeNG4LMM1Tjdvy*;su z+<+{Tax_XouX-Ritv@N`Tkxq)f}>|=@eBTIhGDAU%=AEhXZ1eo5&4{O4rczJoIShp zA`Noxx%`FKx)yj8hp+y#ev%241t#09{-a#Gp2ZN!-ZtZjYSoc3(P(P8Jzs`yPIkCa z%3<=K^zqc&cL_;=-RL#vSAxpMf~iyR>htwK?@fXB)YJ+{d6dLhO~qY$0WQ5JLf26gtK_S%nvp!{u>7Z|)PSh)v$*ert>Pl2cyF`i(Qrf7 zkfhLh8u2^}VnTFq@dekMef;{(5aYtfmsQhrb^{jK;d&+3rpt74u-R|+$|QpM*6!Tt zdw+!{-&=apBm92ptlyfc&QfN_U+mS>bfkvhzOGB8jTh*--N^ix%8ZAqiNxLDuM|Pj zb6x|IgGw&XJ2(vV(5^gkE<0b7EgwztglVSC^!>}Y!|$l2i86F~A-(?ra%ZyZPH5BC z5Bm2{>Bigxq#0j&0f2h;bO6U-xK+r;C;-RsnGr;XtnCd`vWu$_A2?uk!&!vwPPEsRyl@nZAoUZ1l8mKbzp6*fGjBARJ~vfeaz?zHV-sCIEAtV}60CxB#;MtbuPC`VjnDUn}!k z6Z@_MyX&h;rg)jP*YmGDk2Ev(S?N48slC4PpTUl72ZRFI={y5zyKlrBIM2;>3<4F& zxBQdJZ}Sx&U9Hsmi}qD|i-aP$UQI4+U90M}CRu#)GV|-=@y<2~WXuU!-O1dC8LOpKt@+Z@YnANh7_Vd+(EE_bLCi{Gyhew2W=!sk+ zgLsXaq9zO`OAjKWwaKMpXyDH&g-xVk5SMT{c|%Z++V|(UNaF`5ESeSrR90dEVFF zc?{AP>Vp|FHDdflG-q$&=Ru{mv=evlpKlsol-S<^pVa|(06Vo@>_`U6=Qdt$AHHoz zC-)GSq^Isd?)5})$o#asq}Tr=OftDAg-3d>QEYK`lFDt6s}$zwBi4J#r^JegmMA(d zCEiwomry0|k|-CC7<~?FlR8~ocQ#7zF6!&qlJ()pQJyJYe}GPv<3_EID*n&Pmm9@m zEDa%;zdK{>0Z|{{8ci|d|1oiVwJ2yfx!Rk8E;YCb6Q*!c8D*5+nr~w|iwo6kga9(V z*vYB}F_{35XYH8NLcKw}wc7yx=mW`jb~~Et$8wAMawwltnDl%{(Z|H3)7{AwkH*H- z+Y?agmNFa4$Ku|89NK;M}ae zK1OZcd-B&NbuN9sE?-Dcqg>z#_y?&nq=~-vQ%-(Yv*lc}dHk!;OD~<`wgnC$_RQtJ z%1cg90uw*Fzn_@>hm2Y>Fh4fXYDq-)wP!I?O!lMgYgXx^d_yJjFMjJzQ@*I>&R@YA z8Z8#RY;=7Xn;g%~&;5-MQLI_E`B4|^uEwY3{MjjHMwWZYrHu$yaX*W`nz%K zn-}(A)l=+pM=g8W33^@bNNrKMK^S-8lw0EadwtAL`^BLnuyw+F&%dCsJ8Qm37;A{C ztq=0gp*ksSsF4=1xNwIcJp&N%`<`aWaJ;b)gZB@(m; z*PebOg|ZuzT!m5`o@^GbnE$7ORuo=gqd0VKuB6xa;d!UoQkKCxn7~*);_(!nzSlF{ z7fU;n^-uaV(^+$($X=fhO_5a*Qs=NwJ5yoY)6XX@8Ms2*#LrX!)i&lr1`A4SS#Bl`#&%yqtY_ul4VU`-F0f~_+m zzDt>J-{vnn_e}Yl7DrsBz_x6FK!1o=F&@(1Eh+-7fFI)Vj@7FK#vWWI%!N7z@j!_}X*AfzGMdoqVZBo>)8sC?ny!4RS}HSOy!P8y8@5N?dqo~g9ZY?S?WeXnFp@V(VPsn*@bs}%0(&pUv{ zQQ0+%AB6`T_i8)@DXU^852+WjK7f8c%msys=q0D6@*}e1Yg8BJ0a?ZS{U6cey=O{! z6*-+*AvMeNi-5!$a?&3TmlfxK^b=KiW`s%?Ir-^O9ptv$^2QL-Ma)7@No!KM>Mp<# zWI7aollQ-s)H&tFeYv);8*W0+gH#@C$m}lytkI#L{cu{ zZ+}XsnCQPm7}^^J@g#lydT&OPzUMEBd_KsH!tWMM!nX+^XQUejkEaDqa`Uu{=iwfl z+0Er{^RAIlFD}+xqeVXbD^Z?x6YV7vy9WgMRMoEVsO@sIBU$O36@WZ@2%qvnRFs#k zYJl986!|>DQy3H(HF{RIR(nk)FP8JK;gcZPV{eeE%D%9CQZAw0ZZ5IqMc|==a9D1N z7so<`!3(^gk-|^YO`=S-PXboy5AO#UEwqVxcBaP&VHQ*blL7_o-ks0%NM2mZRVK44 zM+@f9Nl(#=|Hw(d5A$flKf!iZRM)}=hyo}M1!@}=7~ujJ%u`1pB*esh7dy1sMut`> zvDI%EXZn1Ic%N+!QEh01ttWi+BipsLcKX`rDf`u>pgNgBcHBk$DYtGiK%!j(BhHcA zye9gSiN4Sh-LHZ08?L`WjrY|%O;BtiHvY&SO?jJ$@BEul{~UeBOm8XlwI9gt!@@tU z|C{Nfn{pvaz1el4d+VUMw(eW>#2^FWkRWu`rn=@&&x3tv?U;rX=k*#{QOp+tROdpcNE-d}j$15kg5Re(cZx zCMlhG4)QYE^3MCir4{1CrAr^_h*o}bzk0Jp?F_xgqu2Nn%Y}uLhT;mFn=W?O)f*2I zrt{SMWh>27`8UE$ie9e{Z$M$rYAH}f&Fr||K{nvc7L&M~Jt?C`x!8+?9cEG2WXX+1 z;RX_^NIaej`-%PK4?s$NS=owt=oiOOQwUA0yS zqo#iC(ztNC@Xn>vEpKJC(r|*#yv-ozJZjOlm2C?=Ln(@pH;LI&sc}xi6`}0?^Cf^+ z`B3)NftrrKcHU@#p^D=Ay8!rmi42VbjlH_0%9S5J#W|qQ;;haE_D60>tmYCoB;*U{ z{eV*0ZckG-MqPdNIdHn~gEr2Oz-!>H6m3&^geS4R!^o`F>2doGTk^CT!b4YaS#O&` zyNH>W*Rm91`G)X0rSaV`wlZg@xsv?yf{9@nbIhHPEA`m*p#>|s;lPGvvEqPV!=0Pn z+);1#T~V>CQ=qrB1IHv4WsSY?EMrQp8~&!BUJPS0)09UYSMD(?@u%wNymK@RMrFcE z4s@>T>(;7U*#Bj91n{_me$q?AvxDMr*;pFJOIV1Po;cZ5?H+AzU~vBey;*jv&l?U^ zj=18j>sJxAQ^KMa&x0xE7dmX7Yq|w06}R5KewbyGH{xMH>+-Lpy`Qc*O6oVx92FMW zOH}|BY#Fz)tIOVm%-S+c0^mvCu8kj83TP5a0+E;W{^6SMpYY&8qzHr6#w1h2WiF2% z3MT-2tT7=@d>82-1uP>pD8FFArtdDl*HCf`uJ~`}`0bx!B%bgSg7yEcc8PQU`M9=T z{qZLyKtdcGpJ)HI9uk!^`ul&k4B|BEDv8~R%-d>nuEXH`bv^TaqHGKuKmGULC&1C? z^+{Vc&;4ISL@L!WBOgFJ;?JT;4-}SVq&&ZqJd{Jt=X3ffnf*?4SHO-(v@``X5VbS{ zjjSPOA|-!t$fc6f_Z#%<-7oi3RpgrQCu16zroN=UUj$8&BvI-x96C#<>He_d_V5OdZoO{{S$Lr0YBfP zFjR5HC%L5C&mm_m(ctMJd?kd5-DQr1^%X5HrN`G<^}A1%; zAL|8}Wv6A3yeZaxym<}Jsyi=$Z0%Sw%imZXscUg>2GSKO60khDw1m`hRn(V@rNlA) z_Bf#xdz|0~@(E$KMelf+yhP-t5^Hb}t}Qp1A3dr&WGzKf0wyKaqzEIh1f-hX7O(4U z&{GaY#?lcnH`nzl3^P7a+ZAK}&ivo!_Zz(&=zCyrBdoCz{%O|6XXI3OP+O zSNd$)*W!L&YMjWK4BoU2EDI06$NZ1&|5L5UM+4;s{N5{|&e4=>5=dtOFUJmW!pKTL zapJb3w5AhYJLKD5e6c9!K(DTOD^B%XXQ>cHs`Ks(17V_UBo;L%L*{bv)h2fl`c0)9 zJMch`s#WPqC2A_*P(0cYIFs$M|zj4oc&h*HigRE||6o^#HJGac0e_`8WJ%I>RI=uB7x{?Q7I6A{dC z^D%}sR->y=fKf6yx9Kk-*m#vo;W66c0xc$QH7hG^R~+f{LobWZ4}6GQ?>^!%@a_Ev zd&rJMD6Z0`Y6bOw%FnOAsF_&JMvpJ@HIkHkr2WG;ff_Q( zQ7AH%_cEV8$P8Yj-2B4Ki-nB0y>mpZ*Z|kI&NNI&LURWd%cq5#rhdvR*J)%#s%TKj zMby4rx!Q=$K%G~q%oi&fYsiK6FbuVV9BIzbo6mX@WV$Ub z6fepjWOt}$(?Ih%KtexbsX zFt}QaR1iV6j&u&mnwjMVu?Qa-9qo8j;9Ag_3a=+om&=P(kP26wL!jFZ(_~4=sO|=L z()3!Y)r^~VF9`eB5-lk_P@6QYa5N3tiBWAC7)7b?T$A}V?P|RA-sS?k4zFS`X<+on zuhN&!9p+yjvJVPK<_53%)eq|Ve2yT~6)m^j_aAQ{vJq(8onb=9$T>ovyWdCK!y?|^ z!W}Qdsbj9g--F<*TovB1>^%T{gD~4f$2^{B_z1l!vvc2c0ZPUD5*vH7Y46I1P$lOt zGo`f&VF^9P+T1{3dNwR}@WCXz1d4Hx|0Mw9AO>b~QuL z35W>4D||unvHvZ8#`QH)RW3^X->`^y7v=pGFX*x=bNEM3$KFyUodj6PeALz$QYHzH za#-UI<0+m#0`PqQS`Onx-fQHGO*C>{iq3yb?yN&GFz}#2#N+bz0Tt7FBvY!wORrCt z4WK5w4Soz!OcRbrZ0@*C1G2BXM=O4aru4kHo3{Q=?yfDgiEl0{c@mN}_Cq)_FaU+a zEAmBss-wl-y5CMR!BqUbPL~M}IyoJ?gGrLY?vDrb*FkU1jg0o znAl>%8)L5k>$x1`5cW=A{p4_mVGYqeOXVq@5@SBpj?2!6{kGum+RG1vG{V_=v$@x} z-tV7^FL{xT3XHO#MNi*XvwPp-861mry;cD=rsj4y5)1T9o#^h%Oi~2=Xgo;2F?J^U zxGFL&b#Tg%D#pxw&nas^3p%b0)6tza}{bLZuin0N~!1GcR>RFh z!@_t^|CO2 z(Jxl8Uw_!`G4!f7j5?F^o=z}F<8+|J^AC|za;xj2OurNC4A$l>9HFqGLdzXQ7_a z4ti-=?gkW3=+EN2`2X-%$gDCEPgq&7-ffCAb`^77z_8%n_GMj#AGP3^z~5gi(SRJ4 zwtiOGd~u9H;wL=Pjg=Ey4=QVK`5(IMUYnVwrhEJdIGuWZ3X43k@QrI5*MEh|+C-0fAa*kewXyD%L z5|FceYGFN3_r69vkV!sn{1H}4fT`NylnQM;1rLV-dvDh76rG_zsvxQEL)+}ASM3{@ z@5i{k0g`V1PJAO8&cppur2Jl+x@T8+TwU&%OOwLcRbxT1LwEch%o2m8LarQS_LEIY zW9i&UQ_4aoTx9G#GcVc+wsrhxTU<#vg1r~le`UyH`nvM|)jO$Nl)U;3bg5F{o1beC zt^C4y-dG#79J^j-N*O14Tp;#nb;v8svUl&6-niFusZIg(h4wvkQmP_UQof{SE~(aS z8c+q!0`_Fhnhj-q%Ydm}IREv|w((C7H&$yc4fnk%!4)^|E}5M_B>4O( z+XqQttH^V`U_7sLx40a$Rn)BsE*DM7c(3!%;b;AuD!)dem~VWv5KftPMJ$(9-imzc z0iFEEhJr)a%ColIK$gci!FmilIJnfRZQg1>S9bKv%X7S~ona)xYN!Zk+cvf4t z=msq=*-`UwoRq5FOFjbli>z_%UghaZHy<#|((nldIj0e5O;>Wyj9kDHNFD)8fm9e$ zX0qL`!{LKpKfg7@%>l{PAe+szrT>&e|0^X#roGkQVfb*c05pIlj#42O9R_9b&SQy- zd48#subVn$5Ld@MWP^A-CxiD?c{t2`v!s)FzeL)eg0JJcTzAZX#FkNVVOFX~?JIcp zvmrZp|JUh?$`4zk&L!hp1Xz?Zy4W(5j`n7H0ay6+``)8hi$;g@a3n@g2`-@v*l!%W~* zpQAE}!>to!hSkbQvCKGzR^m{%IZ)&PQ@7cRrG4_|?e@XQZ(7eiAy)?bd1sS{B^r#Q z>4e}j1E7EVEb5q@W{TCNOyGb9SExD9s7i;J!Wc4)q!XLBLGp^J`NU(~L2Kr+9eHEz zW{Zyu*ak->v+l*)@v85_WK!3&;N|rfw`a~rB;IDMnq_lV_bZ+ih8>};=6-6`2$NW! zj4risA)cHzM--PG;;YnvU66$OY2y#EYa}$^Pvm`BtuM8fPD2lIdu{KX{b5zaQ0lSn ze;mZl2FlVrtHi7q)=E7ymt3UjT0v0~!{Rp|*qFQS)3Moe0sbz!WJc|x@z2DWh&xK~ zI<4sMnW+orCD)9P7c@btQwEF8$*V9C;QfUP9?YA~dV^jF97{Ra;<`yBw1ic>%BN(X z_?)%Aw9VWmR$xewXoG(&5^NAcoi+$VSKRbf|M^ecZi#iV@$%`G<#Ks{~@N@x_DE zDr$U>{G`bOxm8eIpZS$M)|$3z65JlPowtDQ$p_kUa=kw=b=q>^%zUfc@aH?O2CfOEH8lc$ z-&Let=lYxTu5l5>Louo~!u^f?N3pe}h}xexIU=-)bvw9ugqCVIcb!mDCnvn;SQg32 z`a)SRt}nZs)u!iSH4g}Ma+9~G)x>Mr3D6~W)Irl zL;d{YnbNBlf3=-FDm7ap7T=P#DasxyoLuL(lA_t`&d zbT%aXTfNKx=t8i~Beh0Xj|($}D?z;R^u$+2U=ithkU3phfO@KVDU_K~HLQ8fenb?4 zNljVf;fo7p5q(qrllvWr^;h{%d?^$pY3rF;S6z$0|LPR|5bC{8?`4RN(7iG&y6H)DKK!Y^&3DtVDd>&}4B+cK=uq+* zj1oQ(mOr~P&fotn^^(Z@T|kbUCX~jn-8J(vnvRzDb4S$jY0q-9j>|d4AQ*3>Yk-k! zGhDhYD*T@Kk01vu9q`Lo%K0>pcyAbVjVi8-{H*p*Tw1?ijzAt%E`7_guy=tPVj6X7bNrbh>9=N5Kwj z?b*_Wk>9&EB>O1F%zFD?zj;lwc=wiCknnfnvELZeir25s=?woB*L>UT%dLauUF~h9 zk+h<84g$Edy5GWc5axkepD>Z`KIN7T=VyuL7m8=5fR><)gXWHiXq6sM9Z^nQ?E!>K zf$cmM)hX=1@N9hehj#F9cl4J*)vB~ zE_8!%F7aWJ*N0uC&FiOooS5Pd;SdB9GE=zu&&7RkZ}FmLN#t_mY>R@4n8w{6Y!*y+bZ8UuKyG;^q)D zS^))yFln>8Z-=6)+NR)3mvUVDtnBRL_uY=Bwz#r=K2O%MQ+)l1vlo~uZ5#1T_@wV- zie2`7Ki#jBv$LRDxewj~b%SZ6qEjg}DsS4okxE&yt^m%52;G7K*Ry^KtjsnAkfo~c z@cJi4$!^T*MI^XU^|@9+m1He6HP({KF7%47?p!}>ibulD*; z-F8k`z1pGgN6tlsX+DIzv$ij|Z_w7p8EKIqRC`{cNS{^|_rF}Fdq3@;J**lm{5po` z;hwov_3VwiiT6rG^ z0h?iH@wTgPk4$ro%bbqaoi4$>{4?)Vb=a~29B1|>%){8V41kL-qi%@OO0qA4vmbRN*aDxg13%`82B zH`)}WD3X5JXdRn~3!%d(HmomNsBDegAKGf9 z^Enq$)_dI!!^q2W1cYLdOTuD1bk=XLzr>u03?@-H?m?Z|`|do8A>FnHJ~L9q8-Xsg zM_F~}hzngj^T{2Ty(~`_*3TVQmri`nnku+t&n*IT<{IEU3AKG~ zQ+ca46GUt-QM+dfdn;w+F9u`tf(BDOay-8QA^Y4;M_#>6QZgv9#KXTHS8Zmk=uwYD zGqSDEe=n%{HaN%xwc}ur&Lm=GN!MM)-aLSOOfY!%kp*A3dd}CaD2x*Ih#t~$*tN;> zYr%0rr$_QaLil8r?u!zmI(Ct{m1btV8}mP7w(Y=OTF3+aWiUQw7VF!$c>Q06WOO@! z1xxu&6Iu`VOA;y5GO`*HKb;hFzcZski;MoSsP;$$UNZ*<*Ugkd(>6J3KZ=sLW=hMu zJ!dr+RIS|Ajs{SQ8Hi8ki_i>8;Sf;B-Peb%kN^$Sq>akqd+e4h6k@^GDnOaPYyoaCWy7Ko}B4+t7vKIJe)}^v4~nzERq5v zpRu@^XwJlT%i^=LEic6ard&1uQdL!z41MKxcj&)QP~NwL8k#J2P+|v3&JV>F*JxN@ zdVRhGA?)WZy&!WZ(U6`ST$x);tU_(Jt5#w1i#$cId$PH|4UfaK$ zbt&0#s4U}AazJ`Lzz2VviQB5Y8IkxsbomQ!Qlnw0ic8YEJK<1-?Ku6syGT*(0|Q@8 zxoXzbMDuH|L!_Q2+O2kFf4@1{O(ac-P{sYS*HJv*JRA$#Y>LK zSdn#s_fr{lNX03;O>4QO97)(t!;X2mIKSa#|D^jfsR}oUd(&BdDd3p=hd3fgS9SQ2 zKU>tE{z+FLkTY|+eND@}(U0?6wz+IZP7NbZ%6lYbXVrJP_k7LX$0TWg_;aL`OPl4j zfW?bO#tT@T4}Y`n3QCz(dC!DS_<~^g#HGTnb~)8oKEJfc-wg!^7-c#!$)eyGwyA0j zcdZ+MA+m#Ox=OF-oiV&woocqg-$IjRO+m}UlkK>vH)WeXy7^r2m?VFxsXH)7Xn0C{ zPrLs4Xf(_Q$HiBmGTmz%7`_g=yc}%XTk%lu|L8K*NfRS;2mR9(FwD~cCnca z1vduf4Nzf2s3vI~OZmrcN;e*AaX0O!M)o5Ae-jos@LDIoJ-u!83g}SCQORD#Nl5T#!{yqL;R}hYo zO_u^G(Gtq+*mysFq>TqxJeL+3j6L0`#MIOtyd2$@bl5dm2c{2E&<};=b>M=DUA!(BUjXI@1pNp`Aj?s>QZo(FqtJSM0R)#`*AuiS z!ttgZggaP@OT<-zUMUp)`)8Odw?Br^U{mfu38rv1khTM8;4QSyUIU0B@iZ;=OR}{+ zA9&SpER-SD!8m2NZV0JEvZ)8ba~enzd(6KXUwEpo`z-yWyMy7rto=c?&)q5;y=EiJ zDBG*`00)M~wWsez%F8a;uisx^;z)Zk57{r?xoq7&cc^fia_Sd^a1$`Z+cP|vdWNbj z$S~$A(rbOS!bJJrY2?2yb1QUR`1>y=^WPlA@9kknr9*^Kfl`> zeME?+^4VlfDhXK48#`*q-_d|h8Sp)e;%gCSchk?vt0%exAy}b&bx4JAbIP_m-LEPw z0lhe=9b*aFiegMJZ^HrL8;%4jr_FDZP$i?@;kzAyev(=D$TD(T;X?(*OpL0%@&;vFQo2t@ z9os5WkU%*0*JKl}zH@=Aui`8D%Vp&7UD8P7i^RPJCjzkU#(dMHMAja7>IfSt&h8nc zhsiEXXC*Z2K4WR#wvqLXpG+UWx922@RGEcg%BKfOL*5uq(zb^aUdOQa4f>}MFv@}20E12ofAZ4A z@4P{?ib^+#)zF(Sn3FN+#tLb1cIOb_H-(F5(1 z6zQ{15kXqnXDvfQ@S!+f0Ky!0l=8}Ir_{=A$`5L!zL-Ns*vmQ?dw)_LM_hA906j*h zceoH44;@<{i^*8=y86g(C_((&kr`^wVYx0Ri)pI&;Cyr4&UP~+2+*<|ECoIV)j*rx zb~FPriC%BKaOMOBqDfPR2iJ_xFwaM1@f~mMtp_)+OCW&H36N~~yO&@RQJx*)zWq6~ z?odpOGOY~FE*;RIE6|8?3DZC>+%lq;48UC~;z)Z;%kd%7^2Pp?pIlpY%(QSCw2;TV z*@%X5gPnYo&qBMzGD~c$an-|aG4ug?Vxp@Md9`ANe8*#Hg(9}o?u~nGBBEu_d5Q|2 z)EIE)8I)}JkH4++Tkn4FqOk9ySlfNifc02VFDnlBq$H+ zguwFVzT7G^oTrl3WbhGXw{k^Bp>zl8yNa5z1zRY5(j0Q%$NJ{UEOI?Z|FF6WbO?{ow zzMhN&ayCV>!jKfe?Rf%kFC6@lq#}pTHx-vWtVrmjaslt*EOG(1;IGGhFdh-M?K46S zZngtolk>%3BRvB^scnMCVA!gZqTOb#LL{SFnn)ByOwrl7@0U^>z@2aoGtWmxMi?V3 zva2zCX)a6PW|!*R+NrqgT+jTGTe2m(NCQ)dV!Qwk-cu54N#wo2PaqOJORg|&HMMCE zxWAVyOCoo=wjcpIA=5ctvJ=1S?EczTYoGM7b~~UQ{qeC;5gQeSe1~vU0=}>7q6=#e zOzRg&71e9i&p)g9*kj7fNJwlV9O2`YK6t)6SaH$hT$W{ohO&(ea#A+GNdG$#0YwjpD$bgW1af$>f^kyF5a z;MpTNxr>WVzwMJ`c>81o2`jI9~I zTojt}Y@@xWh%ZBwf3hnS zGVN$%GX}lthD@LLg<*i5Mif(=Tt0M9dlr53bFmpUD~cu`yhc;ksX@HP&Qq6_yR=vv zG0bc`40h$+Pm)x*boN+3y+AFRLSCG5S?9lJwliTAIm+@x7kRbyJL7PrCNjj`y50)z zlQ%u>0_cnysHZjM^P;MURjx2tkdOwQ0?~}aNafhP+bfQ$(J>ocLsppgiT^D45 z7DdQxvc4p;;>XXWm`TWr%Jw$>{%}p<{sBF+6Td&P{DHsi>^()%)XuuWLVH>vI$ck>N>%AuPy+_S()i)H@ zUYyoT7Khf%7Lx*yw|9f@o(r@EvZ`ZFW_8$5&*!A;h_Ec-!nW(vI2{GgQsCeNgo6-m zF5gvsw<`&xc+%u3KFk{cq>rp$P9d3F++?@rfl&$vx`}sVHdSVZ_02FSx@Y$7i@ zjtYR6wN5w?ua9@Hkd`h!=`sBQ|IR z7RRV7?-?PhNza#8V>v=$BB@{Hc!c=`Xv1-Z=Gbjr2z{58%+G?EuBARET>d6gAS7)v z=8hvS3J~OQJ~l{khQ@g}+_V4^@x}%EF3bVu6zG_Py6n!cgj9^cYbQNi@(ST#%WVrX zD>lxG9A~|*&3>AD>al}OP+YCuDo1ZL-Q}lmd|_8dJuJI7G)D5>o^xz&7GQ@y(bOtf zcP-ZndSrbCPX#t;xM(2sLOJxJ=q$Z2Ge!n2@_ehiZeYx~CR~84h{ISF7v5&@xNg726A2`7)GGVvn=Fq+(w>gCBRV?#59t^ zs0@3hZNx8reUp%8T*!K~e6<~FDd+1=h*9iW**kXLzf{u}d zFL2k9i`P}Gq;Kd7~!O4}6B+f;Al`5%wqx}Ad^sKC`Eo6fI_;4cGXp7XZ zERFgYmXJVg1248>mF23jMfZ$`-8(XX-2yB^>AXtohy1El-Q>y2CafCww8A+!nhMTU zX~?jovN(V?pMPk~m+I9xGUaeh@*EdqUi$}OpWSvYd;^z^uL4kG`pl3-EC1#<%{5s3 z91-k)@8osp1w_=;DV*`k=fpbdcneI`ZNWB_S$-;ionv0v>IJ{T-JPxFXw=8HT3eMx z(#qUNZ5DpMQYJOv_uYEU8iwtv3471!M18uxyo%U`fhTG?zi*j~82>f9?s3d$!+ z3pq%$soh8@+)~`$IDEDh)E60KH7)`73@j@Ah~nxojuDDU0gi5zIpMpAXOI+a8ONWz zTM=#xVW2*8G4T6=TI8wPlGD{6v;6p@e3V|;3EDe)_6++t%ThTk!T;RTO5QVVG~%Fh z=M3G;{Ag?ngF-Mnnbk=p+AIzmG*-6fwGfjts(K|0xyf7+z&~j2>M4?D+Hvw;S9bZU zdD38~NxNpR)wXnfrF8@RfEs$V`PJ3CYharRw#e`Nt{i)<|9m2>t#-=xc^`P38?=@( zpNDw$eP~Sy|@l`b2>jvXD zj~^(4E+G|OhP+0xAC5=xM+CZw#eKy!+ z^R|UF8m=3KEjp%Hlozts!GZT2>sPtlt3XDbtj8B^YPCS#Q%@avpvG%fb-NSI;JhSO z!yKc4Hr4&|xKdFE0SXT5nul7daec+URgZ>EkJ5$EXB}Fy;8oAXKW34rbFW=-r~AyEkJ&GimummkkL2BzUc=HHj;|EN$}r@2A4ALF z0~BjCHZhC%hWI_|+n(zZJA_rd?>+&|ytGayup9VcD^UyFHF-b5V*@yA*^WvwHerUg&zenl zzU_0x7?hX&y~FCK=S|#)zd6RTPO;EPKUtTtGai$Z@w?u>L_Z%#Xf+`MWTLXXo*}?p z`2rKQnzp}X_`z8BKg3By>eH{UJQ~a^q2|M(sXk7`Tgi?x`Xd!dgKgxahw}Mj2nqvxYRi+ z2S24)dw)jN55w!-Z?|#~*;J8NdrRtP4T}-n-=0oAb88SuL_1sxJahNs%03Pz?eeA+ z(PJP~m%N(l9}x`_pI3>Twww`;#@#58tR4h23dIPHgXd59c>-~_>of}CudQ1I!VYgR zx)OceBf=Hl(;(giFr^erPO)ajD$()?q-Z)us&}^ulVXwQ8~0JxjLf1o|NKGc%zK-9 zQn9g0I;b^UTe=uc5#VdKY)fCRvf^`I{YLG6f~(dX|8$2zJ`2f|3B08Uos<(KribSH zyE-6nrR+Sd{$7JNRH=vd;_KHV+-mlWH9v;=a?}MrLt*RczTu)<(9n)DfK3wh}`;qw*Mgbwq;M&Yp6P47mo8j}@b`A2bCx4sU&9{}$ zCb+RsN@ToG-qU<1kIw|d6jACrLcg?Cp$Ta?$#u_35FsFu+w`p0Q&)xM) z$-JX*%c#T^RPTr(PnAfF_I_if(+Dq_wl z;<3JVO3r#ut&V=N%Ld%rhqZ7IV;S)}jO#np9m^C63mKh5DhQ9ed>LhMOpfA}(0c0t z)H7HhaR}4`UBM!Ks#Vwt;cHwF9Z(o~u6n*1NZ+Nx79h7r^VW(?m#SD$I zvg_`hE#K8||L6l4m5wpXQ8U|hyHqSunM=6YYaY+>^CK%szu>aN^fY@KAgv$~{Fa`h zX=437tPlwAjVDzNC8Qh)uBBlaxT8q#)c;|pdBm==9gsxpb1=PbJ#ZJ$m;cr)`baT* zEM%7}2p0w?Hy%DYL@(wwRG$~~UP8@FgOZJ+`c?v}r$$){&4)O9R z0{jr#r=U`+CC;O7J{viNh!xS$Q1U@{2tQA>97=Keo)M{Est4|7SXQyjs1>si#mgz^ zLSxxb87x!&c7yz#07pA!@<>y@l(#;wbq(-pc{;8av*@kKH4p85qySVCG+M6w$EP~V z0EPJL3U%VroM~Ht(EyP9Iaeq95> z|CY-fhK=lmN*(9@rOB3-PMgd-A9S=nS1^C1aooxMH${354}efEU!AprS$p6;(K66og1?bNLE;{$h( zQ&Kl755t+~!b))!029MpCOS;`*ZCBv|1C6ip+V;xf*C~E^gBb`c*>$PZheY8RI^+; z_$u8Ud_uoI!dSL_moz4T>I%3gxO8+sy~QTy-^G{8Tf^VMERpOOZa+b5QJhzC`&E%6 z(i{U&n*S_ixIbmJ1N8{0p;ISqwCK$}ND+XJ%gHO# z>_2|EZ9X0YE3Bt%$CIV6W@x=2{C&0?SROcb^eLG)wyLWP*xXzR23l`kSc}Hq_3UYs zPsKl6C14zM5G~H6OU*Mc0|wyzK$6R4b03TEyI&3K()Mh2kb!tY5$eRH{vyJosxS}%pEJFfMOYMr8-JRY0E>a?RP z+Qs@$35m{X^FiG!9a(hP^`Z3EoYcTxm;Y_OgITt=*Jnt- zl-zy-B_V-iyo`coIGc;`RTPiKji$4KbraPccI%LKP0RWZ-lVbl=m;*ubtp+0Z@Dsl zdtcGKQ__8R@`pzB_;wT1Hw290ox(Ikpc?|YU>Fgknq;k6S6s2zxK5^7GnzOGqKF)4!>AjvbGuGLq_T=Zeth)jW z88YQ`JjEUtYTkmp=lf`y$t(k zPe(Fg$%ir@Kl{Sb9^)Uw8fPbnl-aH50dn$-?p5_FVB<&x+(Oct)_MNa0((u|D_nj{)Z1?}U5!7+88-aksfF@uZ9j)Jfiz@I zhd(HOg4GJ*?NLCF#8UoTK9wp?713nB`IoEjFG$dy1K=7TG!k&OwC_}U^;y&TlUqAC zu3V2T^@y3+yb=MXpG;(RX$Tcd`gle2@P)ATWYtMDAI8Bxf;T&Syzsl8jUPN$+w&b8 zkI^GhF`1Z#v5O;ThwjHDUi&nZ_?3`w1t!+s=V9=R}HX8;yly!Rhg;d450C zYLoncrGAHZPGXwhx*Vp)oL!m9$b@ms^=wu!!T z9|73)6S|3ZRI-5nu@w92rI(iNSk{d13F&?l{a0a`BxRZARe3Of-19ykqvln!# z%TqIEx_rGsnjvu9V{g$kb&)l7av|+#>n~<=2#2j!50i0k@)qX=vM(>I6<@MZ*AD)`NmQ>^YnQY>UcoZH@tHD`kQCZez_~`a8K^gKG5~!s-JJj#hCK+b#3ju zqXszBXDc#H3JT7O_s3?`2AF7WBfNFS?-tkAHg&bVRqBjOFAc)$JZf2dK*~Dkv9CE* zxVAhu!D0<6m-=Qq3-@aR&)+9weI~DZx&xB4Pz527N(X?ly^-Q=;TUyw)Q88-axLCK z-C;O%TQ~i7s;tLNHV?ik1MZTDKBOmtx_f(bJ7YHB?Wqpx9$vwV72~YwVkEl1HJ~CyArH zE&R(;lGO}w@WY*BZkEbCHaqF1Ll1Zg;`y{&TU?&mFAM%ggFT$6E2VUn;ak_i*uFgYJTngNGVvw-UY#)+kNl_GL9MmVZXRQdFKA z7x5{P&GZO)KB#bOr_n;t*$z2C9TeJ592uDK9iAu=twqd-KlMRpfH`Ieb&;u58HF1F z_9qM9^2d6&gd4++=c85!D_J?{5~fFzPFVbF;R+~W13Ng*?qSWEm*Ao7IbQ^L=Txmz z#HJVQ^BCEo=sXDMFF`DyGI(7irfKA5Gq`4R?xwU|;?C!nH=!u4ceS;~r)KsC4W+Ww z<1e2Xuj>otD3!?-y?Oi)Wf0wKM9qg(&!aM#S3wC8# z0SZ*UVigzKuBx2fdbXh5cmMo(g(EIemJ0%X5pwFq((`bS7MowaQx%GCwLtagS!C{w}6+Rc@;3vH!4 zLEz@BE}*9p6GWAi2I?Nzsh+a>j8HaC@Q1nIJGQyvW{v6Jz6m_=mYN5HcxCeKO^_@# z``sUUy$Z6mPaWni$kp68(7!HoHAWE_dku2=h}>sox#!JwBhh;eW#(^gPX_FmG2|Q8 zRHCYR?7y6(wy>?e$ENvXm*)l2ANW80-9^QFCZ}1YEqK1K$X1{vJ|M>_S zWq55_(-C|_>y}pF$50j2l^b6&TD98i39n#IJ&t*5Ypco*T=`MZd6}wC?+v57bNxi^ zg`t0yEBbf|>6J@arhWu|n&lK#{piLGZfkU0AOO;(8Gn_Zf27gCPeXUVc@zB|pyx{S zHj46Ad*-|usZ*r>EW9yK0v#`BBs+RGqU*U!c*oGH9vtA16SegDvKfeJko+6gZ6}TE zc$@SWO}fghp61JswmjsQ3Go@TPm;UEn_3@Tz10J^)n*(Xd2#TfIrZ0I&RZt?>nfLh zrMl|+uP7z8gajPC%i`}K1M63;QQYL|vyazL$(oLswt!uQ0eh`;9+?>;O2a}K1A{p% z?MqxdsWP13)xMcGe(Idd&SlwT_UW(D2QzI!vb3iDqING8k%8&Hv_6_m(9G#1J09yl z+mtjJ3TJK*8ooq!8l77Qc0|1t-HKBd5|$xww<`-SrMtWjeSSzT=6?<_<|3eOaeZ=J zJQGK`sVQ56X1wt6*nNsonx6=+_swuqECam#QQS4>6_Ud{(-l)GcwIzf21NVK>h?x} z+jPVUj;wD@m5jua3jKu0PYkY5nH0s{4h|$+ztfpRH4g`@qTj)gbvD zv~g(Jq{lTj3aKOC_$tHX>6K>qVM_yu*NJhUG@v&$8`~@-n$dJ^)CK*%wU2%N0nUnN zd_LuVQDJcG&tvC;R@!#!RuyJ$xk!=wGK%9me%pg?DGKRnGaeqL zJHmj4dZLu$Uo?@6^jn;nNGaWBlO5G{9=(}W_J;i>AYm|Av|*TOb4 zb=Jkzv1L=xwvBy54?QKYzS6MgKzp8ImC}kC_(=fPOAM z^Bs;--;gD3z_#_`@Vz^6l+W)j{W_}vHG^CIMzPs^!MD?eLv=Ph2T#;_olwe7nD$sl&%)p}T$YA9HI%V8egA-#$Kh8bFl+DUhzny%I=KlV|wy=j{N@AOyc1 z|H74H4OKs08t9kvLnmJbJF1*_v$=5%a{CBlmTe4yh|N$<#uMFoGDt{6+<5(DGeohq z8Yi3>blH8p(wJ_`)srErh6ivgTHZU^zIJ+B_YR<`>XKeOuf@uOZ`7!V?!$#@$mUB! zE_ZZ|0pdj3H=3c*eQSyf@pX`52u(U`kkzj&^Tse}go||QRm*zGq}uVz$ki()F+Ou( zn_Denq{!)bF9Wp{lV(0OAG0j zfQ1tEu;2Zi(U-#FareH_)6B~~DLZr6nj7E@tRm^k)srsKf)6yP&jzprc?YN;F*@Rs zeXD%jZ^^1km9p4UPi6b*Yul#(h`;~po)F>|0N0CRn_m`k&+6@56QTE7rw|Lfr2K&Q z$jz)u&X(ewcE1!pm6`xDfy+DWcv5nD6efntoH-X>u`pn~Sf@03DYuJ0kW!vJ5PQ0? zIbgkHRuu#DBTrfUI6Jh}(vr~TgVN{h&K;7%z4X~ASe-t8xpn>IQuyPNxh6;DMkM{2 zX{f&$!W*!slWF-4uVX9q!^gd4El-f_ErpBz%k->vf28h~_XNY4{Up+Ha(E{*mSQJx z)1jpd&fW0g0d2KkU_5G7#&4$nSu6`^cm)I>C;K#1&?-*(Oigx1c223wswMxu`?Fu) zA_KFl=70-MM^zdBSc;;W`}ZukmlfU@v(2Y>mH{YY>n>CSd=vM4Dy8n z>ZmiJgCu}1-g0~_C*<9|`QOLyWLyR+C|Fv;%v$ET144yndY?J#gpj61sx;j~24@c% z+-$O!f@!Vc-bxl#Rb^^Hl2^OD3cY8)tEySHhWklgNqVCe?z%r1J;wiM47jxB!c$MY z)}VaDFy)Y_DfIpEgxq}n0!hTbHFTHC*%@}D1%0LfcB!V`FN$oD_XtwY|3iQyrZzqI zw*A{>!>%B=&%e&||G7mgKlB#aR^p9r_gh@gOl=U1EuHQD1{5y;?j(|b^>fwbsdwIS zQpdyZUQrWibllIo)UnrBW?#ydZDhAFMeb|qUo%3?su{lA;4oe_iuNN8V4B{*FCOJE zICF&_#@c)J7fta*(`t7vcV*YR?HUP>POBt7PYecqj`U^Y9rwD|af0lo=E}VsA();k zmxGndh+Oxw318ppAK#*!`?JPJG;6HdphLva6%SF)&`N%@sXCP7t!^E$f4W5dE89$6 z@L2&7@6VbezVJ)-%2S|X!^-rAW`QC7Q5i>T)eo0L8MI^dKG*qpzTpk;zn_gIv8nWF z+SIgL$nk6&CkCV3_}THiU+ivAVa4Repa_qQd2W}8)K43iwO9<@ygh~6_tok-wFiY` z^DxpEH@cjIV}UBlQI5~ZM#HSf$33X*Ij}3(?geb9;q~Q zcs^Zc#4ULMwC#?@znQWD@Y0e)(^~qAmn<bu47> z7Y=|{+jETdN#rl6eVDxVg2fT@^ndzK{*P)z|9|qBZx6QwFY>>}fd7^$+wQC+X2HD3 zSFf3SbJ!MEwB1 zhj5%xA&JV!4A;5*CnNZvUEkmsp6&BKoAzPWdD2o+SYBS_?T|mT-797%Sx<)q^yv4r zw1@LC9!FgeOxom&qx>Ebq1CcHt93tC7xAB2EQbQek4N({nwiI5XgNe;-+&xvXO?+- z(UqW6lzx^x>YzH~&%tY>%Jzl6~>A@Bu^$N>r5B?I>3%e30JUD;(}sbl+*wIM1Zic;J{ z(8nDqJ^>3WZhJyEoxhpvv8r-(Oj1#LZy}g-{DF)6F*`rtPKO1mhbo2&JAW?8*3KIS zz_IYvClgH7QNLY~xe4q3|GF4catt3@hm2^e@9Zr*yI)_u>bgxBi_iTO5C?J;^mffD zR2CD9WsA%Yq5aNx;VanZ?;jozyZ7T8wn$ltK7U3sW=m+Amb0utP3mj%{RZ_?U*|obM^Yzd)F6Q ze?w*w2K~eFECkaJ!8@EflNfG})Fk>8{%_P3>y6v~F-L#0%J}G;7-xKqoz-I$1xp=M zEO5N=KnLD?6qpRmp~IFp|Ef1X`z0Z$Yx#9nM}G#R;M)9I2-D%gBCVdGD{*97ho*S| zxSlqzUVHb2KQ0+%MX_3Xe3QH`CwEzs`R6FlcV2SMf4|=XvHQ9^al*LxLM#~kQd;R1 zt5m;|W#47eaCct4?yfxg@^5q;ygpBg`Te+F0AB5rsTOPG5}fw}XUgX8w$;{=C-yQ^ zd0547C3AOJjf5>6q;TrD=_k)5njO98e$-A}XZYiHf4jOv$(Q0N;ewH`qRM|-ZvG#? z^)@TKarA8I|K&ho)h`^uwn&42%(&Y+o$W^;jJolU>X66kVer3^Fcp8{9~NnBa&$kv zKL2zePAdHgHy4}#8M5)s%={>2YyvXgF z%X@WFkn7Ui&~}y9z^!W-@6bPzTx}RC$-It{95vyulbl)IbhmsJ#uo1g7Xy{g>?o>DlXxDo9pV6RWG!KR#44w4f8Ye@#>j*yAx4%8O|CG)F zO>gR$u3OWu^%R#X3&|5(tkla^$YdT^D~ z2f@@J!P8?*)tBeJGL1xTY+lgva9$h$Y0O}o@iRNu$P*D5_@LA&)HIK;pK8}Zw%v8> zbdBVT3Dcog=LFdoQMa2f|cJnX(MtZdL^*m2POWv%}%qa0H z;j@5Do_a@SJx|LbpPTIxgnoV5`(VpgH>ZqEMKx$aOmq-`W#2{Al{++0c^r@EwBiyu z|A6;-^WdES?yDzIj>OFSZ)i6j0ge4N=e95xp5&?A3|;$EMpR~wGtbjD{en*Q%)0MxxKNo#?OOMCJFI*{hP-pT7vD%O*ZjCKRW~Lkt@J{TN5+3tVPbcp1CEV zmzCi8*0l_MIy-NSDtXvA-ake5Z2|v5<9VC!*U1VE19Gz#4NMFC9jRvttU+b=CSG54 zzr30Mo^y3f5}EG;+uA(j_O5h z&PKzTk;vXamI{9Y@iYcN`c;$> zlc0^?cn0&F?Yc)UmZ?RlmHRsB2-P8ICyLu-7yDaxa;B9N3ZSR~7oA%HBIkcQ_aJ}M zg{hQNe~br)of{_`^t)vzLQv%MFreTQZh8XhKci#vyPCdJWdVzL)4|Y4# z%nvp+pL#5OD&OI`3EBIlgTU%(UfQ{@%jVk?#152PUZg*;ah;#}GV8d!dG3q@@tp*m zX30%BXWO-ECOWBt5{5FDgYF0Bb*^8!XE33gM!_w17;7#@e@S!023)GQ+<4jz--~c} z>f`{9Cp~q?bxhnW60y;!_;e0}U9-@(1OAJfA85rRk5lQg3@4rRti2Fg zUg+}lvp6B(TP74nqlwo{LGlf3%P3;cHi%@vav&6mCDCz$=C$uBqT z`dPJxFi2L$)k@hvF7oS|KRR3Mr(aZ5@_BJ`;b1|aE`9CQjsWCtM`28S%nc3kNkvqI z!y_rV+5A_!dYtEZU!j^61Wr3IzJ$en+&>p0L;8#%F|%#Yc`xxi@%6AghU+~%4ov4I zF~SmLZlIPBvaxc+z>l-w*lV}sQ?c~Zj$}K#F0WRn$mGtBa%T-$x%U8$@U=om_U;hq ziy+Zi!_$0i7FTv?&=IiNrO&iA@y#SId(8V!IwV$Ht{^5RUUb-(v2=cw(eDn->L*3S zV&z7EYiWHyXOHZ&>QwWW8n2U5IvbrO)una+Nh8zIY$D*H1C zP>5)_4tGw>ivY9z&!%vnRt`Tk+76j5^V<{b^Wtz&y~naq@Wxapj?SjK;(uc3d&npf zVeIW(Q>b3Z7ThHQaAs_EWi&v8#v-(a6*c#&?Vi1)-=sEFeC6?>M}z7y&M(7%!C3Cj zc7yN*_bRul@ZqObhSUQk_LYPp0jUQWZ;j7A9(cyPAY+*#NRO5a{Pt&;F?8s2K^ zc@8#L;3ipw%~Ho;3ch&lZODO!s@E-rqIu(|)i;y*^0StZv)C&8M~KI z{l0fQr36sSdwn)ESmJ;|=kC1qU^#Zkg4+o2HTPm4VdAf*UGYwoW^d2t4S=sJ@J%zW zKViNj^J&4k;cLugIMYjx8~=)Ja9*5>o_;Dl{{B3th+Ozq*g1Z+fn2uq`5QpTd#~5v zWD~(I0Yw}?T55dxih@hcyj`l(^G=v7PP33mpnYvuo4@HInw|w+*i@Tn7SmkFB=Zp#kSjQrZ&>QO)30T+|rlThD54tQveInxhZJ6>ST!A4s~ zFZenn7O(99NXe@mq?M*`Y1(}ftl=MN|I+0dALrEP-W_|bL1VL5ws#B5A+)}XI?((| zXiRidVkN>3ZWlTpNThI)mTCs0rn`=_+NAt=C#x9|Jye&`G46dGOGuj=<xNNtg#BHg|dlEKh6`wMea|KAcZiius?dGW4P4WHRk5pz4IO6 zn@?g)LICNr4&9ve5>(kk6Y<;@fd|sr)sw5=C}DPE}1>v*jT@SoR30d33u^N zXWQr0Z+c}(ioW4euY7j^WiF+7>XhM}FNI@Yv^0E>#z!2=*mGBP&I}j2KB24oASlAQ zB_v_x&P`mmSN;!F^*7V;^uoxJ`j8jPu?Z2>an$~Yhi8IuMw-s{Ed8YDXJaW@vnnJJ z(UkIBfH3Nm&T7K*2S9YMSciz@k7(%wWUr1C2ug<~&VMbudowSnkTlsuQ4Q=6xv!;n8Wnv6JAaR z58S?}j-LNR*o)7s`o2@e`1+?G$7(z;;p5VCsR1kAe@?Fvk`W=2!H>e9p_Y{rg#14{ zVH~m+hx++i-D{U#99%yfs``*I3->UG>7ogZuGsFp6ply@b%V7=;8}S%n^&~g_5QlI zM4}tM;S^ZZ`$p=;gaHBFQIYER0bg5mfX#O(2O-QfOsVs z2pIXa$ry82N~Np36()_g)Vc9X6UP;A!z7dlicb5#W$2Og{pVOirmD2U+h6}U+bs29 zC_pe&9;|)f9T)0wI)sJkss9tx>7b)EAun3-c^E>$Oe^Bv0* zLrb;ojlwjls@SKa>>RBpr6L|xv9rOU8qlYv(wg**zo4IuM(F9 zWT5Ju*f&N0(t-aE4f1WsIyN-*qEj9- zoY_vv3m}mW2NBDIhmoK#=SU+;l{$75J2Sltjz37jHhi z_#h@G@tZ{DGpV_RncoVYt*M!tj3wKoS)|!O`S4X?yK)hA->#+nCV_`)z_fI~a-KKV zw*0;vaj*Ut*58LeE|OmTard6oMbh6N|MS_@bwqp}->x;?8TZBrkhEo zLEw}u`C)t|E!d;`9H3cCt;uJ!3AnqNe8H|Jh&Ru5+&D!gn+BM$+^h<4BH$-<|7RL?Bl)O*TJQV|(ZEAM-# zq$O&HqPRu9aeJ^gCPAH+=50d*W;K&=t-|3rfg~?AN?BXYouD+QNm?y0kA*ZveV<;lEe7wMqQi%Z~#t;-N0Yemw z4_kLcn|qJu^f>NL%nR?%eDZE%P^ZZ=^My);o>KDX^mKoXcVsgXI$r&R$5@%DqW{Vt zWWMjljxJTnM1m&oG_ZM3ph7e+IeJtVG-ZJZ3j_A^fE(F$$!DsFp}8kv&^#cvX1jcTJd1zH{Ggn_`14p z`5|oo0PFRK5Ybof?v7fQZs!6DP_imSx{LRBS;(kGT$2|%ePG%GePtaCsjF$9vo!?P z0s+mQ<4XhC4Q@0+w6bEk=dkcCB7DPkb5&*PvVh~k3yh-wZsipEp^!j8rLxatSu3aa zh`uNY4UeC02qIdpQ^L2bH6mxu=1#d71^-AVS2ns%odo)Bt7f&dwN^n#4wl;@#_oGf z*69FLB8oxI38P%4&~iD+krBq_TSR+?J)Jno;gL(52s3+GLcXn!F`k&JyY`OGr??P> zucR2*yLAv2!@|d(V)0~u?Cz(F>mTRGJVzaKjfQiFU?WY{fC3`E$`Al5t821r=FSbjZ%$8wT$rM9l`-Uka3(sB&IKp*Li*u3L0K% zlr~6D?Ro@yv5|v2j3K)<3&5uBm^hw(SJUPBz^!kt(5%e1g{bFYyS-+C*f*3clzd6~ z9iLrQtz1#Bz65q><_UIUSiUZN2g@_9=#^9LAp?JulCHO0jV~AVR5wdKk`j*x}Fmt;xjwsAi!G1XS4+oezsl8=%@~TdM`ehJtf!SsiNe1o>U&MxV zE{1tCPD?YNW@^yqS4i7Cs-2Kj0ep7{CX;p|W@5|8VC0U@0$-4z>T<@zbxzDyipRp@;nO9qEl z2a~4C1=K)p_J-iTmUPcYRUXVhqzD2dKYXmnA02@mj+qnq2fg_-#c-#t7QH#eMOuVD zz*xBCd>EwbxlMd$Q*t=0w4Dck3@5q3JRUcD1bseOUYR3?yNyiaSK1i}uTEO*RTrWQ z1P&Ay6 zY$xS@iF+fVI6RO+=5Y0LLM-j7?OchaNb?5Kxd=*Lt@4@v@kmAp9W$V{+n-|WI`K`E zOzp1i%K6X61F!tet4+VYilrcg;8lRO-S2Geg|AEA${WtwC)n1yvHsmCA2n_>_lckZ zmAoWz>y^$jml&bD72;I;!abkEhjdw0Ai{3?JyruT4O#gT?&7*tpkv#xD_lJ}3uYQN zg$Na&rio;=0mHV(H7iCpb+V=?{6V3$@vJ29v=erbwI>FE!b%&%Wq`pktZda-I*aU| zj5@E!LQK^ELkcT@{Rg}}q&)!=f?UpgzL|b~&l6q4i+UrA+4L|T|I}(B-RC8XljUtJ zaVl5cp)v39+}^d@BkxWpVAg#W_G^Ny;8rTovL}=WK+3e{N+M6r2Y|hM@odu^Vj8Nr zjUXX4oN04%ZJPx~wjYru71K4MZMmiSXE>z+$J`vZ?3#mX!vc}|aecOy7gc{2ZC^dJ zBC{FvA`LuEr);m!LROQ)!K>kv&yA!v;UdGIFG<^$c+or*m!BI1;sz4kH(oS1`p(`R zcz^h&<}kozfY!7;xKf{~9!R|mZjeu$qZiVQhhg3!w{CUcMIas{abfdrKrpV8muV8P zO7At)M8~JBw@)9Nq{lLR*L~M3sTU&!yQ;;$(p9Px!3qdqtaERs_LMJ4eGCq9B@=#xQlUL>?3`*(NfZCyd1|0M`>Oa zn_ZZmN1yFMaW&iJSkOOs{_tch=g=W zaQWT{y%j{frM4(}<7@O-b>9FX(2OSt5%8=8f;;Rp&K@nwwI3SUcUg9~Dsi%CkQtr$ zK&4WBloSzM#|UW+`isd!45 z=G4)5o88aPs=J-#VJ33Rcn!Yl>REB$AaA|22DJM6wo}xnV6gz!mZlc+ zMu{7oHs-`n7u?o(19>=E@BUm6Me!yhN>Nnuda*`_{TLw^56&IPKYNtpFTA;DW|qRs zn{93nHK|k1O}m$#eh6!|3kR)zCs^QD`p`u3Vg}xIpiACj>{S=H$+dE6qKeZHCIUyE zYEj6~`aW@O!rrok>`~wWXg9$})ZgK2+OU+T9=Im{bdYlZ`AiWdMeE_bQw;T2Kin?_ zYCQRxLfK)T3B9J;8q{#C{EpL@6^bDlyZ`p zdyHR-mRSdrl5iHo{rWf9|GN4&@kig@^SZK!{gIFIc;=wbwZ#K7J-WcTP%-SV#)yt2 zUi_zDDejTw^HGk^w2JfdH%SqtN7WJjIz>h0v)c^q!9fro8o?>|ah6jZHq)rcMRyuOovB zFYIw}CuOY!`95H?;sSysf;I=#jv`diN-gZ5O#cD=sjd@%!AMLlwJwOVHnFTCM5tv5H%MhoM~PDi zdvbji)8C7LeYoNN!~#_ef5d?urvQX9e!v^i9Rj{Apm6yTXYxHIw+>og<4oaDqe>Xi z^#Gz+5jz3#d%|4o{QT-DuuXTzibp1m`J)-$Zia@2FD3RYUHittQ%J{>n*HV!^7mxy zRI68F@LIWrVYNBXqH-JDSh0;9zhN?6ltoDG?Ms=0(%sV=+zY&5K`3)A9G=I^;~RG^ zK2LJ^kSv`>OOb%xb4twig^DFI4(&|n>(r$k3-jv*U_!lpOiGo<$hbv4np`j#=F!{$ zSr-kX^!cNeof|yYUJ}$I6PhfQ@o~Ir8_mpL9>Y+~Q+sP$7uctoW%I#l?Dw_%oM}{^ zAapr+_l`&#Y?$A@(4%kg2}H50rhV~!6Xe)Q=`D-T8Y8A< zDeCWkBFI=?+B3g`XCzga{?h__H5_8B0^MYbXB3!_gADJN$WJwewc165m7VyZU_M_8 zDPvz`zdx?*PDzI;Ex#5;H)FKI9JcwZt?Tun@bd)Qr0yCi|&kt@N3oD z7LAq&1%U7g7TeOxL%&`1A+9H)#s_VawTX-Pa}ED@>^&06gJQhJp={cSLs#N^EsECq72hOIL3Xz*eaBCtO(e48rI-wQ~|8lqXAZte;ws5B02n?PAF`O`iXkSiU

  • hDxCvZrq7EAiI#xoctP2c27f&{fg<%rcpjqg7)y^zsBo8c(79lix4M-r=yx?uY?Esjx zak&GrvW>AuYphrbz=G$oVe}M%sb-ii?ZRd7=EOjo|JMuPgF%Bfa@X@oQfBj+3ZK}) zt$s6J>fxjH1j|Jlc2mGYOKTeC{WH88Cal6HK<}a%Ms9ql5FhiD|z%1-h{`tO&I{W2hb#K$& zHDGBs+mHP7KAxs#iX}}ZwrT-&C*m)`V116A;ZC_-p!Nr{o^QIU0Uv(Fh7*QsVIDo( zp#)4dOhkIBXk9gy;xr%SISUNWR&T8s_q=1*t zNK~gRaYK!|8k4c)F$qXPw`2Y?q&L*GhG;I|sm9$l#ys+^sUeP-fu_}0f)Y2@{BxqY79z&7chs~7chOy%R7WuRSmb>7h zv?aXVKE(DCDggD7s_W_`yrygIW5UEua>rs< zjVl8(XuJA>Z&%f2(40_}DZRmL)cg;Pt-K$FJVGsIphVjW*L%uDXTz~)df9Ol6P28z zs|MMa(!KRDVGJ-|Tn*&$1q*W9CqgSnG|ZusMYACC=$SJrOHw#ZLE48CMz%S0^KhVi zA$3lMrCo`aF#`xZgqz>WARYs=C`1N#v#74}2BE#&5^sN(MH=023vT12ByK)w*R=M*bX6oT+QEQ@Ibss6h(x?A@u~nWx$ru>2R|@W2~PAJoQ11PLK9rf^I#U*lnM zQd{fJI`6^A?dpB^#=NlIC(_oy(l8M2f@zAYC*xNyt^dZof7DGKgA&)ya9yPsuPlYt zATS(pm1UM>-EyN4I(Zeg-Qq9rH0UN|m&=02B`xq}t*%UxXoiiQ zNlYC3Cfe;WSCtk9Veo@Z#)~TAC3nA=6_WQ;WLJt+@MC-dn!^NkE(v_S%^7E@aVp_$ zaP@oGD#^#n&`adjAg>{KPh4Huy+C6k#{_uaeS+R5qt=W{w|ZJ<&m4)UcDrHb=EVps z@6ufsP-5s9f}NU{P^d?h&Eu7I5%JEbz2{BZn9+xTYK{`)F;3(7(G}MXPP}b3xMv0F zd1$+{99cGCF@SMhhD|su3l+}_7t(6IPGlzviw3yMQJ+uf4s zM*VFIAmRn_@?m5K!f2A@3o|IO;Hoy(C631Li66MOubc5z!xFmm=GP2#Jpp@_&PerO z+eY?bxdQr{#}nm&a0`m2vXQ-26TccSRJylNuKb=?Q-4B&*YcYtj2>j_{gf?@?M2C2 z9oXwZ`~VDDe!$1)c+HCdPVB}<`o8Zc9cHTcelGK5QMTZvHCQ_I7`NV)CW|KpS` zo#B!fW{th3tzut|FQ;1;H0ifvV3@igj5{c3^jFBQZrMXg-^5HzYMe-jQjq3k6?jX{die1EzXp~5}>tp?r)3dm(zDx?lN)Psp=5fChc1^I_a~Qj;Z7E2zjk1k?;S# z@M4)XZg{rwUqF97C!kmHFG1b#5I%no{ck=J3*s-I;{C}O8@{`hAZ+pP?TF$0irhVZ zCX+LrY6<3EKe@zAR!i%|lM~YU%q_5GS=zcW zQ?9@U=>}uN2HaPS67%wU_S=YdbzYWMP1%cU>g*c3{-cTec>vfrB7C>);L&rigX21x zWBKAV_p~<=rP+O~A2zTSvZYG*#ZA)EbK^+uL5zttqEB~-BOoCgEswnP@6(#5&Z#Gv z$R~|tbq=v)SHh^Q@lBi3!;RnRYZ;|08-66$KBQ~-h!E7$>wZOfIfl_2X37f)hJQnDa0vITGBd$YxaOCd&^jb z1_cgIJ=pQ9f9=b%bV}=(S2ovg+g>ML9MGJyn}n;MmloZ_xO(h@R-4ot2bPBt3|;I+ zIi+`+YKQ%UobCdYNn?A6pkdW)+ujxDG_F(YQ#RZKp^3p$d#(}JrjQWG4g;THSYnZ; z?tK3AympEy*>K9rvK;F~uBi0UaIqj$NFXPRii1c!h^6^;3(LH3Q!W8<4CdD^Wg&$y z`+{(@%LABrX^>-mKuzL?SA(~Gu6sea6?2^~@!;PmQ59kwrGd_cY1@{!6-9u4( z63I{=3VQ5D-|i%jkXsg&geTpV&%094!JS z5yX_mtevTg1J*aS67isBRvf?qI37^s903OsQ6W}ZZNVlOHIgYQl0w|-A-U3Ps4MRc zZ54>@hER0_A0(qHEU4AS$}S+SjXk?qR@p+*#)T>Nu=+J;bOjMuNFJO5Pa4m*9{|Kr zv-3KO0dOU9WxDx{VEb(NYB5P>GBmfUS>I7_eNtW-RaZwD+)K^N-SH z+~FfGc6KWDr4{+pcX6t_m2NqGF-yt2NJN%yYG8M{+73h>e)gPF$yBE+1`pnn&fabi zzn#?(#BhRxW*%?cjYI`Y*Tj#_(Rq_y7W=+OI{g(9b2Knl!2aV2eg(~e-&W`k#8xxY2 z?Jy(88V^yLz^Y2`wQ858#L?HH_~PaauMym~`?`dIE5t(ABF2z6%mWgC>Gs_ed){i% z5^x#ElHtf}O*J6JFbuFbtmOS($<`|GfRmnxYPrXm;cZ$l+irX?9bq}hUs+?t)Mc(~ zddDT8tg>-=WqNs;{0O@mJ#V<~avnH3y?EUjy;7J7tLR>ZR6?PkG!byCeTvXp&Cbwj zey4p6`V2?lh$@7)D6#2A9py$n5g3FZU!(6P3OBlqh9MM-qK%k~le~ys{agl$VXCQG zld@D(X6fh-&1>6Gp=vS-+U%k83TW-+TN5Kwj9=$RGiZc;h=vXr8fuZE`=ew&GAvd% zvc zH&8a{8Q={30-;rVuh0vcbeHc>MV?Y4o{L|b2D&iei5ivZ^3xe^KjuLzOQM$LC6@PH z3a*yNw=t(=+KQ*aVa}fmsaU^^iaxYTg+XGpqSLCS4rH-B>|m7OKlC_07pm^6tcJ`f z?u!g)6%1b&PV=#^`W1vNienXyl`^pdSyYBInx#j84UNnkbGcFe(UF1fn$pw|ilpL%c3{uI3Y(Msjje_h=84$L! zITalal+jP)D3qXXfed0shLL&UNSMz^O4|a|7~?3EINZ8ySH{WMz>`0vax^+lp9MzD zs#1sS4{bPkB1(F@UP|M#Q}6qX&S)~SBO@1ozflizEER0qyqOz82}Ce^y{HGLnmu|> zNaC7TKF1kbHv0wanqw4pclvbom`szx?TQB80v5{o#YP6Sf_Vu2 zp+I`0(aLTe5|=cB>)>n%Ij;!YH?$T6}w+zwFEOAQ-{+`mSrqjHM869;q^%-VKx(U4MWiT%Nr;6iEsCfGg9J!5B49|6DFH$f zZKV_tZ~~MmMMXqNB2xk+A+189B7{K*nMj)mK|&HEk_0lnS361H|Gsa%-&)^V?;l|S z_uRA3*>{h>y>l+VHgC$2iM2fP9-p^;WsF^?#3fej@KuCXCXdW{n><)UNtPF@XK`3W zil$Q@AkLV}o$qllMY1fWI&aO@8gA_rIf+=mW9TJQ!ndkT zM6^w^q`uWCTAjIvbD4>g~Dkj-Uw;9R_zzHW2hSvMM|+KJm!TK zdF}j=bCF_55LY;$7o5C#cY3vYWoyJqVmeqEjeD^-EcJ)0YeUk%^r*mOv$v1kosSEK zrxum1zX`tCz8yOmT8SR&&5Vy}*%(1A3@-^Tzhg@v)Z9jm4!sQ9<1fY2sepe6|8wL&a5X+`5mvWYM)ItNd=`%yo?If=;GwX^j`8E<3+ok^=U)^IcpKCf z|1HrTp*`rJv_}&f_wnNSXCzMQ*dx}6#5BHc{mxUD**ca#EhGyD)q2F6e?+|MVa@qe zqQfvNH_V@RWOxTQ*M=NYZ&>{5=X-&}H+wSX#l#K6N+lTMtpu4 z6Pdv<7qPs;nD4S~ualvMC`GQ(oXECe%NekARA@;S3c6dQU>Y_zh~?hn*W zk&agfB`p$rv5t(Ye$v8%O$?bhJW#;(==GsbvmSOek7b(x(aFhFLz|iBKGJhbr(tH1| zwYa)gSVONpE zh1PAn-VY%%C_KlIfv(&E*Q&}J89mfEQ(1_6N|~u?xYRvngdD?vY0PN-M*{4% z>FZ&KtYfFg0qm~^Sq?%BKX#ut=C?*L(K%=cCMHG+o;lK;SG=*8PLTpd08^Xz*O&gNA=xc=^<0RF{=wA^%GdurM=? zFLiS}sTZuX1N{S=5D$)y-uiMU>F&=Gub->09`tB6u9>h|0DjONuf!jT+GcOWF7XVV zn%e0MJ~s!TDQ|$8-)qC+Cy0B00g?#n$uWEMkcQWsK@19ulVZrIRCzfy23*fH@ z>ka?Oy6boI(Kcai z=2qc3BcHI;|2?m^zYuu4fo?4I4265BZSgzz2rZwSZvpVFHxlyG`+*4>6l^P8BHU1B zdzRW5o2x#zWfSlwoj-a=>@IcFP4`3n##gOzAmX=dV*P#PFp%H09*Ekuy29$L^sA90 zovV|7`unPDH@#TZnwHhNqJP75ee8Q1+y7qcmuu8lReKDwE9&#l{^}p>`rt5QW_IV# zzkM-x@GH;1)|bOfr@?Nm_XeNU9_N0%@tL7fijz71p#o>ltU_q2`rPUqKkx$v3|&K= z&e*neW66XRSGrBhJN(BkKt0D8(1A0b!6gb5>sQxQ)FNe%`Ck{_e;KvSX|;e6Q>2Cb z*`7f~jIUPbP}Aj3r_O%5e_OYXxmwzEs@G8|I#z8e-uegK{!=-?Fl{`h^TfNJO{2T6 zKYCHT>wI|UF;?*SxI3Q`wcOX`4SyGrytV^uY67JmT$E!&%-nLz3)^#duH}y~E6yt) zlk(XKB08ky0fuh1-gxhzkLk&;)Dzb{2)Tt`6W1D+u8v+&xU|uWFY*_z>gsDv9`5)R z^wURrGRD6QPE4&${k>szNxe8<$7W0MG`cna=vN$`O$5UMJ6!~Ie(IApRRKAtT9#=T zDzVzDQT2TQv$DJJ!w&~~hJwC&&JOysvE|G?0W+OKavG}@lg?A`^B+&Ae~rJBuj}`k z`2xUKD}8UCznbaKefQ12_H+V+T_$)>!Zk?ZZW>s&8Ouo5vDQ0Ae=BS%pn;JNgo@l! z@zKWyA+pjCxQL^ajnK!_0qTh9HWV(a9BWU^kD}YcjR-BJ8|EN)ctHG~PC*xm(NH;+ zPN;}O!aSDHh~Tj{MPtfGG?s=&LlX~0W{Fp9{8KbOS4J>ucLo14W4GNYjr6dfRLIVY zfPm;ql_EO9fyG!^+)fVF^5#VC;wBbhQiMWL$EZRC#Gh_5zVzxOI6ei5 z*;0F-s`C1!y|?Cuqb)G->kuo>a^3pT<06=-p$DEX< z85DGJ<~gVW*l7drx6vj#L@Qt|0X}jKPR2t>IVluVBT2l)ZhhSvm`6a6PqqBtZ>W9@ z12)a8$%8OB`SDO~PdI_jq<-Q}zSd1=YKxQ;gAp1O#e_4O5-vFXY;W=OE2kq}&M+F$| z*la^LlMqcL5P?_Fxr`zCM2a)L5v0>6BY0~iU^jM&N%m}gPC!2FUQm$l-|P&G(V%J? zVB37~U)Z`_jk=`N?o7-G%!8B$-qu3dbCTqJ<{INukkeUaplahZ!?vLUFs4#~0xIHHR5jj)Y9M|IXKk z5c*p6(TVK7??3&9{8H42G=u$qf^WQab#D^S_h)U-N`=dHYz1kLiGY$`e;UZ)U>fQK#x@-Ha969=WW&q%hS% zaG%U03(4RX=G6u4_CB4jgBO{SsGrYfv$GE|EQhwPQCA~wrE?1|9yvI9{r4yNkarly zpvPd53ZrYgzS}1#aH~<~@48^7sn5IVPD2oKL}}CpH~nwZP4FH~qgDV2E$c#>P>f&g z$QYe+&7zLAg&eUJN*rV(ww7z?U@DP-Y%i3%&_fU$O1HC*YPTx$g1t`*#jD?UcYoTv z$o;zBD6$hVL`lYsdCMK?veYejlNs;WQq-8HS}%4zkW~Ry7hXa{+pm0E)F`WtF*wUb z>FrZ&fg=64>AaI3Bi8lQK9^%izBStqlYrUn5#mz>?F)0GH)_5U!eRk~HQnkHZH!1@ zmNz?H7yF?ukeZPi+zd0vECMu0I&;q?iZmLO4i5@uvWLR6Qj~If{p1KfKrK!CoQq3zYBFB2F6LKq5uLPNS4@Q zny0Or-DY@Bu-Zy|!QD{ow*LW#5#JiMi|4W=b9|F%5b~ zkIe6_w?z=v?e-pu|Z`E^><*lwNBmR<|gyyX4hoN=7 zHXS=S;6l^$XwH6Ac}^}x*N*rc)K`$kTf^G7nzaLK-;t>G#;f!ipY{JF?{V}80h(i7 z&vwBE#5DL&HOtYEma;>?B#0VKGX}Y~=QyYG)6hePl$Fi~-A24KIueQ&`I$wLb#@(A zX3r~%4f8$is(gYSe7u!TBtJxNPS4`EWt8dD*7;BfD^WNjeqNZs@X4WrFe^CV#H>yf zpA~Drbb&71q^5%-r7;PSjEnmW8X%ZLw=7T=mpmQl46y}GOkY)<4$k^)EIf;|5PT+I);{}`nqNnc`Oj3MOgZ~M3 zG4CD_YCbW)45uaN`c*Z6Pa37>IoRen{Bu8Qz`W6FD2?O&ZSUKv^Ds`>{4o8h^~M*v z!f`Iw4hT9~9_BsM;bwC?wOg)ETwXae5ib-(lyG{I=yLRS!joU}9E80C8V;LAifmP3 zg$4Fp>Kxd{3|@0hKWh*sN0kaU2qs!UEWMq-WzjQsmxR|gGA18U!LkmJ5u4xMaN1MA zk$TT(A4j}%qM~4>byarLj3Fl8xLf70+<$LUq%oXIak@nMTuT`ag3uD=Gd-sW<*Wn( zJ72yyw^XL>AaNdcgQ;SozSYo!e`F__7{yU%&CGi-7_~AB#6~tJshCZ!)x-}lI|!_c zBNOt(eC{ueuGAtHEE1ufIj17p%2byuGrxWM_OgbL=V7qQ(tK({_YJ_@LeVvMi!bBP zJ%4-%&PjQv#wnq|UMS(f)ZAadMR1`B=m5FHDC9cf6JS{he!_-3D=R(v*zJbjxWB*> z6DsKtKOqNP<-%)}B~*bx5+r*2kN~%oN%8Z!O&}yxkeYQv+8GY@c58di#J4hJA4yzv zafIydw!{{pP};SReY!vb0M#tADWLYks7<><8T2E=*45Opk#24brzxc^hC}>b!~;$u$l3yZk6^Baesr?Eu!l$R=}ORG!(@2%p!vKik96c5?uTji6L@@)aW!{Q}ou zV<$hH4$?*I;n3AYqD$&_C>7z^Zv<@kYbF|&|W)qsgA?xZ?LZ=?GUG0~fA zV0{9O|6Y=Pk99G=(bmSrGa%*;puw)#Bu=RelS26qu$_1#!|flQ#L)Y4{JGmp0=y>tYSzNeH1>?Wh%vHHETs3CD+pDL$21(n>w7*U1^drF!@`-5Av-xexIy@lY;u_O+ahu&@Z z$ZRJ~Xi(a)FeoOgZ(_>)#l}uCmEW|qcZdkfVuB$)opcY4QbYLsM=pOf+>&n2Bt)Z$ zChUh2)j|dy_tR{UOxWCKFWV2Pnjep0eB2lIRFDbzfnB6*Q=+^=FH=E@Fvd0Xcs-b1 zlG59qYtvn5Z`osD%fFSq=HGJGdF}pZ7Z=+LN0Z6A2eI;II3JfL*NvC$H!{!Y9-Atz zr9W5B$R%a^aG%($gJ_dR=3{P)6p2h})rQy}jjUYH^Z=quDfbO(uxJl7^`X=^Izi9` z+a576nRm$PlPIrsF40J^N1w|+q}Q$1nKq@ygyg$W?8{jNm>v+Dbvx3)_cLeGsfX%L zbCxO9GrF{QS_s>*%EIG9SxhqGr56-@{@NEl0bbHubG9h(#39iNyZ+vGLxZ^$P5_KEY~2Vy5VjL6i=HxMC4bN9G6709_{ zMY-zOZT;?R`U$iR+(V+=Z+enM<+xgmB) zaa*HS$=T)=$ixE6494x_xBX69sEs;%jcAP;{Im+FTt)!r9xV(-0|0lK2R)Zy{7w{2 zA3vl~XM=q@$MMvbQSjvHbi zwLSopqo^TSDvfSq=X75zML9}kInz^YF)mRW)d+{H9(7G_QLapYPLbP?2ET0xc-5)`l#Q$ zg7jl*_H9^J$KX&w^Cv?}8yASlBm%Ma%y!GI!6iNvsFv?)YT_4@(7OptaG$-znf`JZ zrri$}@~CvI)ImtBw+N`+>QXpIC!Zh+N882i#u>JJoINkU#{=~_z(tW#b#6Ig(yv1{ zI?FDyWo5pqT~Vm!6C_?{y~6Q2NvTrBGkw~YFg*AuED6{fik9{H!< z)@kjm`im@V7R(Zn9M#NX^$xK0oEeD?R84+B2Aiwq)WwbPIo)6*ye-Ak>{}plA*g^v zuLH@Z&hgeppl5!R+|*YDPYNy&ME#~$lwVjnwgXY2?_OY2>I3k@7m6<*E%YWod6gf+ zVx&=IBD_{$O>zt^^VVeW+w{8w6bFpENhFNo0?V|g$LxD1*}jJ?DSoQiDU?(B?(Mh) zezZZ}1gFDCsp%OBJ*ukmNZlhQ%q0%LctL0AApnlZPVObIC*G9&H*g!Kg^(H1Vi@(d!NB;v~*2 z=URW35nHD4TkjD2i;V0zwjhBcO`b>+R=Du!E50&UF+%0MX^1y~hB(<;7 zrK>PT7I_I}5F%*PdihFmjvo81dJ9`DrSn}b$#G{)eD05v^F5C{i(3{GVq;swuGzSd>1Nzd>m8ZiHU?$0LS)a zWxAK5Sw>I7FI6r(BeUVCGR3Y|Ez_!VfV^>bqExDg$PsDw)E4irBx0xGA_{CT7qo{)%&Lex-wXfm5$(9@9|jofaV z83`qaT&2s7ZA6NiG(|EPg*7&Dl9R+q=1n^|;d{*>owpm<5;47A>1pm%MJ7@GcsQyF zN!HAQ##oZiRxC*AE^iw%eK=}P-Hgm)fcwI$r)`*8!DAS0deoD37R^cPA&;Va$mg{j zHmp2ybBoiH0EJ8@OVM(XGG&$-P3r^F=S}!Z>KIHrXJ}U>_h?e|{=8pDcL(r*5qAHL z8$r}`U3T8He$OpDw9|Q+g7h)^s0Y$YlHZAm6XLGv(#axeg;$S0nSbmynC+^k5;t<@k1CX!R2kxz_jPuQq6US4Q? zo-Uy1?Q|OQ2*;s2og&?8P3A?@KlFoWHn^OV2`dk6M84DL69P=^u?0%3KdYUKNzLk1 zg`@ZdkKD&b8OHW`f8KKmm{`!0R^Z6PS9{sVLCL@=+6$z6+jXfp=oG}wR;UU}ce-pE z9C2w3=mCMEciUp3F%|mV(;wllD{V%ry`b$03L`FABfq8yHzy_VmnC5Bw>3eXI%T|g zpq7ElxsmQcC6==qQ}pT&mIW^GrvWzV&h*2m8j|o-HmR6FUPJ|pK@gPyc#L$gDjp0u zhwO#W)5d&V;U|!dt6G-)L-hmi>9;&Pr~L)X64(}kxkt`XF~7A7QdE~x6%E&`2#O@ zFDl&LnzlxLtL3etQD-+cFNCo;aIqn9=WE8iUD)vez0Ae@8uu-C+v_Ez{DIw5(9UDd z?zu187uk80l|^g__YZP=>$Yg19;AQjb7qswAYS^{w;1AeQfBozslDfA{;r^}fRawa zAEg1swUWYW@d?=RfoPaVir{(d6cCfziAL6b|1P)z2wwL&K}gF{OT3q1L33s6{NLLM zoQ?G6$Flu&8+A$OHv8=+!Rhb;rh)S3Z!O;xuYVN?Eh3 zYJGAs9eqHEnn97?)5g%bl{YRa?ka0XT|CYF%m~kEp_9Na!?@b^#YTEUb;5$zWZ0@W4+IXO`O0GE-2#Tv^ zX2ulUc=Er+*7fALw3+vE)wZR;0_3ZT&7Jzl z1IGCP-KUU^2?-7K5Yz_hw5pkj7WyTm$~5 z`&ClPL!bbkdgb!o9imDguX;R~K5#wc*z~e*ASXCQ$jA?rHsU1I1tvP>LMiRw9Z_00 ziji7W)a!0zF}6RJW#waNtfZMo@@Vvb+EtZNSjKxgb*=%3le5>VRm@af=jdsLKJRUP z%&QDI%5ZpmUmU(}UF`TRn70qvcp;^xjcZ+ja$vn!QQ)CD;vSmC;XLy`N}fGx?tt?Z zi+j5tLuq{zGNQ0ekzXy@_Pp+@ zke~%jCf=}l(`*tKuos5CcVlO$8!e2HEEjOe)4BS6H;GjTkYT))z622t{Tep8wbvF`g88D z=#FZsIM2t>mGDW19-p-BtTFsIlx0uJqyDzlf6LO~*rWRN!~-5%zy58N-9SSE4Oa1Z zi|8$7^J2ueri06tVam6_2;U$17A)sq_MN{@A?=SP@V@h{zpDI`;_Kb4^O}T_gZ^Fx z@Y_X)AAqwv{-*f)sG8S@hrD&$#ZUfEhD6-5IGoJb_qfO0EqQJBzutTBOS1pB-~AWO CA?rZ^ literal 0 HcmV?d00001 From fe04bc953a53a3024facbb79d6752326f6095eb6 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Thu, 25 Jan 2024 15:00:38 +0100 Subject: [PATCH 042/311] feature(publish): #535 fix tests --- .../asset-publisher.component.spec.ts | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts index 952e901e07..58b2d7d011 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts @@ -1,14 +1,20 @@ import { Policy } from '@page/policies/model/policy.model'; +import { PolicyService } from '@shared/service/policy.service'; import { renderComponent } from '@tests/test-render.utils'; +import { BehaviorSubject, of } from 'rxjs'; import { AssetPublisherComponent } from './asset-publisher.component'; -describe('AssetPublisherComponent', () => { +fdescribe('AssetPublisherComponent', () => { + const policyServiceSpy = jasmine.createSpyObj('PolicyService', ['getPolicies', 'publishAssets']); + const isOpenSubject = new BehaviorSubject(true); - - const renderAssetPublisherComponent = () => { + const renderAssetPublisherComponent = (input?) => { return renderComponent(AssetPublisherComponent, { - + providers: [ { provide: PolicyService, useValue: policyServiceSpy }], + componentInputs: { + isOpen: isOpenSubject.asObservable(), + } }) } @@ -17,22 +23,27 @@ describe('AssetPublisherComponent', () => { expect(fixture).toBeTruthy(); }); - it('should publish assets and emit submitted event', async () => { - const {fixture} = await renderAssetPublisherComponent(); - const {componentInstance} = fixture - const publishSpy = spyOn(componentInstance.policyService, 'publishAssets'); - const submittedSpy = spyOn(componentInstance.submitted, 'emit'); + it('should publish assets and emit submitted event', async function() { + const { fixture } = await renderAssetPublisherComponent(); + const { componentInstance } = fixture; const dummyPolicy: Policy = { policyId: 'id-1', createdOn: 'testdate', validUntil: 'testdate' }; + + policyServiceSpy.publishAssets.and.returnValue(of({})); + policyServiceSpy.getPolicies.and.returnValue(of([dummyPolicy])) + + const submittedSpy = spyOn(componentInstance.submitted, 'emit'); + componentInstance.policyFormControl.setValue(dummyPolicy.policyId); - componentInstance.selectedAssets = []; + fixture.detectChanges(); componentInstance.publish(); - expect(publishSpy).toHaveBeenCalledWith([],dummyPolicy.policyId); - - expect(componentInstance.policyFormControl.value).toBeNull(); - expect(submittedSpy).toHaveBeenCalled(); + fixture.whenStable().then(() => { + expect(policyServiceSpy.publishAssets).toHaveBeenCalledWith([], dummyPolicy.policyId); + expect(componentInstance.policyFormControl.value).toBeNull(); + expect(submittedSpy).toHaveBeenCalled(); + }); }); }); From d543c4d90c12f1671f93e99407793e13d67b8610 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Thu, 25 Jan 2024 15:00:53 +0100 Subject: [PATCH 043/311] feature(publish): #535 fix tests --- .../asset-publisher/asset-publisher.component.spec.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts index 58b2d7d011..c69762f40f 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts @@ -5,7 +5,7 @@ import { BehaviorSubject, of } from 'rxjs'; import { AssetPublisherComponent } from './asset-publisher.component'; -fdescribe('AssetPublisherComponent', () => { +describe('AssetPublisherComponent', () => { const policyServiceSpy = jasmine.createSpyObj('PolicyService', ['getPolicies', 'publishAssets']); const isOpenSubject = new BehaviorSubject(true); From fbf871a1c873282d1665d1634f386914853224ad Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Thu, 25 Jan 2024 15:09:52 +0100 Subject: [PATCH 044/311] feature(publish): #535 fix tests --- .../shared/service/policy.service.spec.ts | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/frontend/src/app/modules/shared/service/policy.service.spec.ts b/frontend/src/app/modules/shared/service/policy.service.spec.ts index 6240e97fe4..c91603f210 100644 --- a/frontend/src/app/modules/shared/service/policy.service.spec.ts +++ b/frontend/src/app/modules/shared/service/policy.service.spec.ts @@ -1,13 +1,28 @@ +import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; import { TestBed } from '@angular/core/testing'; +import { ApiService } from '@core/api/api.service'; +import { AuthService } from '@core/auth/auth.service'; +import { KeycloakService } from 'keycloak-angular'; import { PolicyService } from './policy.service'; describe('AssetPublisherService', () => { let service: PolicyService; + let httpTestingController: HttpTestingController; + let authService: AuthService; beforeEach(() => { - TestBed.configureTestingModule({}); + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [PolicyService, ApiService, KeycloakService, AuthService], + }); service = TestBed.inject(PolicyService); + httpTestingController = TestBed.inject(HttpTestingController); + authService = TestBed.inject(AuthService); + }); + + afterEach(() => { + httpTestingController.verify(); }); it('should be created', () => { From dfbb21fb3ed0611a05c4d13ccae92e6859110608 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Thu, 25 Jan 2024 15:22:55 +0100 Subject: [PATCH 045/311] feature(publish): #535 display error message --- .../parts/presentation/parts.component.ts | 50 +++++++++---------- .../asset-publisher.component.ts | 18 +++---- frontend/src/assets/locales/de/common.json | 4 ++ frontend/src/assets/locales/en/common.json | 4 ++ 4 files changed, 42 insertions(+), 34 deletions(-) diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.ts b/frontend/src/app/modules/page/parts/presentation/parts.component.ts index 7add524f4c..e15ea887b7 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.ts +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.ts @@ -19,27 +19,27 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -import { AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChildren } from '@angular/core'; -import { FormControl, FormGroup } from '@angular/forms'; -import { Pagination } from '@core/model/pagination.model'; -import { RoleService } from '@core/user/role.service'; -import { PartsFacade } from '@page/parts/core/parts.facade'; -import { resetMultiSelectionAutoCompleteComponent } from '@page/parts/core/parts.helper'; -import { MainAspectType } from '@page/parts/model/mainAspectType.enum'; -import { AssetAsBuiltFilter, AssetAsPlannedFilter, Part } from '@page/parts/model/parts.model'; -import { BomLifecycleSize } from '@shared/components/bom-lifecycle-activator/bom-lifecycle-activator.model'; -import { TableType } from '@shared/components/multi-select-autocomplete/table-type.model'; -import { PartsTableComponent } from '@shared/components/parts-table/parts-table.component'; -import { TableEventConfig, TableHeaderSort } from '@shared/components/table/table.model'; -import { ToastService } from '@shared/components/toasts/toast.service'; -import { toAssetFilter, toGlobalSearchAssetFilter } from '@shared/helper/filter-helper'; -import { NotificationType } from '@shared/model/notification.model'; -import { View } from '@shared/model/view.model'; -import { PartDetailsFacade } from '@shared/modules/part-details/core/partDetails.facade'; -import { BomLifecycleSettingsService, UserSettingView } from '@shared/service/bom-lifecycle-settings.service'; -import { StaticIdService } from '@shared/service/staticId.service'; -import { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs'; -import { map } from 'rxjs/operators'; +import {AfterViewInit, Component, OnDestroy, OnInit, QueryList, ViewChildren} from '@angular/core'; +import {FormControl, FormGroup} from '@angular/forms'; +import {Pagination} from '@core/model/pagination.model'; +import {RoleService} from '@core/user/role.service'; +import {PartsFacade} from '@page/parts/core/parts.facade'; +import {resetMultiSelectionAutoCompleteComponent} from '@page/parts/core/parts.helper'; +import {MainAspectType} from '@page/parts/model/mainAspectType.enum'; +import {AssetAsBuiltFilter, AssetAsPlannedFilter, Part} from '@page/parts/model/parts.model'; +import {BomLifecycleSize} from '@shared/components/bom-lifecycle-activator/bom-lifecycle-activator.model'; +import {TableType} from '@shared/components/multi-select-autocomplete/table-type.model'; +import {PartsTableComponent} from '@shared/components/parts-table/parts-table.component'; +import {TableEventConfig, TableHeaderSort} from '@shared/components/table/table.model'; +import {ToastService} from '@shared/components/toasts/toast.service'; +import {toAssetFilter, toGlobalSearchAssetFilter} from '@shared/helper/filter-helper'; +import {NotificationType} from '@shared/model/notification.model'; +import {View} from '@shared/model/view.model'; +import {PartDetailsFacade} from '@shared/modules/part-details/core/partDetails.facade'; +import {BomLifecycleSettingsService, UserSettingView} from '@shared/service/bom-lifecycle-settings.service'; +import {StaticIdService} from '@shared/service/staticId.service'; +import {BehaviorSubject, combineLatest, Observable, Subject} from 'rxjs'; +import {map} from 'rxjs/operators'; @Component({ @@ -136,11 +136,11 @@ export class PartsComponent implements OnInit, OnDestroy, AfterViewInit { } - refreshPartsOnPublish(success: boolean) { - if(!success) { - this.toastService.error("Failed to publish Assets"); + refreshPartsOnPublish(message: string) { + if(message) { + this.toastService.error(message); } else { - this.toastService.success("Request to publish Assets was successful") + this.toastService.success("requestPublishAssets.success") this.partsFacade.setPartsAsBuilt(); this.partsFacade.setPartsAsPlanned(); this.partsTableComponents.map(component => component.clearAllRows()) diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts index de3bab343d..9892d86feb 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts @@ -1,9 +1,9 @@ -import { Component, EventEmitter, Input, Output } from '@angular/core'; -import { FormControl, Validators } from '@angular/forms'; -import { ImportState, Part } from '@page/parts/model/parts.model'; -import { Policy } from '@page/policies/model/policy.model'; -import { PolicyService } from '@shared/service/policy.service'; -import { Observable, Subscription } from 'rxjs'; +import {Component, EventEmitter, Input, Output} from '@angular/core'; +import {FormControl, Validators} from '@angular/forms'; +import {ImportState, Part} from '@page/parts/model/parts.model'; +import {Policy} from '@page/policies/model/policy.model'; +import {PolicyService} from '@shared/service/policy.service'; +import {Observable, Subscription} from 'rxjs'; @Component({ selector: 'app-asset-publisher', @@ -16,7 +16,7 @@ export class AssetPublisherComponent { @Input() isOpen: Observable; isOpenSubscription: Subscription; - @Output() submitted = new EventEmitter(); + @Output() submitted = new EventEmitter(); policiesSubscription: Subscription; policiesList: Policy[] = []; @@ -49,8 +49,8 @@ export class AssetPublisherComponent { this.policyFormControl.reset(); this.selectedAssets = []; this.policyService.publishAssets(selectedAssetIds, this.policyFormControl.value).subscribe({ - next: data => {this.submitted.emit(true);}, - error: error => {this.submitted.emit(false);} + next: data => {this.submitted.emit(null);}, + error: error => {this.submitted.emit(error);} }); } diff --git a/frontend/src/assets/locales/de/common.json b/frontend/src/assets/locales/de/common.json index 72a23a0248..d7d404dc42 100644 --- a/frontend/src/assets/locales/de/common.json +++ b/frontend/src/assets/locales/de/common.json @@ -197,6 +197,10 @@ "severity": "Gefahrenstufe", "severityDescription": "Wählen Sie die Gefahrenstufe für das vorliegende Problem" }, + "requestPublishAssets": { + "success": "Anfrage zur Veröffentlichung der Produkte war erfolgreich", + "error": "" + }, "pagination": { "itemsPerPageLabel": "Artikel pro Seite:", "nextPageLabel": "Nächsten Seite", diff --git a/frontend/src/assets/locales/en/common.json b/frontend/src/assets/locales/en/common.json index 07f8362bef..a97306e724 100644 --- a/frontend/src/assets/locales/en/common.json +++ b/frontend/src/assets/locales/en/common.json @@ -199,6 +199,10 @@ "severity": "Severity", "severityDescription": "Select the severity for the problem at hand" }, + "requestPublishAssets": { + "success": "Request to publish assets was successful", + "error": "" + }, "pagination": { "itemsPerPageLabel": "Items per page:", "nextPageLabel": "Next page", From 40c555c5662fe1ccba35f734c383e5b8fda02b3b Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Thu, 25 Jan 2024 15:49:31 +0100 Subject: [PATCH 046/311] feature(publish): #535 added tests --- .../presentation/parts.component.spec.ts | 68 +++++++++++++++---- 1 file changed, 55 insertions(+), 13 deletions(-) diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts b/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts index 10ce4eb5e2..d59fc6c0d9 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts @@ -19,19 +19,19 @@ * SPDX-License-Identifier: Apache-2.0 ********************************************************************************/ -import { LayoutModule } from '@layout/layout.module'; -import { SidenavComponent } from '@layout/sidenav/sidenav.component'; -import { SidenavService } from '@layout/sidenav/sidenav.service'; -import { OtherPartsModule } from '@page/other-parts/other-parts.module'; -import { AssetAsBuiltFilter, AssetAsPlannedFilter } from '@page/parts/model/parts.model'; -import { PartsComponent } from '@page/parts/presentation/parts.component'; -import { TableHeaderSort } from '@shared/components/table/table.model'; -import { toAssetFilter, toGlobalSearchAssetFilter } from '@shared/helper/filter-helper'; -import { PartDetailsFacade } from '@shared/modules/part-details/core/partDetails.facade'; -import { SharedModule } from '@shared/shared.module'; -import { screen, waitFor } from '@testing-library/angular'; -import { renderComponent } from '@tests/test-render.utils'; -import { PartsModule } from '../parts.module'; +import {LayoutModule} from '@layout/layout.module'; +import {SidenavComponent} from '@layout/sidenav/sidenav.component'; +import {SidenavService} from '@layout/sidenav/sidenav.service'; +import {OtherPartsModule} from '@page/other-parts/other-parts.module'; +import {AssetAsBuiltFilter, AssetAsPlannedFilter} from '@page/parts/model/parts.model'; +import {PartsComponent} from '@page/parts/presentation/parts.component'; +import {TableHeaderSort} from '@shared/components/table/table.model'; +import {toAssetFilter, toGlobalSearchAssetFilter} from '@shared/helper/filter-helper'; +import {PartDetailsFacade} from '@shared/modules/part-details/core/partDetails.facade'; +import {SharedModule} from '@shared/shared.module'; +import {screen, waitFor} from '@testing-library/angular'; +import {renderComponent} from '@tests/test-render.utils'; +import {PartsModule} from '../parts.module'; describe('Parts', () => { @@ -315,4 +315,46 @@ describe('Parts', () => { expect(partsFacadeSpy).toHaveBeenCalledWith(); }); + it('shouldRefreshPartsOnPublishAction', async function() { + const { fixture } = await renderParts(); + const { componentInstance } = fixture; + + + + }); + + fit('should show success toast and refresh parts on successful publish', async() => { + const { fixture } = await renderParts(); + const { componentInstance } = fixture; + const partsFacade = (componentInstance as any)['partsFacade']; + const toastService = componentInstance.toastService; + spyOn(toastService, 'success'); + spyOn(partsFacade, 'setPartsAsBuilt'); + spyOn(partsFacade, 'setPartsAsPlanned'); + + componentInstance.refreshPartsOnPublish(''); + + expect(toastService.success).toHaveBeenCalledWith('requestPublishAssets.success'); + expect(partsFacade.setPartsAsBuilt).toHaveBeenCalled(); + expect(partsFacade.setPartsAsPlanned).toHaveBeenCalled(); + }); + + fit('should show error toast and not refresh parts on failed publish', async () => { + const { fixture } = await renderParts(); + const { componentInstance } = fixture; + const partsFacade = (componentInstance as any)['partsFacade']; + const toastService = componentInstance.toastService; + spyOn(toastService, 'error'); + spyOn(partsFacade, 'setPartsAsBuilt'); + spyOn(partsFacade, 'setPartsAsPlanned'); + + componentInstance.refreshPartsOnPublish('Error message'); + + expect(toastService.error).toHaveBeenCalledWith('Error message'); + expect(partsFacade.setPartsAsBuilt).not.toHaveBeenCalled(); + expect(partsFacade.setPartsAsPlanned).not.toHaveBeenCalled(); + }); + + + }); From 476e4110b68fafe0a89049726b240bbb330ec386 Mon Sep 17 00:00:00 2001 From: Maximilian Wesener Date: Thu, 25 Jan 2024 15:57:06 +0100 Subject: [PATCH 047/311] chore(deployment): 552 updated doc --- .../#534-policies/policy-handling-tracex.puml | 65 +++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 docs/src/docs/concepts/#534-policies/policy-handling-tracex.puml diff --git a/docs/src/docs/concepts/#534-policies/policy-handling-tracex.puml b/docs/src/docs/concepts/#534-policies/policy-handling-tracex.puml new file mode 100644 index 0000000000..d1622498c1 --- /dev/null +++ b/docs/src/docs/concepts/#534-policies/policy-handling-tracex.puml @@ -0,0 +1,65 @@ +@startuml +skinparam monochrome true +skinparam shadowing false +skinparam defaultFontName "Architects daughter" +title Sequence Diagram: TraceX Interaction with IRS on startup +participant "TraceXConfig" as Config +participant "TraceX" as TraceX +participant "IRS " as IRS + +Config -> TraceX : ID 3.0 Trace +TraceX -> IRS : Get Policies +IRS -> TraceX: Return policies (Default Policies from IRS (C1: Membership, C2: Framework, C3: ID3.0) +TraceX -> IRS : Create(not exists) or update(exists) + +@enduml + + +@startuml +skinparam monochrome true +skinparam shadowing false +skinparam defaultFontName "Architects daughter" + +title Sequence Diagram: TraceX Interaction with EDC on startup (As is) +participant "TraceXConfig" as Config +participant "TraceX" as TraceX +participant "EDC " as EDC +Config -> TraceX : ID 3.0 Trace +TraceX -> EDC : Create notification asset, policy, definition +@enduml + +@startuml +skinparam monochrome true +skinparam shadowing false +skinparam defaultFontName "Architects daughter" + +title Sequence Diagram: TraceX Interaction with EDC on startup (To be) +participant "IRS" as IRS +participant "TraceX" as TraceX +participant "EDC " as EDC +TraceX -> IRS: Get Policies +IRS -> TraceX : return policy(c1,c2,c3,c4) +TraceX -> EDC : Create notification asset, policy, definition +@enduml + +@startuml +skinparam monochrome true +skinparam shadowing false +skinparam defaultFontName "Architects daughter" + +title Sequence Diagram: Sending notifications +participant "TraceX" as TraceX +participant "TraceXIRSLib" as TraceXIRSLib +participant "IRS " as IRS +participant "EDC " as EDC + +TraceX -> TraceX: ... +TraceX -> EDC: Get catalog +EDC -> TraceX: -> Return catalog +TraceX -> TraceX: Filter for notification type (alert / investigation) / method(update, receive) +TraceX -> TraceXIRSLib: Validate if catalog policy matches the configured policies in IRS Lib (3 Default Policies) +TraceXIRSLib -> TraceX: Valid +TraceX -> EDC: Send out notification +@enduml + + From e96eefc5d9b4765152f5e79ffc9d585398631e95 Mon Sep 17 00:00:00 2001 From: ds-mwesener Date: Thu, 25 Jan 2024 14:58:44 +0000 Subject: [PATCH 048/311] Update Dependencies Backend Action --- DEPENDENCIES_BACKEND | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/DEPENDENCIES_BACKEND b/DEPENDENCIES_BACKEND index 2b556ad23c..d9941a6306 100644 --- a/DEPENDENCIES_BACKEND +++ b/DEPENDENCIES_BACKEND @@ -280,9 +280,9 @@ maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.17, EPL-2.0 OR Apache-2.0 maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.19, 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/11.0.19, EPL-2.0 OR Apache-2.0, approved, rt.jetty -maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.5.1-20240124.153013-13, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.5.1-20240124.153013-13, Apache-2.0, approved, automotive.tractusx -maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.5.1-20240124.153013-13, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-edc-client/1.5.1-20240125.102637-14, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-models/1.5.1-20240125.102637-14, Apache-2.0, approved, automotive.tractusx +maven/mavencentral/org.eclipse.tractusx.irs/irs-registry-client/1.5.1-20240125.102637-14, 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.16.3, Apache-2.0, approved, #7935 From 938772dae997dcd1b080c8fa276d2e4bc29c9f59 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Thu, 25 Jan 2024 16:09:41 +0100 Subject: [PATCH 049/311] feature(publish): #535 remove test focus --- .../modules/page/parts/presentation/parts.component.spec.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts b/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts index d59fc6c0d9..56b0dc8c0e 100644 --- a/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts +++ b/frontend/src/app/modules/page/parts/presentation/parts.component.spec.ts @@ -323,7 +323,7 @@ describe('Parts', () => { }); - fit('should show success toast and refresh parts on successful publish', async() => { + it('should show success toast and refresh parts on successful publish', async() => { const { fixture } = await renderParts(); const { componentInstance } = fixture; const partsFacade = (componentInstance as any)['partsFacade']; @@ -339,7 +339,7 @@ describe('Parts', () => { expect(partsFacade.setPartsAsPlanned).toHaveBeenCalled(); }); - fit('should show error toast and not refresh parts on failed publish', async () => { + it('should show error toast and not refresh parts on failed publish', async () => { const { fixture } = await renderParts(); const { componentInstance } = fixture; const partsFacade = (componentInstance as any)['partsFacade']; From 86b969d5614dbc324b35e806e9ef58082d6d1000 Mon Sep 17 00:00:00 2001 From: ashanmugavel Date: Thu, 25 Jan 2024 16:11:53 +0100 Subject: [PATCH 050/311] chore[xxx] added new method checkNoAssetsFound and Test --- .../importpoc/service/PublishServiceImpl.java | 20 +++++++++++++------ .../importdata/ImportControllerIT.java | 16 +++++++++++++++ 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java index d51fe432e2..8e0196ef81 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/domain/importpoc/service/PublishServiceImpl.java @@ -30,6 +30,7 @@ import org.springframework.stereotype.Service; import java.util.List; +import java.util.Objects; @Slf4j @RequiredArgsConstructor @@ -38,28 +39,35 @@ public class PublishServiceImpl implements PublishService { private final AssetAsPlannedRepository assetAsPlannedRepository; private final AssetAsBuiltRepository assetAsBuiltRepository; + private static void validTransientState(AssetBase assetBase) { + if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { + throw new PublishAssetException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); + } + } @Override public void publishAssets(String policyId, List assetIds) { + + if (checkNoAssetsFound(assetIds, assetAsPlannedRepository) && checkNoAssetsFound(assetIds, assetAsBuiltRepository)) { + throw new PublishAssetException("No assets found with the provided IDs." + assetIds); + } saveAssetsInRepository(policyId, assetIds, assetAsPlannedRepository); saveAssetsInRepository(policyId, assetIds, assetAsBuiltRepository); } private void saveAssetsInRepository(String policyId, List assetIds, AssetRepository repository) { List assetList = repository.getAssetsById(assetIds).stream() - .peek(asset -> { + .map(asset -> { validTransientState(asset); asset.setImportState(ImportState.IN_SYNCHRONIZATION); asset.setPolicyId(policyId); + return asset; }) .toList(); repository.saveAll(assetList); } - private static void validTransientState(AssetBase assetBase) { - if (!ImportState.TRANSIENT.equals(assetBase.getImportState())) { - throw new PublishAssetException("Asset with ID " + assetBase.getId() + " is not in TRANSIENT state."); - } - + private boolean checkNoAssetsFound(List assetIds, AssetRepository repository) { + return repository.getAssetsById(assetIds).stream().noneMatch(Objects::nonNull); } } diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/importdata/ImportControllerIT.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/importdata/ImportControllerIT.java index f8f1062c86..e8d493d69f 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/importdata/ImportControllerIT.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/importdata/ImportControllerIT.java @@ -397,4 +397,20 @@ void givenValidFile_whenPublishData_thenStatusShouldChangeToInSynchronization() assertThat(ImportState.IN_SYNCHRONIZATION).isEqualTo(asset.getImportState()); } + + @Test + void givenInvalidAssetID_whenPublishData_thenStatusCode500() throws JoseException { + // given + RegisterAssetRequest registerAssetRequest = new RegisterAssetRequest("Trace-X policy", List.of("test")); + + // when + given() + .header(oAuth2Support.jwtAuthorization(JwtRole.ADMIN)) + .contentType(ContentType.JSON) + .when() + .body(registerAssetRequest) + .post("/api/assets/publish") + .then() + .statusCode(500); + } } From 010b587136f0e17cc512d3c8b954efb8935dde00 Mon Sep 17 00:00:00 2001 From: Christian Rehm Date: Fri, 26 Jan 2024 12:50:48 +0100 Subject: [PATCH 051/311] chore(concept): #521 add more accurate information, assumptions and diagram --- .../#521-revoked-notification-handling.md | 72 ++++++++++++------ .../UsagePolicyExpiredException-Mockup.png | Bin 176829 -> 160145 bytes .../UsagePolicyPermissionException-Mockup.png | Bin 178772 -> 161074 bytes 3 files changed, 49 insertions(+), 23 deletions(-) diff --git a/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md index f848bf6977..0a68526f5f 100644 --- a/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md +++ b/docs/concept/#521-revoked-notification-handling/#521-revoked-notification-handling.md @@ -22,18 +22,18 @@ # Overview -After a notification is created and approved, a negotiation in the EDC is initiated. -Once the EDC approves access to the BPN, Trace-X fetches their usage policy. +After a notification is created and approved, relevant policies must be verified before it can be sent. There are three possibilities: 1. The policy is valid (validUntil >= current DateTime) and the notification is permitted to be sent. 2. The policy is valid (validUntil >= current DateTime) but the notification is **not** permitted to be sent. 3. The policy is **not** valid (validUntil < current DateTime) and the notification is **not** permitted to be sent (policy details are not relevant in this case). +Policies are stored in the IRS. The IRS provides an API to fetch and verify policies. + # Summary -Currently, there is only one error message and no differentiation between case 2 and 3. -When the notification is not permitted, the user is only notified about the failure but not about the reason. -This must now be implemented so that the user knows about the reason behind the rejection and can act accordingly. +When the notification is not sent because of a permission issue or an invalid policy, the user must be notified properly. +The status of the notification must be updated accordingly. # Problem Statement @@ -43,10 +43,9 @@ This must now be implemented so that the user knows about the reason behind the - If policy is not valid -> UsagePolicyExpiredException - If policy is valid but notification not permitted -> UsagePolicyPermissionException - New quality investigation & alert status: "Failed" - - Notification set to this status + - Notification set to this status, when it could not be sent due to the policy exceptions +- Pop-up informing the user of the exception - Detailed status information stored in the message history of the notification -- Pop-up informing the user -- Detailed information about the reason for the rejection must be shown in the detail view of the notification - User must be able to resend the notification # NFR @@ -55,22 +54,55 @@ This must now be implemented so that the user knows about the reason behind the # Assumptions +- The message history can show the current notification status persistently and accurately (https://github.com/eclipse-tractusx/traceability-foss/issues/423) +- IRS library response for verification has enough details to show the user + - If not, Trace-X might have to add additional information to the thrown exceptions + # Concept ### Backend -Instead of only having one UsagePolicyException, there must be two different exceptions. - -UsagePolicyException must be renamed to *UsagePolicyPermissionException* and a new *UsagePolicyExpiredException* must be created. -UsagePolicyPermissionException is thrown whenever the notification is not compliant with the permissions of the policy. -UsagePolicyExpiredException is thrown whenever -policy.validUntil < currentTime - -A new notification status "Failed" must be implemented. +Instead of only having one UsagePolicyException, there must be two different exceptions: +- UsagePolicyPermissionException (thrown when permission validation fails; contains information from the IRS policy checker response) +- UsagePolicyExpiredException (thrown when policy validUntil DateTime < current DateTime) + +When either of these is thrown, the notification will be set to the new status "Failed". +A message is stored in the message history, containing information about the exception. + +```mermaid +sequenceDiagram + participant TraceX + participant IRSLib + participant IRSPolicyStore + TraceX->>TraceX: Create notification + TraceX->>IRSLib: Get policy + activate IRSLib + IRSLib->>IRSPolicyStore: Get policy + activate IRSPolicyStore + IRSPolicyStore-->>IRSLib: Policy A(id,validUntil,permissions,...) + deactivate IRSPolicyStore + IRSLib-->>TraceX: Policy A (id,validUntil,permissions,...) + deactivate IRSLib + TraceX->>IRSLib: Verify notification with policy A + activate IRSLib + alt Success + IRSLib-->>TraceX: Success + TraceX->>TraceX: Send notification + else Exception + alt Notification rejected + IRSLib-->>TraceX: UsagePolicyPermissionException + else policy.validUntil>TraceX: UsagePolicyExpiredException + end + deactivate IRSLib + TraceX->>TraceX: Notification status = Failed + TraceX->>TraceX: Create error message + end +``` ### Frontend -After creating and approving the notification and one of those errors is thrown: +After creating and approving the notification and one of the exceptions is thrown: 1. A pop-up must be shown to the user 2. The notification status must be changed to "Failed" 3. A new message must be created and shown in the message history including the error description @@ -89,12 +121,6 @@ UsagePolicyExpiredException: # References -# LOP - -- How does Trace-X check policies/permissions/constraints currently? -- When is the UsagePolicyException thrown? -- How does it look like when this exception is thrown right now? - # 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/#521-revoked-notification-handling/UsagePolicyExpiredException-Mockup.png b/docs/concept/#521-revoked-notification-handling/UsagePolicyExpiredException-Mockup.png index 723872f23e305cec3aeb3984ca9a7a996cdd9671..f069edbc6b41a882c9dd06aa482e8cebb5266d5d 100644 GIT binary patch literal 160145 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

    R^-dle72 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 J?6~u-{{#F?_l*Dm literal 176829 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�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 z%0A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 F{|DoD;)4JH diff --git a/docs/concept/#521-revoked-notification-handling/UsagePolicyPermissionException-Mockup.png b/docs/concept/#521-revoked-notification-handling/UsagePolicyPermissionException-Mockup.png index 787b4675633191152e11be4a4e83ed47a7aee50f..2617a704beaf9630b713d85b137c5a26aba56797 100644 GIT binary patch literal 161074 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�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 M|H!_wJw6xz2XJRDt^fc4 literal 178772 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

  • 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 CA?rZ^ From 81ff9a07d9d4963c9c1ac667117f4c1408e087a0 Mon Sep 17 00:00:00 2001 From: mk Date: Fri, 26 Jan 2024 15:41:45 +0100 Subject: [PATCH 052/311] chore(concept):[#437] add initial document describing industry core --- .../#437-adapt-to-changes-industry-core.md | 103 ++++++++++++++++++ docs/concept/Concept_TEMPLATE.md | 1 + 2 files changed, 104 insertions(+) create mode 100644 docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md diff --git a/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md new file mode 100644 index 0000000000..d01f0d2a5b --- /dev/null +++ b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md @@ -0,0 +1,103 @@ +# \[Concept\] \[#ID#\] Summary + +| Key | Value | +|---------------|-------------------| +| Autor | | +| Creation date | | +| Ticket Id | | +| State | | + +# Table of Contents +1. [Overview](#overview) +2. [Summary](#summary) +3. [Problem Statement](#problem-statement) +4. [Requirements](#requirements) +5. [NFR](#nfr) +6. [Out of scope](#out-of-scope) +7. [Assumptions](#assumptions) +8. [Definition of the Industry Core](#definition-of-the-industry-core) +9. [Glossary](#glossary) +10. [References](#references) +11. [Additional Details](#additional-details) + + +# Overview + +The "Industry Core" is a fundamental element in the C-X network or system architecture. +It provides essential functions for identification, traversal, data flow, configuration, and communication in a modular and +interconnected environment. +The goal is to make components identifiable and discoverable at type and instance levels. +Enable seamless traversal across different tier levels. +Facilitate the creation of data chains. +Crucial role in configuring enablement services for component-based data exchange +Notification base message exchange. + +1. Identifiability and findability: +2. Traversing Across mutliple tier levels: +3. Facilitate Data Chains +4. Configuration for Enablement Services +5. Components-Based Data Exchange +The core enables the sending of notifications, indicating that there's a mechanism for alerting or informing relevant parties about specific events or changes within the system. + +# Summary + +# Problem Statement + +# Requirements + +# NFR + +# Out of scope + +# Assumptions + +# Definition of the Industry Core + +- [CX-0127-IndustryCorePartInstance#1.0.0](https://github.com/catenax-eV/product-standardization-prod/tree/CX-0127-IndustryCorePartInstance-v1.0.0/standards/CX-0127-IndustryCorePartInstance) + + + +## Describe Part at type and instance level + +| Level | Name | Description | +|----------------|---------------|----------------------------------------------------------------| +| Type Level | CatalogueType | Type Level (part number, material number, catalog part) | +| Instance Level | SerialPart | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | +| Instance Level | Batch | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | +| Instance Level | JiS | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | + +CX-0019 Aspect Model SerialPart +CX-0020 Aspect Model SingleLevelBomAsBuilt +CX-0021 Aspect Model: Batch + + +## Discoverable in the network + +- [ ] re-definition if the "specific asset ids" + +## Enable traversing across serveral tier levels +- Industry Core aspect models +- DataChain KIT + +## Configure the necessary enablement services +- EDC Setup (BPN-S/BPN-L, Policy Handling of the Core) + +## Sending of notifications +- Header +- EDC-Assets + +## Core Elements +- [CX-0002-DigitalTwinsInCatenaX](https://github.com/catenax-eV/product-standardization-prod/tree/CX-0127-IndustryCorePartInstance-v1.0.0/standards/CX-0002-DigitalTwinsInCatenaX) + + +# Glossary + +| Abbreviation | Name | Description | +|--------------|-------------------------|----------------------------------------------------------| +| ECU | Electronic Control Unit | An ECU's main job is to keep the engine working smoothly | +| JIS | Just In Sequence | Just in sequence part | + +# References + +# 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/Concept_TEMPLATE.md b/docs/concept/Concept_TEMPLATE.md index d1907c7586..9c9550ffb2 100644 --- a/docs/concept/Concept_TEMPLATE.md +++ b/docs/concept/Concept_TEMPLATE.md @@ -18,6 +18,7 @@ 8. [Concept](#concept) 9. [Glossary](#glossary) 10. [References](#references) +11. [Additional Details](#additional-details) # Overview From e37fafe77f38e5402d3eff49e99f723069a177c6 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Fri, 26 Jan 2024 15:56:38 +0100 Subject: [PATCH 053/311] feature(publish): #535 added test --- .../asset-publisher.component.spec.ts | 31 +++++++++++++++++-- .../asset-publisher.component.ts | 17 +++++----- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts index c69762f40f..179dec1717 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.spec.ts @@ -9,7 +9,7 @@ describe('AssetPublisherComponent', () => { const policyServiceSpy = jasmine.createSpyObj('PolicyService', ['getPolicies', 'publishAssets']); const isOpenSubject = new BehaviorSubject(true); - const renderAssetPublisherComponent = (input?) => { + const renderAssetPublisherComponent = () => { return renderComponent(AssetPublisherComponent, { providers: [ { provide: PolicyService, useValue: policyServiceSpy }], componentInputs: { @@ -30,7 +30,7 @@ describe('AssetPublisherComponent', () => { const dummyPolicy: Policy = { policyId: 'id-1', createdOn: 'testdate', validUntil: 'testdate' }; policyServiceSpy.publishAssets.and.returnValue(of({})); - policyServiceSpy.getPolicies.and.returnValue(of([dummyPolicy])) + policyServiceSpy.getPolicies.and.returnValue(of([dummyPolicy])); const submittedSpy = spyOn(componentInstance.submitted, 'emit'); @@ -46,4 +46,31 @@ describe('AssetPublisherComponent', () => { }); }); + it('should set policies when requesting policies', async function() { + const { fixture } = await renderAssetPublisherComponent(); + const { componentInstance } = fixture; + const dummyPolicy: Policy = { policyId: 'id-1', createdOn: 'testdate', validUntil: 'testdate' }; + + const submittedSpy = spyOn(componentInstance.submitted, 'emit'); + + + + policyServiceSpy.publishAssets.and.returnValue(of({})); + policyServiceSpy.getPolicies.and.returnValue(of([dummyPolicy])) + + + componentInstance.policyFormControl.setValue(dummyPolicy.policyId); + fixture.detectChanges(); + + componentInstance.publish(); + + fixture.whenStable().then(() => { + expect(policyServiceSpy.publishAssets).toHaveBeenCalledWith([], dummyPolicy.policyId); + expect(policyServiceSpy.getPolicies).toHaveBeenCalled(); + expect(componentInstance.policiesList).toEqual([dummyPolicy]); + expect(componentInstance.policyFormControl.value).toBeNull(); + expect(submittedSpy).toHaveBeenCalled(); + }); + }); + }); diff --git a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts index 9892d86feb..62d75b9f3c 100644 --- a/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts +++ b/frontend/src/app/modules/shared/components/asset-publisher/asset-publisher.component.ts @@ -1,9 +1,9 @@ -import {Component, EventEmitter, Input, Output} from '@angular/core'; -import {FormControl, Validators} from '@angular/forms'; -import {ImportState, Part} from '@page/parts/model/parts.model'; -import {Policy} from '@page/policies/model/policy.model'; -import {PolicyService} from '@shared/service/policy.service'; -import {Observable, Subscription} from 'rxjs'; +import { Component, EventEmitter, Input, Output } from '@angular/core'; +import { FormControl, Validators } from '@angular/forms'; +import { ImportState, Part } from '@page/parts/model/parts.model'; +import { Policy } from '@page/policies/model/policy.model'; +import { PolicyService } from '@shared/service/policy.service'; +import { Observable, Subscription } from 'rxjs'; @Component({ selector: 'app-asset-publisher', @@ -46,13 +46,12 @@ export class AssetPublisherComponent { publish(): void { const selectedAssetIds = this.selectedAssets.map(part => part.id); - this.policyFormControl.reset(); - this.selectedAssets = []; this.policyService.publishAssets(selectedAssetIds, this.policyFormControl.value).subscribe({ next: data => {this.submitted.emit(null);}, error: error => {this.submitted.emit(error);} }); - + this.policyFormControl.reset(); + this.selectedAssets = []; } private getPolicies() { From 4a846653d79d35dc1c34458ca678a9d88a8f65fb Mon Sep 17 00:00:00 2001 From: mk Date: Fri, 26 Jan 2024 16:15:39 +0100 Subject: [PATCH 054/311] chore(concept):[#437] add standards and new aspect models --- .../#437-adapt-to-changes-industry-core.md | 61 +++++++++++++------ 1 file changed, 44 insertions(+), 17 deletions(-) diff --git a/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md index d01f0d2a5b..debc8ce118 100644 --- a/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md +++ b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md @@ -1,11 +1,11 @@ -# \[Concept\] \[#ID#\] Summary +# IndustryCore Changes #437 | Key | Value | |---------------|-------------------| -| Autor | | -| Creation date | | -| Ticket Id | | -| State | | +| Autor | @ds-mkanal | +| Creation date | 26.01.2024 | +| Ticket Id | https://github.com/eclipse-tractusx/traceability-foss/issues/437 | +| State | WIP | # Table of Contents 1. [Overview](#overview) @@ -32,8 +32,8 @@ Facilitate the creation of data chains. Crucial role in configuring enablement services for component-based data exchange Notification base message exchange. -1. Identifiability and findability: -2. Traversing Across mutliple tier levels: +1. Identifiability and findability +2. Traversing Across multiple tier levels 3. Facilitate Data Chains 4. Configuration for Enablement Services 5. Components-Based Data Exchange @@ -55,20 +55,43 @@ The core enables the sending of notifications, indicating that there's a mechani - [CX-0127-IndustryCorePartInstance#1.0.0](https://github.com/catenax-eV/product-standardization-prod/tree/CX-0127-IndustryCorePartInstance-v1.0.0/standards/CX-0127-IndustryCorePartInstance) +## Standards to be complied with +| Fullfilled | Standard | Description | +|------------|--------------------------------------------------|---------------------------------------------------------------------------------| +| [x] | CX-0002 Digital Twins in Catena-X 2.2.0 | Trace-Xs notification process and consumption of assets is bases on DT standards | +| [x] | CX-0018 Eclipse Data Space Connector (EDC) 2.1.0 | Data consumption and data provision as well as the sending and receiving of messages takes place exclusively via the EDC | +| + +- [x] +CX-0018 Eclipse Data Space Connector (EDC) 2.1.0 ## Describe Part at type and instance level -| Level | Name | Description | -|----------------|---------------|----------------------------------------------------------------| -| Type Level | CatalogueType | Type Level (part number, material number, catalog part) | -| Instance Level | SerialPart | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | -| Instance Level | Batch | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | -| Instance Level | JiS | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | +| Level | Name | Description | Standard | +|----------------|---------------|----------------------------------------------------------------------------------|----------------------| +| Type Level | CatalogueType | Type Level (part number, material number, catalog part) | | +| Instance Level | SerialPart | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | CX-0019 Aspect Model | +| Instance Level | Batch | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | CX-0021 Aspect Model | +| Instance Level | JiS / JustInSequencePart | Instance Level (vehicle, ECUs, serialized parts, batches, etc) | | +|Instance Level | SingleLevelBomAsBuilt| RBuilts relationsship between parts in downwards direction (customer > supplier) | CX-0020 Aspect Model | +| Instance Level | PartSiteInformationAsBuilt | (shared aspect) | | + + +# Changes in AAS +| Key | Availability | Description | +|------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| manufacturerId | Mandatory | The Business Partner Number (BPNL) of the manufacturer of the part. | +|manufacturerPartId | Mandatory | | +|customerPartId | Optional | | +|assetLifecyclePhase | asPlanned(Mandatory) / asBuilt(Optional) | @Deprecated For serialized parts, batches, and JIS parts, use the value AsBuilt. For catalog parts in a Digital Twin As-Planned lifecycle phase, use the value AsPlanned. | +|digitalTwinType | Mandatory | digitalTwinType="PartType" OR digitalTwinType="PartInstance" For parts on an instance level (e.g. serialized parts, batches, and JIS parts), use the value PartInstance. For parts on a part type level (e.g. catalog parts), use the value PartType. | | | -CX-0019 Aspect Model SerialPart -CX-0020 Aspect Model SingleLevelBomAsBuilt -CX-0021 Aspect Model: Batch +# Changes in SerialPart +| Key | Availability | Description | +|------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| partInstanceId | Mandatory | | +| van | Optioonal | | ## Discoverable in the network @@ -95,7 +118,11 @@ CX-0021 Aspect Model: Batch | Abbreviation | Name | Description | |--------------|-------------------------|----------------------------------------------------------| | ECU | Electronic Control Unit | An ECU's main job is to keep the engine working smoothly | -| JIS | Just In Sequence | Just in sequence part | +| JIS | Just In Sequence | Just-in-sequence is a delivery concept where parts are delivered to the production plant at a requested time in the exact order of installation, typically for a 1:1 dependency on the manufactured product. A just-in-sequence-part is a part for which this concept and order of delivery applies and which does not have a dedicated serial number (then it would be considered a serialized part). Examples for JIS-parts are seats and bumpers. | +| BPN | Business Partner Number | A BPN is the unique identifier of a partner within Catena-x. | +| |Part Instance|A part instance is a physically produced instance (e.g. serialized part, batch, just-in-sequence-part) of a part type. | +| |Part Type| A part type is a generic (not physically produced) part on material- or catalog-level as a representation for a designed part.| +| VAN | Vehicle Anonymised Number | A number mapped 1:1 to VIN, but pseudonomised.| # References From f54ec33669fab6d0a9a6e1801f141f374b6d6283 Mon Sep 17 00:00:00 2001 From: mk Date: Sun, 28 Jan 2024 14:58:03 +0100 Subject: [PATCH 055/311] chore(concept):[#437] add requirements of CX-126 and CX-127 --- .../#437-adapt-to-changes-industry-core.md | 126 +++++++++++++++--- 1 file changed, 109 insertions(+), 17 deletions(-) diff --git a/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md index debc8ce118..4df39128a1 100644 --- a/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md +++ b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md @@ -15,12 +15,12 @@ 5. [NFR](#nfr) 6. [Out of scope](#out-of-scope) 7. [Assumptions](#assumptions) -8. [Definition of the Industry Core](#definition-of-the-industry-core) +8. [Concept](#concept) +9. [Definition of the Industry Core](#definition-of-the-industry-core) 9. [Glossary](#glossary) 10. [References](#references) 11. [Additional Details](#additional-details) - # Overview The "Industry Core" is a fundamental element in the C-X network or system architecture. @@ -51,20 +51,92 @@ The core enables the sending of notifications, indicating that there's a mechani # Assumptions +# Concept + +## Version matrix + +|Artefact| Version | Availability | link | +|---|---------|--------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------| +| AAS | | | | +| PartAsPlanned | 1.0.1 | Mandatory | [PartAsPlanned 1.0.1](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.part_as_planned/1.0.1) | + |PartAsPlanned | 2.0.0 | Optional (Mandatory for next version of CX-0126) | [PartAsPlanned 2.0.0](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.part_as_planned/2.0.0) | +| SingleLevelBomAsPlanned| 1.1.0 | Mandatory | [SingleLevelBomAsPlanned 1.1.0](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.single_level_bom_as_planned/1.1.0)] | +| SingleLevelBomAsPlanned| 2.0.0 | Optional (Mandatory for next version of CX-0126) | [SingleLevelBomAsPlanned 2.0.0](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.single_level_bom_as_planned/2.2.0)] | +| SerialPart| 1.0.1 | Mandatory | [SerialPart 1.0.1](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.serial_part/1.0.1) | +| SerialPart| 2.0.0 | Optional | [SerialPart 2.0.0](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.serial_part/2.0.0) | +| Batch| 2.0.0 | Mandatory| [Batch 2.0.0](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.batch/2.0.0) | +| Batch| 2.0.1 | Optional| [Batch 2.0.1](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.batch/2.0.1) | +| JustInSequencePart| 2.0.0 | Optional| [JustInSequencePart 2.0.0](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.just_in_sequence_part/2.0.0) | +| SingleLevelBomAsBuilt| 2.0.0 | Mandatory| [SingleLevelBomAsBuilt 2.0.0](https://github.com/eclipse-tractusx/sldt-semantic-models/tree/main/io.catenax.single_level_bom_as_built/2.0.0) | +| PartSiteInformationAsBuilt| X.X.X | | TODO | + + +## Changes in AAS handling + +### AAS Parameter + +|Parameter | Availability version aas 3.0.0 / 3.1.0 | Availability version aas 3.x.x | +|----|---|--| +|manufacturerId | TODO | Mandatory | +|manufacturerPartId | TODO | Mandatory | +|customerPartId | TODO | Optional | + + +### Descope @Deprecated assetLifecyclePhase +For serialized parts, batches, and JIS parts this will be deprecated with new version 3.x.x of AAS. +ASS parameter assetLifecyclePhase will not be used anymore to detect BOMLifecycle. Parameter 'digitalTwinType' is used instead. + +### Use parameter 'digitalTwinType' to detect BOMLifecycle + +**Parameter 'digitalTwinType'** + +| Key |Value| Description | +|--------------|---|-------------------------------------------------------------------------------------------------------| +| Name | digitalTwinType | Name of paramter in AAS | +| Availability | Mandatory | Parameter is mandatory - adjust required checks - Add exception handling in case parameter is not set | +| Values | PartType / PartInstance | PartType= asPlanned parts / PartInstance == parts on an instance level (e.g. serialized parts, batches, and JIS parts) | + +### Visbility of Specific Asset IDs in the DTR +* Usage of parameter 'externalSubjectIds' which contains 'specificAssetIds'. Parameter 'externalSubjectIds' restricts visibility exclusively to manufacturer. + +## Semantic Models + +### SerialPart +|Parameter | Availability | +|----|------------------| +|partInstanceId | Mandatory | +|van | Optional | + +### Batch +|Parameter | Availability | +|----|------------------| +|partInstanceId | Mandatory | +|batchId | Optional | + +### JiS +|Parameter | Availability | +|----|------------------| +|jisNumber | Mandatory | +|parentOrderNumber | Optional | +|jisCallDate | Optional | +|partInstanceId | Mandatory | + # Definition of the Industry Core - [CX-0127-IndustryCorePartInstance#1.0.0](https://github.com/catenax-eV/product-standardization-prod/tree/CX-0127-IndustryCorePartInstance-v1.0.0/standards/CX-0127-IndustryCorePartInstance) ## Standards to be complied with -| Fullfilled | Standard | Description | -|------------|--------------------------------------------------|---------------------------------------------------------------------------------| -| [x] | CX-0002 Digital Twins in Catena-X 2.2.0 | Trace-Xs notification process and consumption of assets is bases on DT standards | -| [x] | CX-0018 Eclipse Data Space Connector (EDC) 2.1.0 | Data consumption and data provision as well as the sending and receiving of messages takes place exclusively via the EDC | -| - -- [x] -CX-0018 Eclipse Data Space Connector (EDC) 2.1.0 +| Fulfilled | Standard | Description | +|-----------|-------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| [x] | CX-0001 EDC DISCOVERY API 1.0.2 | Trace-X uses irs_edc_client library for EDC communication this uses the EDC discovery service for EDC resolution | | +| [x] | CX-0002 Digital Twins in Catena-X 2.2.0 | Trace-X notification process and consumption of assets is bases on DT standards | +| [x] | CX-0003 SAMM Aspect Meta Model 1.1.0 | Trace-X using Semantic Models using SAMM standard | | +| [x] | CX-0018 Eclipse Data Space Connector (EDC) 2.1.0 | Data consumption and data provision as well as the sending and receiving of messages takes place exclusively via the EDC | +| [x] | CX-0019 Aspect Model SerialPart | TODO | +| [x] | CX-0020 Aspect Model SingleLevelBomAsBuilt | TODO | +| [x] | CX-0021 Aspect Model: Batch | TODO | +| [x] | CX-0060 Triangle Traceability - Digital Twin As-Built | TODO | ## Describe Part at type and instance level @@ -81,24 +153,42 @@ CX-0018 Eclipse Data Space Connector (EDC) 2.1.0 # Changes in AAS | Key | Availability | Description | |------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| manufacturerId | Mandatory | The Business Partner Number (BPNL) of the manufacturer of the part. | +|manufacturerId | Mandatory | The Business Partner Number (BPNL) of the manufacturer of the part. | |manufacturerPartId | Mandatory | | |customerPartId | Optional | | |assetLifecyclePhase | asPlanned(Mandatory) / asBuilt(Optional) | @Deprecated For serialized parts, batches, and JIS parts, use the value AsBuilt. For catalog parts in a Digital Twin As-Planned lifecycle phase, use the value AsPlanned. | |digitalTwinType | Mandatory | digitalTwinType="PartType" OR digitalTwinType="PartInstance" For parts on an instance level (e.g. serialized parts, batches, and JIS parts), use the value PartInstance. For parts on a part type level (e.g. catalog parts), use the value PartType. | | | -# Changes in SerialPart -| Key | Availability | Description | -|------------|------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| partInstanceId | Mandatory | | -| van | Optioonal | | +# PartAsPlanned + +- No changes +- Version 1.0.1 Mandatory + +# SerialPart +| Key | Availability | Description | +|------------|-----------------------------------------|------------------------------------------------------| +| partInstanceId | Mandatory | The serial number of the part from the manufacturer. | +| van | Optional | Only for vehicles: The pseudonymized vehicle identification number (VIN) of the vehicle. | + +# Batch +| Key | Availability | Description | +|------------|-----------------------------------------|-----------------------------------------------------| +| batchId | Optional | The number of the batch from the manufacturer. | +| partInstanceId | Mandatory | Also the number of the batch from the manufacturer. For the time being we also use the batch number as partInstanceId. This makes looking up digital twins for serialized parts and batches easier as a data consumer only has to specify the partInstanceId no matter if they are looking up a serialized part or a batch. Otherwise, the data consumer would need to know for what type of digital twin it is looking for or it would have to look for both until a match is found. | +### JiS +|Parameter | Availability |Description | +|----|------------------|----------------------------------------------------| +|jisNumber | Mandatory | A number that is used to identify the call-off that can be assumed unique within the specific just-in-sequence process. This is typically not the sequence number, but the call-off number.| +|parentOrderNumber | Optional |A number identifying the just-in-sequence- part's destination parent part. The parent part is typically known upfront to the supplier for just-in-sequence parts.| +|jisCallDate | Optional |The date of the just-in-sequence call-off as stated on the call-off document itself.The value must be compliant to ISO 8601: YYYY-MM-DD or YYYY-MM-DDThh:mm:ss or YYYY-MM-DDThh:mm:ss±hh:mm| +|partInstanceId | Mandatory |A composition of jisNumber, parentOrderNumber (if available), jisCallDate (ifavailable). This information is typically known upfront to the supplier jisNumber, partOrderNumber and jisCallDate for just-in-sequence parts.| ## Discoverable in the network - [ ] re-definition if the "specific asset ids" -## Enable traversing across serveral tier levels +## Enable traversing across several tier levels - Industry Core aspect models - DataChain KIT @@ -125,6 +215,8 @@ CX-0018 Eclipse Data Space Connector (EDC) 2.1.0 | VAN | Vehicle Anonymised Number | A number mapped 1:1 to VIN, but pseudonomised.| # References +- [CX-0126 Industry Core Part Type Standard 1.0.0](https://github.com/catenax-eV/product-standardization-prod/blob/CX-0126-IndustryCorePartType-v1.0.0/standards/CX-0126-IndustryCorePartType/1.0.0/CX-0126-Industry-Core-Part-Type.pdf) +- [CX-0126 Industry Core Part Instance Standard 1.0.0](https://github.com/catenax-eV/product-standardization-prod/blob/CX-0127-IndustryCorePartInstance-v1.0.0/standards/CX-0127-IndustryCorePartInstance/1.0.0/CX%20-%200127%20Industry%20Core%20Part%20Instance%201.0.0.pdf) # 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. From 22415c9732e06d0d8b8dbd17532629c819639455 Mon Sep 17 00:00:00 2001 From: mk Date: Sun, 28 Jan 2024 15:02:17 +0100 Subject: [PATCH 056/311] chore(concept):[#437] clean up unnecessary stuff --- .../#437-adapt-to-changes-industry-core.md | 29 ++++--------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md index 4df39128a1..50eea47bc4 100644 --- a/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md +++ b/docs/concept/#437-adapt-to-changes-of-industry-core/#437-adapt-to-changes-industry-core.md @@ -9,17 +9,11 @@ # Table of Contents 1. [Overview](#overview) -2. [Summary](#summary) -3. [Problem Statement](#problem-statement) -4. [Requirements](#requirements) -5. [NFR](#nfr) -6. [Out of scope](#out-of-scope) -7. [Assumptions](#assumptions) -8. [Concept](#concept) -9. [Definition of the Industry Core](#definition-of-the-industry-core) -9. [Glossary](#glossary) -10. [References](#references) -11. [Additional Details](#additional-details) +2. [Problem Statement](#problem-statement) +3. [Concept](#concept) +4. [Definition of the Industry Core](#definition-of-the-industry-core) +5. [Glossary](#glossary) +6. [References](#references) # Overview @@ -39,17 +33,8 @@ Notification base message exchange. 5. Components-Based Data Exchange The core enables the sending of notifications, indicating that there's a mechanism for alerting or informing relevant parties about specific events or changes within the system. -# Summary - # Problem Statement - -# Requirements - -# NFR - -# Out of scope - -# Assumptions +The product Trace-X MUST align with the Industry Code Standard CX-126 and CX-127. # Concept @@ -218,5 +203,3 @@ ASS parameter assetLifecyclePhase will not be used anymore to detect BOMLifecycl - [CX-0126 Industry Core Part Type Standard 1.0.0](https://github.com/catenax-eV/product-standardization-prod/blob/CX-0126-IndustryCorePartType-v1.0.0/standards/CX-0126-IndustryCorePartType/1.0.0/CX-0126-Industry-Core-Part-Type.pdf) - [CX-0126 Industry Core Part Instance Standard 1.0.0](https://github.com/catenax-eV/product-standardization-prod/blob/CX-0127-IndustryCorePartInstance-v1.0.0/standards/CX-0127-IndustryCorePartInstance/1.0.0/CX%20-%200127%20Industry%20Core%20Part%20Instance%201.0.0.pdf) -# 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. From af6f7321c06ae76951d7ea90776f5cd7caeccb48 Mon Sep 17 00:00:00 2001 From: Maximilian Wesener Date: Mon, 29 Jan 2024 09:23:54 +0100 Subject: [PATCH 057/311] chore(deployment): replaced all okhttpclient implementations with rest template. --- .../openapi/traceability-foss-backend.json | 6948 +---------------- tx-backend/pom.xml | 1 - .../infrastructure/base/irs/IRSApiClient.java | 63 - .../infrastructure/base/irs/IrsClient.java | 88 + .../infrastructure/base/irs/IrsService.java | 38 +- .../base/irs/exception/IrsException.java | 8 + .../common/config/ApplicationConfig.java | 15 +- .../common/config/IrsApiConfig.java | 20 +- ...on.java => RestTemplateConfiguration.java} | 75 +- .../common/config/SubmodelApiConfig.java | 64 - .../properties/TraceabilityProperties.java | 8 +- .../service/EdcNotificationAssetService.java | 2 +- .../service/EdcContractDefinitionService.java | 2 +- .../service/EdcPolicyDefinitionService.java | 2 +- .../repository/SubmodelClient.java | 48 + .../repository/SubmodelServerApiClient.java | 40 - .../repository/SubmodelServerClientImpl.java | 7 +- .../application-integration-spring-boot.yml | 3 + tx-backend/src/main/resources/application.yml | 39 +- .../repository/rest/irs/IrsServiceTest.java | 39 +- .../assets/AssetAsBuiltControllerSyncIT.java | 55 - .../AssetAsPlannedControllerSyncIT.java | 92 - .../common/config/RestitoConfig.java | 2 +- .../common/support/IrsApiSupport.java | 6 +- 24 files changed, 297 insertions(+), 7368 deletions(-) delete mode 100644 tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IRSApiClient.java create mode 100644 tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsClient.java create mode 100644 tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/exception/IrsException.java rename tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/{EdcRestTemplateConfiguration.java => RestTemplateConfiguration.java} (56%) delete mode 100644 tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/SubmodelApiConfig.java create mode 100644 tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelClient.java delete mode 100644 tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerApiClient.java diff --git a/tx-backend/openapi/traceability-foss-backend.json b/tx-backend/openapi/traceability-foss-backend.json index abb96e8b95..df95256065 100644 --- a/tx-backend/openapi/traceability-foss-backend.json +++ b/tx-backend/openapi/traceability-foss-backend.json @@ -1,6947 +1 @@ -{ - "openapi" : "3.0.1", - "info" : { - "title" : "Trace-FOSS - OpenAPI Documentation", - "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" - ] - } - ], - "tags" : [ - { - "name" : "Investigations", - "description" : "Operations on Investigation Notification" - } - ], - "paths" : { - "/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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "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" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "200" : { - "description" : "Returns the paged result found for BpnEdcMapping", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "minItems" : 0, - "type" : "array" - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "200" : { - "description" : "Returns the paged result found for BpnEdcMapping", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "minItems" : 0, - "type" : "array" - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "401" : { - "description" : "Authorization failed.", - "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" : {} - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "204" : { - "description" : "No Content." - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/investigations" : { - "post" : { - "tags" : [ - "Investigations" - ], - "summary" : "Start investigations by part ids", - "description" : "The endpoint starts investigations based on part ids provided.", - "operationId" : "investigateAssets", - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/StartQualityNotificationRequest" - } - } - }, - "required" : true - }, - "responses" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "201" : { - "description" : "Created.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/QualityNotificationIdResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/investigations/{investigationId}/update" : { - "post" : { - "tags" : [ - "Investigations" - ], - "summary" : "Update investigations by id", - "description" : "The endpoint updates investigations by their id.", - "operationId" : "updateInvestigation", - "parameters" : [ - { - "name" : "investigationId", - "in" : "path", - "required" : true, - "schema" : { - "type" : "integer", - "format" : "int64" - } - } - ], - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/UpdateQualityNotificationRequest" - } - } - }, - "required" : true - }, - "responses" : { - "200" : { - "description" : "Ok." - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "204" : { - "description" : "No content." - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/investigations/{investigationId}/close" : { - "post" : { - "tags" : [ - "Investigations" - ], - "summary" : "Close investigations by id", - "description" : "The endpoint closes investigations by their id.", - "operationId" : "closeInvestigation", - "parameters" : [ - { - "name" : "investigationId", - "in" : "path", - "required" : true, - "schema" : { - "type" : "integer", - "format" : "int64" - } - } - ], - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/CloseQualityNotificationRequest" - } - } - }, - "required" : true - }, - "responses" : { - "200" : { - "description" : "Ok." - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "204" : { - "description" : "No content." - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/investigations/{investigationId}/cancel" : { - "post" : { - "tags" : [ - "Investigations" - ], - "summary" : "Cancles investigations by id", - "description" : "The endpoint cancles investigations by their id.", - "operationId" : "cancelInvestigation", - "parameters" : [ - { - "name" : "investigationId", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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." - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/investigations/{investigationId}/approve" : { - "post" : { - "tags" : [ - "Investigations" - ], - "summary" : "Approves investigations by id", - "description" : "The endpoint approves investigations by their id.", - "operationId" : "approveInvestigation", - "parameters" : [ - { - "name" : "investigationId", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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." - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/investigations/filter" : { - "post" : { - "tags" : [ - "Investigations" - ], - "summary" : "Filter investigations defined by the request body", - "description" : "The endpoint returns investigations as paged result.", - "operationId" : "filterInvestigations", - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/PageableFilterRequest" - } - } - }, - "required" : true - }, - "responses" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "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" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "201" : { - "description" : "Created.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/CreateNotificationContractResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "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", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "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" : {} - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "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" : {} - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "201" : { - "description" : "Created." - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "201" : { - "description" : "Created." - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts" : { - "post" : { - "tags" : [ - "Alerts" - ], - "summary" : "Start alert by part ids", - "description" : "The endpoint starts alert based on part ids provided.", - "operationId" : "alertAssets", - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/StartQualityNotificationRequest" - } - } - }, - "required" : true - }, - "responses" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "201" : { - "description" : "Created.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/QualityNotificationIdResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts/{alertId}/update" : { - "post" : { - "tags" : [ - "Alerts" - ], - "summary" : "Update alert by id", - "description" : "The endpoint updates alert by their id.", - "operationId" : "updateAlert", - "parameters" : [ - { - "name" : "alertId", - "in" : "path", - "required" : true, - "schema" : { - "type" : "integer", - "format" : "int64" - } - } - ], - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/UpdateQualityNotificationRequest" - } - } - }, - "required" : true - }, - "responses" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "204" : { - "description" : "No content." - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts/{alertId}/close" : { - "post" : { - "tags" : [ - "Alerts" - ], - "summary" : "Close alert by id", - "description" : "The endpoint closes alert by id.", - "operationId" : "closeAlert", - "parameters" : [ - { - "name" : "alertId", - "in" : "path", - "required" : true, - "schema" : { - "type" : "integer", - "format" : "int64" - } - } - ], - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/CloseQualityNotificationRequest" - } - } - }, - "required" : true - }, - "responses" : { - "200" : { - "description" : "Ok." - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "204" : { - "description" : "No content." - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts/{alertId}/cancel" : { - "post" : { - "tags" : [ - "Alerts" - ], - "summary" : "Cancels alert by id", - "description" : "The endpoint cancels alert by id.", - "operationId" : "cancelAlert", - "parameters" : [ - { - "name" : "alertId", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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." - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts/{alertId}/approve" : { - "post" : { - "tags" : [ - "Alerts" - ], - "summary" : "Approves alert by id", - "description" : "The endpoint approves alert by id.", - "operationId" : "approveAlert", - "parameters" : [ - { - "name" : "alertId", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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." - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts/filter" : { - "post" : { - "tags" : [ - "Alerts" - ], - "summary" : "Filter alerts defined by the request body", - "description" : "The endpoint returns alerts as paged result.", - "operationId" : "filterAlerts", - "requestBody" : { - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/PageableFilterRequest" - } - } - }, - "required" : true - }, - "responses" : { - "200" : { - "description" : "Returns the paged result found for Asset", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "type" : "array" - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - } - }, - "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" : { - "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" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "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" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "200" : { - "description" : "Returns the policies", - "content" : { - "*/*" : { - "schema" : { - "$ref" : "#/components/schemas/PolicyResponse" - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/irs/job/callback" : { - "get" : { - "tags" : [ - "irs-callback-controller" - ], - "operationId" : "handleIrsJobCallback", - "parameters" : [ - { - "name" : "id", - "in" : "query", - "required" : true, - "schema" : { - "type" : "string" - } - }, - { - "name" : "state", - "in" : "query", - "required" : true, - "schema" : { - "type" : "string" - } - } - ], - "responses" : { - "200" : { - "description" : "OK" - } - } - } - }, - "/investigations/{investigationId}" : { - "get" : { - "tags" : [ - "Investigations" - ], - "summary" : "Gets investigations by id", - "description" : "The endpoint returns investigations as paged result by their id.", - "operationId" : "getInvestigation", - "parameters" : [ - { - "name" : "investigationId", - "in" : "path", - "required" : true, - "schema" : { - "type" : "integer", - "format" : "int64" - } - } - ], - "responses" : { - "200" : { - "description" : "OK.", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "minItems" : -2147483648, - "type" : "array", - "description" : "Investigations", - "items" : { - "$ref" : "#/components/schemas/InvestigationResponse" - } - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/investigations/distinctFilterValues" : { - "get" : { - "tags" : [ - "Assets", - "Investigations" - ], - "summary" : "getDistinctFilterValues", - "description" : "The endpoint returns a distinct filter values for given fieldName.", - "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" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "200" : { - "description" : "Returns a distinct filter values for given fieldName.", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "minItems" : 0, - "type" : "array" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - } - } - }, - "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" : true, - "schema" : { - "type" : "integer", - "format" : "int32" - } - }, - { - "name" : "startWith", - "in" : "query", - "required" : true, - "schema" : { - "type" : "string" - } - }, - { - "name" : "owner", - "in" : "query", - "required" : true, - "schema" : { - "type" : "string", - "enum" : [ - "SUPPLIER", - "CUSTOMER", - "OWN", - "UNKNOWN" - ] - } - } - ], - "responses" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "200" : { - "description" : "Returns a distinct filter values for given fieldName.", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "minItems" : 0, - "type" : "array" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "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" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - } - }, - "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" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : true, - "schema" : { - "type" : "integer", - "format" : "int32" - } - }, - { - "name" : "startWith", - "in" : "query", - "required" : true, - "schema" : { - "type" : "string" - } - }, - { - "name" : "owner", - "in" : "query", - "required" : true, - "schema" : { - "type" : "string", - "enum" : [ - "SUPPLIER", - "CUSTOMER", - "OWN", - "UNKNOWN" - ] - } - } - ], - "responses" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "200" : { - "description" : "Returns a distinct filter values for given fieldName.", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "minItems" : 0, - "type" : "array" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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, - "minItems" : 0, - "type" : "array" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "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 asset by childId", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "type" : "array", - "description" : "Assets", - "items" : { - "type" : "object", - "properties" : { - "id" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticModelId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "businessPartner" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtManufacturer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "owner" : { - "type" : "string", - "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", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - }, - "van" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "semanticDataModel" : { - "type" : "string", - "enum" : [ - "BATCH", - "SERIALPART", - "UNKNOWN", - "PARTASPLANNED", - "JUSTINSEQUENCE" - ] - }, - "classification" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "detailAspectModels" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectModelResponse" - } - }, - "sentQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityAlertIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "sentQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "receivedQualityInvestigationIdsInStatusActive" : { - "type" : "array", - "items" : { - "type" : "integer", - "format" : "int64" - } - }, - "importState" : { - "type" : "string", - "enum" : [ - "TRANSIENT", - "PERSISTENT", - "ERROR", - "IN_SYNCHRONIZATION", - "UNSET" - ] - }, - "importNote" : { - "type" : "string" - } - } - } - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts/{alertId}" : { - "get" : { - "tags" : [ - "Alerts" - ], - "summary" : "Gets Alert by id", - "description" : "The endpoint returns alert by id.", - "operationId" : "getAlert", - "parameters" : [ - { - "name" : "alertId", - "in" : "path", - "required" : true, - "schema" : { - "type" : "integer", - "format" : "int64" - } - } - ], - "responses" : { - "200" : { - "description" : "OK.", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "type" : "array", - "description" : "Alerts", - "items" : { - "$ref" : "#/components/schemas/AlertResponse" - } - } - } - } - }, - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - }, - "/alerts/distinctFilterValues" : { - "get" : { - "tags" : [ - "Assets", - "Alerts" - ], - "summary" : "getDistinctFilterValues", - "description" : "The endpoint returns a distinct filter values for given fieldName.", - "operationId" : "distinctFilterValues_3", - "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" : { - "401" : { - "description" : "Authorization failed.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "200" : { - "description" : "Returns a distinct filter values for given fieldName.", - "content" : { - "application/json" : { - "schema" : { - "maxItems" : 2147483647, - "minItems" : 0, - "type" : "array" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "204" : { - "description" : "No Content." - }, - "415" : { - "description" : "Unsupported media type", - "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" - } - } - } - }, - "500" : { - "description" : "Internal server error.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "429" : { - "description" : "Too many requests.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "200" : { - "description" : "Okay" - }, - "400" : { - "description" : "Bad request.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "403" : { - "description" : "Forbidden.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "404" : { - "description" : "Not found.", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - }, - "204" : { - "description" : "Deleted." - }, - "415" : { - "description" : "Unsupported media type", - "content" : { - "application/json" : { - "schema" : { - "$ref" : "#/components/schemas/ErrorResponse" - } - } - } - } - }, - "security" : [ - { - "oAuth2" : [ - "profile email" - ] - } - ] - } - } - }, - "components" : { - "schemas" : { - "BpnMappingRequest" : { - "required" : [ - "bpn", - "url" - ], - "type" : "object", - "properties" : { - "bpn" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "url" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - } - } - }, - "ErrorResponse" : { - "type" : "object", - "properties" : { - "message" : { - "maxLength" : 1000, - "minLength" : 0, - "pattern" : "^.*$", - "type" : "string" - } - } - }, - "StartQualityNotificationRequest" : { - "required" : [ - "severity" - ], - "type" : "object", - "properties" : { - "partIds" : { - "maxItems" : 100, - "minItems" : 1, - "type" : "array", - "items" : { - "type" : "string" - } - }, - "description" : { - "maxLength" : 1000, - "minLength" : 15, - "type" : "string" - }, - "targetDate" : { - "type" : "string", - "format" : "date-time" - }, - "severity" : { - "type" : "string", - "enum" : [ - "MINOR", - "MAJOR", - "CRITICAL", - "LIFE_THREATENING" - ] - }, - "receiverBpn" : { - "type" : "string" - }, - "asBuilt" : { - "type" : "boolean" - } - } - }, - "QualityNotificationIdResponse" : { - "type" : "object", - "properties" : { - "id" : { - "type" : "integer", - "format" : "int64" - } - } - }, - "UpdateQualityNotificationRequest" : { - "required" : [ - "status" - ], - "type" : "object", - "properties" : { - "status" : { - "type" : "string", - "description" : "The UpdateInvestigationStatus", - "enum" : [ - "ACKNOWLEDGED", - "ACCEPTED", - "DECLINED" - ] - }, - "reason" : { - "type" : "string" - } - } - }, - "CloseQualityNotificationRequest" : { - "type" : "object", - "properties" : { - "reason" : { - "maxLength" : 1000, - "minLength" : 15, - "type" : "string" - } - } - }, - "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" - } - } - } - }, - "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" - }, - "accessPolicyId" : { - "type" : "string" - }, - "contractDefinitionId" : { - "type" : "string" - } - } - }, - "RegisterAssetRequest" : { - "required" : [ - "assetIds", - "policyId" - ], - "type" : "object", - "properties" : { - "policyId" : { - "type" : "string" - }, - "assetIds" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "SyncAssetsRequest" : { - "type" : "object", - "properties" : { - "globalAssetIds" : { - "maxItems" : 100, - "minItems" : 1, - "type" : "array", - "description" : "Assets", - "items" : { - "type" : "string" - } - } - } - }, - "GetDetailInformationRequest" : { - "type" : "object", - "properties" : { - "assetIds" : { - "maxItems" : 50, - "minItems" : 1, - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "UpdateAssetRequest" : { - "required" : [ - "qualityType" - ], - "type" : "object", - "properties" : { - "qualityType" : { - "type" : "string", - "enum" : [ - "Ok", - "Minor", - "Major", - "Critical", - "LifeThreatening" - ] - } - } - }, - "DescriptionsResponse" : { - "type" : "object", - "properties" : { - "id" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "idShort" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - } - } - }, - "DetailAspectDataAsBuiltResponse" : { - "type" : "object", - "properties" : { - "partId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "customerPartId" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "nameAtCustomer" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturingCountry" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "manufacturingDate" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - } - } - }, - "DetailAspectDataAsPlannedResponse" : { - "type" : "object", - "properties" : { - "validityPeriodFrom" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "validityPeriodTo" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - } - } - }, - "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" - }, - "tractionBatteryCode" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "subcomponents" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/DetailAspectDataTractionBatteryCodeSubcomponentResponse" - } - } - } - }, - "DetailAspectDataTractionBatteryCodeSubcomponentResponse" : { - "type" : "object", - "properties" : { - "productType" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "tractionBatteryCode" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - } - } - }, - "DetailAspectModelResponse" : { - "type" : "object", - "properties" : { - "type" : { - "type" : "string", - "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" - }, - "function" : { - "type" : "string" - }, - "functionValidFrom" : { - "type" : "string" - }, - "catenaXSiteId" : { - "type" : "string" - } - } - }, - "ConstraintResponse" : { - "type" : "object", - "properties" : { - "leftOperand" : { - "type" : "string" - }, - "operatorTypeResponse" : { - "type" : "string", - "enum" : [ - "EQ", - "NEQ", - "LT", - "GT", - "IN", - "LTEQ", - "GTEQ", - "ISA", - "HASPART", - "ISPARTOF", - "ISONEOF", - "ISALLOF", - "ISNONEOF" - ] - }, - "rightOperands" : { - "type" : "array", - "items" : { - "type" : "string" - } - } - } - }, - "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", - "enum" : [ - "ACCESS", - "USE" - ] - }, - "constraints" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/ConstraintsResponse" - } - } - } - }, - "PolicyResponse" : { - "type" : "object", - "properties" : { - "policyId" : { - "type" : "string" - }, - "createdOn" : { - "type" : "string", - "format" : "date-time" - }, - "validUntil" : { - "type" : "string", - "format" : "date-time" - }, - "permissions" : { - "type" : "array", - "items" : { - "$ref" : "#/components/schemas/PermissionResponse" - } - } - } - }, - "InvestigationResponse" : { - "type" : "object", - "properties" : { - "id" : { - "maximum" : 255, - "minimum" : 0, - "type" : "integer", - "format" : "int64" - }, - "status" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string", - "enum" : [ - "CREATED", - "SENT", - "RECEIVED", - "ACKNOWLEDGED", - "ACCEPTED", - "DECLINED", - "CANCELED", - "CLOSED" - ] - }, - "description" : { - "maxLength" : 1000, - "minLength" : 0, - "type" : "string" - }, - "createdBy" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "createdByName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "createdDate" : { - "maxLength" : 50, - "minLength" : 0, - "type" : "string" - }, - "assetIds" : { - "maxItems" : 1000, - "minItems" : 0, - "type" : "array", - "description" : "assetIds", - "items" : { - "type" : "string" - } - }, - "channel" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string", - "enum" : [ - "SENDER", - "RECEIVER" - ] - }, - "reason" : { - "$ref" : "#/components/schemas/QualityNotificationReasonResponse" - }, - "sendTo" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "sendToName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "severity" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string", - "enum" : [ - "MINOR", - "MAJOR", - "CRITICAL", - "LIFE-THREATENING" - ] - }, - "targetDate" : { - "maxLength" : 50, - "minLength" : 0, - "type" : "string" - }, - "errorMessage" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - } - } - }, - "QualityNotificationReasonResponse" : { - "type" : "object", - "properties" : { - "close" : { - "maxLength" : 1000, - "minLength" : 0, - "type" : "string" - }, - "accept" : { - "maxLength" : 1000, - "minLength" : 0, - "type" : "string" - }, - "decline" : { - "maxLength" : 1000, - "minLength" : 0, - "type" : "string" - } - } - }, - "DashboardResponse" : { - "type" : "object", - "properties" : { - "asBuiltCustomerParts" : { - "type" : "integer", - "format" : "int64" - }, - "asPlannedCustomerParts" : { - "type" : "integer", - "format" : "int64" - }, - "asBuiltSupplierParts" : { - "type" : "integer", - "format" : "int64" - }, - "asPlannedSupplierParts" : { - "type" : "integer", - "format" : "int64" - }, - "asBuiltOwnParts" : { - "type" : "integer", - "format" : "int64" - }, - "asPlannedOwnParts" : { - "type" : "integer", - "format" : "int64" - }, - "myPartsWithOpenAlerts" : { - "type" : "integer", - "format" : "int64" - }, - "myPartsWithOpenInvestigations" : { - "type" : "integer", - "format" : "int64" - }, - "supplierPartsWithOpenAlerts" : { - "type" : "integer", - "format" : "int64" - }, - "customerPartsWithOpenAlerts" : { - "type" : "integer", - "format" : "int64" - }, - "supplierPartsWithOpenInvestigations" : { - "type" : "integer", - "format" : "int64" - }, - "customerPartsWithOpenInvestigations" : { - "type" : "integer", - "format" : "int64" - }, - "receivedActiveAlerts" : { - "type" : "integer", - "format" : "int64" - }, - "receivedActiveInvestigations" : { - "type" : "integer", - "format" : "int64" - }, - "sentActiveAlerts" : { - "type" : "integer", - "format" : "int64" - }, - "sentActiveInvestigations" : { - "type" : "integer", - "format" : "int64" - } - } - }, - "AlertResponse" : { - "type" : "object", - "properties" : { - "id" : { - "maximum" : 255, - "minimum" : 0, - "type" : "integer", - "format" : "int64" - }, - "status" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string", - "enum" : [ - "CREATED", - "SENT", - "RECEIVED", - "ACKNOWLEDGED", - "ACCEPTED", - "DECLINED", - "CANCELED", - "CLOSED" - ] - }, - "description" : { - "maxLength" : 1000, - "minLength" : 0, - "type" : "string" - }, - "createdBy" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "createdByName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "createdDate" : { - "maxLength" : 50, - "minLength" : 0, - "type" : "string" - }, - "assetIds" : { - "maxItems" : 1000, - "minItems" : 0, - "type" : "array", - "description" : "assetIds", - "items" : { - "type" : "string" - } - }, - "channel" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string", - "enum" : [ - "SENDER", - "RECEIVER" - ] - }, - "reason" : { - "$ref" : "#/components/schemas/QualityNotificationReasonResponse" - }, - "sendTo" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "sendToName" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - }, - "severity" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string", - "enum" : [ - "MINOR", - "MAJOR", - "CRITICAL", - "LIFE-THREATENING" - ] - }, - "targetDate" : { - "maxLength" : 50, - "minLength" : 0, - "type" : "string" - }, - "errorMessage" : { - "maxLength" : 255, - "minLength" : 0, - "type" : "string" - } - } - } - }, - "securitySchemes" : { - "oAuth2" : { - "type" : "oauth2", - "flows" : { - "clientCredentials" : { - "scopes" : { - "profile email" : "" - } - } - } - } - } - } -} +{"openapi":"3.0.1","info":{"title":"Trace-FOSS - OpenAPI Documentation","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"]}],"tags":[{"name":"Investigations","description":"Operations on Investigation Notification"}],"paths":{"/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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}}},"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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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"}}}}},"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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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"}}}}},"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 the paged result found","content":{"application/json":{}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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."},"400":{"description":"Bad request.","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"}}}},"204":{"description":"No Content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations":{"post":{"tags":["Investigations"],"summary":"Start investigations by part ids","description":"The endpoint starts investigations based on part ids provided.","operationId":"investigateAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/update":{"post":{"tags":["Investigations"],"summary":"Update investigations by id","description":"The endpoint updates investigations by their id.","operationId":"updateInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"200":{"description":"Ok."},"400":{"description":"Bad request.","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"}}}},"204":{"description":"No content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/close":{"post":{"tags":["Investigations"],"summary":"Close investigations by id","description":"The endpoint closes investigations by their id.","operationId":"closeInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"200":{"description":"Ok."},"400":{"description":"Bad request.","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"}}}},"204":{"description":"No content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/cancel":{"post":{"tags":["Investigations"],"summary":"Cancles investigations by id","description":"The endpoint cancles investigations by their id.","operationId":"cancelInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/{investigationId}/approve":{"post":{"tags":["Investigations"],"summary":"Approves investigations by id","description":"The endpoint approves investigations by their id.","operationId":"approveInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/filter":{"post":{"tags":["Investigations"],"summary":"Filter investigations defined by the request body","description":"The endpoint returns investigations as paged result.","operationId":"filterInvestigations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNotificationContractResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"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","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterAssetRequest"}}},"required":true},"responses":{"200":{"description":"OK.","content":{"application/json":{}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"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":{"200":{"description":"OK.","content":{"application/json":{}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","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 for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created."},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","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"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts":{"post":{"tags":["Alerts"],"summary":"Start alert by part ids","description":"The endpoint starts alert based on part ids provided.","operationId":"alertAssets","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StartQualityNotificationRequest"}}},"required":true},"responses":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/QualityNotificationIdResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/update":{"post":{"tags":["Alerts"],"summary":"Update alert by id","description":"The endpoint updates alert by their id.","operationId":"updateAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateQualityNotificationRequest"}}},"required":true},"responses":{"400":{"description":"Bad request.","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"}}}},"204":{"description":"No content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/close":{"post":{"tags":["Alerts"],"summary":"Close alert by id","description":"The endpoint closes alert by id.","operationId":"closeAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseQualityNotificationRequest"}}},"required":true},"responses":{"200":{"description":"Ok."},"400":{"description":"Bad request.","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"}}}},"204":{"description":"No content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/cancel":{"post":{"tags":["Alerts"],"summary":"Cancels alert by id","description":"The endpoint cancels alert by id.","operationId":"cancelAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}/approve":{"post":{"tags":["Alerts"],"summary":"Approves alert by id","description":"The endpoint approves alert by id.","operationId":"approveAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Ok."},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/filter":{"post":{"tags":["Alerts"],"summary":"Filter alerts defined by the request body","description":"The endpoint returns alerts as paged result.","operationId":"filterAlerts","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageableFilterRequest"}}},"required":true},"responses":{"400":{"description":"Bad request.","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 paged result found for Asset","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"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":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"202":{"description":"Created registry reload job."},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns the policies","content":{"*/*":{"schema":{"$ref":"#/components/schemas/PolicyResponse"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/irs/job/callback":{"get":{"tags":["irs-callback-controller"],"operationId":"handleIrsJobCallback","parameters":[{"name":"id","in":"query","required":true,"schema":{"type":"string"}},{"name":"state","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"}}}},"/investigations/{investigationId}":{"get":{"tags":["Investigations"],"summary":"Gets investigations by id","description":"The endpoint returns investigations as paged result by their id.","operationId":"getInvestigation","parameters":[{"name":"investigationId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":-2147483648,"type":"array","description":"Investigations","items":{"$ref":"#/components/schemas/InvestigationResponse"}}}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/investigations/distinctFilterValues":{"get":{"tags":["Assets","Investigations"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","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":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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"}}}}},"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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}}},"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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","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"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":true,"schema":{"type":"integer","format":"int32"}},{"name":"startWith","in":"query","required":true,"schema":{"type":"string"}},{"name":"owner","in":"query","required":true,"schema":{"type":"string","enum":["SUPPLIER","CUSTOMER","OWN","UNKNOWN"]}}],"responses":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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"}}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","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 asset by childId","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Assets","items":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"},"semanticModelId":{"maxLength":255,"minLength":0,"type":"string"},"businessPartner":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerName":{"maxLength":255,"minLength":0,"type":"string"},"nameAtManufacturer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturerPartId":{"maxLength":255,"minLength":0,"type":"string"},"owner":{"type":"string","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","enum":["Ok","Minor","Major","Critical","LifeThreatening"]},"van":{"maxLength":255,"minLength":0,"type":"string"},"semanticDataModel":{"type":"string","enum":["BATCH","SERIALPART","UNKNOWN","PARTASPLANNED","JUSTINSEQUENCE"]},"classification":{"maxLength":255,"minLength":0,"type":"string"},"detailAspectModels":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectModelResponse"}},"sentQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityAlertIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"sentQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"receivedQualityInvestigationIdsInStatusActive":{"type":"array","items":{"type":"integer","format":"int64"}},"importState":{"type":"string","enum":["TRANSIENT","PERSISTENT","ERROR","IN_SYNCHRONIZATION","UNSET"]},"importNote":{"type":"string"}}}}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/{alertId}":{"get":{"tags":["Alerts"],"summary":"Gets Alert by id","description":"The endpoint returns alert by id.","operationId":"getAlert","parameters":[{"name":"alertId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"maxItems":2147483647,"type":"array","description":"Alerts","items":{"$ref":"#/components/schemas/AlertResponse"}}}}},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}},"/alerts/distinctFilterValues":{"get":{"tags":["Assets","Alerts"],"summary":"getDistinctFilterValues","description":"The endpoint returns a distinct filter values for given fieldName.","operationId":"distinctFilterValues_3","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":{"400":{"description":"Bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"415":{"description":"Unsupported media type","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"200":{"description":"Returns a distinct filter values for given fieldName.","content":{"application/json":{"schema":{"maxItems":2147483647,"minItems":0,"type":"array"}}}},"403":{"description":"Forbidden.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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."},"400":{"description":"Bad request.","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"}}}},"204":{"description":"No Content."},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","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":{"204":{"description":"Deleted."},"200":{"description":"Okay"},"400":{"description":"Bad request.","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"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Authorization failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"500":{"description":"Internal server error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Too many requests.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"security":[{"oAuth2":["profile email"]}]}}},"components":{"schemas":{"BpnMappingRequest":{"required":["bpn","url"],"type":"object","properties":{"bpn":{"maxLength":255,"minLength":0,"type":"string"},"url":{"maxLength":255,"minLength":0,"type":"string"}}},"ErrorResponse":{"type":"object","properties":{"message":{"maxLength":1000,"minLength":0,"pattern":"^.*$","type":"string"}}},"StartQualityNotificationRequest":{"required":["severity"],"type":"object","properties":{"partIds":{"maxItems":100,"minItems":1,"type":"array","items":{"type":"string"}},"description":{"maxLength":1000,"minLength":15,"type":"string"},"targetDate":{"type":"string","format":"date-time"},"severity":{"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE_THREATENING"]},"receiverBpn":{"type":"string"},"asBuilt":{"type":"boolean"}}},"QualityNotificationIdResponse":{"type":"object","properties":{"id":{"type":"integer","format":"int64"}}},"UpdateQualityNotificationRequest":{"required":["status"],"type":"object","properties":{"status":{"type":"string","description":"The UpdateInvestigationStatus","enum":["ACKNOWLEDGED","ACCEPTED","DECLINED"]},"reason":{"type":"string"}}},"CloseQualityNotificationRequest":{"type":"object","properties":{"reason":{"maxLength":1000,"minLength":15,"type":"string"}}},"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"}}}},"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"},"accessPolicyId":{"type":"string"},"contractDefinitionId":{"type":"string"}}},"RegisterAssetRequest":{"required":["assetIds","policyId"],"type":"object","properties":{"policyId":{"type":"string"},"assetIds":{"type":"array","items":{"type":"string"}}}},"SyncAssetsRequest":{"type":"object","properties":{"globalAssetIds":{"maxItems":100,"minItems":1,"type":"array","description":"Assets","items":{"type":"string"}}}},"GetDetailInformationRequest":{"type":"object","properties":{"assetIds":{"maxItems":50,"minItems":1,"type":"array","items":{"type":"string"}}}},"UpdateAssetRequest":{"required":["qualityType"],"type":"object","properties":{"qualityType":{"type":"string","enum":["Ok","Minor","Major","Critical","LifeThreatening"]}}},"DescriptionsResponse":{"type":"object","properties":{"id":{"maxLength":255,"minLength":0,"type":"string"},"idShort":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsBuiltResponse":{"type":"object","properties":{"partId":{"maxLength":255,"minLength":0,"type":"string"},"customerPartId":{"maxLength":255,"minLength":0,"type":"string"},"nameAtCustomer":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingCountry":{"maxLength":255,"minLength":0,"type":"string"},"manufacturingDate":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectDataAsPlannedResponse":{"type":"object","properties":{"validityPeriodFrom":{"maxLength":255,"minLength":0,"type":"string"},"validityPeriodTo":{"maxLength":255,"minLength":0,"type":"string"}}},"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"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"},"subcomponents":{"type":"array","items":{"$ref":"#/components/schemas/DetailAspectDataTractionBatteryCodeSubcomponentResponse"}}}},"DetailAspectDataTractionBatteryCodeSubcomponentResponse":{"type":"object","properties":{"productType":{"maxLength":255,"minLength":0,"type":"string"},"tractionBatteryCode":{"maxLength":255,"minLength":0,"type":"string"}}},"DetailAspectModelResponse":{"type":"object","properties":{"type":{"type":"string","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"},"function":{"type":"string"},"functionValidFrom":{"type":"string"},"catenaXSiteId":{"type":"string"}}},"ConstraintResponse":{"type":"object","properties":{"leftOperand":{"type":"string"},"operatorTypeResponse":{"type":"string","enum":["EQ","NEQ","LT","GT","IN","LTEQ","GTEQ","ISA","HASPART","ISPARTOF","ISONEOF","ISALLOF","ISNONEOF"]},"rightOperands":{"type":"array","items":{"type":"string"}}}},"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","enum":["ACCESS","USE"]},"constraints":{"type":"array","items":{"$ref":"#/components/schemas/ConstraintsResponse"}}}},"PolicyResponse":{"type":"object","properties":{"policyId":{"type":"string"},"createdOn":{"type":"string","format":"date-time"},"validUntil":{"type":"string","format":"date-time"},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/PermissionResponse"}}}},"InvestigationResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}},"QualityNotificationReasonResponse":{"type":"object","properties":{"close":{"maxLength":1000,"minLength":0,"type":"string"},"accept":{"maxLength":1000,"minLength":0,"type":"string"},"decline":{"maxLength":1000,"minLength":0,"type":"string"}}},"DashboardResponse":{"type":"object","properties":{"asBuiltCustomerParts":{"type":"integer","format":"int64"},"asPlannedCustomerParts":{"type":"integer","format":"int64"},"asBuiltSupplierParts":{"type":"integer","format":"int64"},"asPlannedSupplierParts":{"type":"integer","format":"int64"},"asBuiltOwnParts":{"type":"integer","format":"int64"},"asPlannedOwnParts":{"type":"integer","format":"int64"},"myPartsWithOpenAlerts":{"type":"integer","format":"int64"},"myPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"supplierPartsWithOpenAlerts":{"type":"integer","format":"int64"},"customerPartsWithOpenAlerts":{"type":"integer","format":"int64"},"supplierPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"customerPartsWithOpenInvestigations":{"type":"integer","format":"int64"},"receivedActiveAlerts":{"type":"integer","format":"int64"},"receivedActiveInvestigations":{"type":"integer","format":"int64"},"sentActiveAlerts":{"type":"integer","format":"int64"},"sentActiveInvestigations":{"type":"integer","format":"int64"}}},"AlertResponse":{"type":"object","properties":{"id":{"maximum":255,"minimum":0,"type":"integer","format":"int64"},"status":{"maxLength":255,"minLength":0,"type":"string","enum":["CREATED","SENT","RECEIVED","ACKNOWLEDGED","ACCEPTED","DECLINED","CANCELED","CLOSED"]},"description":{"maxLength":1000,"minLength":0,"type":"string"},"createdBy":{"maxLength":255,"minLength":0,"type":"string"},"createdByName":{"maxLength":255,"minLength":0,"type":"string"},"createdDate":{"maxLength":50,"minLength":0,"type":"string"},"assetIds":{"maxItems":1000,"minItems":0,"type":"array","description":"assetIds","items":{"type":"string"}},"channel":{"maxLength":255,"minLength":0,"type":"string","enum":["SENDER","RECEIVER"]},"reason":{"$ref":"#/components/schemas/QualityNotificationReasonResponse"},"sendTo":{"maxLength":255,"minLength":0,"type":"string"},"sendToName":{"maxLength":255,"minLength":0,"type":"string"},"severity":{"maxLength":255,"minLength":0,"type":"string","enum":["MINOR","MAJOR","CRITICAL","LIFE-THREATENING"]},"targetDate":{"maxLength":50,"minLength":0,"type":"string"},"errorMessage":{"maxLength":255,"minLength":0,"type":"string"}}}},"securitySchemes":{"oAuth2":{"type":"oauth2","flows":{"clientCredentials":{"scopes":{"profile email":""}}}}}}} \ No newline at end of file diff --git a/tx-backend/pom.xml b/tx-backend/pom.xml index cd83dc0396..fdbea14595 100644 --- a/tx-backend/pom.xml +++ b/tx-backend/pom.xml @@ -79,7 +79,6 @@ SPDX-License-Identifier: Apache-2.0 - org.eclipse.jetty diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IRSApiClient.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IRSApiClient.java deleted file mode 100644 index d68f4b1f3c..0000000000 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IRSApiClient.java +++ /dev/null @@ -1,63 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2022, 2023 Bayerische Motoren Werke Aktiengesellschaft (BMW AG) - * Copyright (c) 2022, 2023 ZF Friedrichshafen AG - * Copyright (c) 2022, 2023 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.traceability.assets.infrastructure.base.irs; - -import feign.Headers; -import feign.Param; -import feign.RequestLine; -import io.github.resilience4j.retry.annotation.Retry; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.RegisterJobRequest; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.RegisterPolicyRequest; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.JobDetailResponse; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.PolicyResponse; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.RegisterJobResponse; - -import org.eclipse.tractusx.traceability.common.config.IrsApiConfig; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.RequestBody; - -import java.util.List; - -@FeignClient( - name = "irsApi", - url = "${feign.irsApi.url}", - configuration = {IrsApiConfig.class} -) -@Headers("X-API-KEY: {apiKey}") -public interface IRSApiClient { - - @RequestLine("POST /irs/jobs") - RegisterJobResponse registerJob(@Param("apiKey") String apiKey, @RequestBody RegisterJobRequest request); - - @RequestLine("GET /irs/jobs/{id}") - @Retry(name = "irs-get") - JobDetailResponse getJobDetails(@Param("apiKey") String apiKey, @Param("id") String id); - - @RequestLine("POST /irs/policies") - void registerPolicy(@Param("apiKey") String apiKey, @RequestBody RegisterPolicyRequest request); - - @RequestLine("GET /irs/policies") - List getPolicies(@Param("apiKey") String apiKey); - - @RequestLine("DELETE /irs/policies/{id}") - void deletePolicy(@Param("apiKey") String apiKey, @Param("id") String id); -} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsClient.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsClient.java new file mode 100644 index 0000000000..45238c9323 --- /dev/null +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsClient.java @@ -0,0 +1,88 @@ +/******************************************************************************** + * Copyright (c) 2024 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ +package org.eclipse.tractusx.traceability.assets.infrastructure.base.irs; + +import org.eclipse.tractusx.irs.edc.client.policy.OperatorType; +import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.RegisterJobRequest; +import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.RegisterPolicyRequest; +import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.JobDetailResponse; +import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.PolicyResponse; +import org.eclipse.tractusx.traceability.common.properties.TraceabilityProperties; +import org.jetbrains.annotations.Nullable; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.ParameterizedTypeReference; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Component; +import org.springframework.web.client.RestTemplate; + +import java.util.List; + +import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.IRS_ADMIN_TEMPLATE; +import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.IRS_REGULAR_TEMPLATE; + +@Component +public class IrsClient { + private final RestTemplate irsAdminRestTemplate; + + private final RestTemplate irsRegularRestTemplate; + + private final TraceabilityProperties traceabilityProperties; + + public IrsClient(@Qualifier(IRS_ADMIN_TEMPLATE) RestTemplate irsAdminRestTemplate, + @Qualifier(IRS_REGULAR_TEMPLATE) RestTemplate irsRegularRestTemplate, + TraceabilityProperties traceabilityProperties) { + this.irsAdminRestTemplate = irsAdminRestTemplate; + this.irsRegularRestTemplate = irsRegularRestTemplate; + this.traceabilityProperties = traceabilityProperties; + } + + public List getPolicies() { + ResponseEntity> responseEntity = irsAdminRestTemplate.exchange( + "/irs/policies/", + HttpMethod.GET, + null, + new ParameterizedTypeReference<>() { + } + ); + return responseEntity.getBody(); + } + + public void deletePolicy() { + irsAdminRestTemplate.exchange("/irs/policies/" + traceabilityProperties.getRightOperand(), HttpMethod.DELETE, null, new ParameterizedTypeReference<>() { + }); + } + + public void registerPolicy() { + RegisterPolicyRequest registerPolicyRequest = RegisterPolicyRequest.from(traceabilityProperties.getLeftOperand(), OperatorType.fromValue(traceabilityProperties.getOperatorType()), traceabilityProperties.getRightOperand(), traceabilityProperties.getValidUntil()); + irsAdminRestTemplate.exchange("/irs/policies/", HttpMethod.POST, new HttpEntity<>(registerPolicyRequest), Void.class); + } + + public void registerJob(RegisterJobRequest registerJobRequest) { + irsRegularRestTemplate.exchange("/irs/jobs/", HttpMethod.POST, new HttpEntity<>(registerJobRequest), Void.class); + } + + + @Nullable + public JobDetailResponse getJobDetailResponse(String jobId) { + return irsRegularRestTemplate.exchange("/irs/jobs/" + jobId, HttpMethod.GET, null, new ParameterizedTypeReference() { + }).getBody(); + } +} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java index 60aa11e0fa..0ddaebb3b0 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/IrsService.java @@ -23,20 +23,17 @@ import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.eclipse.tractusx.irs.edc.client.policy.OperatorType; import org.eclipse.tractusx.traceability.assets.domain.base.IrsRepository; import org.eclipse.tractusx.traceability.assets.domain.base.model.AssetBase; import org.eclipse.tractusx.traceability.assets.domain.base.model.Owner; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.BomLifecycle; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.RegisterJobRequest; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.RegisterPolicyRequest; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.Direction; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.JobDetailResponse; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.PolicyResponse; import org.eclipse.tractusx.traceability.bpn.domain.service.BpnRepository; import org.eclipse.tractusx.traceability.common.properties.TraceabilityProperties; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; import java.util.List; @@ -47,35 +44,30 @@ @Service public class IrsService implements IrsRepository { - private final IRSApiClient irsApiClient; private final BpnRepository bpnRepository; private final TraceabilityProperties traceabilityProperties; private final ObjectMapper objectMapper; private final AssetCallbackRepository assetAsBuiltCallbackRepository; private final AssetCallbackRepository assetAsPlannedCallbackRepository; - private String adminApiKey; - private String regularApiKey; + private final IrsClient irsClient; public IrsService( - IRSApiClient irsApiClient, + IrsClient irsClient, BpnRepository bpnRepository, TraceabilityProperties traceabilityProperties, ObjectMapper objectMapper, @Qualifier("assetAsBuiltRepositoryImpl") AssetCallbackRepository assetAsBuiltCallbackRepository, @Qualifier("assetAsPlannedRepositoryImpl") - AssetCallbackRepository assetAsPlannedCallbackRepository, - @Value("${feign.irsApi.adminApiKey}") final String adminApiKey, - @Value("${feign.irsApi.regularApiKey}") final String regularApikey) { - this.irsApiClient = irsApiClient; + AssetCallbackRepository assetAsPlannedCallbackRepository) { this.bpnRepository = bpnRepository; this.traceabilityProperties = traceabilityProperties; this.objectMapper = objectMapper; this.assetAsBuiltCallbackRepository = assetAsBuiltCallbackRepository; this.assetAsPlannedCallbackRepository = assetAsPlannedCallbackRepository; - this.adminApiKey = adminApiKey; - this.regularApiKey = regularApikey; + this.irsClient = irsClient; + } @Override @@ -87,16 +79,17 @@ public void createJobToResolveAssets(String globalAssetId, Direction direction, } catch (Exception e) { log.error("exception", e); } - - irsApiClient.registerJob(regularApiKey, registerJobRequest); + this.irsClient.registerJob(registerJobRequest); } + + @Override public void handleJobFinishedCallback(String jobId, String state) { if (!Objects.equals(state, JobDetailResponse.JOB_STATUS_COMPLETED)) { return; } - JobDetailResponse jobResponse = irsApiClient.getJobDetails(regularApiKey, jobId); + JobDetailResponse jobResponse = this.irsClient.getJobDetailResponse(jobId); long runtime = (jobResponse.jobStatus().lastModifiedOn().getTime() - jobResponse.jobStatus().startedOn().getTime()) / 1000; log.info("IRS call for globalAssetId: {} finished with status: {}, runtime {} s.", jobResponse.jobStatus().globalAssetId(), jobResponse.jobStatus().state(), runtime); @@ -124,6 +117,8 @@ public void handleJobFinishedCallback(String jobId, String state) { } } + + void saveOrUpdateAssets(AssetCallbackRepository repository, AssetBase asset) { Optional existingAssetOptional = repository.findById(asset.getId()); if (existingAssetOptional.isPresent()) { @@ -143,7 +138,7 @@ void saveOrUpdateAssets(AssetCallbackRepository repository, AssetBase asset) { @Override public void createIrsPolicyIfMissing() { log.info("Check if irs policy exists"); - List irsPolicies = irsApiClient.getPolicies(adminApiKey); + List irsPolicies = this.irsClient.getPolicies(); log.info("Irs has following policies: {}", irsPolicies); log.info("Required constraints from application yaml are : {}", traceabilityProperties.getRightOperand()); @@ -164,7 +159,7 @@ public void createIrsPolicyIfMissing() { private void createPolicy() { log.info("Irs policy does not exist creating {}", traceabilityProperties.getRightOperand()); - irsApiClient.registerPolicy(adminApiKey, RegisterPolicyRequest.from(traceabilityProperties.getLeftOperand(), OperatorType.fromValue(traceabilityProperties.getOperatorType()), traceabilityProperties.getRightOperand(), traceabilityProperties.getValidUntil())); + this.irsClient.registerPolicy(); } private void checkAndUpdatePolicy(List requiredPolicies) { @@ -173,13 +168,14 @@ private void checkAndUpdatePolicy(List requiredPolicies) { traceabilityProperties.getValidUntil().isAfter(requiredPolicy.get().validUntil()) ) { log.info("IRS Policy {} has outdated validity updating new ttl {}", traceabilityProperties.getRightOperand(), requiredPolicy); - irsApiClient.deletePolicy(adminApiKey, traceabilityProperties.getRightOperand()); - irsApiClient.registerPolicy(adminApiKey, RegisterPolicyRequest.from(traceabilityProperties.getLeftOperand(), OperatorType.fromValue(traceabilityProperties.getOperatorType()), traceabilityProperties.getRightOperand(), traceabilityProperties.getValidUntil())); + this.irsClient.deletePolicy(); + this.irsClient.registerPolicy(); } } public List getPolicies() { - return irsApiClient.getPolicies(adminApiKey); + return irsClient.getPolicies(); } + } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/exception/IrsException.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/exception/IrsException.java new file mode 100644 index 0000000000..aec871fcef --- /dev/null +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/assets/infrastructure/base/irs/exception/IrsException.java @@ -0,0 +1,8 @@ +package org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.exception; + +public class IrsException extends RuntimeException { + + public IrsException(String message) { + super(message); + } +} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/ApplicationConfig.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/ApplicationConfig.java index 3f896ab3e4..48ec5af33a 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/ApplicationConfig.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/ApplicationConfig.java @@ -85,6 +85,7 @@ public class ApplicationConfig { @Lazy IrsService irsService; + private final AcceptedPoliciesProvider.DefaultAcceptedPoliciesProvider defaultAcceptedPoliciesProvider; @Bean @@ -133,16 +134,16 @@ public ITemplateResolver textTemplateResolver() { @Bean public void registerDecentralRegistryPermissions() throws JsonProcessingException { - ObjectMapper mapper = new ObjectMapper(); - mapper.registerModule(new JavaTimeModule()); - List acceptedPolicy = buildAcceptedPolicies(); - defaultAcceptedPoliciesProvider.addAcceptedPolicies(acceptedPolicy); - log.info("Successfully added permission to irs client lib provider: {}", mapper.writeValueAsString(acceptedPolicy)); + ObjectMapper mapper = new ObjectMapper(); + mapper.registerModule(new JavaTimeModule()); + List acceptedPolicy = buildAcceptedPolicies(); + defaultAcceptedPoliciesProvider.addAcceptedPolicies(acceptedPolicy); + log.info("Successfully added permission to irs client lib provider: {}", mapper.writeValueAsString(acceptedPolicy)); } @NotNull private List buildAcceptedPolicies() { - List acceptedPolicies= new ArrayList<>(); + List acceptedPolicies = new ArrayList<>(); //add own policy acceptedPolicies.addAll(createOwnAcceptedPolicies(traceabilityProperties.getValidUntil())); @@ -150,7 +151,7 @@ private List buildAcceptedPolicies() { //add IRS policies try { acceptedPolicies.addAll(createIrsAcceptedPolicies()); - }catch (Exception exception){ + } catch (Exception exception) { log.error("Failed to create Irs Policies : ", exception); } return acceptedPolicies; diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/IrsApiConfig.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/IrsApiConfig.java index 1cc0ab7a7d..41964f3d5e 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/IrsApiConfig.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/IrsApiConfig.java @@ -40,16 +40,16 @@ @Configuration public class IrsApiConfig { - @Bean - public Decoder feignDecoder() { - return new ResponseEntityDecoder(new JacksonDecoder(JsonMapper.builder() - .configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true) - .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS, true) - .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true) - .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - .build() - .registerModules(new JavaTimeModule()))); - } + @Bean + public Decoder feignDecoder() { + return new ResponseEntityDecoder(new JacksonDecoder(JsonMapper.builder() + .configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true) + .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS, true) + .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + .build() + .registerModules(new JavaTimeModule()))); + } @Bean public OkHttpClient catenaApiOkHttpClient(@Autowired FeignDefaultProperties feignDefaultProperties) { diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/EdcRestTemplateConfiguration.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/RestTemplateConfiguration.java similarity index 56% rename from tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/EdcRestTemplateConfiguration.java rename to tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/RestTemplateConfiguration.java index 33d9ee2e53..84a95c1c6a 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/EdcRestTemplateConfiguration.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/RestTemplateConfiguration.java @@ -20,14 +20,27 @@ ********************************************************************************/ package org.eclipse.tractusx.traceability.common.config; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.MapperFeature; +import com.fasterxml.jackson.databind.json.JsonMapper; +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import okhttp3.ConnectionPool; +import okhttp3.OkHttpClient; +import org.aspectj.weaver.tools.Trace; import org.eclipse.tractusx.traceability.common.properties.EdcProperties; +import org.eclipse.tractusx.traceability.common.properties.FeignDefaultProperties; +import org.eclipse.tractusx.traceability.common.properties.TraceabilityProperties; +import org.hibernate.query.sqm.TemporalUnit; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.http.converter.HttpMessageConverter; +import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.security.oauth2.client.AuthorizedClientServiceOAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientManager; import org.springframework.security.oauth2.client.OAuth2AuthorizedClientProviderBuilder; @@ -35,16 +48,27 @@ import org.springframework.security.oauth2.client.registration.ClientRegistrationRepository; import org.springframework.web.client.RestTemplate; +import java.time.Duration; +import java.time.temporal.Temporal; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.TimeUnit; + @Configuration @RequiredArgsConstructor @Slf4j -public class EdcRestTemplateConfiguration { +public class RestTemplateConfiguration { + public static final String IRS_ADMIN_TEMPLATE = "irsAdminTemplate"; + public static final String IRS_REGULAR_TEMPLATE = "irsRegularTemplate"; public static final String EDC_REST_TEMPLATE = "edcRestTemplate"; public static final String REST_TEMPLATE = "restTemplate"; + public static final String SUBMODEL_TEMPLATE = "submodelTemplate"; private static final String EDC_API_KEY_HEADER_NAME = "X-Api-Key"; + private static final String IRS_API_KEY_HEADER_NAME = "X-API-KEY"; + private final OAuth2AuthorizedClientService oAuth2AuthorizedClientService; private final ClientRegistrationRepository clientRegistrationRepository; @@ -57,6 +81,26 @@ public RestTemplate edcRestTemplate(EdcProperties edcProperties) { .build(); } + @Bean + @Qualifier(IRS_ADMIN_TEMPLATE) + public RestTemplate irsAdminTemplate(TraceabilityProperties traceabilityProperties) { + return new RestTemplateBuilder() + .rootUri(traceabilityProperties.getIrsBase()) + .defaultHeader(IRS_API_KEY_HEADER_NAME, traceabilityProperties.getAdminApiKey()) + .messageConverters(customMessageConverters()) + .build(); + } + + @Bean + @Qualifier(IRS_REGULAR_TEMPLATE) + public RestTemplate irsRegularTemplate(TraceabilityProperties traceabilityProperties) { + return new RestTemplateBuilder() + .rootUri(traceabilityProperties.getIrsBase()) + .defaultHeader(IRS_API_KEY_HEADER_NAME, traceabilityProperties.getRegularApiKey()) + .messageConverters(customMessageConverters()) + .build(); + } + @Bean @Qualifier(REST_TEMPLATE) public RestTemplate edcTemplate() { @@ -64,6 +108,18 @@ public RestTemplate edcTemplate() { .build(); } + + @Bean + @Qualifier(SUBMODEL_TEMPLATE) + public RestTemplate submodelRestTemplate(TraceabilityProperties traceabilityProperties, @Autowired FeignDefaultProperties feignDefaultProperties) { + + return new RestTemplateBuilder() + .rootUri(traceabilityProperties.getSubmodelBase()) + .setConnectTimeout(Duration.ofMillis(feignDefaultProperties.getConnectionTimeoutMillis())) + .setReadTimeout(Duration.ofMillis(feignDefaultProperties.getReadTimeoutMillis())) + .build(); + } + @Bean public RestTemplate digitalTwinRegistryRestTemplate( final RestTemplateBuilder restTemplateBuilder, @@ -100,4 +156,21 @@ private RestTemplateBuilder oAuthRestTemplate(final RestTemplateBuilder restTemp return authorizedClientManager; } + private List> customMessageConverters() { + MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter(); + converter.setObjectMapper(JsonMapper.builder() + .configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE, true) + .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_ENUMS, true) + .configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true) + .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) + .build() + .registerModules(new JavaTimeModule())); + + // Add the custom converter to the list of message converters + List> converters = new ArrayList<>(); + converters.add(converter); + + return converters; + } + } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/SubmodelApiConfig.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/SubmodelApiConfig.java deleted file mode 100644 index ad98200acd..0000000000 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/config/SubmodelApiConfig.java +++ /dev/null @@ -1,64 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.traceability.common.config; - -import feign.codec.Decoder; -import feign.codec.StringDecoder; -import lombok.extern.slf4j.Slf4j; -import okhttp3.ConnectionPool; -import okhttp3.OkHttpClient; -import org.eclipse.tractusx.traceability.common.properties.FeignDefaultProperties; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cloud.openfeign.support.ResponseEntityDecoder; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; - -import java.util.concurrent.TimeUnit; - - -@Slf4j -@Configuration -public class SubmodelApiConfig { - @Bean - public Decoder feignDecoder() { - return new ResponseEntityDecoder(new StringDecoder()); - } - - @Bean - public OkHttpClient catenaApiOkHttpClient(@Autowired FeignDefaultProperties feignDefaultProperties) { - return new OkHttpClient.Builder() - .connectTimeout(feignDefaultProperties.getConnectionTimeoutMillis(), TimeUnit.MILLISECONDS) - .readTimeout(feignDefaultProperties.getReadTimeoutMillis(), TimeUnit.MILLISECONDS) - .connectionPool( - new ConnectionPool( - feignDefaultProperties.getMaxIdleConnections(), - feignDefaultProperties.getKeepAliveDurationMinutes(), - TimeUnit.MINUTES - ) - ) - .build(); - } - - @Bean - public SubmodelServerRequestInterceptor submodelServerRequestInterceptor() { - return new SubmodelServerRequestInterceptor(); - } - -} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/properties/TraceabilityProperties.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/properties/TraceabilityProperties.java index 49e3385e04..83542d4a1d 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/properties/TraceabilityProperties.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/common/properties/TraceabilityProperties.java @@ -37,7 +37,6 @@ public class TraceabilityProperties { private BPN bpn; - private String url; private String leftOperand; @@ -48,6 +47,13 @@ public class TraceabilityProperties { private SupportedAspectTypes supportedAspectTypes; + private String adminApiKey; + + private String regularApiKey; + + private String irsBase; + private String submodelBase; + public String getIrsJobCallbackUrl() { return url+"/irs/job/callback?id={id}&state={state}"; } diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/asset/service/EdcNotificationAssetService.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/asset/service/EdcNotificationAssetService.java index abc2ec47b9..c3da543321 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/asset/service/EdcNotificationAssetService.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/asset/service/EdcNotificationAssetService.java @@ -38,7 +38,7 @@ import java.util.UUID; -import static org.eclipse.tractusx.traceability.common.config.EdcRestTemplateConfiguration.EDC_REST_TEMPLATE; +import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.EDC_REST_TEMPLATE; import static org.eclipse.tractusx.traceability.common.config.JsonLdConfigurationTraceX.NAMESPACE_EDC; import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitize; import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitizeHtml; diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/contract/service/EdcContractDefinitionService.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/contract/service/EdcContractDefinitionService.java index a73c1724d0..79bc7a966c 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/contract/service/EdcContractDefinitionService.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/contract/service/EdcContractDefinitionService.java @@ -37,7 +37,7 @@ import org.springframework.web.client.RestClientException; import org.springframework.web.client.RestTemplate; -import static org.eclipse.tractusx.traceability.common.config.EdcRestTemplateConfiguration.EDC_REST_TEMPLATE; +import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.EDC_REST_TEMPLATE; import static org.eclipse.tractusx.traceability.common.config.JsonLdConfigurationTraceX.NAMESPACE_EDC; import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitize; import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitizeHtml; diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/policy/service/EdcPolicyDefinitionService.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/policy/service/EdcPolicyDefinitionService.java index c0695816d1..11a763525a 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/policy/service/EdcPolicyDefinitionService.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/qualitynotification/domain/contract/policy/service/EdcPolicyDefinitionService.java @@ -46,7 +46,7 @@ import java.util.List; import java.util.UUID; -import static org.eclipse.tractusx.traceability.common.config.EdcRestTemplateConfiguration.EDC_REST_TEMPLATE; +import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.EDC_REST_TEMPLATE; import static org.eclipse.tractusx.traceability.common.config.JsonLdConfigurationTraceX.NAMESPACE_ODRL; import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitize; import static org.eclipse.tractusx.traceability.common.model.SecurityUtils.sanitizeHtml; diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelClient.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelClient.java new file mode 100644 index 0000000000..558e78018a --- /dev/null +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelClient.java @@ -0,0 +1,48 @@ +/******************************************************************************** + * Copyright (c) 2024 Contributors to the Eclipse Foundation + * + * See the NOTICE file(s) distributed with this work for additional + * information regarding copyright ownership. + * + * This program and the accompanying materials are made available under the + * terms of the Apache License, Version 2.0 which is available at + * https://www.apache.org/licenses/LICENSE-2.0. + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + * + * SPDX-License-Identifier: Apache-2.0 + ********************************************************************************/ +package org.eclipse.tractusx.traceability.submodel.infrastructure.repository; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpMethod; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.client.RestTemplate; + +import static org.eclipse.tractusx.traceability.common.config.RestTemplateConfiguration.SUBMODEL_TEMPLATE; + +@Component +public class SubmodelClient { + + private final RestTemplate submodelTemplate; + + + public SubmodelClient(@Qualifier(SUBMODEL_TEMPLATE) RestTemplate submodelTemplate) { + this.submodelTemplate = submodelTemplate; + } + + public void createSubmodel(String submodelId, @RequestBody String payload) { + submodelTemplate.exchange("/api/submodel/data/" + submodelId, HttpMethod.POST, new HttpEntity<>(payload), Void.class); + } + + + public String getSubmodel(String submodelId) { + return submodelTemplate.exchange("/api/submodel/data/" + submodelId, HttpMethod.GET, null, String.class).getBody(); + } +} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerApiClient.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerApiClient.java deleted file mode 100644 index 8097de5c4a..0000000000 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerApiClient.java +++ /dev/null @@ -1,40 +0,0 @@ -/******************************************************************************** - * Copyright (c) 2023 Contributors to the Eclipse Foundation - * - * See the NOTICE file(s) distributed with this work for additional - * information regarding copyright ownership. - * - * This program and the accompanying materials are made available under the - * terms of the Apache License, Version 2.0 which is available at - * https://www.apache.org/licenses/LICENSE-2.0. - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the - * License for the specific language governing permissions and limitations - * under the License. - * - * SPDX-License-Identifier: Apache-2.0 - ********************************************************************************/ - -package org.eclipse.tractusx.traceability.submodel.infrastructure.repository; - -import feign.Param; -import feign.RequestLine; -import org.eclipse.tractusx.traceability.common.config.SubmodelApiConfig; -import org.springframework.cloud.openfeign.FeignClient; -import org.springframework.web.bind.annotation.RequestBody; - -@FeignClient( - contextId = "submodelServerContextId", - name = "submodelServer", - url = "${feign.submodelApi.url}", - configuration = {SubmodelApiConfig.class} -) -public interface SubmodelServerApiClient { - @RequestLine("POST /api/submodel/data/{submodelId}") - void createSubmodel(@Param("submodelId") String submodelId, @RequestBody String payload); - - @RequestLine("GET /api/submodel/data/{submodelId}") - String getSubmodel(@Param("submodelId") String submodelId); -} diff --git a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerClientImpl.java b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerClientImpl.java index bfcb2f0e1e..7f0a446554 100644 --- a/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerClientImpl.java +++ b/tx-backend/src/main/java/org/eclipse/tractusx/traceability/submodel/infrastructure/repository/SubmodelServerClientImpl.java @@ -27,16 +27,17 @@ @RequiredArgsConstructor public class SubmodelServerClientImpl implements SubmodelServerRepository { - private final SubmodelServerApiClient submodelServerApiClient; + + private final SubmodelClient submodelClient; @Override public void saveSubmodel(String submodelId, String submodel) { - submodelServerApiClient.createSubmodel(submodelId, submodel); + submodelClient.createSubmodel(submodelId, submodel); } @Override public String getSubmodel(String submodelId) { - return submodelServerApiClient.getSubmodel(submodelId); + return submodelClient.getSubmodel(submodelId); } } diff --git a/tx-backend/src/main/resources/application-integration-spring-boot.yml b/tx-backend/src/main/resources/application-integration-spring-boot.yml index e4ce140db5..225eec46df 100644 --- a/tx-backend/src/main/resources/application-integration-spring-boot.yml +++ b/tx-backend/src/main/resources/application-integration-spring-boot.yml @@ -26,6 +26,9 @@ traceability: operatorType: "eq" rightOperand: "ID Trace 3.1" validUntil: "2023-07-04T16:01:05.309Z" + adminApiKey: testAdminKey + regularApiKey: testRegularKey + irsBase: "http://127.0.0.1" supportedAspectTypes: asBuiltTypes: mainAsBuiltAspectType: diff --git a/tx-backend/src/main/resources/application.yml b/tx-backend/src/main/resources/application.yml index db8e388798..d13c2f9dbf 100644 --- a/tx-backend/src/main/resources/application.yml +++ b/tx-backend/src/main/resources/application.yml @@ -26,6 +26,10 @@ traceability: operatorType: ${TRACEABILITY_OPERATOR_TYPE} rightOperand: ${TRACEABILITY_RIGHT_OPERAND} validUntil: ${TRACEABILITY_VALID_UNTIL} + adminApiKey: ${IRS_ADMIN_API_KEY} + regularApiKey: ${IRS_REGULAR_API_KEY} + irsBase: ${IRS_URL} + submodelBase: ${SUBMODEL_URL} supportedAspectTypes: asBuiltTypes: mainAsBuiltAspectType: @@ -167,26 +171,6 @@ spring: jwt: resource-client: ${JWT_RESOURCE_CLIENT} -feign: - submodelApi: - url: ${SUBMODEL_URL} - irsApi: - url: ${IRS_URL} - adminApiKey: ${IRS_ADMIN_API_KEY} - regularApiKey: ${IRS_REGULAR_API_KEY} - - portalApi: - url: ${PORTAL_URL} - okhttp: - enabled: true - hystrix: - enabled: false - default: - connectionTimeoutMillis: 200 - readTimeoutMillis: 500 - maxIdleConnections: 10 - keepAliveDurationMinutes: 5 - cache: bpn: name: "bpn-mappings" @@ -198,21 +182,6 @@ cors: ${ALLOWED_CORS_ORIGIN_FIRST}, ${ALLOWED_CORS_ORIGIN_SECOND} -resilience4j: - retry: - instances: - irs-get: - resultPredicate: 'org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.JobRunning' - maxAttempts: 10 - waitDuration: 30s - enableExponentialBackoff: true - exponentialBackoffMultiplier: 2 - registry: - maxAttempts: 20 - waitDuration: 10s - enableExponentialBackoff: true - exponentialBackoffMultiplier: 1 - digitalTwinRegistryClient: shellDescriptorTemplate: /shell-descriptors/{aasIdentifier} # The path to retrieve AAS descriptors from the decentral DTR, must contain the placeholder {aasIdentifier} lookupShellsTemplate: /lookup/shells?assetIds={assetIds} # The path to lookup shells from the decentral DTR, must contain the placeholder {assetIds} diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java index 0679e76997..ca29b2ffb7 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/assets/infrastructure/repository/rest/irs/IrsServiceTest.java @@ -26,15 +26,17 @@ import org.eclipse.tractusx.irs.edc.client.policy.Permission; import org.eclipse.tractusx.irs.edc.client.policy.PolicyType; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.AssetCallbackRepository; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.IRSApiClient; + +import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.IrsClient; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.IrsService; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.BomLifecycle; +import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.request.RegisterJobRequest; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.Direction; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.JobDetailResponse; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.JobStatus; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.Parameter; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.PolicyResponse; -import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.RegisterJobResponse; + import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.Shell; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.relationship.Aspect; import org.eclipse.tractusx.traceability.assets.infrastructure.base.irs.model.response.relationship.LinkedItem; @@ -58,6 +60,7 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; + import java.time.Instant; import java.time.OffsetDateTime; import java.util.Arrays; @@ -81,9 +84,6 @@ class IrsServiceTest { private IrsService irsService; - @Mock - private IRSApiClient irsClient; - @Mock TraceabilityProperties traceabilityProperties; @@ -98,34 +98,35 @@ class IrsServiceTest { @Mock private BpnRepository bpnRepository; + @Mock + private IrsClient irsClient; + + @BeforeEach void setUp() { - irsService = new IrsService(irsClient, bpnRepository, traceabilityProperties, objectMapper, assetAsBuiltCallbackRepository, assetAsPlannedCallbackRepository, "test", "test2"); + irsService = new IrsService(irsClient, bpnRepository, traceabilityProperties, objectMapper, assetAsBuiltCallbackRepository, assetAsPlannedCallbackRepository); } @Test void givenNoPolicyExist_whenCreateIrsPolicyIfMissing_thenCreateIt() { // given - when(irsClient.getPolicies(anyString())).thenReturn(List.of()); + when(irsClient.getPolicies()).thenReturn(List.of()); when(traceabilityProperties.getRightOperand()).thenReturn("test"); - when(traceabilityProperties.getOperatorType()).thenReturn("eq"); - when(traceabilityProperties.getLeftOperand()).thenReturn("PURPOSE"); - when(traceabilityProperties.getValidUntil()).thenReturn(OffsetDateTime.parse("2023-07-02T16:01:05.309Z")); // when irsService.createIrsPolicyIfMissing(); // then verify(irsClient, times(1)) - .registerPolicy(anyString(), any()); + .registerPolicy(); } @Test void givenPolicyExist_whenCreateIrsPolicyIfMissing_thenDoNotCreateIt() { // given final PolicyResponse existingPolicy = new PolicyResponse("test", OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), OffsetDateTime.now(), List.of()); - when(irsClient.getPolicies(anyString())).thenReturn(List.of(existingPolicy)); + when(irsClient.getPolicies()).thenReturn(List.of(existingPolicy)); when(traceabilityProperties.getRightOperand()).thenReturn("test"); when(traceabilityProperties.getValidUntil()).thenReturn(OffsetDateTime.parse("2023-07-02T16:01:05.309Z")); @@ -140,18 +141,16 @@ void givenPolicyExist_whenCreateIrsPolicyIfMissing_thenDoNotCreateIt() { void givenOutdatedPolicyExist_whenCreateIrsPolicyIfMissing_thenUpdateIt() { // given final PolicyResponse existingPolicy = new PolicyResponse("test", OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), OffsetDateTime.parse("2023-07-03T16:01:05.309Z"), List.of()); - when(irsClient.getPolicies(anyString())).thenReturn(List.of(existingPolicy)); + when(irsClient.getPolicies()).thenReturn(List.of(existingPolicy)); when(traceabilityProperties.getRightOperand()).thenReturn("test"); - when(traceabilityProperties.getOperatorType()).thenReturn("eq"); - when(traceabilityProperties.getLeftOperand()).thenReturn("PURPOSE"); when(traceabilityProperties.getValidUntil()).thenReturn(OffsetDateTime.parse("2023-07-04T16:01:05.309Z")); // when irsService.createIrsPolicyIfMissing(); // then - verify(irsClient, times(1)).deletePolicy(anyString(), any()); - verify(irsClient, times(1)).registerPolicy(anyString(), any()); + verify(irsClient, times(1)).deletePolicy(); + verify(irsClient, times(1)).registerPolicy(); } @ParameterizedTest @@ -164,7 +163,7 @@ void testFindAssets_completedJob_returnsConvertedAssets(Direction direction) { irsService.createJobToResolveAssets("1", direction, Aspect.downwardAspectsForAssetsAsBuilt(), BomLifecycle.AS_BUILT); // Then - verify(irsClient, times(1)).registerJob(anyString(), any()); + verify(irsClient, times(1)).registerJob(any(RegisterJobRequest.class)); } private static Stream provideDirections() { @@ -241,10 +240,10 @@ void test_getPolicyConstraints() { Permission permission = new Permission(PolicyType.USE, List.of(constraints)); PolicyResponse policyResponseMock = new PolicyResponse("", OffsetDateTime.now(), OffsetDateTime.now(), List.of(permission)); - when(irsClient.getPolicies(anyString())).thenReturn(List.of(policyResponseMock)); + when(irsClient.getPolicies()).thenReturn(List.of(policyResponseMock)); //WHEN - List policyResponse = irsService.getPolicies(); + List policyResponse = irsClient.getPolicies(); //THEN assertThat(1).isEqualTo(policyResponse.size()); diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsBuiltControllerSyncIT.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsBuiltControllerSyncIT.java index f319b2d8d4..68c2fdb698 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsBuiltControllerSyncIT.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsBuiltControllerSyncIT.java @@ -42,61 +42,6 @@ class AssetAsBuiltControllerSyncIT extends IntegrationTestSpecification { @Autowired AssetsSupport assetsSupport; - @Test - void givenSyncRequestWithOneAsset_whenSyncTriggered_thenShouldIrsApiOnve() throws JoseException, InterruptedException { - // GIVEN - oAuth2ApiSupport.oauth2ApiReturnsTechnicalUserToken(); - irsApiSupport.irsApiTriggerJob(); - - // WHEN/THEN - given() - .contentType(ContentType.JSON) - .body( - asJson(Map.of("globalAssetIds", List.of("urn:uuid:d387fa8e-603c-42bd-98c3-4d87fef8d2bb")) - ) - ) - .header(oAuth2Support.jwtAuthorization(ADMIN)) - .when() - .post("/api/assets/as-built/sync") - .then() - .statusCode(200); - - - eventually(() -> { - irsApiSupport.verifyIrsApiTriggerJobCalledTimes(2); - return true; - }); - } - - @Test - void shouldSynchronizeAssetsUsingRetry() throws JoseException, InterruptedException { - //GIVEN - oAuth2ApiSupport.oauth2ApiReturnsTechnicalUserToken(); - - irsApiSupport.irsApiTriggerJob(); - - irsApiSupport.irsApiReturnsJobInRunningAndCompleted(); - - //WHEN - given() - .contentType(ContentType.JSON) - .body( - asJson(Map.of("globalAssetIds", List.of("urn:uuid:d387fa8e-603c-42bd-98c3-4d87fef8d2bb")) - ) - ) - .header(oAuth2Support.jwtAuthorization(ADMIN)) - .when() - .post("/api/assets/as-built/sync") - .then() - .statusCode(200); - - //THEN - eventually(() -> { - irsApiSupport.verifyIrsApiTriggerJobCalledTimes(2); - return true; - }); - } - @Test void shouldNotSynchronizeAssetsWhenIrsFailedToReturnJobDetails() throws JoseException, InterruptedException { //GIVEN diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsPlannedControllerSyncIT.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsPlannedControllerSyncIT.java index 4ce939d207..e20a2cc3c1 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsPlannedControllerSyncIT.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/assets/AssetAsPlannedControllerSyncIT.java @@ -40,98 +40,6 @@ class AssetAsPlannedControllerSyncIT extends IntegrationTestSpecification { @Autowired AssetsSupport assetsSupport; - @Test - void shouldSynchronizeAssets() throws JoseException, InterruptedException { - //GIVEN - oAuth2ApiSupport.oauth2ApiReturnsTechnicalUserToken(); - irsApiSupport.irsApiTriggerJobAsPlanned(); - irsApiSupport.irsApiReturnsJobDetailsAsPlannedDownward(); - - //WHEN - given() - .contentType(ContentType.JSON) - .body( - asJson(Map.of("globalAssetIds", List.of("urn:uuid:0733946c-59c6-41ae-9570-cb43a6e4da01")) - ) - ) - .header(oAuth2Support.jwtAuthorization(ADMIN)) - .when() - .post("/api/assets/as-planned/sync") - .then() - .statusCode(200); - - //THEN - eventually(() -> { - try { - irsApiSupport.verifyIrsApiTriggerJobCalledTimes(1); - return true; - } catch (Throwable e) { - e.printStackTrace(); - return false; - } - }); - - } - - @Test - void shouldSynchronizeAssetsUsingRetry() throws JoseException, InterruptedException { - //GIVEN - oAuth2ApiSupport.oauth2ApiReturnsTechnicalUserToken(); - irsApiSupport.irsApiTriggerJobAsPlanned(); - irsApiSupport.irsApiReturnsJobDetailsAsPlannedDownwardEmptyFirst(); - - //WHEN - given() - .contentType(ContentType.JSON) - .body( - asJson(Map.of("globalAssetIds", List.of("urn:uuid:0733946c-59c6-41ae-9570-cb43a6e4da01")) - ) - ) - .header(oAuth2Support.jwtAuthorization(ADMIN)) - .when() - .post("/api/assets/as-planned/sync") - .then() - .statusCode(200); - - //THEN - eventually(() -> { - try { - irsApiSupport.verifyIrsApiTriggerJobCalledTimes(1); - return true; - } catch (Throwable e) { - e.printStackTrace(); - return false; - } - }); - } - - @Test - void shouldNotSynchronizeAssetsWhenIrsFailedToReturnJobDetails() throws JoseException, InterruptedException { - //GIVEN - oAuth2ApiSupport.oauth2ApiReturnsTechnicalUserToken(); - irsApiSupport.irsApiTriggerJob(); - irsApiSupport.irsJobDetailsApiFailed(); - - //WHEN - given() - .contentType(ContentType.JSON) - .body( - asJson(Map.of("globalAssetIds", List.of("urn:uuid:d387fa8e-603c-42bd-98c3-4d87fef8d2bb")) - ) - ) - .header(oAuth2Support.jwtAuthorization(ADMIN)) - .when() - .post("/api/assets/as-planned/sync") - .then() - .statusCode(200); - - //THEN - eventually(() -> { - assetsSupport.assertNoAssetsStored(); - return true; - }); - } - @Test void shouldNotSynchronizeAssetsWhenIrsKeepsReturningJobInRunningState() throws JoseException, InterruptedException { //GIVEN diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/config/RestitoConfig.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/config/RestitoConfig.java index bfcf058853..bff127a847 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/config/RestitoConfig.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/config/RestitoConfig.java @@ -52,7 +52,7 @@ public void initialize(ConfigurableApplicationContext configurableApplicationCon "spring.security.oauth2.resourceserver.jwt.jwk-set-uri=http://127.0.0.1:" + STUB_SERVER_PORT + OAUTH2_JWK_PATH, "spring.security.oauth2.client.provider.OKTA.token-uri=http://127.0.0.1:" + STUB_SERVER_PORT + OAUTH2_TOKEN_PATH, "feign.bpnApi.url=http://127.0.0.1:" + STUB_SERVER_PORT, - "feign.irsApi.url=http://127.0.0.1:" + STUB_SERVER_PORT, + "traceability.irsBase=http://127.0.0.1:" + STUB_SERVER_PORT, "feign.portalApi.url=http://127.0.0.1:" + STUB_SERVER_PORT, "feign.irsApi.globalAssetId=testAssetId", "feign.registryApi.url=http://127.0.0.1:" + STUB_SERVER_PORT, diff --git a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/support/IrsApiSupport.java b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/support/IrsApiSupport.java index dd9953e270..d9f747ed21 100644 --- a/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/support/IrsApiSupport.java +++ b/tx-backend/src/test/java/org/eclipse/tractusx/traceability/integration/common/support/IrsApiSupport.java @@ -93,8 +93,7 @@ public void irsJobDetailsEmptyAsBuilt() { public void irsJobDetailsAsPlanned() { whenHttp(restitoProvider.stubServer()).match( - get("/irs/jobs/ebb79c45-7bba-4169-bf17-SUCCESSFUL_AS_PLANNED"), - withHeader(HttpHeaders.AUTHORIZATION) + get("/irs/jobs/ebb79c45-7bba-4169-bf17-SUCCESSFUL_AS_PLANNED") ) .then( ok(), @@ -165,8 +164,7 @@ public void irsApiReturnsJobDetailsWithDuplicatedCatenaXId() { public void irsApiReturnsJobDetails() { whenHttp(restitoProvider.stubServer()).match( - get("/irs/jobs/ebb79c45-7bba-4169-bf17-3e719989ab54"), - withHeader(HttpHeaders.AUTHORIZATION) + get("/irs/jobs/ebb79c45-7bba-4169-bf17-3e719989ab54") ) .then( ok(), From 11abd8555b059061dd732f8ecafb7451bf4de221 Mon Sep 17 00:00:00 2001 From: Martin Maul Date: Mon, 29 Jan 2024 09:58:41 +0100 Subject: [PATCH 058/311] feature(publish): #535 added user manual documentation for publishing assets --- docs/src/docs/user/user-manual.adoc | 36 +++++++++++++++++- .../user-manual/publish_assets_button.png | Bin 0 -> 91775 bytes .../user-manual/publish_assets_view.png | Bin 0 -> 42728 bytes .../parts-table/parts-table.component.html | 2 +- 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 docs/src/images/user-manual/publish_assets_button.png create mode 100644 docs/src/images/user-manual/publish_assets_view.png diff --git a/docs/src/docs/user/user-manual.adoc b/docs/src/docs/user/user-manual.adoc index cd5f306bb2..3efc9ca41a 100644 --- a/docs/src/docs/user/user-manual.adoc +++ b/docs/src/docs/user/user-manual.adoc @@ -148,11 +148,45 @@ Parts that are in a quality alert are highlighted yellow. === Parts selection -> Create Quality alert Select one or multiple child components/parts/batches that are build into your part. -Selection will enable you to create a quality alert (notification) to your customers. +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. Once the quality alert is created you will get a pop-up and can directly navigate to the inbox for further action. +=== 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: + +image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/publish_assets_button.png[] + +Selection will enable you to publish assets with the goal to persist them (import state "persistent"). +With a click on the button a window will be opened, where the selected assets are displayed and a required policy must be selected: + +image::https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/publish_assets_view.png[] + +The following table explains the different import state an asset can have: + +[cols="1,1"] +|=== +|transient +|Asset is uploaded but not synchronized with the Item Relationship Service (IRS). + +|in_synchronization +|Asset is in the process of synchronizing with the IRS. + +|persistent +|Asset is successfully synchronized with the IRS. + +|unset +|The import state of the asset was not set + +|error +|Along the import state transition and error occurred. +|=== + + + + === Parts 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. diff --git a/docs/src/images/user-manual/publish_assets_button.png b/docs/src/images/user-manual/publish_assets_button.png new file mode 100644 index 0000000000000000000000000000000000000000..90a7c4b386b09097af143bea2e07e09e53e88285 GIT binary patch literal 91775 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 literal 0 HcmV?d00001 diff --git a/docs/src/images/user-manual/publish_assets_view.png b/docs/src/images/user-manual/publish_assets_view.png new file mode 100644 index 0000000000000000000000000000000000000000..4184c3c2b3413331a9914bf68c9971451ea17f5a GIT binary patch literal 42728 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 B9JBxc literal 0 HcmV?d00001 diff --git a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html index 9433105531..807057769b 100644 --- a/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html +++ b/frontend/src/app/modules/shared/components/parts-table/parts-table.component.html @@ -29,7 +29,7 @@

    {{ selectedPartsInfoLabel | i18n : {count: selection?.selected?.length || 0} }}

    Date: Mon, 29 Jan 2024 10:07:32 +0100 Subject: [PATCH 059/311] feature(publish): #535 added user manual documentation for publishing assets --- docs/src/docs/user/user-manual.adoc | 4 ++++ .../user-guide/parts-list-detailed-view.png | Bin 159001 -> 174575 bytes .../user-guide}/publish_assets_button.png | Bin .../user-guide}/publish_assets_view.png | Bin 4 files changed, 4 insertions(+) rename docs/src/images/{user-manual => arc42/user-guide}/publish_assets_button.png (100%) rename docs/src/images/{user-manual => arc42/user-guide}/publish_assets_view.png (100%) diff --git a/docs/src/docs/user/user-manual.adoc b/docs/src/docs/user/user-manual.adoc index 3efc9ca41a..50a4a3a492 100644 --- a/docs/src/docs/user/user-manual.adoc +++ b/docs/src/docs/user/user-manual.adoc @@ -232,6 +232,10 @@ Zooming in/out can be done with the corresponding control buttons. image:https://raw.githubusercontent.com/eclipse-tractusx/traceability-foss/main/docs/src/images/arc42/user-guide/open-new-tab.png[] Open part tree in new tab to zoom, scroll and focus in a larger view. A minimap on the bottom right provides an overview of the current position on the part tree. +==== Asset State + +Information about the import process and state of the part. + ==== Manufacturer data Detailed information on the IDs for the manufactured part/batch. 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 acf604d491e83d8e53a7a54e50659639437461b0..f98da690005cf6f9790635737b49d2a1639991da 100644 GIT binary patch literal 174575 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