From 54803c08bab607b9d4ffca54a6bc23c566467b98 Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Thu, 31 Oct 2024 17:42:27 +0800 Subject: [PATCH 1/8] Added improvement of build-in process to delete nodes with a null value in inventory response --- .../src/main/resources/application.yaml | 2 +- .../mapping.matrix.address.validation.yaml | 20 ------ .../mapping-matrix/mapping.matrix.order.yaml | 40 ----------- .../mapping-matrix/mapping.matrix.quote.yaml | 69 ------------------- .../src/main/resources/mock/product.yaml | 26 ++++++- .../mock/api-specs/api-spec.address.yaml | 17 ++--- .../mock/api-specs/api-spec.order.yaml | 19 +---- .../api-specs/api-spec.product.offering.yaml | 15 +--- .../mock/api-specs/api-spec.quote.yaml | 21 ++---- .../api-target-mapper.inventory.uni.list.yaml | 2 + .../api-target.address.retrieve.yaml | 21 +++--- .../api-target.address.validate.yaml | 14 ++-- .../mock/api-targets/api-target.hub.add.yaml | 21 ++++++ .../api-target.order.eline.add.yaml | 13 +--- .../api-target.order.eline.delete.yaml | 15 ++-- .../api-target.order.eline.read.yaml | 51 ++++++++++++-- ...arget.order.notification.state.change.yaml | 33 +++++++++ .../api-targets/api-target.order.uni.add.yaml | 19 +++-- .../api-target.order.uni.delete.yaml | 16 ++--- .../api-target.order.uni.read.yaml | 54 +++++++++++++-- ...-target.poq.notification.state.change.yaml | 33 +++++++++ ...api-target.product.offering.eline.add.yaml | 5 +- ...pi-target.product.offering.eline.read.yaml | 5 +- .../api-target.product.offering.uni.add.yaml | 5 +- .../api-target.product.offering.uni.read.yaml | 5 +- .../api-target.quote.eline.add.sync.yaml | 9 ++- .../api-target.quote.eline.add.yaml | 27 +++++--- .../api-target.quote.eline.read.sync.yaml | 12 ++-- .../api-target.quote.eline.read.yaml | 19 ++--- ...arget.quote.notification.state.change.yaml | 33 +++++++++ .../api-target.quote.uni.add.sync.yaml | 9 ++- .../api-targets/api-target.quote.uni.add.yaml | 21 +++--- .../api-target.quote.uni.read.sync.yaml | 12 ++-- .../api-target.quote.uni.read.yaml | 34 ++++----- .../test/resources/mock/apis/api.address.yaml | 5 +- .../resources/mock/apis/api.inventory.yaml | 16 +++-- .../test/resources/mock/apis/api.order.yaml | 4 +- .../test/resources/mock/apis/api.quote.yaml | 4 +- ...productOrderManagement.api.customized.yaml | 4 ++ .../src/test/resources/mock/product.yaml | 26 ++++++- .../runner/AbstractBodyTransformerFunc.java | 2 +- .../gateway/runner/MappingTransformer.java | 8 +-- 42 files changed, 431 insertions(+), 355 deletions(-) delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.yaml create mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.hub.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml create mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml create mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/application.yaml b/kraken-app/kraken-app-hub/src/main/resources/application.yaml index c6990763..e9d2e4c7 100644 --- a/kraken-app/kraken-app-hub/src/main/resources/application.yaml +++ b/kraken-app/kraken-app-hub/src/main/resources/application.yaml @@ -113,7 +113,7 @@ app: check-release: 0/20 * * * * * security: resource-server: - enabled: true + enabled: false jwt: - issuer: https://kraken.consoleconnect.com/issuer key-id: kraken diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml deleted file mode 100644 index e8f253d8..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.address.validation - name: MEF Sonata API - labels: - mef-api-release: grace - version: 10 -spec: - matrix: - mef.sonata.api-target.address.validate: - - name: provide_alternative_true - path: "$.body.provideAlternative" - expected: true - - name: address_type_FieldedAddress - path: "$.body.submittedGeographicAddress.['@type']" - expected: FieldedAddress - - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.yaml deleted file mode 100644 index 7b140309..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.order - name: MEF Sonata API - labels: - mef-api-release: grace - version: 11 -spec: - matrix: - mef.sonata.api-target.order.uni.add: - - name: product_type_UNI - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expected: UNI - - name: action_add - path: "$.body.productOrderItem[*].['action']" - expected: add - mef.sonata.api-target.order.eline.add: - - name: product_type_eline - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expected: ACCESS_E_LINE - - name: action_add - path: "$.body.productOrderItem[*].['action']" - expected: add - mef.sonata.api-target.order.eline.delete: - - name: product_type_eline - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expected: ACCESS_E_LINE - - name: action_delete - path: "$.body.productOrderItem[*].['action']" - expected: delete - mef.sonata.api-target.order.uni.delete: - - name: product_type_uni - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expected: UNI - - name: action_delete - path: "$.body.productOrderItem[*].['action']" - expected: delete - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.yaml deleted file mode 100644 index c9a4dea6..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.quote - name: MEF Sonata API - labels: - mef-api-release: grace - version: 12 -spec: - matrix: - mef.sonata.api-target.quote.uni.add: - - name: enabled - expected: false - - name: product_type_UNI - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expected: UNI - - name: action_add - path: "$.body.quoteItem[*].['action']" - expected: add - - name: syn_mode_false - path: "$.body.instantSyncQuote" - expected: false - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expected: firm - mef.sonata.api-target.quote.eline.add: - - name: enabled - expected: false - - name: product_type_eline - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expected: ACCESS_E_LINE - - name: action_add - path: "$.body.quoteItem[*].['action']" - expected: add - - name: syn_mode_false - path: "$.body.instantSyncQuote" - expected: false - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expected: firm - mef.sonata.api-target.quote.uni.add.sync: - - name: product_type_UNI - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expected: UNI - - name: action_add - path: "$.body.quoteItem[*].['action']" - expected: add - - name: syn_mode_true - path: "$.body.instantSyncQuote" - expected: true - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expected: firm - mef.sonata.api-target.quote.eline.add.sync: - - name: product_type_eline - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expected: ACCESS_E_LINE - - name: action_add - path: "$.body.quoteItem[*].['action']" - expected: add - - name: syn_mode_true - path: "$.body.instantSyncQuote" - expected: true - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expected: firm - - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml index 0b5a04a3..a94f7686 100644 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml @@ -11,10 +11,12 @@ spec: #- classpath:/mock/apis/api.quote.yaml #- classpath:/mock/apis/api.address.yaml #- classpath:/mock/apis/api.product.offering.yaml + #- classpath:/mock/apis/api.inventory.yaml #- classpath:/mock/api-specs/api-spec.order.yaml #- classpath:/mock/api-specs/api-spec.address.yaml #- classpath:/mock/api-specs/api-spec.quote.yaml #- classpath:/mock/api-specs/api-spec.product.offering.yaml + #- classpath:/mock/api-specs/api-spec.inventory.yaml #- classpath:/mock/api-targets/api-target.order.uni.add.yaml #- classpath:/mock/api-targets/api-target.order.eline.add.yaml #- classpath:/mock/api-targets/api-target.order.uni.read.yaml @@ -35,6 +37,10 @@ spec: #- classpath:/mock/api-targets/api-target.product.offering.eline.add.yaml #- classpath:/mock/api-targets/api-target.product.offering.uni.read.yaml #- classpath:/mock/api-targets/api-target.product.offering.eline.read.yaml + #- classpath:/mock/api-targets/api-target.inventory.uni.list.yaml + #- classpath:/mock/api-targets/api-target.inventory.uni.read.yaml + #- classpath:/mock/api-targets/api-target.inventory.eline.list.yaml + #- classpath:/mock/api-targets/api-target.inventory.eline.read.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml @@ -55,7 +61,21 @@ spec: #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml - - classpath:/mock/mapping-matrix/mapping.matrix.order.yaml - - classpath:/mock/mapping-matrix/mapping.matrix.quote.yaml - - classpath:/mock/mapping-matrix/mapping.matrix.address.validation.yaml + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.address.validation.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml index 367b9061..2d6f351a 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml @@ -4,20 +4,13 @@ apiVersion: v1 metadata: key: mef.sonata.api-spec.serviceability.address name: Geographic Address Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/address-validation.png + icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/address-validation-202409.png labels: mef-api-release: grace - order-api-version: v10 - version: 1 + address-api-version: v7 + version: 2 spec: baseSpec: - path: classpath:/mock/openapi/geographicAddressManagement.api.yaml + path: classpath:/mef-sonata/openapi/geographicAddressManagement.api.yaml customizedSpec: - path: classpath:/mock/openapi/geographicAddressManagement.api.customized.yaml -links: - - targetAssetKey: mef.sonata.api.serviceability.address - relationship: implementation.workflow - - targetAssetKey: mef.sonata.api-target.address.retrieve - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.address.validate - relationship: implementation.target + path: classpath:/mef-sonata/openapi/geographicAddressManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml index 25efd4c6..4158e64d 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml @@ -11,22 +11,7 @@ metadata: version: 1 spec: baseSpec: - path: classpath:/mock/openapi/productOrderManagement.api.yaml + path: classpath:/mef-sonata/openapi/productOrderManagement.api.yaml customizedSpec: - path: classpath:/mock/openapi/productOrderManagement.api.customized.yaml -links: - - targetAssetKey: mef.sonata.api.order - relationship: implementation.workflow - - targetAssetKey: mef.sonata.api-target.order.eline.add - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.order.eline.delete - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.order.eline.read - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.order.uni.delete - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.order.uni.read - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.order.uni.add - relationship: implementation.target + path: classpath:/mef-sonata/openapi/productOrderManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml index 5323fbbc..a9c1079b 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml @@ -7,18 +7,7 @@ metadata: icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/product-offering-quality.png labels: mef-api-release: grace - order-api-version: v10 + poq-api-version: v7 spec: baseSpec: - path: classpath:/mock/openapi/productOfferingQualificationManagement.api.yaml -links: - - targetAssetKey: mef.sonata.api.poq - relationship: implementation.workflow - - targetAssetKey: mef.sonata.api-target.poq.eline.add - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.poq.eline.read - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.poq.uni.add - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.poq.eline.read - relationship: implementation.target \ No newline at end of file + path: classpath:/mef-sonata/openapi/productOfferingQualificationManagement.api.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml index 2f9c3b3b..b58fe9a3 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml @@ -4,24 +4,13 @@ apiVersion: v1 metadata: key: mef.sonata.api-spec.quote name: Product Quote Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/quote.png + icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/quote-202409.png labels: mef-api-release: grace - order-api-version: v10 - version: 1 + quote-api-version: v8 + version: 2 spec: baseSpec: - path: classpath:/mock/openapi/quoteManagement.api.yaml + path: classpath:/mef-sonata/openapi/quoteManagement.api.yaml customizedSpec: - path: classpath:/mock/openapi/quoteManagement.api.customized.yaml -links: - - targetAssetKey: mef.sonata.api.quote - relationship: implementation.workflow - - targetAssetKey: mef.sonata.api-target.quote.eline.add - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.quote.eline.read - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.quote.uni.add - relationship: implementation.target - - targetAssetKey: mef.sonata.api-target.quote.uni.read - relationship: implementation.target \ No newline at end of file + path: classpath:/mef-sonata/openapi/quoteManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml index b77b521e..e4c3b05d 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml @@ -45,6 +45,8 @@ spec: targetType: string targetLocation: BODY requiredMapping: true + checkPath: "$[0].id" + deletePath: "$[*]" - name: mapper.inventory.uni.list.startDate title: "The date from which the product starts" description: "BODY" diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml index a14d8c67..013356ca 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.address.retrieve name: Geographic Address Management mapperKey: mef.sonata.api-target-mapper.address.retrieve - version: 1 + version: 6 spec: inputs: - mefQuery @@ -14,18 +14,17 @@ spec: method: get endpoints: - id: retrieve address - path: - method: + path: "" + method: "" requestBody: responseBody: | { - "id": "@{{id}}", - "type": "FieldedAddress", + "id": "", + "@type": "FieldedAddress", "associatedGeographicAddress": { - "country": "@{{associatedGeographicAddress.country}}", - "city": "@{{associatedGeographicAddress.city}}", - "streetName": "@{{associatedGeographicAddress.streetName}}" + "country": "", + "city": "", + "streetName": "", + "locality": "" } - } - - + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml index d72d13a9..3688bead 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml @@ -5,19 +5,16 @@ metadata: key: mef.sonata.api-target.address.validate name: Geographic Address Management mapperKey: mef.sonata.api-target-mapper.address.validate - version: 1 + version: 7 spec: inputs: - mefQuery - mefRequestBody - - entity trigger: path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation method: post endpoints: - id: validate address - path: /v2/data-center-facility/search - method: get requestBody: responseBody: | { @@ -28,15 +25,18 @@ spec: "@type": "FieldedAddress", "country": "", "city": "", - "streetName": "" + "streetName": "", + "locality": "" } ], "provideAlternative": "${mefRequestBody.provideAlternative}", "submittedGeographicAddress": "${mefRequestBody.submittedGeographicAddress}", "bestMatchGeographicAddress": { "id": "", - "type": "FieldedAddress", + "@type": "FieldedAddress", "city": "", - "country": "" + "country": "", + "streetName": "" } } + diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.hub.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.hub.add.yaml new file mode 100644 index 00000000..a12482ae --- /dev/null +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.hub.add.yaml @@ -0,0 +1,21 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.hub.add + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.hub.add + version: 5 +spec: + inputs: + - mefQuery + - mefRequestBody + - eventEntity + endpoints: + - id: register event + responseBody: | + { + "id": "${eventEntity.id}", + "callback": "${mefRequestBody.callback}", + "query": "${mefRequestBody.query}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml index 6e254b3d..2b1793fb 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml @@ -6,7 +6,7 @@ metadata: key: mef.sonata.api-target.order.eline.add name: Order Connection API mapperKey: mef.sonata.api-target-mapper.order.eline.add - version: 1 + version: 7 spec: inputs: - mefQuery @@ -26,15 +26,8 @@ spec: { "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", "id": "${entity.id}", - "orderDate":"function.now()", + "orderDate":"${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "productOrderItem": "${mefRequestBody.productOrderItem}", "state": "", "orderId": "" - } - - - - - - - + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml index 337a823d..d2df85e0 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml @@ -6,7 +6,7 @@ metadata: key: mef.sonata.api-target.order.eline.delete name: Order Connection API mapperKey: mef.sonata.api-target-mapper.order.eline.delete - version: 1 + version: 4 spec: inputs: - mefQuery @@ -22,11 +22,8 @@ spec: method: "" responseBody: | { - "relatedContactInformation": "${mefRequestBody.relatedContactInformation}" - "productOrderItem": [{ - "action": "delete", - "id": "${mefRequestBody.productItem[0].id}", - "product": "${mefRequestBody.productItem[0].product}" - }], - "state": @{{state}}" - } + "id":"${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "productOrderItem": "${mefRequestBody.productOrderItem}", + "state": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml index 24300b7a..a333439f 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.order.eline.read name: Order Connection API mapperKey: mef.sonata.api-target-mapper.order.eline.read - version: 4 + version: 6 spec: inputs: - mefQuery @@ -23,8 +23,47 @@ spec: responseBody: | { "id": "${entity.id}", - "relatedContactInformation": "${entity.request.relatedContactInformation}", - "productOrderItem": "${entity.request.productOrderItem}", - "state": "@{{state}}" - } - + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "productOrderItem": [ + { + "action": "${entity.renderedResponse.productOrderItem[0].action}", + "agreementName": "${entity.renderedResponse.productOrderItem[0].agreementName}", + "billingAccount": "${entity.renderedResponse.productOrderItem[0].billingAccount}", + "coordinatedAction": "${entity.renderedResponse.productOrderItem[0].coordinatedAction}", + "endCustomerName": "${entity.renderedResponse.productOrderItem[0].endCustomerName}", + "expediteIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "id": "${entity.renderedResponse.productOrderItem[0].id}", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].expectedCompletionDate}", + "note": "${entity.renderedResponse.productOrderItem[0].note}", + "product": { + "productOffering": "${entity.renderedResponse.productOrderItem[0].product.productOffering}", + "productConfiguration": "${entity.renderedResponse.productOrderItem[0].product.productConfiguration}", + "productRelationship": "${entity.renderedResponse.productOrderItem[0].product.productRelationship}", + "place": "${entity.renderedResponse.productOrderItem[0].product.place}", + "href": "${entity.renderedResponse.productOrderItem[0].product.href}", + "id": "" + }, + "productOfferingQualificationItem": "${entity.renderedResponse.productOrderItem[0].productOfferingQualificationItem}", + "productOrderItemRelationship": "${entity.renderedResponse.productOrderItem[0].productOrderItemRelationship}", + "quoteItem": "${entity.renderedResponse.productOrderItem[0].quoteItem}", + "relatedBuyerPON": "${entity.renderedResponse.productOrderItem[0].relatedBuyerPON}", + "relatedContactInformation": "${entity.renderedResponse.productOrderItem[0].relatedContactInformation}", + "requestedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "requestedItemTerm": "${entity.renderedResponse.productOrderItem[0].requestedItemTerm}", + "tspRestorationPriority": "${entity.renderedResponse.productOrderItem[0].tspRestorationPriority}", + "charge": "${entity.renderedResponse.productOrderItem[0].charge}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "expediteAcceptedIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "itemTerm": "${entity.renderedResponse.productOrderItem[0].itemTerm}", + "milestone": "${entity.renderedResponse.productOrderItem[0].milestone}", + "state": "((mefResponseBody.state))", + "terminationError": "${entity.renderedResponse.productOrderItem[0].terminationError}" + } + ], + "orderDate":"${entity.renderedResponse.orderDate}", + "state": "", + "orderId": "${entity.renderedResponse.orderId}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "instanceId": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml new file mode 100644 index 00000000..81aa7ce9 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.notification.state.change + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.order.notification.state.change + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + - eventEntity + trigger: + path: /mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent + method: post + endpoints: + - id: notify order state change + path: "/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent" + url: "${eventEntity.registerInfo.callback}" +# path: "/anything" + method: post + requestBody: | + { + "eventId": "${eventEntity.id}", + "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "eventType": "${mefQuery.eventType}", + "event": { + "id": "" + } + } + responseBody: diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml index af790f68..d5f54f69 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml @@ -6,7 +6,7 @@ metadata: key: mef.sonata.api-target.order.uni.add name: Order Port API mapperKey: mef.sonata.api-target-mapper.order.uni.add - version: 2 + version: 4 spec: inputs: - mefQuery @@ -20,15 +20,14 @@ spec: - id: create port order path: "" method: "" - requestBody: | + requestBody: | {} responseBody: | { - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "id": "${entity.id}", - "orderDate":"function.now()", - "productOrderItem": "${mefRequestBody.productOrderItem}", - "state": "", - "orderId": "" - } - + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "id": "${entity.id}", + "orderDate":"${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "productOrderItem": "${mefRequestBody.productOrderItem}", + "state": "", + "orderId": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml index a8a83d0f..2785dfdf 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.order.uni.delete name: Order Port API mapperKey: mef.sonata.api-target-mapper.order.uni.delete - version: 1 + version: 5 spec: inputs: - mefQuery @@ -18,15 +18,11 @@ spec: endpoints: - id: delete port path: "" - pathReferId: "mef.sonata.api-target.order.uni.delete#order.uni.delete.instanceId.mapper" method: "" responseBody: | { - "relatedContactInformation": "${mefRequestBody.relatedContactInformation}" - "productOrderItem": [{ - "action": "delete", - "id": "${mefRequestBody.productItem[0].id}", - "product": "${mefRequestBody.productItem[0].product}" - }], - "state": "@{{state}}" - } + "id":"${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "productOrderItem": "${mefRequestBody.productOrderItem}", + "state": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml index b9dc5969..59e32bf8 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.order.uni.read mapperKey: mef.sonata.api-target-mapper.order.uni.read name: Order Connection API - version: 4 + version: 8 spec: inputs: - mefQuery @@ -19,11 +19,51 @@ spec: - id: retrieve connection detail by id path: "" method: "" - pathReferId: "mef.sonata.api-target-mapper.order.uni.read#mapper.order.uni.add.orderId" + pathReferId: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" responseBody: | { - "relatedContactInformation": "${mefRequestBody.relatedContactInformation}" - "productOrderItem": "${mefRequestBody.productOrderItem}", - "state": "@{{state}}" - } - + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "productOrderItem": [ + { + "action": "${entity.renderedResponse.productOrderItem[0].action}", + "agreementName": "${entity.renderedResponse.productOrderItem[0].agreementName}", + "billingAccount": "${entity.renderedResponse.productOrderItem[0].billingAccount}", + "coordinatedAction": "${entity.renderedResponse.productOrderItem[0].coordinatedAction}", + "endCustomerName": "${entity.renderedResponse.productOrderItem[0].endCustomerName}", + "expediteIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "id": "${entity.renderedResponse.productOrderItem[0].id}", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].expectedCompletionDate}", + "note": "${entity.renderedResponse.productOrderItem[0].note}", + "product": { + "productOffering": "${entity.renderedResponse.productOrderItem[0].product.productOffering}", + "productConfiguration": "${entity.renderedResponse.productOrderItem[0].product.productConfiguration}", + "productRelationship": "${entity.renderedResponse.productOrderItem[0].product.productRelationship}", + "place": "${entity.renderedResponse.productOrderItem[0].product.place}", + "href": "${entity.renderedResponse.productOrderItem[0].product.href}", + "id": "" + }, + "productOfferingQualificationItem": "${entity.renderedResponse.productOrderItem[0].productOfferingQualificationItem}", + "productOrderItemRelationship": "${entity.renderedResponse.productOrderItem[0].productOrderItemRelationship}", + "quoteItem": "${entity.renderedResponse.productOrderItem[0].quoteItem}", + "relatedBuyerPON": "${entity.renderedResponse.productOrderItem[0].relatedBuyerPON}", + "relatedContactInformation": "${entity.renderedResponse.productOrderItem[0].relatedContactInformation}", + "requestedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "requestedItemTerm": "${entity.renderedResponse.productOrderItem[0].requestedItemTerm}", + "tspRestorationPriority": "${entity.renderedResponse.productOrderItem[0].tspRestorationPriority}", + "charge": "${entity.renderedResponse.productOrderItem[0].charge}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "expediteAcceptedIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "itemTerm": "${entity.renderedResponse.productOrderItem[0].itemTerm}", + "milestone": "${entity.renderedResponse.productOrderItem[0].milestone}", + "state": "((mefResponseBody.state))", + "terminationError": "${entity.renderedResponse.productOrderItem[0].terminationError}" + } + ], + "orderDate":"${entity.renderedResponse.orderDate}", + "state": "", + "orderId": "${entity.renderedResponse.orderId}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "instanceId": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml new file mode 100644 index 00000000..63a4b826 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.poq.notification.state.change + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.poq.notification.state.change + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + - eventEntity + trigger: + path: /mefApi/sonata/productOfferingQualificationNotification/v7/listener/poqStateChangeEvent + method: post + endpoints: + - id: notify poq state change + path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" + url: "${eventEntity.registerInfo.callback}" +# path: "/anything" + method: post + requestBody: | + { + "eventId": "${eventEntity.id}", + "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "eventType": "${mefQuery.eventType}", + "event": { + "id": "" + } + } + responseBody: diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml index ca9c99d4..3d9b4a4b 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml @@ -5,6 +5,7 @@ metadata: key: mef.sonata.api-target.poq.eline.add name: Product Offering Qualification (POQ) API mapperKey: mef.sonata.api-target-mapper.poq.eline.add + version: 1 spec: inputs: - mefQuery @@ -16,8 +17,8 @@ spec: actionType: add endpoints: - id: create a product offering qualification for connection - path: /api/pricing/calculate - method: post + path: "" + method: "" requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} responseBody: | { diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml index 912e6f06..f1e94253 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml @@ -5,6 +5,7 @@ metadata: key: mef.sonata.api-target.poq.eline.read name: Product Offering Qualification (POQ) API mapperKey: mef.sonata.api-target-mapper.poq.eline.read + version: 1 spec: inputs: - mefQuery @@ -15,8 +16,8 @@ spec: productType: access_e_line endpoints: - id: Retrieves a product offering qualification by id for connection - path: /api/pricing/calculate - method: post + path: "" + method: "" requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} responseBody: | { diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml index cad94287..50b541a9 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml @@ -5,6 +5,7 @@ metadata: key: mef.sonata.api-target.poq.uni.add name: Product Offering Qualification (POQ) API mapperKey: mef.sonata.api-target-mapper.poq.uni.add + version: 1 spec: inputs: - mefQuery @@ -16,8 +17,8 @@ spec: actionType: add endpoints: - id: create a product offering qualification for port - path: /api/pricing/calculate - method: post + path: "" + method: "" requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.uni} responseBody: | { diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml index 90920467..5ef7fba3 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml @@ -5,6 +5,7 @@ metadata: key: mef.sonata.api-target.poq.uni.read name: Product Offering Qualification (POQ) API mapperKey: mef.sonata.api-target-mapper.poq.uni.read + version: 1 spec: inputs: - mefQuery @@ -15,8 +16,8 @@ spec: productType: uni endpoints: - id: Retrieves a product offering qualification by id for port - path: /api/pricing/calculate - method: post + path: "" + method: "" requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.uni} responseBody: | { diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml index 3b7d4caf..985942ac 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.add.sync name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.add.sync - version: 0 + version: 1 spec: inputs: - mefQuery @@ -17,9 +17,8 @@ spec: actionType: add endpoints: - id: create quote for connection - url: ${env.target.url} - path: /api/pricing/calculate - method: post + path: + method: requestBody: | {} responseBody: | @@ -53,7 +52,7 @@ spec: "recurringChargePeriod":"" }] }], - "quoteDate": "now", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId":"${mefRequestBody[externalId]?:''}", "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml index b6f29bb0..71227332 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.add name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.add - version: 4 + version: 1 spec: inputs: - mefQuery @@ -17,14 +17,17 @@ spec: actionType: add endpoints: - id: create quote for connection - path: /api/pricing/calculate - method: post + path: + method: requestBody: ${mefRequestBody.quoteItem[0].product.productConfiguration.access_e_line} responseBody: | { - "id": "${entity.id}", - "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "quoteItem": [{ + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "quoteItem": [{ + "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", "product": "${mefRequestBody.quoteItem[0].product}", "state": "", "quoteItemPrice": [{ @@ -35,9 +38,11 @@ spec: } } }] - }], - "quoteDate": "function.now()", - "externalId":"${mefRequestBody[externalId]?:''}", - "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}" + }], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${mefRequestBody[externalId]?:''}", + "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml index c223f2ab..a983dc38 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.read.sync name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.read.sync - version: 0 + version: 2 spec: inputs: - mefQuery @@ -18,13 +18,13 @@ spec: endpoints: - id: retrieve quote for connection url: ${env.target.url} - path: /api/pricing/calculate - method: post - requestBody: | - {} + path: + method: + requestBody: ${entity.request.quoteItem[0].product.productConfiguration.access_e_line} responseBody: | { "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", "quoteItem": [{ "product": "${entity.request.quoteItem[0].product}", @@ -33,7 +33,7 @@ spec: "state": "${entity.renderedResponse.quoteItem[0].state}", "quoteItemPrice": "${entity.renderedResponse.quoteItem[0].quoteItemPrice}" }], - "quoteDate": "now", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId":"${entity.request[externalId]?:''}", "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml index e44122a1..48deb782 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.read name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.read - version: 3 + version: 1 spec: inputs: - mefQuery @@ -17,28 +17,29 @@ spec: productType: access_e_line endpoints: - id: retrieve quote for connection - path: /api/pricing/calculate - method: post + path: "" + method: "" requestBody: ${entity.request.quoteItem[0].product.productConfiguration.access_e_line} responseBody: | { "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", "quoteItem": [ { "product": "${entity.request.quoteItem[0].product}", - "state": "", - "quoteItemPrice": [{ + "state": "@{{quoteItem[*].state}}", + "quoteItemPrice": { "price": { "dutyFreeAmount": { - "unit": "", - "value": "" + "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", + "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" } } - }] + } } ], - "quoteDate": "function.now()", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId":"${entity.request[externalId]?:''}", "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml new file mode 100644 index 00000000..f80c14b8 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.notification.state.change + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.quote.notification.state.change + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + - eventEntity + trigger: + path: /mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent + method: post + endpoints: + - id: notify quote state change + path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" + url: "${eventEntity.registerInfo.callback}" +# path: "/anything" + method: post + requestBody: | + { + "eventId": "${eventEntity.id}", + "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "eventType": "${mefQuery.eventType}", + "event": { + "id": "" + } + } + responseBody: diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml index b52e7e25..2fe2564f 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.add.sync name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.add.sync - version: 0 + version: 4 spec: inputs: - mefQuery @@ -18,9 +18,8 @@ spec: actionType: add endpoints: - id: create quote for port - url: ${env.target.url} - path: "" - method: "" + path: + method: requestBody: | {} responseBody: | @@ -56,7 +55,7 @@ spec: }] } ], - "quoteDate": "now", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId":"${mefRequestBody[externalId]?:''}", "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml index 849da505..e19a2e9b 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.add name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.add - version: 4 + version: 1 spec: inputs: - mefQuery @@ -25,22 +25,27 @@ spec: { "id": "${entity.id}", "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", "quoteItem": [ { + "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", "product": "${mefRequestBody.quoteItem[0].product}", "state": "", - "quoteItemPrice": [{ + "quoteItemPrice": { "price": { "dutyFreeAmount": { - "unit": "", - "value": "" + "unit": "", + "value": "" } } - }] + } } ], - "quoteDate": "function.now()", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId":"${mefRequestBody[externalId]?:''}", "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}" - } \ No newline at end of file + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" + } diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml index 144c3d55..3362050c 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.read.sync name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.read.sync - version: 0 + version: 1 spec: inputs: - mefQuery @@ -18,13 +18,13 @@ spec: endpoints: - id: retrieve quote for port url: ${env.target.url} - path: /api/pricing/calculate - method: post - requestBody: | - {} + path: + method: + requestBody: ${entity.request.quoteItem[0].product.productConfiguration.uni} responseBody: | { "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", "quoteItem": [{ "product": "${entity.request.quoteItem[0].product}", @@ -33,7 +33,7 @@ spec: "state": "${entity.renderedResponse.quoteItem[0].state}", "quoteItemPrice": "${entity.renderedResponse.quoteItem[0].quoteItemPrice}" }], - "quoteDate": "now", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId":"${entity.request[externalId]?:''}", "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml index 950eff53..f9a6abc7 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.read name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.read - version: 2 + version: 1 spec: inputs: - mefQuery @@ -17,28 +17,30 @@ spec: productType: uni endpoints: - id: retrieve quote for port - path: /api/pricing/calculate - method: post + path: "" + method: "" requestBody: ${entity.request.quoteItem[0].product.productConfiguration.uni} responseBody: | { - "id": "${entity.id}", - "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", - "quoteItem": [{ + "id": "${entity.id}", + "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "quoteItem": [ + { "product": "${entity.request.quoteItem[0].product}", - "state": "", - "quoteItemPrice": [{ + "state": "@{{quoteItem[*].state}}", + "quoteItemPrice": { "price": { "dutyFreeAmount": { - "unit": "", - "value": "" + "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", + "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" } } - }] + } } - ], - "quoteDate": "function.now()", - "externalId":"${entity.request[externalId]?:''}", - "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" + ], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${entity.request[externalId]?:''}", + "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.address.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.address.yaml index 353cbd0b..a02ec876 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.address.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.address.yaml @@ -147,7 +147,4 @@ links: group: mef.sonata.api-target.address.validate - targetAssetKey: mef.sonata.api-target-mapper.address.retrieve relationship: implementation.target-mapper - group: mef.sonata.api-target.address.retrieve - - - + group: mef.sonata.api-target.address.retrieve \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.inventory.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.inventory.yaml index 68159994..b64e1a75 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.inventory.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.inventory.yaml @@ -32,6 +32,8 @@ spec: actionType: buildin@db env: id: ${query.productOrderId} + blankIdErrMsg: "productOrderId id cannot be blank" + notExistedErrMsg: "productOrderId id does not exist" with: action: read preRequest: true @@ -69,7 +71,6 @@ spec: env: mappingMatrixKey: ${order.matrixConfigKey} targetKey: ${order.targetAPIConfigKey} - id: ${segment} - id: load-downstream-api-config actionType: buildin@load-target-api-config env: @@ -141,6 +142,7 @@ spec: env: mappingMatrixKey: ${order.matrixConfigKey} targetKey: ${order.targetAPIConfigKey} + id: ${segment} - id: load-downstream-api-config actionType: buildin@load-target-api-config env: @@ -170,9 +172,15 @@ links: - targetAssetKey: mef.sonata.api-target.inventory.uni.list relationship: implementation.target group: mef.sonata.api-target.inventory.uni.list + - targetAssetKey: mef.sonata.api.matrix.inventory.uni.list + relationship: implementation.matrix + group: mef.sonata.api-target.inventory.uni.list - targetAssetKey: mef.sonata.api-target.inventory.eline.list relationship: implementation.target group: mef.sonata.api-target.inventory.eline.list + - targetAssetKey: mef.sonata.api.matrix.inventory.eline.list + relationship: implementation.matrix + group: mef.sonata.api-target.inventory.eline.list - targetAssetKey: mef.sonata.api-target.inventory.eline.read relationship: implementation.target group: mef.sonata.api-target.inventory.eline.read @@ -198,8 +206,4 @@ links: relationship: implementation.target-mapper group: mef.sonata.api-target.inventory.uni.list - targetAssetKey: mef.sonata.api-spec.inventory - relationship: implementation.standard.api-spec - - - - + relationship: implementation.standard.api-spec \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.order.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.order.yaml index 4f198af1..f31e5495 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.order.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.order.yaml @@ -141,6 +141,8 @@ spec: actionType: buildin@db env: id: ${segment} + blankIdErrMsg: "order id cannot be blank" + notExistedErrMsg: "order id does not exist" with: action: read preRequest: true @@ -301,4 +303,4 @@ links: group: mef.sonata.api-target.order.eline.delete - targetAssetKey: mef.sonata.api.matrix.order.eline.delete relationship: implementation.matrix - group: mef.sonata.api-target.order.eline.delete + group: mef.sonata.api-target.order.eline.delete \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.quote.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.quote.yaml index be8407dc..382ba0c0 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.quote.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.quote.yaml @@ -150,6 +150,8 @@ spec: actionType: buildin@db env: id: ${segment} + blankIdErrMsg: "quote id cannot be blank" + notExistedErrMsg: "quote id does not exist" with: action: read preRequest: true @@ -339,4 +341,4 @@ links: group: mef.sonata.api-target.quote.uni.read.sync - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.read.sync relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.eline.read.sync + group: mef.sonata.api-target.quote.eline.read.sync \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/openapi/productOrderManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/openapi/productOrderManagement.api.customized.yaml index fc3c06a0..b03298d0 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/openapi/productOrderManagement.api.customized.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/openapi/productOrderManagement.api.customized.yaml @@ -3303,6 +3303,10 @@ components: items: $ref: "#/components/schemas/RelatedContactInformation" minItems: 1 + orderId: + type: string + instanceId: + type: string required: - relatedContactInformation ProductOrder_Create: diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml index 0d76ef65..b325993b 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml @@ -11,10 +11,12 @@ spec: #- classpath:/mock/apis/api.quote.yaml #- classpath:/mock/apis/api.address.yaml #- classpath:/mock/apis/api.product.offering.yaml + #- classpath:/mock/apis/api.inventory.yaml #- classpath:/mock/api-specs/api-spec.order.yaml #- classpath:/mock/api-specs/api-spec.address.yaml #- classpath:/mock/api-specs/api-spec.quote.yaml #- classpath:/mock/api-specs/api-spec.product.offering.yaml + #- classpath:/mock/api-specs/api-spec.inventory.yaml #- classpath:/mock/api-targets/api-target.order.uni.add.yaml #- classpath:/mock/api-targets/api-target.order.eline.add.yaml #- classpath:/mock/api-targets/api-target.order.uni.read.yaml @@ -35,6 +37,10 @@ spec: #- classpath:/mock/api-targets/api-target.product.offering.eline.add.yaml #- classpath:/mock/api-targets/api-target.product.offering.uni.read.yaml #- classpath:/mock/api-targets/api-target.product.offering.eline.read.yaml + #- classpath:/mock/api-targets/api-target.inventory.uni.list.yaml + #- classpath:/mock/api-targets/api-target.inventory.uni.read.yaml + #- classpath:/mock/api-targets/api-target.inventory.eline.list.yaml + #- classpath:/mock/api-targets/api-target.inventory.eline.read.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml @@ -55,6 +61,20 @@ spec: #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml - #- classpath:/mock/mapping-matrix/mapping.matrix.order.yaml - #- classpath:/mock/mapping-matrix/mapping.matrix.quote.yaml - #- classpath:/mock/mapping-matrix/mapping.matrix.address.validation.yaml \ No newline at end of file + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml + #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.address.validation.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml \ No newline at end of file diff --git a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractBodyTransformerFunc.java b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractBodyTransformerFunc.java index 4e8693fc..404f6c62 100644 --- a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractBodyTransformerFunc.java +++ b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/AbstractBodyTransformerFunc.java @@ -165,6 +165,6 @@ private String rendResponseWithSpEl(Map context, boolean postReq retJsonString = calculateBasedOnResponseBody(retJsonString, context); } // clear empty attribute - return resetNodeByPath(responseTargetMapperDto.getTargetCheckPathMapper(), retJsonString); + return deleteNodeByPath(responseTargetMapperDto.getTargetCheckPathMapper(), retJsonString); } } diff --git a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/MappingTransformer.java b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/MappingTransformer.java index c1f92a4f..22aca71e 100644 --- a/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/MappingTransformer.java +++ b/kraken-java-sdk/kraken-java-sdk-gateway/src/main/java/com/consoleconnect/kraken/operator/gateway/runner/MappingTransformer.java @@ -122,7 +122,7 @@ default String renderStatus(StateValueMappingDto responseTargetMapperDto, String return responseBody; } - default String resetNodeByPath(Map checkPathMap, String json) { + default String deleteNodeByPath(Map checkPathMap, String json) { DocumentContext doc = JsonPath.parse(json); checkPathMap.forEach( (key, value) -> { @@ -135,11 +135,11 @@ default String resetNodeByPath(Map checkPathMap, String json) { return; } if (null == obj || (obj instanceof String str && (StringUtils.isBlank(str)))) { - doc.set(value, null); + doc.delete(value); } else if (obj instanceof Integer i && i <= 0) { - doc.set(value, null); + doc.delete(value); } else if (obj instanceof Boolean b && !b) { - doc.set(value, null); + doc.delete(value); } else { LogHolder.log.warn("Reserved key:{}, value:{}", key, value); } From 89267515b9a5e255687ebdde410ed275cf4f25d0 Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Thu, 31 Oct 2024 17:53:31 +0800 Subject: [PATCH 2/8] reserve some default configurations --- kraken-app/kraken-app-hub/src/main/resources/application.yaml | 2 +- .../src/test/resources/mock/api-specs/api-spec.address.yaml | 4 ++-- .../src/test/resources/mock/api-specs/api-spec.order.yaml | 4 ++-- .../src/test/resources/mock/api-specs/api-spec.quote.yaml | 4 ++-- .../mock/api-targets/api-target.address.retrieve.yaml | 2 +- .../mock/api-targets/api-target.address.validate.yaml | 2 +- .../mock/api-targets/api-target.order.eline.add.yaml | 2 +- .../mock/api-targets/api-target.order.eline.delete.yaml | 2 +- .../mock/api-targets/api-target.order.eline.read.yaml | 2 +- .../resources/mock/api-targets/api-target.order.uni.add.yaml | 2 +- .../mock/api-targets/api-target.order.uni.delete.yaml | 2 +- .../resources/mock/api-targets/api-target.order.uni.read.yaml | 2 +- .../mock/api-targets/api-target.quote.eline.add.yaml | 2 +- .../mock/api-targets/api-target.quote.eline.read.sync.yaml | 2 +- .../mock/api-targets/api-target.quote.eline.read.yaml | 2 +- .../mock/api-targets/api-target.quote.uni.add.sync.yaml | 2 +- .../resources/mock/api-targets/api-target.quote.uni.add.yaml | 2 +- .../mock/api-targets/api-target.quote.uni.read.sync.yaml | 2 +- .../resources/mock/api-targets/api-target.quote.uni.read.yaml | 2 +- 19 files changed, 22 insertions(+), 22 deletions(-) diff --git a/kraken-app/kraken-app-hub/src/main/resources/application.yaml b/kraken-app/kraken-app-hub/src/main/resources/application.yaml index e9d2e4c7..c6990763 100644 --- a/kraken-app/kraken-app-hub/src/main/resources/application.yaml +++ b/kraken-app/kraken-app-hub/src/main/resources/application.yaml @@ -113,7 +113,7 @@ app: check-release: 0/20 * * * * * security: resource-server: - enabled: false + enabled: true jwt: - issuer: https://kraken.consoleconnect.com/issuer key-id: kraken diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml index 2d6f351a..a18e9771 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.address.yaml @@ -11,6 +11,6 @@ metadata: version: 2 spec: baseSpec: - path: classpath:/mef-sonata/openapi/geographicAddressManagement.api.yaml + path: classpath:/mock/openapi/geographicAddressManagement.api.yaml customizedSpec: - path: classpath:/mef-sonata/openapi/geographicAddressManagement.api.customized.yaml + path: classpath:/mock/openapi/geographicAddressManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml index 4158e64d..1b74abd0 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.order.yaml @@ -11,7 +11,7 @@ metadata: version: 1 spec: baseSpec: - path: classpath:/mef-sonata/openapi/productOrderManagement.api.yaml + path: classpath:/mock/openapi/productOrderManagement.api.yaml customizedSpec: - path: classpath:/mef-sonata/openapi/productOrderManagement.api.customized.yaml + path: classpath:/mock/openapi/productOrderManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml index b58fe9a3..c8aadf1a 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.quote.yaml @@ -11,6 +11,6 @@ metadata: version: 2 spec: baseSpec: - path: classpath:/mef-sonata/openapi/quoteManagement.api.yaml + path: classpath:/mock/openapi/quoteManagement.api.yaml customizedSpec: - path: classpath:/mef-sonata/openapi/quoteManagement.api.customized.yaml + path: classpath:/mock/openapi/quoteManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml index 013356ca..50394b68 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.retrieve.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.address.retrieve name: Geographic Address Management mapperKey: mef.sonata.api-target-mapper.address.retrieve - version: 6 + version: 1 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml index 3688bead..8ace4ade 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.address.validate.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.address.validate name: Geographic Address Management mapperKey: mef.sonata.api-target-mapper.address.validate - version: 7 + version: 1 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml index 2b1793fb..6586861d 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.add.yaml @@ -6,7 +6,7 @@ metadata: key: mef.sonata.api-target.order.eline.add name: Order Connection API mapperKey: mef.sonata.api-target-mapper.order.eline.add - version: 7 + version: 1 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml index d2df85e0..eabb2b35 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.delete.yaml @@ -6,7 +6,7 @@ metadata: key: mef.sonata.api-target.order.eline.delete name: Order Connection API mapperKey: mef.sonata.api-target-mapper.order.eline.delete - version: 4 + version: 1 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml index a333439f..d0c38bc5 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.eline.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.order.eline.read name: Order Connection API mapperKey: mef.sonata.api-target-mapper.order.eline.read - version: 6 + version: 4 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml index d5f54f69..90bdcb04 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.add.yaml @@ -6,7 +6,7 @@ metadata: key: mef.sonata.api-target.order.uni.add name: Order Port API mapperKey: mef.sonata.api-target-mapper.order.uni.add - version: 4 + version: 2 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml index 2785dfdf..ffde2748 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.delete.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.order.uni.delete name: Order Port API mapperKey: mef.sonata.api-target-mapper.order.uni.delete - version: 5 + version: 1 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml index 59e32bf8..27f25d3b 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.uni.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.order.uni.read mapperKey: mef.sonata.api-target-mapper.order.uni.read name: Order Connection API - version: 8 + version: 4 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml index 71227332..e422fa29 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.add.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.add name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.add - version: 1 + version: 4 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml index a983dc38..8bd8c417 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.read.sync name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.read.sync - version: 2 + version: 0 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml index 48deb782..dc247c4b 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.read name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.read - version: 1 + version: 3 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml index 2fe2564f..a6e386ca 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.add.sync name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.add.sync - version: 4 + version: 0 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml index e19a2e9b..90a1beb2 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.add name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.add - version: 1 + version: 4 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml index 3362050c..fdb94195 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.read.sync name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.read.sync - version: 1 + version: 0 spec: inputs: - mefQuery diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml index f9a6abc7..d249a252 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.read name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.read - version: 1 + version: 2 spec: inputs: - mefQuery From 2c160adfadb80de988ad4dd3275cdc99bdaedd32 Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Fri, 1 Nov 2024 09:29:56 +0800 Subject: [PATCH 3/8] fix unit test --- .../kraken/operator/ResponseMappingTest.java | 93 ++++++++++--------- .../expected-1-address.validation.json | 8 +- .../expected-10-quote.uni.read.sync.json | 3 +- .../expected/expected-2-address.retrieve.json | 5 +- .../expected/expected-7-quote.eline.read.json | 3 +- .../expected-9-quote.uni.add.sync.json | 2 +- .../resources/expected/expected-order.json | 8 +- .../expected/expected-quote.eline.add.json | 29 ++++++ .../resources/expected/expected-quote.json | 24 ----- .../expected/expected-quote.uni.add.json | 29 ++++++ .../api-target-mapper.address.retrieve.yaml | 38 ++++++-- .../api-target-mapper.address.validate.yaml | 90 ++++++++++++++---- .../api-target.quote.eline.read.yaml | 6 +- .../api-targets/api-target.quote.uni.add.yaml | 10 +- .../api-target.quote.uni.read.yaml | 8 +- 15 files changed, 235 insertions(+), 121 deletions(-) create mode 100644 kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.eline.add.json delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.json create mode 100644 kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.uni.add.json diff --git a/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java b/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java index 126569f4..44923bb9 100644 --- a/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java +++ b/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java @@ -27,81 +27,82 @@ class ResponseMappingTest extends AbstractIntegrationTest implements MappingTran void testResponseMapper() { String expected1 = readCompactedFile("expected/expected-1-address.validation.json"); String input = - getTarget( - "/mock/api-targets/api-target.address.validate.yaml", - "/mock/api-targets-mappers/api-target-mapper.address.validate.yaml"); + getTarget( + "/mock/api-targets/api-target.address.validate.yaml", + "/mock/api-targets-mappers/api-target-mapper.address.validate.yaml"); validate(expected1, input); String expected2 = readCompactedFile("expected/expected-2-address.retrieve.json"); String input2 = - getTarget( - "/mock/api-targets/api-target.address.retrieve.yaml", - "/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml"); + getTarget( + "/mock/api-targets/api-target.address.retrieve.yaml", + "/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml"); validate(expected2, input2); String expectedOrder = readCompactedFile("expected/expected-order.json"); String input3 = - getTarget( - "/mock/api-targets/api-target.order.eline.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml"); + getTarget( + "/mock/api-targets/api-target.order.eline.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml"); validate(expectedOrder, input3); String input4 = - getTarget( - "/mock/api-targets/api-target.order.uni.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml"); + getTarget( + "/mock/api-targets/api-target.order.uni.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml"); validate(expectedOrder, input4); - String expectedQuote = readCompactedFile("expected/expected-quote.json"); + String expectedQuote = readCompactedFile("expected/expected-quote.eline.add.json"); String input5 = - getTarget( - "/mock/api-targets/api-target.quote.eline.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml"); validate(expectedQuote, input5); + expectedQuote = readCompactedFile("expected/expected-quote.uni.add.json"); String input6 = - getTarget( - "/mock/api-targets/api-target.quote.uni.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml"); validate(expectedQuote, input6); String expected7 = readCompactedFile("expected/expected-7-quote.eline.read.json"); String input7 = - getTarget( - "/mock/api-targets/api-target.quote.eline.read.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.read.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml"); validate(expected7, input7); String input8 = - getTarget( - "/mock/api-targets/api-target.quote.uni.read.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.read.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml"); validate(expected7, input8); String expected9 = readCompactedFile("expected/expected-9-quote.uni.add.sync.json"); String input9 = - getTarget( - "/mock/api-targets/api-target.quote.uni.add.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.add.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml"); validate(expected9, input9); String expected10 = readCompactedFile("expected/expected-10-quote.uni.read.sync.json"); String input10 = - getTarget( - "/mock/api-targets/api-target.quote.uni.read.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.read.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml"); validate(expected10, input10); String input11 = - getTarget( - "/mock/api-targets/api-target.quote.eline.add.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.add.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml"); validate(expected9, input11); String input12 = - getTarget( - "/mock/api-targets/api-target.quote.eline.read.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.read.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml"); validate(expected10, input12); } @@ -122,14 +123,14 @@ public void validate(String expected, String input) { @SneakyThrows public String readCompactedFile(String path) { return com.consoleconnect.kraken.operator.core.toolkit.StringUtils.compact( - readFileToString(path)); + readFileToString(path)); } public String getTarget(String targetApiPath, String mapperApiPath) throws IOException { Optional unifiedAsset = - YamlToolkit.parseYaml(readFileToString(targetApiPath), UnifiedAsset.class); + YamlToolkit.parseYaml(readFileToString(targetApiPath), UnifiedAsset.class); Optional mapperAssetOpt = - YamlToolkit.parseYaml(readFileToString(mapperApiPath), UnifiedAsset.class); + YamlToolkit.parseYaml(readFileToString(mapperApiPath), UnifiedAsset.class); UnifiedAsset targetAsset = unifiedAsset.get(); UnifiedAsset targetMapperAsset = mapperAssetOpt.get(); @@ -137,15 +138,15 @@ public String getTarget(String targetApiPath, String mapperApiPath) throws IOExc Assertions.assertEquals(targetAsset.getMetadata().getKey(), targetKey); ComponentAPITargetFacets facets = - UnifiedAsset.getFacets(targetAsset, ComponentAPITargetFacets.class); + UnifiedAsset.getFacets(targetAsset, ComponentAPITargetFacets.class); ComponentAPITargetFacets mapperFacets = - UnifiedAsset.getFacets(targetMapperAsset, ComponentAPITargetFacets.class); + UnifiedAsset.getFacets(targetMapperAsset, ComponentAPITargetFacets.class); facets.getEndpoints().get(0).setPath(mapperFacets.getEndpoints().get(0).getPath()); facets.getEndpoints().get(0).setMethod(mapperFacets.getEndpoints().get(0).getMethod()); facets.getEndpoints().get(0).setMappers(mapperFacets.getEndpoints().get(0).getMappers()); targetAsset.setFacets( - JsonToolkit.fromJson( - JsonToolkit.toJson(facets), new TypeReference>() {})); + JsonToolkit.fromJson( + JsonToolkit.toJson(facets), new TypeReference>() {})); return JsonToolkit.toJson(targetAsset); } @@ -161,7 +162,7 @@ public String extractTargetKey(String targetMapperKey) { return targetMapperKey.substring(0, loc); } else { return targetMapperKey.substring(0, loc) - + targetMapperKey.substring(loc + MAPPER_SIGN.length()); + + targetMapperKey.substring(loc + MAPPER_SIGN.length()); } } -} +} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-1-address.validation.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-1-address.validation.json index ed25f53a..23feda2a 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-1-address.validation.json +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-1-address.validation.json @@ -6,15 +6,17 @@ "@type": "FieldedAddress", "country": "${responseBody[*].company.addresses[0].country}", "city": "${responseBody[*].company.addresses[0].city}", - "streetName": "${responseBody[*].company.addresses[0].address}" + "streetName": "${responseBody[*].company.addresses[0].address}", + "locality": "${responseBody[*].dataCenterFacility.metroId}" } ], "provideAlternative": "${mefRequestBody.provideAlternative}", "submittedGeographicAddress": "${mefRequestBody.submittedGeographicAddress}", "bestMatchGeographicAddress": { "id": "123", - "type": "FieldedAddress", + "@type": "FieldedAddress", "city": "Sydney", - "country": "Sydney" + "country": "Sydney", + "streetName": "" } } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-10-quote.uni.read.sync.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-10-quote.uni.read.sync.json index e98f8282..8cab6b9d 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-10-quote.uni.read.sync.json +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-10-quote.uni.read.sync.json @@ -1,5 +1,6 @@ { "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation',env.seller.name,env.seller.emailAddress,env.seller.number,entity.request.relatedContactInformation)}", "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", "quoteItem": [ { @@ -10,7 +11,7 @@ "quoteItemPrice": "${entity.renderedResponse.quoteItem[0].quoteItemPrice}" } ], - "quoteDate": "now", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId": "${entity.request[externalId]?:''}", "instantSyncQuote": "${entity.request[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-2-address.retrieve.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-2-address.retrieve.json index 22c22dd7..b44bafe5 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-2-address.retrieve.json +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-2-address.retrieve.json @@ -1,9 +1,10 @@ { "id": "${responseBody.id}", - "type": "FieldedAddress", + "@type": "FieldedAddress", "associatedGeographicAddress": { "country": "${responseBody.company.addresses[0].country}", "city": "${responseBody.company.addresses[0].city}", - "streetName": "${responseBody.company.addresses[0].address}" + "streetName": "${responseBody.company.addresses[0].address}", + "locality": "${responseBody.associatedGeographicAddress.locality}" } } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-7-quote.eline.read.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-7-quote.eline.read.json index 7172e3e7..25b32052 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-7-quote.eline.read.json +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-7-quote.eline.read.json @@ -1,5 +1,6 @@ { "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation',env.seller.name,env.seller.emailAddress,env.seller.number,entity.request.relatedContactInformation)}", "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", "quoteItem": [ { @@ -17,7 +18,7 @@ ] } ], - "quoteDate": "function.now()", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId": "${entity.request[externalId]?:''}", "instantSyncQuote": "${entity.request[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-9-quote.uni.add.sync.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-9-quote.uni.add.sync.json index 7640e6b9..0ce6db17 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-9-quote.uni.add.sync.json +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-9-quote.uni.add.sync.json @@ -32,7 +32,7 @@ ] } ], - "quoteDate": "now", + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId": "${mefRequestBody[externalId]?:''}", "instantSyncQuote": "${mefRequestBody[instantSyncQuote]?:''}", "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-order.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-order.json index 44464ee1..a9458bcf 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-order.json +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-order.json @@ -1,9 +1,9 @@ { - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role,env.seller.name,env.seller.emailAddress,env.seller.number,mefRequestBody.relatedContactInformation)}", "id": "${entity.id}", - "orderDate": "function.now()", + "orderDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "productOrderItem": "${mefRequestBody.productOrderItem}", "state": "${responseBody.status}", - "orderId":"${responseBody.id}", - "instanceId":"${responseBody.port.id}" + "orderId": "${responseBody.id}", + "instanceId": "${responseBody.port.id}" } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.eline.add.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.eline.add.json new file mode 100644 index 00000000..f243a31f --- /dev/null +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.eline.add.json @@ -0,0 +1,29 @@ +{ + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation',env.seller.name,env.seller.emailAddress,env.seller.number,mefRequestBody.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "quoteItem": [ + { + "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "product": "${mefRequestBody.quoteItem[0].product}", + "state": "answered", + "quoteItemPrice": [ + { + "price": { + "dutyFreeAmount": { + "unit": "USD", + "value": "${responseBody.results[0].price}" + } + } + } + ] + } + ], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId": "${mefRequestBody[externalId]?:''}", + "instantSyncQuote": "${mefRequestBody[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value==''?'unableToProvide':'approved.orderable'))" +} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.json deleted file mode 100644 index 7c0ed3ea..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "id": "${entity.id}", - "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "quoteItem": [ - { - "product": "${mefRequestBody.quoteItem[0].product}", - "state": "answered", - "quoteItemPrice": [ - { - "price": { - "dutyFreeAmount": { - "unit": "USD", - "value": "${responseBody.results[0].price}" - } - } - } - ] - } - ], - "quoteDate": "function.now()", - "externalId": "${mefRequestBody[externalId]?:''}", - "instantSyncQuote": "${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}" -} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.uni.add.json b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.uni.add.json new file mode 100644 index 00000000..b70f6405 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/test/resources/expected/expected-quote.uni.add.json @@ -0,0 +1,29 @@ +{ + "id": "${entity.id}", + "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation',env.seller.name,env.seller.emailAddress,env.seller.number,mefRequestBody.relatedContactInformation)}", + "quoteItem": [ + { + "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "product": "${mefRequestBody.quoteItem[0].product}", + "state": "answered", + "quoteItemPrice": [ + { + "price": { + "dutyFreeAmount": { + "unit": "USD", + "value": "${responseBody.results[0].price}" + } + } + } + ] + } + ], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId": "${mefRequestBody[externalId]?:''}", + "instantSyncQuote": "${mefRequestBody[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value==''?'unableToProvide':'approved.orderable'))" +} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml index f43461ac..eb7cc3fb 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml @@ -5,10 +5,12 @@ metadata: key: mef.sonata.api-target-mapper.address.retrieve name: Mapper Of Retrieving Geographic Address description: This operation retrieves a GeographicAddress entity + version: 3 spec: trigger: path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/{id} method: get + addressType: FieldedAddress endpoints: - id: retrieve address path: /v2/data-center-facility/{id} @@ -17,39 +19,57 @@ spec: mappers: request: - name: mapper.address.retrieve.id + title: "Identifier of the GeographicAddress" description: address retrieve id mapping source: "@{{id}}" sourceLocation: PATH target: "@{{id}}" - targetType: string targetLocation: PATH + requiredMapping: true response: - name: mapper.address.validation.id + title: "Identifier of the GeographicAddress" description: address validation id mapping - source: "@{{responseBody.id}}" + source: "@{{id}}" sourceLocation: BODY target: "@{{id}}" + targetType: string targetLocation: BODY requiredMapping: true - name: mapper.address.validation.country + title: "The country of the Geographic Address" description: address validation country mapping - source: "@{{responseBody.company.addresses[0].country}}" + source: "@{{company.addresses[*].country}}" sourceLocation: BODY target: "@{{associatedGeographicAddress.country}}" + targetType: string targetLocation: BODY - requiredMapping: true + requiredMapping: false - name: mapper.address.validation.city + title: "The city of the Geographic Address" description: address validation city mapping - source: "@{{responseBody.company.addresses[0].city}}" + source: "@{{company.addresses[*].city}}" sourceLocation: BODY target: "@{{associatedGeographicAddress.city}}" + targetType: string targetLocation: BODY - requiredMapping: true + requiredMapping: false - name: mapper.address.validation.streetName + title: "The street of the Geographic Address" description: address validation streetName mapping - source: "@{{responseBody.company.addresses[0].address}}" + source: "@{{company.addresses[*].address}}" sourceLocation: BODY target: "@{{associatedGeographicAddress.streetName}}" + targetType: string targetLocation: BODY - requiredMapping: true - + requiredMapping: false + - name: address.validation.locality.mapper + title: "The metroId of the identified alternate Geographic Address" + description: "" + source: "@{{associatedGeographicAddress.locality}}" + sourceLocation: BODY + target: "@{{associatedGeographicAddress.locality}}" + targetType: string + targetLocation: BODY + requiredMapping: false + replaceStar: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml index f1d1e581..d06ef6cc 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml @@ -13,75 +13,129 @@ spec: trigger: path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation method: post + provideAlternative: false + addressType: FieldedAddress endpoints: - id: validate address - path: /v2/data-center-facility/search?criteria={}&page=1&pageSize=24 + path: /v2/data-center-facility method: get serverKey: mef.sonata.api-target-spec.con1718940696857 mappers: request: + - name: address.validation.city + title: "The city that the address is in" + description: "" + source: "@{{submittedGeographicAddress.city}}" + sourceLocation: BODY + requiredMapping: true + target: "filter={\"where\":{\"company.addresses.country\":\"@{{submittedGeographicAddress.country}}\",\"company.addresses.city\":\"@{{submittedGeographicAddress.city}}\"},\"skip\":0,\"limit\":10}" + targetLocation: HYBRID + - name: address.validation.country + title: "The country that the address is in" + description: "" + source: "@{{submittedGeographicAddress.country}}" + sourceLocation: BODY + requiredMapping: true + target: "filter={\"where\":{\"company.addresses.country\":\"@{{submittedGeographicAddress.country}}\",\"company.addresses.city\":\"@{{submittedGeographicAddress.city}}\"},\"skip\":0,\"limit\":10}" + targetLocation: HYBRID + - name: address.validation.streetName + title: "Name of the street or other street type" + description: "" + source: "@{{submittedGeographicAddress.streetName}}" + sourceLocation: BODY + requiredMapping: false + target: "" + targetLocation: "" response: - name: mapper.address.validation.id + title: "Unique identifier of the identified alternate Geographic Address" description: address validation id mapping - source: "@{{responseBody[*].id}}" - sourceLocation: "" + source: "@{{[*].id}}" + sourceLocation: BODY target: "@{{alternateGeographicAddress[*].id}}" + targetType: string targetLocation: BODY requiredMapping: true replaceStar: false - name: mapper.address.validation.country + title: "The country of the identified alternate Geographic Address" description: address validation country mapping - source: "@{{responseBody[*].company.addresses[0].country}}" - sourceLocation: "" + source: "@{{[*].company.addresses[0].country}}" + sourceLocation: BODY target: "@{{alternateGeographicAddress[*].country}}" + targetType: string targetLocation: BODY - requiredMapping: true + requiredMapping: false replaceStar: false - name: mapper.address.validation.city + title: "The city of the identified alternate Geographic Address" description: address validation city mapping - source: "@{{responseBody[*].company.addresses[0].city}}" + source: "@{{[*].company.addresses[0].city}}" sourceLocation: BODY target: "@{{alternateGeographicAddress[*].city}}" + targetType: string targetLocation: BODY - requiredMapping: true + requiredMapping: false replaceStar: false - name: mapper.address.validation.streetName + title: "The street of the identified alternate Geographic Address" description: address validation streetName mapping - source: "@{{responseBody[*].company.addresses[0].address}}" - sourceLocation: "" + source: "@{{[*].company.addresses[0].address}}" + sourceLocation: BODY target: "@{{alternateGeographicAddress[*].streetName}}" + targetType: string targetLocation: BODY - requiredMapping: true + requiredMapping: false + replaceStar: false + - name: mapper.address.validation.locality + title: "The metroId of the identified alternate Geographic Address" + description: "" + source: "@{{[*].dataCenterFacility.metroId}}" + sourceLocation: BODY + target: "@{{alternateGeographicAddress[*].locality}}" + targetType: string + targetLocation: BODY + requiredMapping: false replaceStar: false - - name: address.validation.bestMatch.id.mapper + - name: mapper.address.validation.bestMatch.id title: "Unique identifier of the identified best match Address" requiredMapping: false description: "" source: "123" - sourceLocation: "" + sourceLocation: BODY target: "@{{bestMatchGeographicAddress.id}}" targetType: string targetLocation: BODY checkPath: "$.bestMatchGeographicAddress.id" deletePath: "$.bestMatchGeographicAddress" replaceStar: false - - name: address.validation.bestMatch.city.mapper + - name: mapper.address.validation.bestMatch.city title: "The City of the identified best match Address" requiredMapping: false description: "" source: "Sydney" - sourceLocation: "" + sourceLocation: BODY target: "@{{bestMatchGeographicAddress.city}}" targetType: string targetLocation: BODY replaceStar: false - - name: address.validation.bestMatch.country.mapper - title: PropertyMapping + - name: mapper.address.validation.bestMatch.country + title: "The Country of the identified best match Address" requiredMapping: false description: "The City of the identified best match Address" source: "Sydney" - sourceLocation: "" + sourceLocation: BODY target: "@{{bestMatchGeographicAddress.country}}" targetType: string targetLocation: BODY replaceStar: false + - name: mapper.address.validation.bestMatch.streetName + title: "The streetName of the identified best match Address" + requiredMapping: false + description: "" + source: "" + sourceLocation: BODY + target: "@{{bestMatchGeographicAddress.streetName}}" + targetType: string + targetLocation: BODY + replaceStar: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml index dc247c4b..fbf3215e 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.eline.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.eline.read name: Quote Connection API mapperKey: mef.sonata.api-target-mapper.quote.eline.read - version: 3 + version: 1 spec: inputs: - mefQuery @@ -29,14 +29,14 @@ spec: { "product": "${entity.request.quoteItem[0].product}", "state": "@{{quoteItem[*].state}}", - "quoteItemPrice": { + "quoteItemPrice": [{ "price": { "dutyFreeAmount": { "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" } } - } + }] } ], "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml index 90a1beb2..90c0d6e1 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.add.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.add name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.add - version: 4 + version: 1 spec: inputs: - mefQuery @@ -32,20 +32,20 @@ spec: "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", "product": "${mefRequestBody.quoteItem[0].product}", "state": "", - "quoteItemPrice": { + "quoteItemPrice": [{ "price": { "dutyFreeAmount": { "unit": "", "value": "" } } - } + }] } ], "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", "externalId":"${mefRequestBody[externalId]?:''}", "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" - } + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml index d249a252..098f545a 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.uni.read.yaml @@ -5,7 +5,7 @@ metadata: key: mef.sonata.api-target.quote.uni.read name: Quote Management API mapperKey: mef.sonata.api-target-mapper.quote.uni.read - version: 2 + version: 1 spec: inputs: - mefQuery @@ -23,20 +23,20 @@ spec: responseBody: | { "id": "${entity.id}", - "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", "quoteItem": [ { "product": "${entity.request.quoteItem[0].product}", "state": "@{{quoteItem[*].state}}", - "quoteItemPrice": { + "quoteItemPrice": [{ "price": { "dutyFreeAmount": { "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" } } - } + }] } ], "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", From 38541db5a062303d2d8275621379542a447c7f0b Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Fri, 1 Nov 2024 09:38:57 +0800 Subject: [PATCH 4/8] format codes --- .../kraken/operator/ResponseMappingTest.java | 90 +++++++++---------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java b/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java index 44923bb9..1050c129 100644 --- a/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java +++ b/kraken-app/kraken-app-hub/src/test/java/com/consoleconnect/kraken/operator/ResponseMappingTest.java @@ -27,82 +27,82 @@ class ResponseMappingTest extends AbstractIntegrationTest implements MappingTran void testResponseMapper() { String expected1 = readCompactedFile("expected/expected-1-address.validation.json"); String input = - getTarget( - "/mock/api-targets/api-target.address.validate.yaml", - "/mock/api-targets-mappers/api-target-mapper.address.validate.yaml"); + getTarget( + "/mock/api-targets/api-target.address.validate.yaml", + "/mock/api-targets-mappers/api-target-mapper.address.validate.yaml"); validate(expected1, input); String expected2 = readCompactedFile("expected/expected-2-address.retrieve.json"); String input2 = - getTarget( - "/mock/api-targets/api-target.address.retrieve.yaml", - "/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml"); + getTarget( + "/mock/api-targets/api-target.address.retrieve.yaml", + "/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml"); validate(expected2, input2); String expectedOrder = readCompactedFile("expected/expected-order.json"); String input3 = - getTarget( - "/mock/api-targets/api-target.order.eline.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml"); + getTarget( + "/mock/api-targets/api-target.order.eline.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml"); validate(expectedOrder, input3); String input4 = - getTarget( - "/mock/api-targets/api-target.order.uni.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml"); + getTarget( + "/mock/api-targets/api-target.order.uni.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml"); validate(expectedOrder, input4); String expectedQuote = readCompactedFile("expected/expected-quote.eline.add.json"); String input5 = - getTarget( - "/mock/api-targets/api-target.quote.eline.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml"); validate(expectedQuote, input5); expectedQuote = readCompactedFile("expected/expected-quote.uni.add.json"); String input6 = - getTarget( - "/mock/api-targets/api-target.quote.uni.add.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.add.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml"); validate(expectedQuote, input6); String expected7 = readCompactedFile("expected/expected-7-quote.eline.read.json"); String input7 = - getTarget( - "/mock/api-targets/api-target.quote.eline.read.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.read.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml"); validate(expected7, input7); String input8 = - getTarget( - "/mock/api-targets/api-target.quote.uni.read.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.read.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml"); validate(expected7, input8); String expected9 = readCompactedFile("expected/expected-9-quote.uni.add.sync.json"); String input9 = - getTarget( - "/mock/api-targets/api-target.quote.uni.add.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.add.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml"); validate(expected9, input9); String expected10 = readCompactedFile("expected/expected-10-quote.uni.read.sync.json"); String input10 = - getTarget( - "/mock/api-targets/api-target.quote.uni.read.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.uni.read.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml"); validate(expected10, input10); String input11 = - getTarget( - "/mock/api-targets/api-target.quote.eline.add.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.add.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml"); validate(expected9, input11); String input12 = - getTarget( - "/mock/api-targets/api-target.quote.eline.read.sync.yaml", - "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml"); + getTarget( + "/mock/api-targets/api-target.quote.eline.read.sync.yaml", + "/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml"); validate(expected10, input12); } @@ -123,14 +123,14 @@ public void validate(String expected, String input) { @SneakyThrows public String readCompactedFile(String path) { return com.consoleconnect.kraken.operator.core.toolkit.StringUtils.compact( - readFileToString(path)); + readFileToString(path)); } public String getTarget(String targetApiPath, String mapperApiPath) throws IOException { Optional unifiedAsset = - YamlToolkit.parseYaml(readFileToString(targetApiPath), UnifiedAsset.class); + YamlToolkit.parseYaml(readFileToString(targetApiPath), UnifiedAsset.class); Optional mapperAssetOpt = - YamlToolkit.parseYaml(readFileToString(mapperApiPath), UnifiedAsset.class); + YamlToolkit.parseYaml(readFileToString(mapperApiPath), UnifiedAsset.class); UnifiedAsset targetAsset = unifiedAsset.get(); UnifiedAsset targetMapperAsset = mapperAssetOpt.get(); @@ -138,15 +138,15 @@ public String getTarget(String targetApiPath, String mapperApiPath) throws IOExc Assertions.assertEquals(targetAsset.getMetadata().getKey(), targetKey); ComponentAPITargetFacets facets = - UnifiedAsset.getFacets(targetAsset, ComponentAPITargetFacets.class); + UnifiedAsset.getFacets(targetAsset, ComponentAPITargetFacets.class); ComponentAPITargetFacets mapperFacets = - UnifiedAsset.getFacets(targetMapperAsset, ComponentAPITargetFacets.class); + UnifiedAsset.getFacets(targetMapperAsset, ComponentAPITargetFacets.class); facets.getEndpoints().get(0).setPath(mapperFacets.getEndpoints().get(0).getPath()); facets.getEndpoints().get(0).setMethod(mapperFacets.getEndpoints().get(0).getMethod()); facets.getEndpoints().get(0).setMappers(mapperFacets.getEndpoints().get(0).getMappers()); targetAsset.setFacets( - JsonToolkit.fromJson( - JsonToolkit.toJson(facets), new TypeReference>() {})); + JsonToolkit.fromJson( + JsonToolkit.toJson(facets), new TypeReference>() {})); return JsonToolkit.toJson(targetAsset); } @@ -162,7 +162,7 @@ public String extractTargetKey(String targetMapperKey) { return targetMapperKey.substring(0, loc); } else { return targetMapperKey.substring(0, loc) - + targetMapperKey.substring(loc + MAPPER_SIGN.length()); + + targetMapperKey.substring(loc + MAPPER_SIGN.length()); } } -} \ No newline at end of file +} From 47628aedb624e81af5aafce012a6b09efc537253 Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Fri, 1 Nov 2024 13:16:23 +0800 Subject: [PATCH 5/8] merge with the main branch --- .../mock/api-specs/api-spec.address.yaml | 16 + .../mock/api-specs/api-spec.inventory.yaml | 16 + .../mock/api-specs/api-spec.order.yaml | 17 + .../api-specs/api-spec.product.offering.yaml | 13 + .../mock/api-specs/api-spec.quote.yaml | 16 + .../api-target-mapper.address.retrieve.yaml | 75 + .../api-target-mapper.address.validate.yaml | 141 + ...pi-target-mapper.inventory.eline.list.yaml | 83 + ...pi-target-mapper.inventory.eline.read.yaml | 64 + .../api-target-mapper.inventory.uni.list.yaml | 81 + .../api-target-mapper.inventory.uni.read.yaml | 66 + .../api-target-mapper.order.eline.add.yaml | 195 + .../api-target-mapper.order.eline.delete.yaml | 59 + .../api-target-mapper.order.eline.read.yaml | 40 + .../api-target-mapper.order.uni.add.yaml | 173 + .../api-target-mapper.order.uni.delete.yaml | 58 + .../api-target-mapper.order.uni.read.yaml | 42 + ...get-mapper.product.offering.eline.add.yaml | 62 + ...et-mapper.product.offering.eline.read.yaml | 63 + ...arget-mapper.product.offering.uni.add.yaml | 62 + ...rget-mapper.product.offering.uni.read.yaml | 63 + ...pi-target-mapper.quote.eline.add.sync.yaml | 218 + .../api-target-mapper.quote.eline.add.yaml | 59 + ...i-target-mapper.quote.eline.read.sync.yaml | 20 + .../api-target-mapper.quote.eline.read.yaml | 54 + .../api-target-mapper.quote.uni.add.sync.yaml | 201 + .../api-target-mapper.quote.uni.add.yaml | 60 + ...api-target-mapper.quote.uni.read.sync.yaml | 20 + .../api-target-mapper.quote.uni.read.yaml | 56 + .../api-target.address.retrieve.yaml | 30 + .../api-target.address.validate.yaml | 42 + .../mock/api-targets/api-target.hub.add.yaml | 21 + .../api-target.inventory.eline.list.yaml | 36 + .../api-target.inventory.eline.read.yaml | 25 + .../api-target.inventory.uni.list.yaml | 36 + .../api-target.inventory.uni.read.yaml | 25 + .../api-target.order.eline.add.yaml | 33 + .../api-target.order.eline.delete.yaml | 29 + .../api-target.order.eline.read.yaml | 69 + ...arget.order.notification.state.change.yaml | 33 + .../api-targets/api-target.order.uni.add.yaml | 33 + .../api-target.order.uni.delete.yaml | 28 + .../api-target.order.uni.read.yaml | 69 + ...-target.poq.notification.state.change.yaml | 33 + ...api-target.product.offering.eline.add.yaml | 34 + ...pi-target.product.offering.eline.read.yaml | 33 + .../api-target.product.offering.uni.add.yaml | 34 + .../api-target.product.offering.uni.read.yaml | 33 + .../api-target.quote.eline.add.sync.yaml | 61 + .../api-target.quote.eline.add.yaml | 48 + .../api-target.quote.eline.read.sync.yaml | 40 + .../api-target.quote.eline.read.yaml | 46 + ...arget.quote.notification.state.change.yaml | 33 + .../api-target.quote.uni.add.sync.yaml | 64 + .../api-targets/api-target.quote.uni.add.yaml | 51 + .../api-target.quote.uni.read.sync.yaml | 40 + .../api-target.quote.uni.read.yaml | 46 + .../main/resources/mock/apis/api.address.yaml | 150 + .../resources/mock/apis/api.inventory.yaml | 209 + .../resources/mock/apis/api.notification.yaml | 107 + .../main/resources/mock/apis/api.order.yaml | 306 ++ .../mock/apis/api.product.offering.yaml | 266 ++ .../main/resources/mock/apis/api.quote.yaml | 344 ++ .../mapping.matrix.address.validation.yaml | 42 + .../mapping.matrix.inventory.eline.list.yaml | 16 + .../mapping.matrix.inventory.eline.read.yaml | 20 + .../mapping.matrix.inventory.uni.list.yaml | 16 + .../mapping.matrix.inventory.uni.read.yaml | 20 + .../mapping.matrix.order.eline.add.yaml | 60 + .../mapping.matrix.order.eline.delete.yaml | 45 + .../mapping.matrix.order.uni.add.yaml | 57 + .../mapping.matrix.order.uni.delete.yaml | 45 + .../mapping.matrix.quote.eline.add.sync.yaml | 36 + .../mapping.matrix.quote.eline.add.yaml | 31 + .../mapping.matrix.quote.uni.add.sync.yaml | 36 + .../mapping.matrix.quote.uni.add.yaml | 31 + ...aphicAddressManagement.api.customized.yaml | 734 ++++ .../geographicAddressManagement.api.yaml | 735 ++++ ...uctInventoryManagement.api.customized.yaml | 1056 +++++ .../productInventoryManagement.api.yaml | 1056 +++++ ...ctOfferingQualificationManagement.api.yaml | 1875 +++++++++ ...productOrderManagement.api.customized.yaml | 3539 +++++++++++++++++ .../openapi/productOrderManagement.api.yaml | 3535 ++++++++++++++++ .../quoteManagement.api.customized.yaml | 2223 +++++++++++ .../mock/openapi/quoteManagement.api.yaml | 2223 +++++++++++ .../src/main/resources/mock/product.yaml | 3 +- 86 files changed, 22012 insertions(+), 2 deletions(-) create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml create mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml new file mode 100644 index 00000000..a18e9771 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml @@ -0,0 +1,16 @@ +--- +kind: kraken.component.api-spec +apiVersion: v1 +metadata: + key: mef.sonata.api-spec.serviceability.address + name: Geographic Address Management + icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/address-validation-202409.png + labels: + mef-api-release: grace + address-api-version: v7 + version: 2 +spec: + baseSpec: + path: classpath:/mock/openapi/geographicAddressManagement.api.yaml + customizedSpec: + path: classpath:/mock/openapi/geographicAddressManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml new file mode 100644 index 00000000..c5e5b3c1 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml @@ -0,0 +1,16 @@ +--- +kind: kraken.component.api-spec +apiVersion: v1 +metadata: + key: mef.sonata.api-spec.inventory + name: Product Inventory Management + icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/product-inventory.png + labels: + mef-api-release: grace + inventory-api-version: v7 + version: 1 +spec: + baseSpec: + path: classpath:/mef-sonata/openapi/productInventoryManagement.api.yaml + customizedSpec: + path: classpath:/mef-sonata/openapi/productInventoryManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml new file mode 100644 index 00000000..1b74abd0 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml @@ -0,0 +1,17 @@ +--- +kind: kraken.component.api-spec +apiVersion: v1 +metadata: + key: mef.sonata.api-spec.order + name: Product Ordering Management + icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/order.png + labels: + mef-api-release: grace + order-api-version: v10 + version: 1 +spec: + baseSpec: + path: classpath:/mock/openapi/productOrderManagement.api.yaml + customizedSpec: + path: classpath:/mock/openapi/productOrderManagement.api.customized.yaml + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml new file mode 100644 index 00000000..a9c1079b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml @@ -0,0 +1,13 @@ +--- +kind: kraken.component.api-spec +apiVersion: v1 +metadata: + key: mef.sonata.api-spec.product.offering.qualification + name: Product Offering Qualification Management + icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/product-offering-quality.png + labels: + mef-api-release: grace + poq-api-version: v7 +spec: + baseSpec: + path: classpath:/mef-sonata/openapi/productOfferingQualificationManagement.api.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml new file mode 100644 index 00000000..c8aadf1a --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml @@ -0,0 +1,16 @@ +--- +kind: kraken.component.api-spec +apiVersion: v1 +metadata: + key: mef.sonata.api-spec.quote + name: Product Quote Management + icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/quote-202409.png + labels: + mef-api-release: grace + quote-api-version: v8 + version: 2 +spec: + baseSpec: + path: classpath:/mock/openapi/quoteManagement.api.yaml + customizedSpec: + path: classpath:/mock/openapi/quoteManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml new file mode 100644 index 00000000..eb7cc3fb --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml @@ -0,0 +1,75 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.address.retrieve + name: Mapper Of Retrieving Geographic Address + description: This operation retrieves a GeographicAddress entity + version: 3 +spec: + trigger: + path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/{id} + method: get + addressType: FieldedAddress + endpoints: + - id: retrieve address + path: /v2/data-center-facility/{id} + method: get + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: mapper.address.retrieve.id + title: "Identifier of the GeographicAddress" + description: address retrieve id mapping + source: "@{{id}}" + sourceLocation: PATH + target: "@{{id}}" + targetLocation: PATH + requiredMapping: true + response: + - name: mapper.address.validation.id + title: "Identifier of the GeographicAddress" + description: address validation id mapping + source: "@{{id}}" + sourceLocation: BODY + target: "@{{id}}" + targetType: string + targetLocation: BODY + requiredMapping: true + - name: mapper.address.validation.country + title: "The country of the Geographic Address" + description: address validation country mapping + source: "@{{company.addresses[*].country}}" + sourceLocation: BODY + target: "@{{associatedGeographicAddress.country}}" + targetType: string + targetLocation: BODY + requiredMapping: false + - name: mapper.address.validation.city + title: "The city of the Geographic Address" + description: address validation city mapping + source: "@{{company.addresses[*].city}}" + sourceLocation: BODY + target: "@{{associatedGeographicAddress.city}}" + targetType: string + targetLocation: BODY + requiredMapping: false + - name: mapper.address.validation.streetName + title: "The street of the Geographic Address" + description: address validation streetName mapping + source: "@{{company.addresses[*].address}}" + sourceLocation: BODY + target: "@{{associatedGeographicAddress.streetName}}" + targetType: string + targetLocation: BODY + requiredMapping: false + - name: address.validation.locality.mapper + title: "The metroId of the identified alternate Geographic Address" + description: "" + source: "@{{associatedGeographicAddress.locality}}" + sourceLocation: BODY + target: "@{{associatedGeographicAddress.locality}}" + targetType: string + targetLocation: BODY + requiredMapping: false + replaceStar: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml new file mode 100644 index 00000000..d06ef6cc --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml @@ -0,0 +1,141 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.address.validate + name: Mapper Of Validating Geographic Address + description: This operation creates a GeographicAddressValidation entity + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation + method: post + provideAlternative: false + addressType: FieldedAddress + endpoints: + - id: validate address + path: /v2/data-center-facility + method: get + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: address.validation.city + title: "The city that the address is in" + description: "" + source: "@{{submittedGeographicAddress.city}}" + sourceLocation: BODY + requiredMapping: true + target: "filter={\"where\":{\"company.addresses.country\":\"@{{submittedGeographicAddress.country}}\",\"company.addresses.city\":\"@{{submittedGeographicAddress.city}}\"},\"skip\":0,\"limit\":10}" + targetLocation: HYBRID + - name: address.validation.country + title: "The country that the address is in" + description: "" + source: "@{{submittedGeographicAddress.country}}" + sourceLocation: BODY + requiredMapping: true + target: "filter={\"where\":{\"company.addresses.country\":\"@{{submittedGeographicAddress.country}}\",\"company.addresses.city\":\"@{{submittedGeographicAddress.city}}\"},\"skip\":0,\"limit\":10}" + targetLocation: HYBRID + - name: address.validation.streetName + title: "Name of the street or other street type" + description: "" + source: "@{{submittedGeographicAddress.streetName}}" + sourceLocation: BODY + requiredMapping: false + target: "" + targetLocation: "" + response: + - name: mapper.address.validation.id + title: "Unique identifier of the identified alternate Geographic Address" + description: address validation id mapping + source: "@{{[*].id}}" + sourceLocation: BODY + target: "@{{alternateGeographicAddress[*].id}}" + targetType: string + targetLocation: BODY + requiredMapping: true + replaceStar: false + - name: mapper.address.validation.country + title: "The country of the identified alternate Geographic Address" + description: address validation country mapping + source: "@{{[*].company.addresses[0].country}}" + sourceLocation: BODY + target: "@{{alternateGeographicAddress[*].country}}" + targetType: string + targetLocation: BODY + requiredMapping: false + replaceStar: false + - name: mapper.address.validation.city + title: "The city of the identified alternate Geographic Address" + description: address validation city mapping + source: "@{{[*].company.addresses[0].city}}" + sourceLocation: BODY + target: "@{{alternateGeographicAddress[*].city}}" + targetType: string + targetLocation: BODY + requiredMapping: false + replaceStar: false + - name: mapper.address.validation.streetName + title: "The street of the identified alternate Geographic Address" + description: address validation streetName mapping + source: "@{{[*].company.addresses[0].address}}" + sourceLocation: BODY + target: "@{{alternateGeographicAddress[*].streetName}}" + targetType: string + targetLocation: BODY + requiredMapping: false + replaceStar: false + - name: mapper.address.validation.locality + title: "The metroId of the identified alternate Geographic Address" + description: "" + source: "@{{[*].dataCenterFacility.metroId}}" + sourceLocation: BODY + target: "@{{alternateGeographicAddress[*].locality}}" + targetType: string + targetLocation: BODY + requiredMapping: false + replaceStar: false + - name: mapper.address.validation.bestMatch.id + title: "Unique identifier of the identified best match Address" + requiredMapping: false + description: "" + source: "123" + sourceLocation: BODY + target: "@{{bestMatchGeographicAddress.id}}" + targetType: string + targetLocation: BODY + checkPath: "$.bestMatchGeographicAddress.id" + deletePath: "$.bestMatchGeographicAddress" + replaceStar: false + - name: mapper.address.validation.bestMatch.city + title: "The City of the identified best match Address" + requiredMapping: false + description: "" + source: "Sydney" + sourceLocation: BODY + target: "@{{bestMatchGeographicAddress.city}}" + targetType: string + targetLocation: BODY + replaceStar: false + - name: mapper.address.validation.bestMatch.country + title: "The Country of the identified best match Address" + requiredMapping: false + description: "The City of the identified best match Address" + source: "Sydney" + sourceLocation: BODY + target: "@{{bestMatchGeographicAddress.country}}" + targetType: string + targetLocation: BODY + replaceStar: false + - name: mapper.address.validation.bestMatch.streetName + title: "The streetName of the identified best match Address" + requiredMapping: false + description: "" + source: "" + sourceLocation: BODY + target: "@{{bestMatchGeographicAddress.streetName}}" + targetType: string + targetLocation: BODY + replaceStar: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml new file mode 100644 index 00000000..ee81b6c0 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml @@ -0,0 +1,83 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.inventory.eline.list + name: Inventory Connection API + version: 2 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/productInventory/v7/product + method: get + productType: access_e_line + endpoints: + - id: list eline product + path: /api/v2/company/{username}/connections/{connectionId} + method: get + mappers: + request: + - name: mapper.inventory.eline.list.buyerId + title: "The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer." + source: "@{{buyerId}}" + sourceLocation: QUERY + target: "@{{username}}" + targetType: string + targetLocation: PATH + requiredMapping: false + - name: mapper.inventory.uni.list.orderId + title: "associated order Id." + source: "@{{productOrderId}}" + sourceLocation: "QUERY" + target: "@{{connectionId}}" + targetType: string + targetLocation: "PATH" + convertValue: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" + requiredMapping: true + response: + - name: mapper.inventory.eline.list.id + title: "Unique identifier of the product" + source: "@{{responseBody.id}}" + sourceLocation: BODY + target: "@{{id}}" + targetType: string + targetLocation: BODY + requiredMapping: true + checkPath: "$[0].id" + deletePath: "$[*]" + - name: mapper.inventory.eline.list.startDate + title: "The date from which the product starts" + description: "" + source: "@{{responseBody.createdAt}}" + sourceLocation: BODY + target: "@{{startDate}}" + targetType: string + targetLocation: BODY + requiredMapping: true + - name: mapper.inventory.eline.list.status + title: "Possible values for the status of a MEF product" + source: "@{{responseBody.status}}" + sourceLocation: BODY + target: "@{{[*].status}}" + targetType: enum + targetLocation: BODY + requiredMapping: true + targetValues: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + valueMappings: + ACTIVE: active, + CANCELLED: canceled, + PENDING: pendingActive + DELETING: pendingTerminate + DISABLED: suspended + DELETED: terminated diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml new file mode 100644 index 00000000..774c9418 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml @@ -0,0 +1,64 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.inventory.eline.read + name: Inventory Connection API + description: This operation retrieves a product entity + version: 11 +spec: + trigger: + path: /mefApi/sonata/productInventory/v7/product/{id} + method: get + productType: access_e_line + endpoints: + - id: retrieve eline product inventory detail by id + path: "/api/v2/company/{username}/connections/{connectionId}" + method: "get" + serverKey: "" + mappers: + request: + - name: mapper.product.inventory.id + title: Identifier of the Product + description: "" + source: "@{{id}}" + sourceLocation: "PATH" + target: "@{{portId}}" + targetLocation: "PATH" + requiredMapping: true + - name: mapper.inventory.eline.read.buyerId + title: "The unique identifier of the organization that is acting as the a Buyer" + source: "@{{buyerId}}" + sourceLocation: "QUERY" + target: "@{{companyName}}" + targetType: string + targetLocation: "PATH" + requiredMapping: false + response: + - name: mapper.product.inventory.read.status + title: the status of a MEF product + description: "" + target: "@{{status}}" + targetType: enum + targetLocation: BODY + requiredMapping: true + targetValues: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + valueMapping: {} + source: "" + sourceLocation: "" + - name: mapper.product.inventory.read.startDate + title: The date from which the product starts + description: "" + target: "@{{startDate}}" + targetLocation: BODY + requiredMapping: true + source: "" + sourceLocation: "" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml new file mode 100644 index 00000000..e4c3b05d --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml @@ -0,0 +1,81 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.inventory.uni.list + name: Inventory Connection API + version: 2 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/productInventory/v7/product + method: get + productType: uni + endpoints: + - id: list uni product + path: /api/company/{companyName}/ports/orders/{orderId} + method: get + mappers: + request: + - name: mapper.inventory.uni.list.buyerId + title: "The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer." + source: "@{{buyerId}}" + sourceLocation: QUERY + target: "@{{companyName}}" + targetLocation: PATH + requiredMapping: false + - name: mapper.inventory.uni.list.orderId + title: "associated order Id." + source: "@{{productOrderId}}" + sourceLocation: "QUERY" + target: "@{{orderId}}" + targetType: string + targetLocation: "PATH" + convertValue: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" + requiredMapping: true + response: + - name: mapper.inventory.uni.list.id + title: "Unique identifier of the product" + source: "@{{responseBody.createdPortId}}" + sourceLocation: BODY + target: "@{{id}}" + targetType: string + targetLocation: BODY + requiredMapping: true + checkPath: "$[0].id" + deletePath: "$[*]" + - name: mapper.inventory.uni.list.startDate + title: "The date from which the product starts" + description: "BODY" + source: "@{{responseBody.createdAt}}" + sourceLocation: BODY + target: "@{{startDate}}" + targetType: string + targetLocation: BODY + requiredMapping: true + - name: mapper.inventory.uni.list.status + title: "Possible values for the status of a MEF product" + source: "@{{responseBody.port.status}}" + sourceLocation: BODY + target: "@{{[*].status}}" + targetType: enum + targetLocation: BODY + requiredMapping: true + targetValues: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + valueMappings: + ACTIVE: active, + ACTIVATING: pendingActive + DELETING: pendingTerminate + DISABLED: suspended + DELETED: terminated diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml new file mode 100644 index 00000000..0bee6ab4 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml @@ -0,0 +1,66 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.inventory.uni.read + name: Mapper Of reading product inventory UNI + description: This operation retrieves a product entity + version: 13 +spec: + trigger: + path: /mefApi/sonata/productInventory/v7/product/{id} + method: get + productType: uni + endpoints: + - id: retrieve uni product inventory detail by id + path: "/api/company/{companyName}/ports/{portId}" + method: "get" + serverKey: "" + mappers: + request: + - name: mapper.product.inventory.id + title: Identifier of the Product + description: "" + source: "@{{id}}" + sourceLocation: "PATH" + target: "@{{portId}}" + targetLocation: "PATH" + requiredMapping: true + - name: mapper.inventory.uni.read.buyerId + title: "The unique identifier of the organization that is acting as the a Buyer" + source: "@{{buyerId}}" + sourceLocation: "QUERY" + target: "@{{companyName}}" + targetType: string + targetLocation: "PATH" + requiredMapping: false + response: + - name: mapper.product.inventory.read.status + title: the status of a MEF product + description: "" + target: "@{{status}}" + targetType: enum + targetLocation: BODY + requiredMapping: true + targetValues: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + valueMapping: {} + source: "@{{status}}" + sourceLocation: BODY + - name: mapper.inventory.read.startDate + title: The date from which the product starts + description: "" + target: "@{{startDate}}" + targetLocation: BODY + requiredMapping: true + source: "@{{createdAt}}" + sourceLocation: BODY + + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml new file mode 100644 index 00000000..12451236 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml @@ -0,0 +1,195 @@ + +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.order.eline.add + name: Mapper Of Creating Order Connection + description: This operation creates a ProductOrder entity +spec: + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create connection order + path: /api/v2/company/{companyName}/connections/layer2 + method: put + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: mapper.order.eline.add.buyerId + title: The unique identifier of the organization that is acting as the a Buyer. + source: "@{{buyerId}}" + target: "@{{username}}" + description: + replaceStar: true + sourceLocation: QUERY + targetLocation: PATH + customizedField: false + requiredMapping: false + - name: mapper.order.eline.add.duration + title: "order item Term duration" + source: "@{{productOrderItem[0].requestedItemTerm.duration.amount}}" + target: "@{{duration}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.eline.add.duration.unit + title: "order item Term unit" + source: "@{{productOrderItem[0].requestedItemTerm.duration.units}}" + target: "@{{durationUnit}}" + sourceType: enum + sourceValues: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + sourceLocation: BODY + targetLocation: BODY + valueMapping: + calendarMonths: m + calendarDays: d + requiredMapping: true + - name: mapper.order.eline.add.endOfTermAction + title: "MEFEndOfTermAction" + source: "@{{productOrderItem[0].requestedItemTerm.endOfTermAction}}" + target: "roll" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.eline.add.rollInterval.amount + title: " quote item Term roll duration" + source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.amount}}" + target: "" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.eline.add.rollInterval.units + title: " quote item Term roll unit" + source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.units}}" + target: "" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.eline.add.bandwidthUnit + title: "The unit of bandwidth" + source: "@{{productOrderItem[0].product.productConfiguration.bandwidthUnit}}" + sourceType: enum + sourceValues: + - MBPS + - GBPS + target: "MBPS" + sourceLocation: BODY + targetLocation: BODY + valueMapping: {} + requiredMapping: true + - name: mapper.order.eline.add.bandwidth + title: "Bandwidth of the UNI" + source: "@{{productOrderItem[0].product.productConfiguration.bandwidth}}" + target: "@{{speed}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.eline.add.name + title: "The name of the UNI" + source: "@{{productOrderItem[0].product.productConfiguration.name}}" + target: "@{{name}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.eline.add.paymentType + title: "The payment type of the UNI" + source: "@{{productOrderItem[0].product.productConfiguration.paymentType}}" + target: "@{{paymentType}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.eline.add.classOfService + title: "The class of Service of the Eline" + source: "@{{productOrderItem[0].product.productConfiguration.classOfService}}" + target: "@{{classOfService}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.eline.add.srcUNI + title: "source UNI or ENNI id" + source: "@{{productOrderItem[0].product.productRelationship[0].id}}" + target: "@{{portId}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.eline.add.destUNI + title: "destination UNI id" + source: "@{{productOrderItem[0].product.productRelationship[1].id}}" + target: "@{{destPortId}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.eline.add.productOffering.id + title: "id of a Product Offering" + source: "@{{productOrderItem[0].product.productOffering.id}}" + target: "ACCESS_E_LINE" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + response: + - name: mapper.order.eline.add.state + title: Order State Mapping + description: order state mapping + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - assessingCancellation + - held.assessingCharge + - pending.assessingModification + - cancelled + - pendingCancellation + - completed + - failed + - inProgress + - partial + - rejected + valueMapping: + CREATING: acknowledged, + ACTIVATING: inProgress, + ACCEPTED: inProgress, + MANUAL: inProgress, + DELETING: inProgress, + DISABLING: inProgress, + DENIED: rejected, + ERROR: failed, + ACTIVE: completed, + DISABLED: disabled, + CANCELLED: disabled, + PENDING: pending, + PENDING_ACCEPTANCE: pending, + DELETED: completed + source: "@{{responseBody.status}}" + sourceLocation: BODY + requiredMapping: true + - name: mapper.order.eline.add.orderId + title: Order Id location + description: orderId mapping + source: "@{{responseBody.id}}" + sourceLocation: BODY + target: "@{{orderId}}" + targetLocation: BODY + customizedField: false + requiredMapping: true + - name: mapper.order.eline.add.instanceId + title: Instance Id location + description: order instanceId mapping + source: "@{{responseBody.port.id}}" + sourceLocation: BODY + target: "@{{instanceId}}" + targetLocation: BODY + customizedField: false + requiredMapping: true + + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml new file mode 100644 index 00000000..6ce4c986 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml @@ -0,0 +1,59 @@ + +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.order.eline.delete + name: Mapper Of Deleting Order Connection + description: This operation deletes a ProductOrder entity +spec: + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: access_e_line + actionType: delete + endpoints: + - id: delete connection by id + path: "" + method: "" + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: mapper.order.eline.delete.buyerId + title: "The unique identifier of the organization that is acting as the a Buyer." + description: "" + source: "@{{buyerId}}" + sourceLocation: "QUERY" + target: "" + targetLocation: "" + requiredMapping: false + - name: mapper.order.eline.delete.productId + title: "The unique identifier of an in-service Product that is the ordering subject" + description: "" + source: "@{{productOrderItem[*].product.id}}" + sourceLocation: "BODY" + target: "" + targetLocation: "" + requiredMapping: false + response: + - name: mapper.order.eline.delete.state + title: Order State Mapping + description: order state mapping + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - assessingCancellation + - held.assessingCharge + - pending.assessingModification + - cancelled + - pendingCancellation + - completed + - failed + - inProgress + - partial + - rejected + valueMapping: {} + source: "" + sourceLocation: "" \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml new file mode 100644 index 00000000..e64b3b87 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml @@ -0,0 +1,40 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.order.eline.read + name: Mapper Of Reading Order Connection + description: This operation retrieves a ProductOrder entity +spec: + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} + method: get + productType: access_e_line + endpoints: + - path: "" + method: "" + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.order.eline.read.state + title: Order State Mapping + description: order state mapping + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - assessingCancellation + - held.assessingCharge + - pending.assessingModification + - cancelled + - pendingCancellation + - completed + - failed + - inProgress + - partial + - rejected + valueMapping: {} + source: "" + sourceLocation: "" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml new file mode 100644 index 00000000..46e7aa5b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml @@ -0,0 +1,173 @@ + +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.order.uni.add + name: Mapper Of Creating Order Port + description: This operation creates a ProductOrder entity +spec: + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: uni + actionType: add + endpoints: + - id: create port order + path: /api/company/{companyName}/ports/orders + method: put + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: mapper.order.uni.add.buyerId + title: >- + The unique identifier of the organization that is acting as the a + Buyer. + source: '@{{buyerId}}' + target: "@{{companyName}}" + description: "" + sourceLocation: QUERY + targetLocation: PATH + requiredMapping: false + - name: mapper.order.uni.add.duration.units + title: "order item Term unit" + source: "@{{productOrderItem[0].requestedItemTerm.duration.units}}" + target: "@{{durationUnit}}" + sourceType: enum + sourceValues: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + sourceLocation: BODY + targetLocation: BODY + valueMapping: + calendarMonths: m + requiredMapping: true + - name: mapper.order.eline.add.endOfTermAction + title: "MEFEndOfTermAction" + source: "@{{productOrderItem[0].requestedItemTerm.endOfTermAction}}" + target: "roll" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.eline.add.rollInterval.amount + title: " quote item Term roll duration" + source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.amount}}" + target: "" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.eline.add.rollInterval.units + title: " quote item Term roll unit" + source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.units}}" + target: "" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.uni.add.place.id + title: >- + the id of the place where the products' installation must be done. + source: '@{{productOrderItem[0].product.place[0].id}}' + target: '@{{dataCenterFacility}}' + description: '' + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.uni.add.bandwidthUnit + title: "The unit of bandwidth" + source: "@{{productOrderItem[0].product.productConfiguration.bandwidthUnit}}" + sourceType: enum + sourceValues: + - MBPS + - GBPS + target: "MBPS" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.uni.add.bandwidth + title: "Bandwidth of the UNI" + source: "@{{productOrderItem[0].product.productConfiguration.bandwidth}}" + target: "@{{speed}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.uni.add.name + title: "The name of the UNI" + source: "@{{productOrderItem[0].product.productConfiguration.name}}" + target: "@{{portName}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.uni.add.paymentType + title: "The payment type of the UNI" + source: "@{{productOrderItem[0].product.productConfiguration.paymentType}}" + target: "@{{paymentType}}" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + - name: mapper.order.uni.add.productOffering.id + title: "id of a Product Offering" + source: "@{{productOrderItem[0].product.productOffering.id}}" + target: "UNI" + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + response: + - name: mapper.order.uni.add.state + title: Order State Mapping + description: Please map order status between Sonata API and Seller API + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - assessingCancellation + - held.assessingCharge + - pending.assessingModification + - cancelled + - pendingCancellation + - completed + - failed + - inProgress + - partial + - rejected + valueMapping: + progressing: inProgress, + created: acknowledged, + CREATING: acknowledged, + ACTIVATING: inProgress, + ACCEPTED: inProgress, + MANUAL: inProgress, + DELETING: inProgress, + DISABLING: inProgress, + DENIED: rejected, + ERROR: failed, + ACTIVE: completed, + DISABLED: disabled, + CANCELLED: disabled, + PENDING: pending, + PENDING_ACCEPTANCE: pending, + DELETED: completed + source: "@{{responseBody.status}}" + sourceLocation: BODY + requiredMapping: true + - name: mapper.order.uni.add.orderId + title: order Id from seller + source: "@{{responseBody.id}}" + target: '@{{orderId}}' + description: orderId mapping + sourceLocation: BODY + targetLocation: BODY + requiredMapping: true + - name: mapper.order.uni.add.instanceId + title: instance id from seller + source: "@{{responseBody.port.id}}" + target: '@{{instanceId}}' + description: order instanceId mapping + sourceLocation: BODY + targetLocation: BODY + requiredMapping: false + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml new file mode 100644 index 00000000..fdd0d670 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml @@ -0,0 +1,58 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.order.uni.delete + name: Mapper Of Deleting Order Port + description: This operation deletes a ProductOrder entity +spec: + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: uni + actionType: delete + endpoints: + - id: delete port + path: "" + method: "" + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: mapper.order.uni.delete.buyerId + title: "The unique identifier of the organization that is acting as the a Buyer." + description: "" + source: "@{{buyerId}}" + sourceLocation: "QUERY" + target: "" + targetLocation: "" + requiredMapping: false + - name: mapper.order.uni.delete.productId + title: "The unique identifier of an in-service Product that is the ordering subject" + description: "" + source: "@{{productOrderItem[*].product.id}}" + sourceLocation: "BODY" + target: "" + targetLocation: "" + requiredMapping: false + response: + - name: mapper.order.uni.delete.state + title: Order State Mapping + description: order state mapping + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - assessingCancellation + - held.assessingCharge + - pending.assessingModification + - cancelled + - pendingCancellation + - completed + - failed + - inProgress + - partial + - rejected + valueMapping: {} + source: "" + sourceLocation: "" \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml new file mode 100644 index 00000000..6302be8d --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml @@ -0,0 +1,42 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.order.uni.read + name: Mapper Of Reading Order Port + description: This operation retrieves a ProductOrder entity +spec: + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} + method: get + productType: uni + endpoints: + - id: retrieve connection detail by id + path: "" + method: "" + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.order.uni.read.state + title: Order State Mapping + description: order state mapping + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - assessingCancellation + - held.assessingCharge + - pending.assessingModification + - cancelled + - pendingCancellation + - completed + - failed + - inProgress + - partial + - rejected + valueMapping: {} + source: "" + sourceLocation: "" + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml new file mode 100644 index 00000000..6d70bd4f --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml @@ -0,0 +1,62 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.poq.eline.add + name: Product Offering Qualification (POQ) API + description: | + A request initiated by the Buyer to determine whether the Seller is + able to deliver a product or set of products from among their product + offerings, at the Buyer's location(s); or modify a previously purchased + product. The Seller also provides estimated time intervals to complete + these deliveries. Reference: MEF 79 (Sn 8.4). +spec: + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create a product offering qualification for connection + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.poq.eline.add.itemState + title: POQ Item State Mapping + description: POQ Item state mapping + source: "" + sourceLocation: "" + target: "@{{itemState}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.abandoned + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false + - name: mapper.poq.eline.add.state + title: POQ State Mapping + description: POQ state mapping + source: "" + sourceLocation: "" + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.unableToProvide + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml new file mode 100644 index 00000000..98a1d22f --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml @@ -0,0 +1,63 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.poq.eline.read + name: Product Offering Qualification (POQ) API + description: | + The Buyer requests a list of POQs from the Seller based on a set of POQ + filter criteria (as described in MEF79). For each POQ returned, the + Seller also provides a POQ Identifier that uniquely identifies this POQ + within the Seller's system. The order of the elements returned to the + Buyer is defined by the Seller (e.g. natural order) and does not change + between the pages. If criteria for attribute X are provided, all + returned items must match it. +spec: + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} + method: get + productType: access_e_line + endpoints: + - id: Retrieves a product offering qualification by id for connection + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.poq.eline.read.itemState + title: POQ Item State Mapping + description: POQ Item state mapping + source: "" + sourceLocation: "" + target: "@{{itemState}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.abandoned + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false + - name: mapper.poq.eline.read.state + title: POQ State Mapping + description: quote state mapping + source: "" + sourceLocation: "" + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.unableToProvide + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml new file mode 100644 index 00000000..7b385d12 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml @@ -0,0 +1,62 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.poq.uni.add + name: Product Offering Qualification (POQ) API + description: | + A request initiated by the Buyer to determine whether the Seller is + able to deliver a product or set of products from among their product + offerings, at the Buyer's location(s); or modify a previously purchased + product. The Seller also provides estimated time intervals to complete + these deliveries. Reference: MEF 79 (Sn 8.4). +spec: + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification + method: post + productType: uni + actionType: add + endpoints: + - id: create a product offering qualification for port + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.poq.uni.add.itemState + title: POQ Item State Mapping + description: POQ Item state mapping + source: "" + sourceLocation: "" + target: "@{{itemState}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.abandoned + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false + - name: mapper.poq.uni.add.state + title: POQ State Mapping + description: POQ state mapping + source: "" + sourceLocation: "" + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.unableToProvide + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml new file mode 100644 index 00000000..29e028f2 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml @@ -0,0 +1,63 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.poq.uni.read + name: Product Offering Qualification (POQ) API + description: | + The Buyer requests a list of POQs from the Seller based on a set of POQ + filter criteria (as described in MEF79). For each POQ returned, the + Seller also provides a POQ Identifier that uniquely identifies this POQ + within the Seller's system. The order of the elements returned to the + Buyer is defined by the Seller (e.g. natural order) and does not change + between the pages. If criteria for attribute X are provided, all + returned items must match it. +spec: + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} + method: get + productType: uni + endpoints: + - id: Retrieves a product offering qualification by id for port + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.poq.uni.read.itemState + title: POQ Item State Mapping + description: POQ Item state mapping + source: "" + sourceLocation: "" + target: "@{{itemState}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.abandoned + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false + - name: mapper.poq.uni.read.state + title: POQ State Mapping + description: quote state mapping + source: "" + sourceLocation: "" + target: "@{{state}}" + targetType: enum + targetLocation: BODY + targetValues: + - acknowledged + - done.ready + - done.unableToProvide + - terminatedWithError + - approved.orderableAlternate + - inProgress + valueMapping: {} + defaultValue: "done.ready" + requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml new file mode 100644 index 00000000..3bd46c39 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml @@ -0,0 +1,218 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.eline.add.sync + name: Mapper Of Creating Quote Eline + description: This operation creates a Quote entity +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create quote for connection + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: mapper.quote.uni.add.sync.duration.amount + source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.amount}}" + sourceLocation: BODY + target: "@{{connections[*].duration.value}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.duration.units + source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.units}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + valueMapping: + calendarMonths: m + target: "@{{connections[*].duration.unit}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.endOfTermAction + source: "@{{quoteItem[0].requestedQuoteItemTerm.endOfTermAction}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - roll + - autoDisconnect + - autoRenew + valueMapping: {} + target: "roll" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.rollInterval.amount + source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.amount}}" + sourceLocation: BODY + target: "12" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.rollInterval.units + source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.units}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + valueMapping: {} + target: "calendarMonths" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.place0.id + source: "@{{quoteItem[0].product.place[0].id}}" + sourceLocation: BODY + target: "@{{connections[*].srcDcf}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.place1.id + source: "@{{quoteItem[0].product.place[1].id}}" + sourceLocation: BODY + target: "@{{connections[*].destDcf}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.productConfiguration.bandwidth + source: "@{{quoteItem[0].product.productConfiguration.bandwidth}}" + sourceLocation: BODY + target: "@{{connections[*].bandwidth}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.productConfiguration.bandwidthUnit + source: "@{{quoteItem[0].product.productConfiguration.bandwidthUnit}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - GBPS + - MBPS + valueMapping: {} + target: "MBPS" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.productConfiguration.classOfService + source: "@{{quoteItem[0].product.productConfiguration.classOfService}}" + sourceLocation: BODY + target: "@{{connections[*].classOfService}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.productConfiguration.paymentType + source: "@{{quoteItem[0].product.productConfiguration.paymentType}}" + sourceLocation: BODY + target: "@{{connections[*].paymentMethod}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.productOffering.id + source: "@{{quoteItem[0].product.productOffering.id}}" + sourceLocation: BODY + target: "ACCESS_E_LINE" + targetLocation: BODY + requiredMapping: false + response: + - name: mapper.quote.eline.add.sync.unitOfMeasure + title: Quote unitOfMeasure Mapping + description: quote unitOfMeasure mapping + source: "Gb" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].unitOfMeasure}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.eline.add.price.unit + title: Quote Price Unit Mapping + description: quote price unit mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.eline.add.price.value + title: Quote Price Value Mapping + description: quote price value mapping + source: "@{{responseBody.results[0].price}}" + sourceLocation: "" + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" + requiredMapping: true + - name: mapper.quote.eline.add.sync.taxRate + title: Quote taxRate Mapping + description: quote taxRate mapping + source: "16" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.taxRate}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.eline.add.sync.taxIncludedAmount.unit + title: Quote taxIncludedAmount unit Mapping + description: quote taxIncludedAmount unit mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.unit}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.eline.add.sync.taxIncludedAmount.value + title: Quote taxIncludedAmount value Mapping + description: quote taxIncludedAmount value mapping + source: "100" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.value}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.eline.add.sync.quoteItemPrice.name + title: Quote quoteItemPrice name Mapping + description: quote quoteItemPrice name mapping + source: "name-here" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].name}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.eline.add.sync.quoteItemPrice.priceType + title: Quote quoteItemPrice priceType Mapping + description: quote quoteItemPrice priceType mapping + source: "recurring" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].priceType}}" + targetType: enum + targetLocation: BODY + requiredMapping: false + targetValues: + - recurring + - nonRecurring + - usageBased + valueMapping: {} + - name: mapper.quote.eline.add.sync.quoteItemPrice.description + title: Quote quoteItemPrice description Mapping + description: quote quoteItemPrice description mapping + source: "" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].description}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.eline.add.sync.quoteItemPrice.recurringChargePeriod + title: Quote quoteItemPrice recurringChargePeriod Mapping + description: quote quoteItemPrice recurringChargePeriod mapping + source: "month" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].recurringChargePeriod}}" + targetType: enum + targetLocation: BODY + requiredMapping: false + targetValues: + - hour + - day + - week + - month + - year + valueMapping: {} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml new file mode 100644 index 00000000..5fae0824 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml @@ -0,0 +1,59 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.eline.add + name: Mapper Of Creating Quote Eline + description: This operation creates a Quote entity +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create quote for connection + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.quote.eline.add.state + title: Quote State Mapping + description: quote state mapping + source: "answered" + sourceLocation: "" + target: "@{{quoteItem[0].state}}" + targetType: enum + targetLocation: BODY + targetValues: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - inProgress + - inProgress.draft + - abandoned + - rejected + - unableToProvide + valueMapping: + answered: answered too + ACCEPTED: accepted + requiredMapping: true + - name: mapper.quote.eline.add.price.value + title: Quote Price Value Mapping + description: quote price value mapping + source: "@{{responseBody.results[0].price}}" + sourceLocation: "" + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" + requiredMapping: true + - name: mapper.quote.eline.add.price.unit + title: Quote Price Unit Mapping + description: quote price unit mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" + targetLocation: BODY + requiredMapping: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml new file mode 100644 index 00000000..42509141 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml @@ -0,0 +1,20 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.eline.read.sync + name: Mapper Of Reading Quote Eline + description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: access_e_line + endpoints: + - id: retrieve quote for connection + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml new file mode 100644 index 00000000..24513338 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml @@ -0,0 +1,54 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.eline.read + name: Mapper Of Reading Quote Eline + description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: access_e_line + endpoints: + - id: retrieve quote for connection + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.quote.eline.read.state + title: Quote State Mapping + description: quote state mapping + source: "answered" + sourceLocation: "" + target: "@{{quoteItem[0].state}}" + targetType: enum + targetLocation: BODY + targetValues: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - inProgress + - inProgress.draft + - abandoned + - rejected + - unableToProvide + valueMapping: {} + - name: mapper.quote.eline.read.price.value + title: Quote Price Value Mapping + description: quote price value mapping + source: "@{{responseBody.results[0].price}}" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" + targetLocation: BODY + - name: mapper.quote.eline.read.price.unit + title: Quote Price Unit Mapping + description: quote price unit mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" + targetLocation: BODY \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml new file mode 100644 index 00000000..089d2d2b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml @@ -0,0 +1,201 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.uni.add.sync + name: Mapper Of Creating Quote UNI + description: This operation creates a Quote entity +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: uni + actionType: add + endpoints: + - id: create quote for port + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + - name: mapper.quote.uni.add.sync.duration.amount + source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.amount}}" + sourceLocation: BODY + target: "1" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.duration.units + source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.units}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + valueMapping: + calendarMonths: m + target: "@{{ports[*].durationUnit}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.endOfTermAction + source: "@{{quoteItem[0].requestedQuoteItemTerm.endOfTermAction}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - roll + - autoDisconnect + - autoRenew + valueMapping: {} + target: "roll" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.rollInterval.amount + source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.amount}}" + sourceLocation: BODY + target: "1" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.rollInterval.units + source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.units}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + valueMapping: {} + target: "calendarMonths" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.place.id + source: "@{{quoteItem[0].product.place[0].id}}" + sourceLocation: BODY + target: "@{{ports[*].dcf}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.productConfiguration.bandwidth + source: "@{{quoteItem[0].product.productConfiguration.bandwidth}}" + sourceLocation: BODY + target: "@{{ports[*].speed}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.productConfiguration.bandwidthUnit + source: "@{{quoteItem[0].product.productConfiguration.bandwidthUnit}}" + sourceLocation: BODY + sourceType: enum + sourceValues: + - GBPS + - MBPS + valueMapping: {} + target: "MBPS" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.productOffering.id + source: "@{{quoteItem[0].product.productOffering.id}}" + sourceLocation: BODY + target: "UNI" + targetLocation: BODY + requiredMapping: false + response: + - name: mapper.quote.uni.add.sync.unitOfMeasure + title: Quote unitOfMeasure Mapping + description: quote unitOfMeasure mapping + source: "Gb" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].unitOfMeasure}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.price.unit + title: Quote Price Unit Mapping + description: quote price mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.price.value + title: Quote Price Value Mapping + description: quote price mapping + source: "@{{responseBody.results[*].price}}" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.sync.taxRate + title: Quote taxRate Mapping + description: quote taxRate mapping + source: "16" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.taxRate}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.taxIncludedAmount.unit + title: Quote taxIncludedAmount unit Mapping + description: quote taxIncludedAmount unit mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.unit}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.taxIncludedAmount.value + title: Quote taxIncludedAmount value Mapping + description: quote taxIncludedAmount value mapping + source: "100" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.value}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.quoteItemPrice.name + title: Quote quoteItemPrice name Mapping + description: quote quoteItemPrice name mapping + source: "name-here" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].name}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.quoteItemPrice.priceType + title: Quote quoteItemPrice priceType Mapping + description: quote quoteItemPrice priceType mapping + source: "recurring" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].priceType}}" + targetType: enum + targetLocation: BODY + requiredMapping: false + targetValues: + - recurring + - nonRecurring + - usageBased + valueMapping: {} + - name: mapper.quote.uni.add.sync.quoteItemPrice.description + title: Quote quoteItemPrice description Mapping + description: quote quoteItemPrice description mapping + source: "" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].description}}" + targetLocation: BODY + requiredMapping: false + - name: mapper.quote.uni.add.sync.quoteItemPrice.recurringChargePeriod + title: Quote quoteItemPrice recurringChargePeriod Mapping + description: quote quoteItemPrice recurringChargePeriod mapping + source: "month" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].recurringChargePeriod}}" + targetType: enum + targetLocation: BODY + requiredMapping: false + targetValues: + - hour + - day + - week + - month + - year + valueMapping: {} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml new file mode 100644 index 00000000..3360985f --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml @@ -0,0 +1,60 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.uni.add + name: Mapper Of Creating Quote UNI + description: This operation creates a Quote entity +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: uni + actionType: add + endpoints: + - id: create quote for port + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.quote.uni.add.state + title: Quote State Mapping + description: quote state mapping + source: "answered" + sourceLocation: "" + target: "@{{quoteItem[0].state}}" + targetType: enum + targetLocation: BODY + requiredMapping: true + targetValues: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - inProgress + - inProgress.draft + - abandoned + - rejected + - unableToProvide + valueMapping: + answered: answered too + ACCEPTED: accepted + - name: mapper.quote.uni.add.price.value + title: Quote Price Value Mapping + description: quote price mapping + source: "@{{responseBody.results[*].price}}" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" + targetLocation: BODY + requiredMapping: true + - name: mapper.quote.uni.add.price.unit + title: Quote Price Unit Mapping + description: quote price mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" + targetLocation: BODY + requiredMapping: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml new file mode 100644 index 00000000..13cf815a --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml @@ -0,0 +1,20 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.uni.read.sync + name: Mapper Of Reading Quote UNI + description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: uni + endpoints: + - id: retrieve quote for port + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml new file mode 100644 index 00000000..4b8e4409 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml @@ -0,0 +1,56 @@ +--- +kind: kraken.component.api-target-mapper +apiVersion: v1 +metadata: + key: mef.sonata.api-target-mapper.quote.uni.read + name: Mapper Of Reading Quote UNI + description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. +spec: + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: uni + endpoints: + - id: retrieve quote for port + path: /api/pricing/calculate + method: post + serverKey: mef.sonata.api-target-spec.con1718940696857 + mappers: + request: + response: + - name: mapper.quote.uni.read.state + title: Quote State Mapping + description: quote state mapping + source: "answered" + sourceLocation: "" + target: "@{{quoteItem[0].state}}" + targetType: enum + targetLocation: BODY + targetValues: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - cancelled + - unableToProvide + - declined + - expired + - inProgress + - inProgress.draft + - rejected + valueMapping: {} + - name: mapper.quote.uni.read.price.value + title: Quote Price Value Mapping + description: quote price value mapping + source: "@{{responseBody.results[0].price}}" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" + targetLocation: BODY + - name: mapper.quote.uni.read.price.unit + title: Quote Price Unit Mapping + description: quote price unit mapping + source: "USD" + sourceLocation: BODY + target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" + targetLocation: BODY \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml new file mode 100644 index 00000000..50394b68 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml @@ -0,0 +1,30 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.address.retrieve + name: Geographic Address Management + mapperKey: mef.sonata.api-target-mapper.address.retrieve + version: 1 +spec: + inputs: + - mefQuery + trigger: + path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/{id} + method: get + endpoints: + - id: retrieve address + path: "" + method: "" + requestBody: + responseBody: | + { + "id": "", + "@type": "FieldedAddress", + "associatedGeographicAddress": { + "country": "", + "city": "", + "streetName": "", + "locality": "" + } + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml new file mode 100644 index 00000000..8ace4ade --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml @@ -0,0 +1,42 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.address.validate + name: Geographic Address Management + mapperKey: mef.sonata.api-target-mapper.address.validate + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation + method: post + endpoints: + - id: validate address + requestBody: + responseBody: | + { + "validationResult": "((mefResponseBody.bestMatchGeographicAddress.id == '' ? (mefResponseBody.alternateGeographicAddress.size() == 0 ?'fail':'partial'): 'success'))", + "alternateGeographicAddress": [ + { + "id": "", + "@type": "FieldedAddress", + "country": "", + "city": "", + "streetName": "", + "locality": "" + } + ], + "provideAlternative": "${mefRequestBody.provideAlternative}", + "submittedGeographicAddress": "${mefRequestBody.submittedGeographicAddress}", + "bestMatchGeographicAddress": { + "id": "", + "@type": "FieldedAddress", + "city": "", + "country": "", + "streetName": "" + } + } + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml new file mode 100644 index 00000000..a12482ae --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml @@ -0,0 +1,21 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.hub.add + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.hub.add + version: 5 +spec: + inputs: + - mefQuery + - mefRequestBody + - eventEntity + endpoints: + - id: register event + responseBody: | + { + "id": "${eventEntity.id}", + "callback": "${mefRequestBody.callback}", + "query": "${mefRequestBody.query}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml new file mode 100644 index 00000000..7d2aee9b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml @@ -0,0 +1,36 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.inventory.eline.list + name: Inventory Connection API + mapperKey: mef.sonata.api-target-mapper.inventory.eline.list + version: 2 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/productInventory/v7/product + method: get + productType: access_e_line + endpoints: + - id: list eline product + pathReferId: "mef.sonata.api-target-mapper.order.eline.add#mapper.order.eline.add.orderId" + responseBody: | + [ + { + "id": "", + "startDate": "", + "status": "", + "productSpecification":{}, + "relatedSite":[], + "productOffering":"${entity.request.productOrderItem[0].product.productOffering}", + "lastUpdateDate":{}, + "externalId":"${entity.request[externalId]?:''}", + "productRelationship":"${entity.request.productOrderItem[0].product.productRelationship}", + "billingAccount":"${entity.request.productOrderItem[0].billingAccount}", + "productOrderItem":"${entity.renderedResponse.productOrderItem}" + } + ] \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml new file mode 100644 index 00000000..f4012ef5 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml @@ -0,0 +1,25 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.inventory.eline.read + mapperKey: mef.sonata.api-target-mapper.inventory.eline.read + name: Product Inventory eline + version: 7 +spec: + inputs: + - mefQuery + trigger: + path: /mefApi/sonata/productInventory/v7/product/{id} + method: get + productType: access_e_line + endpoints: + - id: Retrieves a product by ID + path: "" + method: "" + responseBody: | + { + "id": "${segment}", + "startDate": "@{{startDate}}", + "status": "@{{status}}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml new file mode 100644 index 00000000..2a29e6df --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml @@ -0,0 +1,36 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.inventory.uni.list + name: Inventory Connection API + mapperKey: mef.sonata.api-target-mapper.inventory.uni.list + version: 2 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/productInventory/v7/product + method: get + productType: uni + endpoints: + - id: list uni product + pathReferId: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" + responseBody: | + [ + { + "id": "", + "startDate": "", + "status": "", + "productSpecification":{}, + "relatedSite":[], + "productOffering":"${entity.request.productOrderItem[0].product.productOffering}", + "lastUpdateDate":"", + "externalId":"${entity.request[externalId]?:''}", + "productRelationship":"${entity.request.productOrderItem[0].product.productRelationship}", + "billingAccount":"${entity.request.productOrderItem[0].billingAccount}", + "productOrderItem":"${entity.renderedResponse.productOrderItem}" + } + ] \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml new file mode 100644 index 00000000..b0ee0ec2 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml @@ -0,0 +1,25 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.inventory.uni.read + mapperKey: mef.sonata.api-target-mapper.inventory.uni.read + name: Product Inventory UNI + version: 7 +spec: + inputs: + - mefQuery + trigger: + path: /mefApi/sonata/productInventory/v7/product/{id} + method: get + productType: uni + endpoints: + - id: Retrieves a product by ID + path: "" + method: "" + responseBody: | + { + "id": "${segment}", + "startDate": "@{{startDate}}", + "status": "@{{status}}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml new file mode 100644 index 00000000..6586861d --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml @@ -0,0 +1,33 @@ + +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.eline.add + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.order.eline.add + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create connection order + path: "" + method: "" + requestBody: | + {} + responseBody: | + { + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "id": "${entity.id}", + "orderDate":"${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "productOrderItem": "${mefRequestBody.productOrderItem}", + "state": "", + "orderId": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml new file mode 100644 index 00000000..eabb2b35 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml @@ -0,0 +1,29 @@ + +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.eline.delete + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.order.eline.delete + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: access_e_line + actionType: delete + endpoints: + - id: delete connection by id + path: "" + method: "" + responseBody: | + { + "id":"${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "productOrderItem": "${mefRequestBody.productOrderItem}", + "state": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml new file mode 100644 index 00000000..d0c38bc5 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml @@ -0,0 +1,69 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.eline.read + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.order.eline.read + version: 4 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} + method: get + productType: access_e_line + endpoints: + - id: retrieve connection detail by id + path: "" + pathReferId: "mef.sonata.api-target-mapper.order.eline.add#mapper.order.eline.add.orderId" + method: "" + responseBody: | + { + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "productOrderItem": [ + { + "action": "${entity.renderedResponse.productOrderItem[0].action}", + "agreementName": "${entity.renderedResponse.productOrderItem[0].agreementName}", + "billingAccount": "${entity.renderedResponse.productOrderItem[0].billingAccount}", + "coordinatedAction": "${entity.renderedResponse.productOrderItem[0].coordinatedAction}", + "endCustomerName": "${entity.renderedResponse.productOrderItem[0].endCustomerName}", + "expediteIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "id": "${entity.renderedResponse.productOrderItem[0].id}", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].expectedCompletionDate}", + "note": "${entity.renderedResponse.productOrderItem[0].note}", + "product": { + "productOffering": "${entity.renderedResponse.productOrderItem[0].product.productOffering}", + "productConfiguration": "${entity.renderedResponse.productOrderItem[0].product.productConfiguration}", + "productRelationship": "${entity.renderedResponse.productOrderItem[0].product.productRelationship}", + "place": "${entity.renderedResponse.productOrderItem[0].product.place}", + "href": "${entity.renderedResponse.productOrderItem[0].product.href}", + "id": "" + }, + "productOfferingQualificationItem": "${entity.renderedResponse.productOrderItem[0].productOfferingQualificationItem}", + "productOrderItemRelationship": "${entity.renderedResponse.productOrderItem[0].productOrderItemRelationship}", + "quoteItem": "${entity.renderedResponse.productOrderItem[0].quoteItem}", + "relatedBuyerPON": "${entity.renderedResponse.productOrderItem[0].relatedBuyerPON}", + "relatedContactInformation": "${entity.renderedResponse.productOrderItem[0].relatedContactInformation}", + "requestedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "requestedItemTerm": "${entity.renderedResponse.productOrderItem[0].requestedItemTerm}", + "tspRestorationPriority": "${entity.renderedResponse.productOrderItem[0].tspRestorationPriority}", + "charge": "${entity.renderedResponse.productOrderItem[0].charge}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "expediteAcceptedIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "itemTerm": "${entity.renderedResponse.productOrderItem[0].itemTerm}", + "milestone": "${entity.renderedResponse.productOrderItem[0].milestone}", + "state": "((mefResponseBody.state))", + "terminationError": "${entity.renderedResponse.productOrderItem[0].terminationError}" + } + ], + "orderDate":"${entity.renderedResponse.orderDate}", + "state": "", + "orderId": "${entity.renderedResponse.orderId}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "instanceId": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml new file mode 100644 index 00000000..81aa7ce9 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.notification.state.change + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.order.notification.state.change + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + - eventEntity + trigger: + path: /mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent + method: post + endpoints: + - id: notify order state change + path: "/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent" + url: "${eventEntity.registerInfo.callback}" +# path: "/anything" + method: post + requestBody: | + { + "eventId": "${eventEntity.id}", + "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "eventType": "${mefQuery.eventType}", + "event": { + "id": "" + } + } + responseBody: diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml new file mode 100644 index 00000000..90bdcb04 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml @@ -0,0 +1,33 @@ + +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.uni.add + name: Order Port API + mapperKey: mef.sonata.api-target-mapper.order.uni.add + version: 2 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: uni + actionType: add + endpoints: + - id: create port order + path: "" + method: "" + requestBody: | + {} + responseBody: | + { + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "id": "${entity.id}", + "orderDate":"${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "productOrderItem": "${mefRequestBody.productOrderItem}", + "state": "", + "orderId": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml new file mode 100644 index 00000000..ffde2748 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml @@ -0,0 +1,28 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.uni.delete + name: Order Port API + mapperKey: mef.sonata.api-target-mapper.order.uni.delete + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + productType: uni + actionType: delete + endpoints: + - id: delete port + path: "" + method: "" + responseBody: | + { + "id":"${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "productOrderItem": "${mefRequestBody.productOrderItem}", + "state": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml new file mode 100644 index 00000000..27f25d3b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml @@ -0,0 +1,69 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.order.uni.read + mapperKey: mef.sonata.api-target-mapper.order.uni.read + name: Order Connection API + version: 4 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} + method: get + productType: uni + endpoints: + - id: retrieve connection detail by id + path: "" + method: "" + pathReferId: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" + responseBody: | + { + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "productOrderItem": [ + { + "action": "${entity.renderedResponse.productOrderItem[0].action}", + "agreementName": "${entity.renderedResponse.productOrderItem[0].agreementName}", + "billingAccount": "${entity.renderedResponse.productOrderItem[0].billingAccount}", + "coordinatedAction": "${entity.renderedResponse.productOrderItem[0].coordinatedAction}", + "endCustomerName": "${entity.renderedResponse.productOrderItem[0].endCustomerName}", + "expediteIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "id": "${entity.renderedResponse.productOrderItem[0].id}", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].expectedCompletionDate}", + "note": "${entity.renderedResponse.productOrderItem[0].note}", + "product": { + "productOffering": "${entity.renderedResponse.productOrderItem[0].product.productOffering}", + "productConfiguration": "${entity.renderedResponse.productOrderItem[0].product.productConfiguration}", + "productRelationship": "${entity.renderedResponse.productOrderItem[0].product.productRelationship}", + "place": "${entity.renderedResponse.productOrderItem[0].product.place}", + "href": "${entity.renderedResponse.productOrderItem[0].product.href}", + "id": "" + }, + "productOfferingQualificationItem": "${entity.renderedResponse.productOrderItem[0].productOfferingQualificationItem}", + "productOrderItemRelationship": "${entity.renderedResponse.productOrderItem[0].productOrderItemRelationship}", + "quoteItem": "${entity.renderedResponse.productOrderItem[0].quoteItem}", + "relatedBuyerPON": "${entity.renderedResponse.productOrderItem[0].relatedBuyerPON}", + "relatedContactInformation": "${entity.renderedResponse.productOrderItem[0].relatedContactInformation}", + "requestedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "requestedItemTerm": "${entity.renderedResponse.productOrderItem[0].requestedItemTerm}", + "tspRestorationPriority": "${entity.renderedResponse.productOrderItem[0].tspRestorationPriority}", + "charge": "${entity.renderedResponse.productOrderItem[0].charge}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", + "expediteAcceptedIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", + "itemTerm": "${entity.renderedResponse.productOrderItem[0].itemTerm}", + "milestone": "${entity.renderedResponse.productOrderItem[0].milestone}", + "state": "((mefResponseBody.state))", + "terminationError": "${entity.renderedResponse.productOrderItem[0].terminationError}" + } + ], + "orderDate":"${entity.renderedResponse.orderDate}", + "state": "", + "orderId": "${entity.renderedResponse.orderId}", + "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", + "instanceId": "" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml new file mode 100644 index 00000000..63a4b826 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.poq.notification.state.change + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.poq.notification.state.change + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + - eventEntity + trigger: + path: /mefApi/sonata/productOfferingQualificationNotification/v7/listener/poqStateChangeEvent + method: post + endpoints: + - id: notify poq state change + path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" + url: "${eventEntity.registerInfo.callback}" +# path: "/anything" + method: post + requestBody: | + { + "eventId": "${eventEntity.id}", + "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "eventType": "${mefQuery.eventType}", + "event": { + "id": "" + } + } + responseBody: diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml new file mode 100644 index 00000000..3d9b4a4b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml @@ -0,0 +1,34 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.poq.eline.add + name: Product Offering Qualification (POQ) API + mapperKey: mef.sonata.api-target-mapper.poq.eline.add + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create a product offering qualification for connection + path: "" + method: "" + requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} + responseBody: | + { + "id": "${entity.id}", + "productOfferingQualificationItem": [{ + "product": "${mefRequestBody.productOfferingQualificationItem[0].product}", + "action": "${mefRequestBody.productOfferingQualificationItem[0].action}", + "id":"${mefRequestBody.productOfferingQualificationItem[0].id}", + "state":"@{{itemState}}" + }], + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "state": "@{{state}}" + } diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml new file mode 100644 index 00000000..f1e94253 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.poq.eline.read + name: Product Offering Qualification (POQ) API + mapperKey: mef.sonata.api-target-mapper.poq.eline.read + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} + method: get + productType: access_e_line + endpoints: + - id: Retrieves a product offering qualification by id for connection + path: "" + method: "" + requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} + responseBody: | + { + "id": "${entity.id}", + "productOfferingQualificationItem": [{ + "product": "${entity.request.productOfferingQualificationItem[0].product}", + "action": "${entity.request.productOfferingQualificationItem[0].action}", + "id":"${entity.request.productOfferingQualificationItem[0].id}", + "state":"@{{itemState}}" + }], + "relatedContactInformation": "${entity.request.relatedContactInformation}", + "state": "@{{state}}" + } diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml new file mode 100644 index 00000000..50b541a9 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml @@ -0,0 +1,34 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.poq.uni.add + name: Product Offering Qualification (POQ) API + mapperKey: mef.sonata.api-target-mapper.poq.uni.add + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification + method: post + productType: uni + actionType: add + endpoints: + - id: create a product offering qualification for port + path: "" + method: "" + requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.uni} + responseBody: | + { + "id": "${entity.id}", + "productOfferingQualificationItem": [{ + "product": "${mefRequestBody.productOfferingQualificationItem[0].product}", + "action": "${mefRequestBody.productOfferingQualificationItem[0].action}", + "id":"${mefRequestBody.productOfferingQualificationItem[0].id}", + "state":"@{{itemState}}" + }], + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "state": "@{{state}}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml new file mode 100644 index 00000000..5ef7fba3 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.poq.uni.read + name: Product Offering Qualification (POQ) API + mapperKey: mef.sonata.api-target-mapper.poq.uni.read + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} + method: get + productType: uni + endpoints: + - id: Retrieves a product offering qualification by id for port + path: "" + method: "" + requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.uni} + responseBody: | + { + "id": "${entity.id}", + "productOfferingQualificationItem": [{ + "product": "${entity.request.productOfferingQualificationItem[0].product}", + "action": "${entity.request.productOfferingQualificationItem[0].action}", + "id":"${entity.request.productOfferingQualificationItem[0].id}", + "state":"@{{itemState}}" + }], + "relatedContactInformation": "${entity.request.relatedContactInformation}", + "state": "@{{state}}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml new file mode 100644 index 00000000..985942ac --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml @@ -0,0 +1,61 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.eline.add.sync + name: Quote Connection API + mapperKey: mef.sonata.api-target-mapper.quote.eline.add.sync + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create quote for connection + path: + method: + requestBody: | + {} + responseBody: | + { + "id": "${entity.id}", + "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "quoteItem": [{ + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}", + "product": "${mefRequestBody.quoteItem[0].product}", + "action": "add", + "id": "${mefRequestBody.quoteItem[0].id}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))", + "quoteItemTerm": "${T(java.util.Arrays).asList(mefRequestBody.quoteItem[0].requestedQuoteItemTerm)}", + "quoteItemPrice": [{ + "unitOfMeasure":"", + "price": { + "dutyFreeAmount": { + "unit": "", + "value": "" + }, + "taxRate":"", + "taxIncludedAmount": { + "unit": "", + "value": "" + } + }, + "name":"", + "priceType":"", + "description":"", + "recurringChargePeriod":"" + }] + }], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${mefRequestBody[externalId]?:''}", + "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml new file mode 100644 index 00000000..e422fa29 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml @@ -0,0 +1,48 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.eline.add + name: Quote Connection API + mapperKey: mef.sonata.api-target-mapper.quote.eline.add + version: 4 +spec: + inputs: + - mefQuery + - mefRequestBody + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: access_e_line + actionType: add + endpoints: + - id: create quote for connection + path: + method: + requestBody: ${mefRequestBody.quoteItem[0].product.productConfiguration.access_e_line} + responseBody: | + { + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "quoteItem": [{ + "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "product": "${mefRequestBody.quoteItem[0].product}", + "state": "", + "quoteItemPrice": [{ + "price": { + "dutyFreeAmount": { + "unit": "", + "value": "" + } + } + }] + }], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${mefRequestBody[externalId]?:''}", + "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml new file mode 100644 index 00000000..8bd8c417 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml @@ -0,0 +1,40 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.eline.read.sync + name: Quote Connection API + mapperKey: mef.sonata.api-target-mapper.quote.eline.read.sync + version: 0 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: access_e_line + endpoints: + - id: retrieve quote for connection + url: ${env.target.url} + path: + method: + requestBody: ${entity.request.quoteItem[0].product.productConfiguration.access_e_line} + responseBody: | + { + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", + "quoteItem": [{ + "product": "${entity.request.quoteItem[0].product}", + "action": "${entity.request.quoteItem[0].action}", + "id": "${entity.request.quoteItem[0].id}", + "state": "${entity.renderedResponse.quoteItem[0].state}", + "quoteItemPrice": "${entity.renderedResponse.quoteItem[0].quoteItemPrice}" + }], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${entity.request[externalId]?:''}", + "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml new file mode 100644 index 00000000..fbf3215e --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml @@ -0,0 +1,46 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.eline.read + name: Quote Connection API + mapperKey: mef.sonata.api-target-mapper.quote.eline.read + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: access_e_line + endpoints: + - id: retrieve quote for connection + path: "" + method: "" + requestBody: ${entity.request.quoteItem[0].product.productConfiguration.access_e_line} + responseBody: | + { + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", + "quoteItem": [ + { + "product": "${entity.request.quoteItem[0].product}", + "state": "@{{quoteItem[*].state}}", + "quoteItemPrice": [{ + "price": { + "dutyFreeAmount": { + "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", + "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" + } + } + }] + } + ], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${entity.request[externalId]?:''}", + "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml new file mode 100644 index 00000000..f80c14b8 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml @@ -0,0 +1,33 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.notification.state.change + name: Order Connection API + mapperKey: mef.sonata.api-target-mapper.quote.notification.state.change + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + - eventEntity + trigger: + path: /mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent + method: post + endpoints: + - id: notify quote state change + path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" + url: "${eventEntity.registerInfo.callback}" +# path: "/anything" + method: post + requestBody: | + { + "eventId": "${eventEntity.id}", + "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "eventType": "${mefQuery.eventType}", + "event": { + "id": "" + } + } + responseBody: diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml new file mode 100644 index 00000000..a6e386ca --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml @@ -0,0 +1,64 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.uni.add.sync + name: Quote Management API + mapperKey: mef.sonata.api-target-mapper.quote.uni.add.sync + version: 0 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: uni + actionType: add + endpoints: + - id: create quote for port + path: + method: + requestBody: | + {} + responseBody: | + { + "id": "${entity.id}", + "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "quoteItem": [ + { + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}", + "product": "${mefRequestBody.quoteItem[0].product}", + "action": "add", + "id": "${mefRequestBody.quoteItem[0].id}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))", + "quoteItemTerm": "${T(java.util.Arrays).asList(mefRequestBody.quoteItem[0].requestedQuoteItemTerm)}", + "quoteItemPrice": [{ + "unitOfMeasure":"", + "price": { + "dutyFreeAmount": { + "unit": "", + "value": "" + }, + "taxRate":"", + "taxIncludedAmount": { + "unit": "", + "value": "" + } + }, + "name":"", + "priceType":"", + "description":"", + "recurringChargePeriod":"" + }] + } + ], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${mefRequestBody[externalId]?:''}", + "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml new file mode 100644 index 00000000..90c0d6e1 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml @@ -0,0 +1,51 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.uni.add + name: Quote Management API + mapperKey: mef.sonata.api-target-mapper.quote.uni.add + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + productType: uni + actionType: add + endpoints: + - id: create quote for port + path: "" + method: "" + requestBody: ${mefRequestBody.quoteItem[0].product.productConfiguration.uni} + responseBody: | + { + "id": "${entity.id}", + "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", + "quoteItem": [ + { + "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", + "product": "${mefRequestBody.quoteItem[0].product}", + "state": "", + "quoteItemPrice": [{ + "price": { + "dutyFreeAmount": { + "unit": "", + "value": "" + } + } + }] + } + ], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${mefRequestBody[externalId]?:''}", + "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", + "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", + "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml new file mode 100644 index 00000000..fdb94195 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml @@ -0,0 +1,40 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.uni.read.sync + name: Quote Management API + mapperKey: mef.sonata.api-target-mapper.quote.uni.read.sync + version: 0 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: uni + endpoints: + - id: retrieve quote for port + url: ${env.target.url} + path: + method: + requestBody: ${entity.request.quoteItem[0].product.productConfiguration.uni} + responseBody: | + { + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", + "quoteItem": [{ + "product": "${entity.request.quoteItem[0].product}", + "action": "${entity.request.quoteItem[0].action}", + "id": "${entity.request.quoteItem[0].id}", + "state": "${entity.renderedResponse.quoteItem[0].state}", + "quoteItemPrice": "${entity.renderedResponse.quoteItem[0].quoteItemPrice}" + }], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${entity.request[externalId]?:''}", + "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml new file mode 100644 index 00000000..098f545a --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml @@ -0,0 +1,46 @@ +--- +kind: kraken.component.api-target +apiVersion: v1 +metadata: + key: mef.sonata.api-target.quote.uni.read + name: Quote Management API + mapperKey: mef.sonata.api-target-mapper.quote.uni.read + version: 1 +spec: + inputs: + - mefQuery + - mefRequestBody + - entity + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productType: uni + endpoints: + - id: retrieve quote for port + path: "" + method: "" + requestBody: ${entity.request.quoteItem[0].product.productConfiguration.uni} + responseBody: | + { + "id": "${entity.id}", + "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", + "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", + "quoteItem": [ + { + "product": "${entity.request.quoteItem[0].product}", + "state": "@{{quoteItem[*].state}}", + "quoteItemPrice": [{ + "price": { + "dutyFreeAmount": { + "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", + "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" + } + } + }] + } + ], + "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", + "externalId":"${entity.request[externalId]?:''}", + "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", + "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" + } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml new file mode 100644 index 00000000..a02ec876 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml @@ -0,0 +1,150 @@ +--- +kind: kraken.component.api +apiVersion: v1 +metadata: + key: mef.sonata.api.serviceability.address + name: Geographic Address Management + labels: + mef-api-release: grace + address-api-version: v7 + version: 6 +spec: + supportedProductTypesAndActions: + - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation + method: post + - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/{id} + method: get + mappings: + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation + method: post + metadata: + cacheRequestBody: true + actions: + - id: persist_http_request_address_validate + actionType: buildin@db + env: + bizType: "address.validate" + with: + action: create + properties: + - headers + - queryParameters + - requestBody + preRequest: true + - id: calculate_address_type_and_action_via_javascript + actionType: engine@javascript + with: + code: | + (jsonstr) => { + let ret = { + targetAPIConfigKey: 'mef.sonata.api-target.address.validate' + }; + return JSON.stringify(ret); + } + outputKey: address + - id: mapping_matrix_check_address + actionType: buildin@mapping-matrix-checker + env: + mappingMatrixKey: mef.sonata.api.matrix.address.validation + targetKey: ${address.targetAPIConfigKey} + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${address.targetAPIConfigKey} + mefQuery: ${query} + mefRequestBody: ${body} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + - id: rewrite-path + actionType: buildin@rewrite-path + with: + engine: spel + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-request-body + actionType: buildin@modify-request-body + env: + code: ${targetApiConfig.endpoints[0].requestBody} + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + listLoop: true + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + postResultRender: true + + - id: update-response-body + actionType: buildin@db + with: + action: update + properties: + - responseBody + - responseStatusCode + preRequest: false + postRequest: true + order: -4 + + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/** + method: get + queryParams: + metadata: + cacheRequestBody: true + actions: + - name: retrieve addressId from path + actionType: buildin@pattern + env: + input: ${path} + pattern: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/(?.*) + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: "mef.sonata.api-target.address.retrieve" + mefQuery: ${query} + id: ${segment} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} +links: + - targetAssetKey: mef.sonata.api-target.address.retrieve + relationship: implementation.target + group: mef.sonata.api-target.address.retrieve + - targetAssetKey: mef.sonata.api-target.address.validate + relationship: implementation.target + group: mef.sonata.api-target.address.validate + - targetAssetKey: mef.sonata.api-spec.serviceability.address + relationship: implementation.standard.api-spec + - targetAssetKey: mef.sonata.api-target-mapper.address.validate + relationship: implementation.target-mapper + group: mef.sonata.api-target.address.validate + - targetAssetKey: mef.sonata.api.matrix.address.validate + relationship: implementation.matrix + group: mef.sonata.api-target.address.validate + - targetAssetKey: mef.sonata.api-target-mapper.address.retrieve + relationship: implementation.target-mapper + group: mef.sonata.api-target.address.retrieve \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml new file mode 100644 index 00000000..b64e1a75 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml @@ -0,0 +1,209 @@ +--- +kind: kraken.component.api +apiVersion: v1 +metadata: + key: mef.sonata.api.inventory + name: Product Inventory Management + labels: + mef-api-release: grace + inventory-api-version: v7 + version: 4 +spec: + supportedProductTypesAndActions: + - path: /mefApi/sonata/productInventory/v7/product + method: get + productTypes: + - UNI + - ACCESS_E_LINE + - path: /mefApi/sonata/productInventory/v7/product/{id} + method: get + productTypes: + - UNI + - ACCESS_E_LINE + mappings: + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/productInventory/v7/product + method: get + metadata: + cacheRequestBody: false + actions: + - id: read request payload by id + actionType: buildin@db + env: + id: ${query.productOrderId} + blankIdErrMsg: "productOrderId id cannot be blank" + notExistedErrMsg: "productOrderId id does not exist" + with: + action: read + preRequest: true + - id: calculate_list_type_for_via_javascript + actionType: engine@javascript + env: + bizType: ${entity.bizType} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + let matrixConfigKey = ''; + if(input.bizType == 'UNI') { + targetAPIConfigKey = 'mef.sonata.api-target.inventory.uni.list'; + matrixConfigKey = 'mef.sonata.api.matrix.inventory.uni.list'; + } else if(input.bizType == 'ACCESS_E_LINE') { + targetAPIConfigKey = 'mef.sonata.api-target.inventory.eline.list'; + matrixConfigKey = 'mef.sonata.api.matrix.inventory.eline.list'; + } else { + targetAPIConfigKey = 'targetKey:notFound'; + matrixConfigKey = 'productOrderId:notFound'; + } + let ret = { + orderType: input.bizType, + targetAPIConfigKey: targetAPIConfigKey, + matrixConfigKey: matrixConfigKey + }; + return JSON.stringify(ret); + } + outputKey: order + - id: mapping-matrix-check-inventory + actionType: buildin@mapping-matrix-checker + env: + mappingMatrixKey: ${order.matrixConfigKey} + targetKey: ${order.targetAPIConfigKey} + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${order.targetAPIConfigKey} + mefQuery: ${query} + entity: ${entity} + with: + render: true + replaceStar: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/productInventory/v7/product/** + method: get + queryParams: + metadata: + cacheRequestBody: true + actions: + - name: retrieve product id from path + actionType: buildin@pattern + env: + input: ${path} + pattern: /mefApi/sonata/productInventory/v7/product/(?.*) + - id: calculate_type_for_via_javascript + actionType: engine@javascript + env: + bizType: ${query.productType} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + let matrixConfigKey = ''; + if(input.bizType == 'UNI') { + targetAPIConfigKey = 'mef.sonata.api-target.inventory.uni.read'; + matrixConfigKey = 'mef.sonata.api.matrix.inventory.uni.read'; + } else if(input.bizType == 'ACCESS_E_LINE') { + targetAPIConfigKey = 'mef.sonata.api-target.inventory.eline.read'; + matrixConfigKey = 'mef.sonata.api.matrix.inventory.eline.read'; + } else { + targetAPIConfigKey = 'targetKey:notFound'; + matrixConfigKey = 'productType:notFound'; + } + let ret = { + orderType: input.bizType, + targetAPIConfigKey: targetAPIConfigKey, + matrixConfigKey: matrixConfigKey + }; + return JSON.stringify(ret); + } + outputKey: order + - id: mapping-matrix-check-inventory-read + actionType: buildin@mapping-matrix-checker + env: + mappingMatrixKey: ${order.matrixConfigKey} + targetKey: ${order.targetAPIConfigKey} + id: ${segment} + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${order.targetAPIConfigKey} + mefQuery: ${query} + id: ${segment} + with: + render: true + replaceStar: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + +links: + - targetAssetKey: mef.sonata.api-target.inventory.uni.list + relationship: implementation.target + group: mef.sonata.api-target.inventory.uni.list + - targetAssetKey: mef.sonata.api.matrix.inventory.uni.list + relationship: implementation.matrix + group: mef.sonata.api-target.inventory.uni.list + - targetAssetKey: mef.sonata.api-target.inventory.eline.list + relationship: implementation.target + group: mef.sonata.api-target.inventory.eline.list + - targetAssetKey: mef.sonata.api.matrix.inventory.eline.list + relationship: implementation.matrix + group: mef.sonata.api-target.inventory.eline.list + - targetAssetKey: mef.sonata.api-target.inventory.eline.read + relationship: implementation.target + group: mef.sonata.api-target.inventory.eline.read + - targetAssetKey: mef.sonata.api.matrix.inventory.eline.read + relationship: implementation.matrix + group: mef.sonata.api-target.inventory.eline.read + - targetAssetKey: mef.sonata.api-target.inventory.uni.read + relationship: implementation.target + group: mef.sonata.api-target.inventory.uni.read + - targetAssetKey: mef.sonata.api.matrix.inventory.uni.read + relationship: implementation.matrix + group: mef.sonata.api-target.inventory.uni.read + - targetAssetKey: mef.sonata.api-target-mapper.inventory.eline.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.inventory.eline.read + - targetAssetKey: mef.sonata.api-target-mapper.inventory.uni.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.inventory.uni.read + - targetAssetKey: mef.sonata.api-target-mapper.inventory.eline.list + relationship: implementation.target-mapper + group: mef.sonata.api-target.inventory.eline.list + - targetAssetKey: mef.sonata.api-target-mapper.inventory.uni.list + relationship: implementation.target-mapper + group: mef.sonata.api-target.inventory.uni.list + - targetAssetKey: mef.sonata.api-spec.inventory + relationship: implementation.standard.api-spec \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml new file mode 100644 index 00000000..52091506 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml @@ -0,0 +1,107 @@ +--- +kind: kraken.component.api +apiVersion: v1 +metadata: + key: mef.sonata.api.notification + name: Product notification API + labels: + mef-api-release: grace + order-api-version: v10 + version: 1 +spec: + mappings: + - uri: ${env.target.url} + trigger: + path: /mefApi/listener/notification + method: post + queryParams: + - eventType + metadata: + cacheRequestBody: true + actions: + - id: persist_http_request + actionType: buildin@db + env: + bizType: notification + with: + action: create + properties: + - headers + - queryParameters + - requestBody + preRequest: true + + - id: read-event + actionType: buildin@register-event + env: + eventType: ${query.eventType} + with: + action: read + preRequest: true + + - id: calculate_target_api_via_javascript + actionType: engine@javascript + env: + eventType: ${query.eventType} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + if(input.eventType = 'productOrderStateChangeEvent') { + targetAPIConfigKey = 'mef.sonata.api-target.order.notification.state.change'; + } else if(input.eventType = 'poqStateChangeEvent') { + targetAPIConfigKey = 'mef.sonata.api-target.poq.notification.state.change'; + } else if(input.eventType = 'quoteStateChangeEvent') { + targetAPIConfigKey = 'mef.sonata.api-target.quote.notification.state.change'; + } + let ret = { + targetAPIConfigKey: targetAPIConfigKey + }; + return JSON.stringify(ret); + } + outputKey: event + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${event.targetAPIConfigKey} + mefQuery: ${query} + mefRequestBody: ${body} + entity: ${entity} + eventEntity: ${eventEntity} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-request-body + actionType: buildin@modify-request-body + env: + code: ${targetApiConfig.endpoints[0].requestBody} + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + successStatus: 201 + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + + - id: persist_http_response + actionType: buildin@db + with: + action: update + properties: + - responseBody + - responseStatusCode + preRequest: false + postRequest: true + order: -4 + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml new file mode 100644 index 00000000..f31e5495 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml @@ -0,0 +1,306 @@ +--- +kind: kraken.component.api +apiVersion: v1 +metadata: + key: mef.sonata.api.order + name: Product Ordering Management + labels: + mef-api-release: grace + order-api-version: v10 + version: 6 +spec: + supportedProductTypesAndActions: + - path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + actionTypes: + - add + - delete + productTypes: + - UNI + - ACCESS_E_LINE + - path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} + method: get + productTypes: + - UNI + - ACCESS_E_LINE + mappings: + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder + method: post + metadata: + cacheRequestBody: true + actions: + - id: calculate_order_type_and_action_via_javascript + actionType: engine@javascript + env: + productOrderItem: ${body['productOrderItem'][0]} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + if(input.productOrderItem['product']['productConfiguration']['@type'] == 'UNI' && input.productOrderItem['action'] == 'add') { + targetAPIConfigKey = 'mef.sonata.api-target.order.uni.add'; + matrixConfigKey = 'mef.sonata.api.matrix.order.uni.add' + } else if(input.productOrderItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE' && input.productOrderItem['action'] == 'add') { + targetAPIConfigKey = 'mef.sonata.api-target.order.eline.add'; + matrixConfigKey = 'mef.sonata.api.matrix.order.eline.add' + } else if(input.productOrderItem['product']['productConfiguration']['@type'] == 'UNI' && input.productOrderItem['action'] == 'delete') { + targetAPIConfigKey = 'mef.sonata.api-target.order.uni.delete'; + matrixConfigKey = 'mef.sonata.api.matrix.order.uni.delete' + } else if(input.productOrderItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE' && input.productOrderItem['action'] == 'delete') { + targetAPIConfigKey = 'mef.sonata.api-target.order.eline.delete'; + matrixConfigKey = 'mef.sonata.api.matrix.order.eline.delete' + } else { + targetAPIConfigKey = 'targetKey:notFound'; + } + let ret = { + orderType: input.productOrderItem['product']['productConfiguration']['@type'], + orderAction: input.productOrderItem['action'], + targetAPIConfigKey: targetAPIConfigKey, + matrixConfigKey: matrixConfigKey + }; + return JSON.stringify(ret); + } + outputKey: order + - id: mapping_matrix_check_order + actionType: buildin@mapping-matrix-checker + env: + mappingMatrixKey: ${order.matrixConfigKey} + targetKey: ${order.targetAPIConfigKey} + - id: persist_http_request + actionType: buildin@db + env: + bizType: ${order.orderType} + with: + action: create + properties: + - headers + - queryParameters + - requestBody + preRequest: true + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${order.targetAPIConfigKey} + mefQuery: ${query} + mefRequestBody: ${body} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-request-body + actionType: buildin@modify-request-body + env: + code: ${targetApiConfig.endpoints[0].requestBody} + + - id: modify-response-body-for-add + actionType: buildin@modify-response-body + with: + engine: spel + successStatus: 201 + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + + - id: persist_http_response + actionType: buildin@db + with: + action: update + properties: + - responseBody + - responseStatusCode + preRequest: false + postRequest: true + order: -4 + + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/productOrderingManagement/v10/productOrder/** + method: get + metadata: + cacheRequestBody: false + actions: + - name: retrieve orderId from path + actionType: buildin@pattern + env: + input: ${path} + pattern: /mefApi/sonata/productOrderingManagement/v10/productOrder/(?.*) + + - id: read request payload by id + actionType: buildin@db + env: + id: ${segment} + blankIdErrMsg: "order id cannot be blank" + notExistedErrMsg: "order id does not exist" + with: + action: read + preRequest: true + + - id: calculate_order_type_for_read_via_javascript + actionType: engine@javascript + env: + bizType: ${entity.bizType} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + if(input.bizType == 'UNI') { + targetAPIConfigKey = 'mef.sonata.api-target.order.uni.read'; + } else if(input.bizType == 'ACCESS_E_LINE') { + targetAPIConfigKey = 'mef.sonata.api-target.order.eline.read'; + } else { + targetAPIConfigKey = 'targetKey:notFound'; + } + let ret = { + orderType: input.bizType, + targetAPIConfigKey: targetAPIConfigKey + }; + return JSON.stringify(ret); + } + outputKey: order + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${order.targetAPIConfigKey} + mefQuery: ${query} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + with: + method: get + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + postResultRender: true + + - trigger: + path: /mefApi/sonata/productOrderingManagement/v10/hub + method: post + metadata: + cacheRequestBody: true + actions: + + - id: calculate_event_types_via_javascript + actionType: engine@javascript + env: + query: ${body.query} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let query = input.query; + let arr = query.split("="); + let eventArr = arr[1].split(","); + let ret = { + "eventTypes": eventArr, + "targetAPIConfigKey": "mef.sonata.api-target.hub.add" + }; + return JSON.stringify(ret); + } + outputKey: event + - id: register-order-event + actionType: buildin@register-event + env: + eventTypes: ${event.eventTypes} + with: + action: register + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${event.targetAPIConfigKey} + mefRequestBody: ${body} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + - id: mock-response + actionType: buildin@mock-response + with: + forwardDownstream: false + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + +links: + - targetAssetKey: mef.sonata.api-target.order.eline.add + relationship: implementation.target + group: mef.sonata.api-target.order.eline.add + - targetAssetKey: mef.sonata.api-target.order.eline.delete + relationship: implementation.target + group: mef.sonata.api-target.order.eline.delete + - targetAssetKey: mef.sonata.api-target.order.eline.read + relationship: implementation.target + group: mef.sonata.api-target.order.eline.read + - targetAssetKey: mef.sonata.api-target.order.uni.delete + relationship: implementation.target + group: mef.sonata.api-target.order.uni.delete + - targetAssetKey: mef.sonata.api-target.order.uni.read + relationship: implementation.target + group: mef.sonata.api-target.order.uni.read + - targetAssetKey: mef.sonata.api-target.order.uni.add + relationship: implementation.target + group: mef.sonata.api-target.order.uni.add + - targetAssetKey: mef.sonata.api-spec.order + relationship: implementation.standard.api-spec + - targetAssetKey: mef.sonata.api-target-mapper.order.uni.add + relationship: implementation.target-mapper + group: mef.sonata.api-target.order.uni.add + - targetAssetKey: mef.sonata.api.matrix.order.uni.add + relationship: implementation.matrix + group: mef.sonata.api-target.order.uni.add + - targetAssetKey: mef.sonata.api-target-mapper.order.eline.add + relationship: implementation.target-mapper + group: mef.sonata.api-target.order.eline.add + - targetAssetKey: mef.sonata.api.matrix.order.eline.add + relationship: implementation.matrix + group: mef.sonata.api-target.order.eline.add + - targetAssetKey: mef.sonata.api-target-mapper.order.uni.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.order.uni.read + - targetAssetKey: mef.sonata.api-target-mapper.order.eline.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.order.eline.read + - targetAssetKey: mef.sonata.api-target-mapper.order.uni.delete + relationship: implementation.target-mapper + group: mef.sonata.api-target.order.uni.delete + - targetAssetKey: mef.sonata.api.matrix.order.uni.delete + relationship: implementation.matrix + group: mef.sonata.api-target.order.uni.delete + - targetAssetKey: mef.sonata.api-target-mapper.order.eline.delete + relationship: implementation.target-mapper + group: mef.sonata.api-target.order.eline.delete + - targetAssetKey: mef.sonata.api.matrix.order.eline.delete + relationship: implementation.matrix + group: mef.sonata.api-target.order.eline.delete \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml new file mode 100644 index 00000000..37e7c4a9 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml @@ -0,0 +1,266 @@ +--- +kind: kraken.component.api +apiVersion: v1 +metadata: + key: mef.sonata.api.poq + name: Product Offering Qualification (POQ) API Management + labels: + mef-api-release: grace + poq-api-version: v7 + version: 3 +spec: + supportedProductTypesAndActions: + - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification + method: post + actionTypes: + - add + productTypes: + - UNI + - ACCESS_E_LINE + - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} + method: get + productTypes: + - UNI + - ACCESS_E_LINE + mappings: + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification + method: post + metadata: + cacheRequestBody: true + actions: + - id: calculate_poq_order_type_and_action_via_javascript + actionType: engine@javascript + env: + productOfferingQualificationItem: ${body['productOfferingQualificationItem'][0]} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + if(input.productOfferingQualificationItem['product']['productConfiguration']['@type'] == 'UNI') { + targetAPIConfigKey = 'mef.sonata.api-target.poq.uni.add'; + } else if(input.productOfferingQualificationItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE') { + targetAPIConfigKey = 'mef.sonata.api-target.poq.eline.add'; + } else { + targetAPIConfigKey = 'targetKey:notFound'; + } + let ret = { + productOfferingType: input.productOfferingQualificationItem['product']['productConfiguration']['@type'], + targetAPIConfigKey: targetAPIConfigKey + }; + return JSON.stringify(ret); + } + outputKey: productOfferingQualification + + - id: persist_http_request + actionType: buildin@db + env: + bizType: ${productOfferingQualification.productOfferingType} + with: + action: create + properties: + - headers + - queryParameters + - requestBody + preRequest: true + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${productOfferingQualification.targetAPIConfigKey} + mefQuery: ${query} + mefRequestBody: ${body} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-request-body-for-poq-add + actionType: buildin@modify-request-body + env: + code: ${targetApiConfig.endpoints[0].requestBody} + + - id: modify-response-body-for-poq-add + actionType: buildin@modify-response-body + with: + engine: spel + successStatus: 201 + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + mefRequestBody: ${body} + + - actionType: buildin@db + with: + action: update + properties: + - responseBody + - responseStatusCode + preRequest: false + postRequest: true + order: -4 + + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/** + method: get + metadata: + cacheRequestBody: false + actions: + - name: retrieve productOfferingQualification Identifier from path + actionType: buildin@pattern + env: + input: ${path} + pattern: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/(?.*) + + - id: read request payload by id + actionType: buildin@db + env: + id: ${segment} + with: + action: read + preRequest: true + + - id: calculate_product_offering_type_read_via_javascript + actionType: engine@javascript + env: + bizType: ${entity.bizType} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + if(input.bizType == 'UNI') { + targetAPIConfigKey = 'mef.sonata.api-target.poq.uni.read'; + } else if(input.bizType == 'ACCESS_E_LINE') { + targetAPIConfigKey = 'mef.sonata.api-target.poq.eline.read'; + } else { + targetAPIConfigKey = 'notImplemented'; + } + let ret = { + productOfferingType: input.bizType, + targetAPIConfigKey: targetAPIConfigKey + }; + return JSON.stringify(ret); + } + outputKey: productOfferingQualification + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${productOfferingQualification.targetAPIConfigKey} + mefQuery: ${query} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-request-body + actionType: buildin@modify-request-body + env: + code: ${targetApiConfig.endpoints[0].requestBody} + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + + - trigger: + path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/hub + method: post + metadata: + cacheRequestBody: true + actions: + + - id: calculate_poq_event_types_via_javascript + actionType: engine@javascript + env: + query: ${body.query} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let query = input.query; + let arr = query.split("="); + let eventArr = arr[1].split(","); + let ret = { + "eventTypes": eventArr, + "targetAPIConfigKey": "mef.sonata.api-target.hub.add" + }; + return JSON.stringify(ret); + } + outputKey: event + - id: register-poq-event + actionType: buildin@register-event + env: + eventTypes: ${event.eventTypes} + with: + action: register + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${event.targetAPIConfigKey} + mefRequestBody: ${body} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: mock-response + actionType: buildin@mock-response + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} +links: + - targetAssetKey: mef.sonata.api-target.poq.eline.add + relationship: implementation.target + group: mef.sonata.api-target.poq.eline.add + - targetAssetKey: mef.sonata.api-target.poq.eline.read + relationship: implementation.target + group: mef.sonata.api-target.poq.eline.read + - targetAssetKey: mef.sonata.api-target.poq.uni.add + relationship: implementation.target + group: mef.sonata.api-target.poq.uni.add + - targetAssetKey: mef.sonata.api-target.poq.uni.read + relationship: implementation.target + group: mef.sonata.api-target.poq.uni.read + - targetAssetKey: mef.sonata.api-target-mapper.poq.eline.add + relationship: implementation.target-mapper + group: mef.sonata.api-target.poq.eline.add + - targetAssetKey: mef.sonata.api-target-mapper.poq.eline.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.poq.eline.read + - targetAssetKey: mef.sonata.api-target-mapper.poq.uni.add + relationship: implementation.target-mapper + group: mef.sonata.api-target.poq.uni.add + - targetAssetKey: mef.sonata.api-target-mapper.poq.uni.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.poq.uni.read + - targetAssetKey: mef.sonata.api-spec.product.offering.qualification + relationship: implementation.standard.api-spec \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml new file mode 100644 index 00000000..382ba0c0 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml @@ -0,0 +1,344 @@ +--- +kind: kraken.component.api +apiVersion: v1 +metadata: + key: mef.sonata.api.quote + name: Quote Management + labels: + mef-api-release: grace + quote-api-version: v8 + version: 8 +spec: + supportedProductTypesAndActions: + - path: /mefApi/sonata/quoteManagement/v8/quote + method: post + actionTypes: + - add + productTypes: + - UNI + - ACCESS_E_LINE + - path: /mefApi/sonata/quoteManagement/v8/quote/{id} + method: get + productTypes: + - UNI + - ACCESS_E_LINE + mappings: + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote + method: post + metadata: + cacheRequestBody: true + actions: + - id: calculate_quote_type_and_action_via_javascript + actionType: engine@javascript + env: + quoteItem: ${body['quoteItem'][0]} + instantSyncQuote: ${body.instantSyncQuote} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + let forwardDownstream = true; + if(input.quoteItem['product']['productConfiguration']['@type'] == 'UNI') { + if(input.instantSyncQuote === true) { + targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.add.sync'; + matrixConfigKey = 'mef.sonata.api.matrix.quote.uni.add.sync' + } else { + targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.add'; + matrixConfigKey = 'mef.sonata.api.matrix.quote.uni.add' + } + } else if(input.quoteItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE') { + if(input.instantSyncQuote === true) { + targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.add.sync'; + matrixConfigKey = 'mef.sonata.api.matrix.quote.eline.add.sync' + } else { + targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.add'; + matrixConfigKey = 'mef.sonata.api.matrix.quote.eline.add' + } + } else { + targetAPIConfigKey = 'targetKey:notFound'; + } + let ret = { + quoteType: input.quoteItem['product']['productConfiguration']['@type'], + instantSyncQuote: input.instantSyncQuote, + forwardDownstream: forwardDownstream, + targetAPIConfigKey: targetAPIConfigKey, + matrixConfigKey: matrixConfigKey + }; + return JSON.stringify(ret); + } + outputKey: quote + + - id: mapping_matrix_check_quote + actionType: buildin@mapping-matrix-checker + env: + mappingMatrixKey: ${quote.matrixConfigKey} + targetKey: ${quote.targetAPIConfigKey} + - id: persist_http_request + actionType: buildin@db + env: + bizType: ${quote.quoteType} + with: + action: create + properties: + - headers + - queryParameters + - requestBody + preRequest: true + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${quote.targetAPIConfigKey} + mefQuery: ${query} + mefRequestBody: ${body} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: modify-request-body-for-quote-add + actionType: buildin@modify-request-body + env: + code: ${targetApiConfig.endpoints[0].requestBody} + + - id: modify-response-body-for-quote-add + actionType: buildin@modify-response-body + with: + engine: spel + successStatus: 201 + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + mefRequestBody: ${body} + postResultRender: true + + - actionType: buildin@db + with: + action: update + properties: + - responseBody + - responseStatusCode + - renderedResponseBody + preRequest: false + postRequest: true + order: -4 + + - uri: ${env.target.url} + trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/** + method: get + metadata: + cacheRequestBody: false + actions: + - name: retrieve quoteId from path + actionType: buildin@pattern + env: + input: ${path} + pattern: /mefApi/sonata/quoteManagement/v8/quote/(?.*) + + - id: read request payload by id + actionType: buildin@db + env: + id: ${segment} + blankIdErrMsg: "quote id cannot be blank" + notExistedErrMsg: "quote id does not exist" + with: + action: read + preRequest: true + + - id: calculate_quote_type_for_read_via_javascript + actionType: engine@javascript + env: + bizType: ${entity.bizType} + instantSyncQuote: ${entity.request.instantSyncQuote} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let targetAPIConfigKey = ''; + let forwardDownstream = true; + if(input.bizType == 'UNI') { + if(input.instantSyncQuote === true) { + targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.read.sync'; + forwardDownstream = false; + } else { + targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.read'; + } + } else if(input.bizType == 'ACCESS_E_LINE') { + if(input.instantSyncQuote === true) { + targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.read.sync'; + forwardDownstream = false; + } else { + targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.read'; + } + } else { + targetAPIConfigKey = 'targetKey:notFound'; + } + let ret = { + quoteType: input.bizType, + instantSyncQuote: input.instantSyncQuote, + forwardDownstream: forwardDownstream, + targetAPIConfigKey: targetAPIConfigKey + }; + return JSON.stringify(ret); + } + outputKey: quote + - id: load-downstream-api-config-quote-read + actionType: buildin@load-target-api-config + env: + configKey: ${quote.targetAPIConfigKey} + mefQuery: ${query} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: rewrite-path + actionType: buildin@rewrite-path + env: + path: ${targetApiConfig.endpoints[0].path} + method: ${targetApiConfig.endpoints[0].method} + + - id: mock-response + actionType: buildin@mock-response + env: + forwardDownstream: ${quote.forwardDownstream} + + - id: modify-request-body + actionType: buildin@modify-request-body + env: + code: ${targetApiConfig.endpoints[0].requestBody} + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} + - trigger: + path: /mefApi/sonata/quoteManagement/v8/quote/hub + method: post + metadata: + cacheRequestBody: true + actions: + - id: calculate_quote_event_types_via_javascript + actionType: engine@javascript + env: + query: ${body.query} + with: + code: | + (jsonStr) => { + console.log("input: " + jsonStr); + let input = JSON.parse(jsonStr); + let query = input.query; + let arr = query.split("="); + let eventArr = arr[1].split(","); + let ret = { + "eventTypes": eventArr, + "targetAPIConfigKey": "mef.sonata.api-target.hub.add" + }; + return JSON.stringify(ret); + } + outputKey: event + - id: register-quote-event + actionType: buildin@register-event + env: + eventTypes: ${event.eventTypes} + with: + action: register + + - id: load-downstream-api-config + actionType: buildin@load-target-api-config + env: + configKey: ${event.targetAPIConfigKey} + mefRequestBody: ${body} + entity: ${entity} + with: + render: true + outputKey: targetApiConfig + + - id: mock-response + actionType: buildin@mock-response + + - id: modify-response-body + actionType: buildin@modify-response-body + with: + engine: spel + env: + code: ${targetApiConfig.endpoints[0].responseBody} + inputs: ${targetApiConfig.inputs} +links: + - targetAssetKey: mef.sonata.api-target.quote.eline.add + relationship: implementation.target + group: mef.sonata.api-target.quote.eline.add + - targetAssetKey: mef.sonata.api-target.quote.eline.read + relationship: implementation.target + group: mef.sonata.api-target.quote.eline.read + - targetAssetKey: mef.sonata.api-target.quote.uni.add + relationship: implementation.target + group: mef.sonata.api-target.quote.uni.add + - targetAssetKey: mef.sonata.api-target.quote.uni.read + relationship: implementation.target + group: mef.sonata.api-target.quote.uni.read + - targetAssetKey: mef.sonata.api-target.quote.eline.add.sync + relationship: implementation.target + group: mef.sonata.api-target.quote.eline.add.sync + - targetAssetKey: mef.sonata.api-target.quote.eline.read.sync + relationship: implementation.target + group: mef.sonata.api-target.quote.eline.read.sync + - targetAssetKey: mef.sonata.api-target.quote.uni.add.sync + relationship: implementation.target + group: mef.sonata.api-target.quote.uni.add.sync + - targetAssetKey: mef.sonata.api-target.quote.uni.read.sync + relationship: implementation.target + group: mef.sonata.api-target.quote.uni.read.sync + - targetAssetKey: mef.sonata.api-spec.quote + relationship: implementation.standard.api-spec + - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.add + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.eline.add + - targetAssetKey: mef.sonata.api.matrix.quote.eline.add + relationship: implementation.matrix + group: mef.sonata.api-target.quote.eline.add + - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.add + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.uni.add + - targetAssetKey: mef.sonata.api.matrix.quote.uni.add + relationship: implementation.matrix + group: mef.sonata.api-target.quote.uni.add + - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.uni.read + - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.read + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.eline.read + - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.add.sync + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.eline.add.sync + - targetAssetKey: mef.sonata.api.matrix.quote.eline.add.sync + relationship: implementation.matrix + group: mef.sonata.api-target.quote.eline.add.sync + - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.add.sync + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.uni.add.sync + - targetAssetKey: mef.sonata.api.matrix.quote.uni.add.sync + relationship: implementation.matrix + group: mef.sonata.api-target.quote.uni.add.sync + - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.read.sync + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.uni.read.sync + - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.read.sync + relationship: implementation.target-mapper + group: mef.sonata.api-target.quote.eline.read.sync \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml new file mode 100644 index 00000000..ed3a8d64 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml @@ -0,0 +1,42 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.address.validation + name: MEF Sonata API + labels: + mef-api-release: grace + version: 10 +spec: + matrix: + mef.sonata.api-target.address.validate: + - name: provide_alternative_true + path: "$.body.provideAlternative" + expectType: EXPECTED + value: true + - name: address_type_FieldedAddress + path: "$.body.submittedGeographicAddress.['@type']" + expectType: EXPECTED + value: FieldedAddress + code: 400 + - name: address_submittedGeographicAddress_country + path: "$.body.submittedGeographicAddress.['country']" + expectType: EXPECTED_TRUE + value: "${param}" + errorMsg: "submittedGeographicAddress.country can not be null" + code: 400 + - name: address_submittedGeographicAddress_city + path: "$.body.submittedGeographicAddress.['city']" + expectType: EXPECTED_TRUE + value: "${param}" + code: 400 + errorMsg: "submittedGeographicAddress.city can not be null" + - name: address_submittedGeographicAddress_streetName + path: "$.body.submittedGeographicAddress.['streetName']" + expectType: EXPECTED_TRUE + value: "${param}" + errorMsg: "submittedGeographicAddress.streetName can not be null" + code: 400 + + + diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml new file mode 100644 index 00000000..e81e9d0c --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml @@ -0,0 +1,16 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.inventory.eline.list + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.inventory.eline.list: + - name: productOrderId + path: "$.query.productOrderId" + expectType: EXPECTED_EXIST + value: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml new file mode 100644 index 00000000..771efeb6 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml @@ -0,0 +1,20 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.inventory.eline.read + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.inventory.eline.read: + - name: query_productType + path: "$.query.productType" + expectType: EXPECTED_EXIST + value: true + - name: query_buyerId + path: "$.query.buyerId" + expectType: EXPECTED_EXIST + value: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml new file mode 100644 index 00000000..055f0e33 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml @@ -0,0 +1,16 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.inventory.uni.list + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.inventory.uni.list: + - name: productOrderId + path: "$.query.productOrderId" + expectType: EXPECTED_EXIST + value: true diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml new file mode 100644 index 00000000..dd26ea16 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml @@ -0,0 +1,20 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.inventory.uni.read + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.inventory.uni.read: + - name: query_productType + path: "$.query.productType" + expectType: EXPECTED_EXIST + value: true + - name: query_buyerId + path: "$.query.buyerId" + expectType: EXPECTED_EXIST + value: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml new file mode 100644 index 00000000..2e477951 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml @@ -0,0 +1,60 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.order.eline.add + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.order.eline.add: + - name: product_type_eline_type + path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: ACCESS_E_LINE + - name: action_add + path: "$.body.productOrderItem[*].['action']" + expectType: EXPECTED + value: add + - name: relatedContactInformation_emailAddress + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.emailAddress} + errorMsg: "relatedContactInformation.emailAddress should exist in request" + - name: relatedContactInformation_name + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.name} + errorMsg: "relatedContactInformation.name should exist in request" + - name: relatedContactInformation_number + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.number} + errorMsg: "relatedContactInformation.number should exist in request" + - name: relatedContactInformation_role + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.role} + errorMsg: "relatedContactInformation.role should exist in request" + - name: productOrderItem_id + path: "$.body.productOrderItem[0].id" + expectType: EXPECTED_EXIST + value: true + errorMsg: "productOrderItem.id should exist in request" + - name: productOrderItem_requestedItemTerm_name + path: "$.body.productOrderItem[0].requestedItemTerm.name" + expectType: EXPECTED_EXIST + value: true + errorMsg: "requestedItemTerm.name should exist in request" + - name: productRelationship_relationshipType_0 + path: "$.body.productOrderItem[0].product.productRelationship[0].relationshipType" + expectType: EXPECTED_EXIST + value: true + errorMsg: "productRelationship[0].relationshipType should exist in request" + - name: productRelationship_relationshipType_1 + path: "$.body.productOrderItem[0].product.productRelationship[1].relationshipType" + expectType: EXPECTED_EXIST + value: true + errorMsg: "productRelationship[1].relationshipType should exist in request" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml new file mode 100644 index 00000000..b81b7775 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml @@ -0,0 +1,45 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.order.eline.delete + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.order.eline.delete: + - name: product_type_eline + path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: ACCESS_E_LINE + - name: action_delete + path: "$.body.productOrderItem[*].['action']" + expectType: EXPECTED + value: delete + - name: relatedContactInformation_emailAddress + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.emailAddress} + errorMsg: "relatedContactInformation.emailAddress should exist in request" + - name: relatedContactInformation_name + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.name} + errorMsg: "relatedContactInformation.name should exist in request" + - name: relatedContactInformation_number + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.number} + errorMsg: "relatedContactInformation.number should exist in request" + - name: relatedContactInformation_role + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.role} + errorMsg: "relatedContactInformation.role should exist in request" + - name: productOrderItem_id + path: "$.body.productOrderItem[0].id" + expectType: EXPECTED_EXIST + value: true + errorMsg: "productOrderItem.id should exist in request" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml new file mode 100644 index 00000000..d76ac96b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml @@ -0,0 +1,57 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.order.uni.add + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.order.uni.add: + - name: product_type_UNI + path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: UNI + - name: action_add + path: "$.body.productOrderItem[*].['action']" + expectType: EXPECTED + value: add + - name: productOrderItem_product_place_role + path: "$.body.productOrderItem[0].product.place[0].role" + expectType: EXPECTED_EXIST + value: true + - name: productOrderItem_product_place_@type + path: "$.body.productOrderItem[0].product.place[0].@type" + expectType: EXPECTED_EXIST + value: true + - name: relatedContactInformation_emailAddress + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.emailAddress} + errorMsg: "relatedContactInformation.emailAddress should exist in request" + - name: relatedContactInformation_name + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.name} + errorMsg: "relatedContactInformation.name should exist in request" + - name: relatedContactInformation_number + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.number} + errorMsg: "relatedContactInformation.number should exist in request" + - name: relatedContactInformation_role + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.role} + errorMsg: "relatedContactInformation.role should exist in request" + - name: productOrderItem_id + path: "$.body.productOrderItem[0].id" + expectType: EXPECTED_EXIST + value: true + errorMsg: "productOrderItem.id should exist in request" + - name: productOrderItem_requestedItemTerm_name + path: "$.body.productOrderItem[0].requestedItemTerm.name" + expectType: EXPECTED_EXIST + value: true diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml new file mode 100644 index 00000000..c57218d4 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml @@ -0,0 +1,45 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.order.uni.delete + name: MEF Sonata API + labels: + mef-api-release: grace + version: 18 +spec: + matrix: + mef.sonata.api-target.order.uni.delete: + - name: product_type_uni + path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: UNI + - name: action_delete + path: "$.body.productOrderItem[*].['action']" + expectType: EXPECTED + value: delete + - name: relatedContactInformation_emailAddress + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.emailAddress} + errorMsg: "relatedContactInformation.emailAddress should exist in request" + - name: relatedContactInformation_name + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.name} + errorMsg: "relatedContactInformation.name should exist in request" + - name: relatedContactInformation_number + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.number} + errorMsg: "relatedContactInformation.number should exist in request" + - name: relatedContactInformation_role + path: "$.body.relatedContactInformation[*]" + expectType: EXPECTED_TRUE + value: ${param.role} + errorMsg: "relatedContactInformation.role should exist in request" + - name: productOrderItem_id + path: "$.body.productOrderItem[0].id" + expectType: EXPECTED_EXIST + value: true + errorMsg: "productOrderItem.id should exist in request" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml new file mode 100644 index 00000000..f088c02c --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml @@ -0,0 +1,36 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.quote.eline.add.sync + name: MEF Sonata API + labels: + mef-api-release: grace + version: 14 +spec: + matrix: + mef.sonata.api-target.quote.eline.add.sync: + - name: product_type_eline + path: "$.body.quoteItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: ACCESS_E_LINE + - name: action_add + path: "$.body.quoteItem[*].['action']" + expectType: EXPECTED + value: add + - name: syn_mode_true + path: "$.body.instantSyncQuote" + expectType: EXPECTED + value: true + - name: buyer.requested.quote.level.firm + path: "$.body.buyerRequestedQuoteLevel" + expectType: EXPECTED + value: firm + - name: quoteItem[0].product.place[0].role + path: "$.body.quoteItem[0].product.place[0].role" + expectType: EXPECTED + value: INSTALL_LOCATION + - name: quoteItem[0].product.place[0].@type + path: "$.body.quoteItem[0].product.place[0].@type" + expectType: EXPECTED + value: GeographicAddressRef \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml new file mode 100644 index 00000000..4bc3d050 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml @@ -0,0 +1,31 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.quote.eline.add + name: MEF Sonata API + labels: + mef-api-release: grace + version: 14 +spec: + matrix: + mef.sonata.api-target.quote.eline.add: + - name: enabled + expectType: EXPECTED + value: false + - name: product_type_eline + path: "$.body.quoteItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: ACCESS_E_LINE + - name: action_add + path: "$.body.quoteItem[*].['action']" + expectType: EXPECTED + value: add + - name: syn_mode_false + path: "$.body.instantSyncQuote" + expectType: EXPECTED + value: false + - name: buyer.requested.quote.level.firm + path: "$.body.buyerRequestedQuoteLevel" + expectType: EXPECTED + value: firm diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml new file mode 100644 index 00000000..91b7ad0e --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml @@ -0,0 +1,36 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.quote.uni.add.sync + name: MEF Sonata API + labels: + mef-api-release: grace + version: 14 +spec: + matrix: + mef.sonata.api-target.quote.uni.add.sync: + - name: product_type_UNI + path: "$.body.quoteItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: UNI + - name: action_add + path: "$.body.quoteItem[*].['action']" + expectType: EXPECTED + value: add + - name: syn_mode_true + path: "$.body.instantSyncQuote" + expectType: EXPECTED + value: true + - name: buyer.requested.quote.level.firm + path: "$.body.buyerRequestedQuoteLevel" + expectType: EXPECTED + value: firm + - name: quoteItem[0].product.place[0].role + path: "$.body.quoteItem[0].product.place[0].role" + expectType: EXPECTED + value: INSTALL_LOCATION + - name: quoteItem[0].product.place[0].@type + path: "$.body.quoteItem[0].product.place[0].@type" + expectType: EXPECTED + value: GeographicAddressRef diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml new file mode 100644 index 00000000..52657801 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml @@ -0,0 +1,31 @@ +--- +kind: kraken.product.mapping.matrix +apiVersion: v1 +metadata: + key: mef.sonata.api.matrix.quote.uni.add + name: MEF Sonata API + labels: + mef-api-release: grace + version: 14 +spec: + matrix: + mef.sonata.api-target.quote.uni.add: + - name: enabled + expectType: EXPECTED + value: false + - name: product_type_UNI + path: "$.body.quoteItem[*].product.productConfiguration.['@type']" + expectType: EXPECTED + value: UNI + - name: action_add + path: "$.body.quoteItem[*].['action']" + expectType: EXPECTED + value: add + - name: syn_mode_false + path: "$.body.instantSyncQuote" + expectType: EXPECTED + value: false + - name: buyer.requested.quote.level.firm + path: "$.body.buyerRequestedQuoteLevel" + expectType: EXPECTED + value: firm diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml new file mode 100644 index 00000000..f744c8cc --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml @@ -0,0 +1,734 @@ +openapi: 3.0.1 +info: + description: | + **This file forms part of MEF 121** + + This API implements Business Requirements described in MEF 79 + + It allows the Buyer to retrieve address information from the Seller, including + exact formats, for addresses known to the Seller. + + List of supported use cases: + + - Validate Address + - Retrieve Address by Identifier + + Copyright 2021 MEF Forum and its contributors + + This file includes content based on the TM Forum Geographic Address API + (TMF673 v4.0.1) available at + https://github.com/tmforum-apis/TMF673_GeographicAddress, which is licensed + by the TM Forum under the Apache License version 2.0. Such content has been + modified by the MEF Forum and its contributors. + + + title: Geographic Address Management + version: 7.0.1 +servers: + - url: 'https://{serverBase}/mefApi/sonata/geographicAddressManagement/v7/' + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +tags: + - name: geographicAddressValidation + - name: geographicAddress + - name: events subscription +paths: + /geographicAddressValidation: + post: + description: This operation creates a GeographicAddressValidation entity. + operationId: createGeographicAddressValidation + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/GeographicAddressValidation_Create' + description: The GeographicAddressValidation to be created + required: true + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/GeographicAddressValidation' + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: + Unprocessable entity due to the business validation problems + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Creates a GeographicAddressValidation + tags: + - geographicAddressValidation + x-codegen-request-body-name: geographicAddressValidation + '/geographicAddress/{id}': + get: + description: >- + This operation retrieves a GeographicAddress entity. + operationId: retrieveGeographicAddress + parameters: + - description: Identifier of the GeographicAddress + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/GeographicAddress' + description: OK + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Retrieves a GeographicAddress by ID + tags: + - geographicAddress +components: + schemas: + Error400Code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required query-string + parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + type: string + Error: + description: > + Standard Class used to describe API response error Not intended to be + used directly. The `code` in the HTTP header is used as a discriminator + for the type of error returned in runtime. + properties: + reason: + description: >- + Text that explains the reason for error. This can be shown to a + client user. + maxLength: 255 + type: string + message: + description: >- + Text that provides mode details and corrective actions related to + the error. This can be shown to a client user. + type: string + referenceError: + description: URL pointing to documentation describing the error + format: uri + type: string + required: + - reason + type: object + Error400: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error400Code' + required: + - code + type: object + description: + 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' + Error401: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error401Code' + required: + - code + type: object + description: + 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' + Error401Code: + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + type: string + Error403: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error403Code' + required: + - code + type: object + description: + 'Forbidden. (https://tools.ietf.org/html/rfc7231#section-6.5.3)' + Error403Code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + type: string + Error404: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - notFound: A current representation for the target resource + not found + enum: + - notFound + type: string + required: + - code + type: object + description: >- + Resource for the requested path not found. + (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error422: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused + the validation issue. It is highly recommended that this + property should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + required: + - code + type: object + description: >- + Unprocessable entity due to a business validation problem. + (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + type: string + Error500: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - internalError: Internal server error - the server encountered + an unexpected condition that prevented it from fulfilling the + request. + enum: + - internalError + type: string + required: + - code + type: object + description: >- + Internal Server Error. + (https://tools.ietf.org/html/rfc7231#section-6.6.1) + FieldedAddress: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + country: + description: The country that the address is in + type: string + streetType: + description: >- + The type of street (e.g., alley, avenue, boulevard, brae, + crescent, drive, highway, lane, terrace, parade, place, tarn, + way, wharf) + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in a US urban property address + type: string + city: + description: The city that the address is in + type: string + streetNr: + description: >- + Number identifying a specific property on a public street. It + may be combined with streetNrLast for ranged addresses. MEF 79 + defines it as required however as in certain countries it is + not used we make it optional in API. + type: string + locality: + description: The locality that the address is in + type: string + postcode: + description: >- + A descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as zip code) MEF 79 + defines it as required however as in certain countries it is + not used we make it optional in API. + type: string + streetNrLast: + description: + Last number in a range of street numbers allocated to a + property + type: string + streetNrSuffix: + description: The first street number suffix + type: string + streetName: + description: Name of the street or other street type + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + streetNrLastSuffix: + description: Last street number suffix for a ranged address + type: string + geographicSubAddress: + $ref: '#/components/schemas/GeographicSubAddress' + description: + Additional fields used to specify an address, as detailed as + possible. + streetSuffix: + description: A modifier denoting a relative direction + type: string + required: + - city + - country + - streetName + type: object + description: >- + A type of Address that has a discrete field and value for each type of + boundary or identifier down to the lowest level of detail. For example + "street number" is one field, "street name" is another field, etc. + Reference: MEF 79 (Sn 8.9.2) + FormattedAddress: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + country: + description: The country that the address is in + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in a US urban property address + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + city: + description: The city that the address is in + type: string + addrLine2: + description: The second address line in a formatted address + type: string + addrLine1: + description: The first address line in a formatted address + type: string + locality: + description: >- + An area of defined or undefined boundaries within a local + authority or other legislatively defined area, usually rural or + semi-rural in nature + type: string + postcode: + description: >- + A descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as ZIP code) + type: string + required: + - addrLine1 + - city + - country + type: object + description: >- + A type of Address that has discrete fields for each type of boundary or + identifier with the exception of street and more specific location + details, which are combined into a maximum of two strings based on + local postal addressing conventions. Reference: MEF 79 (Sn 8.9.3) + GeographicAddress: + description: >- + Structured textual way of describing how to find a property in an urban + area (country properties are often defined differently). + + Note: Address corresponds to SID UrbanPropertyAddress + discriminator: + mapping: + FieldedAddress: '#/components/schemas/FieldedAddress' + FormattedAddress: '#/components/schemas/FormattedAddress' + MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' + GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' + propertyName: '@type' + properties: + hasPublicSite: + description: >- + This attribute specifies if that Address contains Service Sites + that are public such as Meet-Me-Rooms at an interconnect location + or a shared telecom room in the basement of a multi-tenant building + readOnly: true + type: boolean + '@type': + description: > + This field is used as discriminator. The value is the name of one + of the types that inherit from it using 'allOf', i.e. one of + FieldedAddress, FormattedAddress, GeographicAddressLabel, + MEFGeographicPoint. Moreover, it might discriminate for an + additional related place as defined in '@schemaLocation'. + type: string + allowsNewSite: + description: >- + This attribute specifies if a Buyer must use one of the known + existing Service Sites at this location for any Products delivered + to this Address. For example, if a particular building owner + mandated that all interconnects be done in a shared Public + Meet-Me-Room, this attribute would be set to False for that + Address. + readOnly: true + type: boolean + id: + description: Unique identifier of the place + readOnly: true + type: string + href: + description: Unique reference of the place + readOnly: true + type: string + '@schemaLocation': + description: >- + A URI to a JSON-Schema file that defines additional attributes and + relationships. May be used to define additional GeographicAddress + types. Usage of this attribute must be agreed upon between Buyer + and Seller. + format: uri + type: string + associatedGeographicAddress: + $ref: '#/components/schemas/FieldedAddress' + readOnly: true + description: + A Fielded Address that is associated with the Geographic Point or + the Geographic Address Label. + required: + - '@type' + type: object + GeographicAddressLabel: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + externalReferenceId: + description: >- + The unique reference to an Address as provided by the + Administrative Authority. + type: string + externalReferenceType: + description: >- + The organization or standard from the organization that + administers this Geographic Address Label ensuring it is unique + within the Administrative Authority. The value(s) to be used + are to be agreed during the onboarding. For North American + providers this would normally be CLLI (Common Language Location + Identifier) code. + type: string + required: + - externalReferenceId + - externalReferenceType + type: object + description: >- + A unique identifier controlled by a generally accepted independent + administrative authority that specifies a fixed geographical location. + + Reference: MEF 79 (Sn 8.9.4) + GeographicAddressValidation: + description: This resource is used to manage address validation response. + properties: + validationResult: + $ref: '#/components/schemas/MEFValidationResultType' + description: + Result of the address validation (success, partial, fail) + alternateGeographicAddress: + items: + $ref: '#/components/schemas/GeographicAddress' + type: array + description: | + An array of zero or more Addresses known to the Seller that are + considered by the Seller to match the submittedGeographicAddress. + Not including the bestMatchAddress. MEF: Alternatives should be + provided regardless of whether best match was found. + provideAlternative: + description: > + Indicator provided by the requester to specify if alternate + addresses must be provided in case of partial or fail result. MEF: + The attribute is kept for TMF API compliance. MEF requires this + attribute always to be set to 'true'. Alternatives should be + provided regardless of whether best match was found. The Seller is + allowed not to implement the support for 'false' + type: boolean + submittedGeographicAddress: + $ref: '#/components/schemas/GeographicAddress' + description: + 'The address as submitted to validation. MEF: Structure used by the + buyer to request geographic address validation' + bestMatchGeographicAddress: + $ref: '#/components/schemas/GeographicAddress' + description: + Represents that the Seller is confident this is likely a direct + match to the submittedGeographicAddress + required: + - provideAlternative + - submittedGeographicAddress + type: object + GeographicAddressValidation_Create: + description: >- + This resource is used to manage address validation request. + + + Skipped properties: alternateGeographicAddress, + bestMatchGeographicAddress, validationResult. + properties: + provideAlternative: + description: > + Indicator provided by the requester to specify if alternate + addresses must be provided in case of partial or fail result. MEF: + The attribute is kept for TMF API compliance. MEF requires this + attribute always to be set to 'true'. Alternatives should be + provided regardless of whether best match was found. The Seller is + allowed not to implement the support for 'false' + type: boolean + submittedGeographicAddress: + $ref: '#/components/schemas/GeographicAddress' + description: + 'The address as submitted to validation. MEF: Structure used by the + buyer to request geographic address validation' + required: + - provideAlternative + - submittedGeographicAddress + type: object + GeographicSubAddress: + description: + 'Additional fields used to specify an address, as detailed as possible.' + properties: + buildingName: + description: > + Allows for identification of places that require building name as + part of addressing information + type: string + subUnit: + description: >- + Representation of a MEFSubUnit It is used for describing subunit + within a subAddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + items: + $ref: '#/components/schemas/MEFSubUnit' + type: array + levelType: + description: Describes level types within a building + type: string + levelNumber: + description: + 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT + 2' + type: string + privateStreetNumber: + description: Private streets numbers internal to a private street + type: string + privateStreetName: + description: >- + Private streets internal to a property (e.g. a university) may have + internal names that are not recorded by the land title office + type: string + type: object + MEFGeographicPoint: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + spatialRef: + description: >- + The spatial reference system used to determine the coordinates. + The system used and the value of this field are to be agreed + during the onboarding process. + type: string + x: + description: >- + The latitude expressed in the format specified by the + `spacialRef` + type: string + 'y': + description: >- + The longitude expressed in the format specified by the + `spacialRef` + type: string + z: + description: >- + The elevation expressed in the format specified by the + `spacialRef` + type: string + required: + - spatialRef + - x + - 'y' + type: object + description: > + A MEFGeographicPoint defines a geographic point through coordinates. + Reference: MEF 79 (Sn 8.9.5), MEF 79.0.2 (Sn 8.9.5) + MEFSubUnit: + description: Allows for sub unit identification + properties: + subUnitNumber: + description: >- + The discriminator used for the subunit, often just a simple number + but may also be a range. + type: string + subUnitType: + description: >- + The type of subunit e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + type: string + required: + - subUnitNumber + - subUnitType + type: object + MEFValidationResultType: + description: | + Result of the address validation: + - success - best match found, + - partial - no best match but alternatives available, + - fail - neither best match nor alternatives provided + enum: + - success + - partial + - fail + type: string diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml new file mode 100644 index 00000000..b14d15a8 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml @@ -0,0 +1,735 @@ +openapi: 3.0.1 +info: + description: | + **This file forms part of MEF 121** + + This API implements Business Requirements described in MEF 79 + + It allows the Buyer to retrieve address information from the Seller, including + exact formats, for addresses known to the Seller. + + List of supported use cases: + add some text + + - Validate Address + - Retrieve Address by Identifier + + Copyright 2021 MEF Forum and its contributors + + This file includes content based on the TM Forum Geographic Address API + (TMF673 v4.0.1) available at + https://github.com/tmforum-apis/TMF673_GeographicAddress, which is licensed + by the TM Forum under the Apache License version 2.0. Such content has been + modified by the MEF Forum and its contributors. + + + title: Geographic Address Management + version: 7.0.1 +servers: + - url: 'https://{serverBase}/mefApi/sonata/geographicAddressManagement/v7/' + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +tags: + - name: geographicAddressValidation + - name: geographicAddress + - name: events subscription +paths: + /geographicAddressValidation: + post: + description: This operation creates a GeographicAddressValidation entity. + operationId: createGeographicAddressValidation + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/GeographicAddressValidation_Create' + description: The GeographicAddressValidation to be created + required: true + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/GeographicAddressValidation' + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: + Unprocessable entity due to the business validation problems + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Creates a GeographicAddressValidation + tags: + - geographicAddressValidation + x-codegen-request-body-name: geographicAddressValidation + '/geographicAddress/{id}': + get: + description: >- + This operation retrieves a GeographicAddress entity. + operationId: retrieveGeographicAddress + parameters: + - description: Identifier of the GeographicAddress + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/GeographicAddress' + description: OK + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Retrieves a GeographicAddress by ID + tags: + - geographicAddress +components: + schemas: + Error400Code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required query-string + parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + type: string + Error: + description: > + Standard Class used to describe API response error Not intended to be + used directly. The `code` in the HTTP header is used as a discriminator + for the type of error returned in runtime. + properties: + reason: + description: >- + Text that explains the reason for error. This can be shown to a + client user. + maxLength: 255 + type: string + message: + description: >- + Text that provides mode details and corrective actions related to + the error. This can be shown to a client user. + type: string + referenceError: + description: URL pointing to documentation describing the error + format: uri + type: string + required: + - reason + type: object + Error400: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error400Code' + required: + - code + type: object + description: + 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' + Error401: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error401Code' + required: + - code + type: object + description: + 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' + Error401Code: + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + type: string + Error403: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error403Code' + required: + - code + type: object + description: + 'Forbidden. (https://tools.ietf.org/html/rfc7231#section-6.5.3)' + Error403Code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + type: string + Error404: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - notFound: A current representation for the target resource + not found + enum: + - notFound + type: string + required: + - code + type: object + description: >- + Resource for the requested path not found. + (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error422: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused + the validation issue. It is highly recommended that this + property should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + required: + - code + type: object + description: >- + Unprocessable entity due to a business validation problem. + (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + type: string + Error500: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - internalError: Internal server error - the server encountered + an unexpected condition that prevented it from fulfilling the + request. + enum: + - internalError + type: string + required: + - code + type: object + description: >- + Internal Server Error. + (https://tools.ietf.org/html/rfc7231#section-6.6.1) + FieldedAddress: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + country: + description: The country that the address is in + type: string + streetType: + description: >- + The type of street (e.g., alley, avenue, boulevard, brae, + crescent, drive, highway, lane, terrace, parade, place, tarn, + way, wharf) + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in a US urban property address + type: string + city: + description: The city that the address is in + type: string + streetNr: + description: >- + Number identifying a specific property on a public street. It + may be combined with streetNrLast for ranged addresses. MEF 79 + defines it as required however as in certain countries it is + not used we make it optional in API. + type: string + locality: + description: The locality that the address is in + type: string + postcode: + description: >- + A descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as zip code) MEF 79 + defines it as required however as in certain countries it is + not used we make it optional in API. + type: string + streetNrLast: + description: + Last number in a range of street numbers allocated to a + property + type: string + streetNrSuffix: + description: The first street number suffix + type: string + streetName: + description: Name of the street or other street type + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + streetNrLastSuffix: + description: Last street number suffix for a ranged address + type: string + geographicSubAddress: + $ref: '#/components/schemas/GeographicSubAddress' + description: + Additional fields used to specify an address, as detailed as + possible. + streetSuffix: + description: A modifier denoting a relative direction + type: string + required: + - city + - country + - streetName + type: object + description: >- + A type of Address that has a discrete field and value for each type of + boundary or identifier down to the lowest level of detail. For example + "street number" is one field, "street name" is another field, etc. + Reference: MEF 79 (Sn 8.9.2) + FormattedAddress: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + country: + description: The country that the address is in + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in a US urban property address + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + city: + description: The city that the address is in + type: string + addrLine2: + description: The second address line in a formatted address + type: string + addrLine1: + description: The first address line in a formatted address + type: string + locality: + description: >- + An area of defined or undefined boundaries within a local + authority or other legislatively defined area, usually rural or + semi-rural in nature + type: string + postcode: + description: >- + A descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as ZIP code) + type: string + required: + - addrLine1 + - city + - country + type: object + description: >- + A type of Address that has discrete fields for each type of boundary or + identifier with the exception of street and more specific location + details, which are combined into a maximum of two strings based on + local postal addressing conventions. Reference: MEF 79 (Sn 8.9.3) + GeographicAddress: + description: >- + Structured textual way of describing how to find a property in an urban + area (country properties are often defined differently). + + Note: Address corresponds to SID UrbanPropertyAddress + discriminator: + mapping: + FieldedAddress: '#/components/schemas/FieldedAddress' + FormattedAddress: '#/components/schemas/FormattedAddress' + MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' + GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' + propertyName: '@type' + properties: + hasPublicSite: + description: >- + This attribute specifies if that Address contains Service Sites + that are public such as Meet-Me-Rooms at an interconnect location + or a shared telecom room in the basement of a multi-tenant building + readOnly: true + type: boolean + '@type': + description: > + This field is used as discriminator. The value is the name of one + of the types that inherit from it using 'allOf', i.e. one of + FieldedAddress, FormattedAddress, GeographicAddressLabel, + MEFGeographicPoint. Moreover, it might discriminate for an + additional related place as defined in '@schemaLocation'. + type: string + allowsNewSite: + description: >- + This attribute specifies if a Buyer must use one of the known + existing Service Sites at this location for any Products delivered + to this Address. For example, if a particular building owner + mandated that all interconnects be done in a shared Public + Meet-Me-Room, this attribute would be set to False for that + Address. + readOnly: true + type: boolean + id: + description: Unique identifier of the place + readOnly: true + type: string + href: + description: Unique reference of the place + readOnly: true + type: string + '@schemaLocation': + description: >- + A URI to a JSON-Schema file that defines additional attributes and + relationships. May be used to define additional GeographicAddress + types. Usage of this attribute must be agreed upon between Buyer + and Seller. + format: uri + type: string + associatedGeographicAddress: + $ref: '#/components/schemas/FieldedAddress' + readOnly: true + description: + A Fielded Address that is associated with the Geographic Point or + the Geographic Address Label. + required: + - '@type' + type: object + GeographicAddressLabel: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + externalReferenceId: + description: >- + The unique reference to an Address as provided by the + Administrative Authority. + type: string + externalReferenceType: + description: >- + The organization or standard from the organization that + administers this Geographic Address Label ensuring it is unique + within the Administrative Authority. The value(s) to be used + are to be agreed during the onboarding. For North American + providers this would normally be CLLI (Common Language Location + Identifier) code. + type: string + required: + - externalReferenceId + - externalReferenceType + type: object + description: >- + A unique identifier controlled by a generally accepted independent + administrative authority that specifies a fixed geographical location. + + Reference: MEF 79 (Sn 8.9.4) + GeographicAddressValidation: + description: This resource is used to manage address validation response. + properties: + validationResult: + $ref: '#/components/schemas/MEFValidationResultType' + description: + Result of the address validation (success, partial, fail) + alternateGeographicAddress: + items: + $ref: '#/components/schemas/GeographicAddress' + type: array + description: | + An array of zero or more Addresses known to the Seller that are + considered by the Seller to match the submittedGeographicAddress. + Not including the bestMatchAddress. MEF: Alternatives should be + provided regardless of whether best match was found. + provideAlternative: + description: > + Indicator provided by the requester to specify if alternate + addresses must be provided in case of partial or fail result. MEF: + The attribute is kept for TMF API compliance. MEF requires this + attribute always to be set to 'true'. Alternatives should be + provided regardless of whether best match was found. The Seller is + allowed not to implement the support for 'false' + type: boolean + submittedGeographicAddress: + $ref: '#/components/schemas/GeographicAddress' + description: + 'The address as submitted to validation. MEF: Structure used by the + buyer to request geographic address validation' + bestMatchGeographicAddress: + $ref: '#/components/schemas/GeographicAddress' + description: + Represents that the Seller is confident this is likely a direct + match to the submittedGeographicAddress + required: + - provideAlternative + - submittedGeographicAddress + type: object + GeographicAddressValidation_Create: + description: >- + This resource is used to manage address validation request. + + + Skipped properties: alternateGeographicAddress, + bestMatchGeographicAddress, validationResult. + properties: + provideAlternative: + description: > + Indicator provided by the requester to specify if alternate + addresses must be provided in case of partial or fail result. MEF: + The attribute is kept for TMF API compliance. MEF requires this + attribute always to be set to 'true'. Alternatives should be + provided regardless of whether best match was found. The Seller is + allowed not to implement the support for 'false' + type: boolean + submittedGeographicAddress: + $ref: '#/components/schemas/GeographicAddress' + description: + 'The address as submitted to validation. MEF: Structure used by the + buyer to request geographic address validation' + required: + - provideAlternative + - submittedGeographicAddress + type: object + GeographicSubAddress: + description: + 'Additional fields used to specify an address, as detailed as possible.' + properties: + buildingName: + description: > + Allows for identification of places that require building name as + part of addressing information + type: string + subUnit: + description: >- + Representation of a MEFSubUnit It is used for describing subunit + within a subAddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + items: + $ref: '#/components/schemas/MEFSubUnit' + type: array + levelType: + description: Describes level types within a building + type: string + levelNumber: + description: + 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT + 2' + type: string + privateStreetNumber: + description: Private streets numbers internal to a private street + type: string + privateStreetName: + description: >- + Private streets internal to a property (e.g. a university) may have + internal names that are not recorded by the land title office + type: string + type: object + MEFGeographicPoint: + allOf: + - $ref: '#/components/schemas/GeographicAddress' + - properties: + spatialRef: + description: >- + The spatial reference system used to determine the coordinates. + The system used and the value of this field are to be agreed + during the onboarding process. + type: string + x: + description: >- + The latitude expressed in the format specified by the + `spacialRef` + type: string + 'y': + description: >- + The longitude expressed in the format specified by the + `spacialRef` + type: string + z: + description: >- + The elevation expressed in the format specified by the + `spacialRef` + type: string + required: + - spatialRef + - x + - 'y' + type: object + description: > + A MEFGeographicPoint defines a geographic point through coordinates. + Reference: MEF 79 (Sn 8.9.5), MEF 79.0.2 (Sn 8.9.5) + MEFSubUnit: + description: Allows for sub unit identification + properties: + subUnitNumber: + description: >- + The discriminator used for the subunit, often just a simple number + but may also be a range. + type: string + subUnitType: + description: >- + The type of subunit e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + type: string + required: + - subUnitNumber + - subUnitType + type: object + MEFValidationResultType: + description: | + Result of the address validation: + - success - best match found, + - partial - no best match but alternatives available, + - fail - neither best match nor alternatives provided + enum: + - success + - partial + - fail + type: string diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml new file mode 100644 index 00000000..c3594169 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml @@ -0,0 +1,1056 @@ +openapi: 3.0.1 +info: + description: | + **This file forms part of MEF 116** + + This API implements Business Requirements described in MEF 81 + + It allows the Buyer to retrieve the information about existing Product + instances from Seller's Product Inventory. + + List of supported use cases: + - Retrieve Product List + - Retrieve Product by Identifier + + Copyright 2021 MEF Forum and its contributors. + + This file includes content based on the TM Forum Product Inventory + Management API (TMF637 v4.0.0) available at + https://github.com/tmforum-apis/TMF637_ProductInventory, which is licensed + by the TM Forum under the Apache License version 2.0. Such content has been + modified by the MEF Forum and its contributors. + title: Product Inventory Management + version: 7.0.2 +servers: + - url: "https://{serverBase}/mefApi/sonata/productInventory/v7/" + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +security: + - oauth2MEFLSOAPI: + - default +tags: + - name: product + - name: events subscription +paths: + /product: + get: + description: This operation lists or finds Product entities + operationId: listProduct + parameters: + - description: The status of the product + in: query + name: status + required: false + schema: + type: string + enum: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + - description: A reference to a product spec by id + in: query + name: productSpecificationId + required: false + schema: + type: string + - description: A reference to a product offering by id + in: query + name: productOfferingId + required: false + schema: + type: string + - description: A reference to the externalId provided in the order + in: query + name: externalId + required: false + schema: + type: string + - description: A site identifier which is associated to the product + in: query + name: geographicalSiteId + required: false + schema: + type: string + - description: |- + This criteria allows to retrieve all Product records with a Product Relationship to a specified Product. + E.g. All Products related to Product with ID 5 + in: query + name: relatedProductId + required: false + schema: + type: string + - description: The Billing Account associated with the Product. + in: query + name: billingAccountId + required: false + schema: + type: string + - description: Identifies Product Order associated with the Product + in: query + name: productOrderId + required: false + schema: + type: string + - description: Less than the date that is the initial install date for the Product + in: query + name: startDate.lt + required: false + schema: + type: string + format: date-time + - description: + Greater than the date that is the initial install date for the + Product + in: query + name: startDate.gt + required: false + schema: + type: string + format: date-time + - description: + Less than date that the last change affecting this Product was + completed + in: query + name: lastUpdateDate.lt + required: false + schema: + type: string + format: date-time + - description: + Greater than the date that the last change affecting this Product + was completed + in: query + name: lastUpdateDate.gt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 81 (Sn 8.3) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 81 (Sn 8.3) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/MEFProduct_Find" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - listProduct + summary: List or find Product objects + tags: + - product + /product/{id}: + get: + description: This operation retrieves a Product entity. + operationId: retrieveProduct + parameters: + - description: Identifier of the Product + in: path + name: id + required: true + schema: + type: string + - description: Comma-separated properties to provide in response + in: query + name: fields + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 81 (Sn 8.3) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 81 (Sn 8.3) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProduct" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - retrieveProduct + summary: Retrieves a Product by ID + tags: + - product +components: + schemas: + Error400Code: + type: string + description: |- + One of the following error codes: + - missingQueryParameter: The URI is missing a required query-string parameter + - missingQueryValue: The URI is missing a required query-string parameter value + - invalidQuery: The query section of the URI is invalid. + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + Duration: + type: object + description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." + properties: + amount: + type: integer + description: "Duration (number of seconds, minutes, hours, etc.)" + units: + $ref: "#/components/schemas/TimeUnit" + required: + - amount + - units + Error: + type: object + description: | + Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. + properties: + reason: + type: string + description: + Text that explains the reason for the error. This can be shown + to a client user. + maxLength: 255 + message: + type: string + description: + Text that provides mode details and corrective actions related + to the error. This can be shown to a client user. + referenceError: + type: string + format: uri + description: URL pointing to documentation describing the error + required: + - reason + Error400: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error400Code" + required: + - code + description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) + Error401: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error401Code" + required: + - code + description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) + Error401Code: + type: string + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + Error403: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error403Code" + required: + - code + description: + Forbidden. This code indicates that the server understood the request + but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) + Error403Code: + type: string + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + Error404: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - notFound: A current representation for the target resource not found + enum: + - notFound + required: + - code + description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error422: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error422Code" + propertyPath: + type: string + description: | + A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. + Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). + required: + - code + description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + type: string + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + Error500: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. + enum: + - internalError + required: + - code + description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) + FieldedAddress: + type: object + description: + "A type of Address that has a discrete field and value for each\ + \ type of boundary or identifier down to the lowest level of detail. For example\ + \ \"street number\" is one field, \"street name\" is another field, etc. Reference:\ + \ MEF 79 (Sn 8.9.2)" + properties: + country: + type: string + description: Country that the address is in + streetType: + type: string + description: + "The type of street (e.g., alley, avenue, boulevard, brae,\ + \ crescent, drive, highway, lane, terrace, parade, place, tarn, way, wharf)" + postcodeExtension: + type: string + description: + An extension of a postal code. E.g. the part following the + dash in a US urban property address + city: + type: string + description: The city that the address is in + streetNr: + type: string + description: + Number identifying a specific property on a public street. + It may be combined with streetNrLast for ranged addresses. MEF 79 defines + it as required however as in certain countries it is not used we make + it optional in API. + locality: + type: string + description: The locality that the address is in + postcode: + type: string + description: + "Descriptor for a postal delivery area, used to speed and simplify\ + \ the delivery of mail (also known as zip code)" + streetNrLast: + type: string + description: Last number in a range of street numbers allocated to a property + streetNrSuffix: + type: string + description: The first street number suffix + streetName: + type: string + description: Name of the street or other street type + stateOrProvince: + type: string + description: The State or Province that the address is in + streetNrLastSuffix: + type: string + description: Last street number suffix for a ranged address + geographicSubAddress: + $ref: "#/components/schemas/GeographicSubAddress" + streetSuffix: + type: string + description: A modifier denoting a relative direction + required: + - city + - country + - streetName + GeographicSubAddress: + type: object + description: "Additional fields used to specify an address, as detailed as possible." + properties: + buildingName: + type: string + description: | + Allows for identification of places that require building name as part of addressing information + subUnit: + type: array + description: + "Representation of a MEFSubUnit It is used for describing subunit\ + \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ + \ WHARF." + items: + $ref: "#/components/schemas/MEFSubUnit" + levelType: + type: string + description: Describes level types within a building + levelNumber: + type: string + description: + "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ + \ 2" + privateStreetNumber: + type: string + description: Private streets numbers internal to a private street + privateStreetName: + type: string + description: + '"Private streets internal to a property (e.g. a university) + may have internal names that are not recorded by the land title office' + MEFBillingAccountRef: + type: object + description: A reference to the Buyer's Billing Account + properties: + id: + type: string + description: + Identifies the buyer's billing account to which the recurring + and non-recurring charges for this order or order item will be billed. + Required if the Buyer has more than one Billing Account with the Seller + and for all new Product Orders. + required: + - id + MEFChargePeriod: + type: string + description: Used for a recurring charge to indicate period. + enum: + - hour + - day + - week + - month + - year + MEFEndOfTermAction: + type: string + description: The action the Seller will take once the term expires. + enum: + - roll + - autoDisconnect + - autoRenew + MEFItemTerm: + type: object + description: The term of the Item + properties: + duration: + $ref: "#/components/schemas/Duration" + endOfTermAction: + $ref: "#/components/schemas/MEFEndOfTermAction" + name: + type: string + description: Name of the term + description: + type: string + description: Description of the term + rollInterval: + $ref: "#/components/schemas/Duration" + MEFPriceType: + type: string + description: Indicates if the price is for recurring or non-recurring charges. + enum: + - recurring + - nonRecurring + - usageBased + MEFProduct: + type: object + description: A product is realized as one or more service(s) and / or resource(s). + properties: + productSpecification: + $ref: "#/components/schemas/ProductSpecificationRef" + relatedSite: + type: array + description: Reference to a Site where the PRoduct is provided. + items: + $ref: "#/components/schemas/RelatedGeographicSite" + productOffering: + $ref: "#/components/schemas/ProductOfferingRef" + lastUpdateDate: + type: string + format: date-time + description: Latest date when the product has been updated. + relatedContactInformation: + type: array + description: Party playing a role for this Product + items: + $ref: "#/components/schemas/RelatedContactInformation" + "@type": + type: string + description: "When sub-classing, this defines the sub-class entity name" + externalId: + type: string + description: Buyer identifier of the product + statusChange: + type: array + description: status change for the Product + items: + $ref: "#/components/schemas/MEFProductStatusChange" + billingAccount: + $ref: "#/components/schemas/MEFBillingAccountRef" + productOrderItem: + type: array + description: + The Product Order Item of the associated Product order that + resulted in the creation of this Product. + items: + $ref: "#/components/schemas/MEFProductOrderItemRef" + productTerm: + type: array + description: Term of the Product + items: + $ref: "#/components/schemas/MEFItemTerm" + terminationDate: + type: string + format: date-time + description: + "Is the date when the product was terminated. MEF: Termination\ + \ date (commercial) is when the product has been terminated (when the\ + \ disconnect in the product order has been processed)." + productConfiguration: + $ref: "#/components/schemas/MEFProductConfiguration" + productRelationship: + type: array + description: + A list of references to existing products that are related + to the Product. + items: + $ref: "#/components/schemas/ProductRelationship" + id: + type: string + description: Unique identifier of the product + href: + type: string + description: Reference of the product + startDate: + type: string + format: date-time + description: + "Is the date from which the product starts. MEF: Start date\ + \ is when the product is active for the first time (when the install in\ + \ the product order has been processed)." + productPrice: + type: array + description: A list of Prices associated with the Product + items: + $ref: "#/components/schemas/ProductPrice" + status: + $ref: "#/components/schemas/MEFProductStatusType" + required: + - id + - startDate + - status + MEFProductConfiguration: + type: object + description: + MEFProductConfiguration is used as an extension point for MEF specific + product/service payload. The `@type` attribute is used as a discriminator + discriminator: + propertyName: "@type" + properties: + "@type": + type: string + description: + "The name of the type, defined in the JSON schema specified\ + \ above, for the product that is the subject of the POQ Request. The\ + \ named type must be a subclass of MEFProductConfiguration." + required: + - "@type" + MEFProductOrderItemRef: + type: object + description: A reference to a ProductOrder item + properties: + productOrderHref: + type: string + description: Reference of the related ProductOrder. + productOrderItemId: + type: string + description: Id of an Item within the Product Order + productOrderId: + type: string + description: Unique identifier of a ProductOrder. + required: + - productOrderId + - productOrderItemId + MEFProductStatusChange: + type: object + description: + "Holds the reached status, reasons and associated date the Product\ + \ Order status changed, populated by the Seller." + properties: + changeReason: + type: string + description: The reason why the status changed. + changeDate: + type: string + format: date-time + description: The date and time the status changed. + status: + $ref: "#/components/schemas/MEFProductStatusType" + required: + - changeDate + - status + MEFProductStatusType: + type: string + description: |- + Possible values for the status of a MEF product + + | name | MEF 81 name | + | --------------------------- | --------------------------- | + | `active` | ACTIVE | + | `active.pendingChange` | ACTIVE_PENDING_CHANGE | + | `pendingTerminate` | ACTIVE_PENDING_TERMINATE | + | `cancelled` | CANCELLED | + | `pendingActive` | PENDING | + | `suspended` | SUSPENDED | + | `suspendedPendingTerminate` | SUSPENDED_PENDING_TERMINATE | + | `terminated` | TERMINATED | + enum: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + MEFProduct_Find: + type: object + description: + Class used to provide product overview retrieved in GET (by list) + operation + properties: + productSpecification: + $ref: "#/components/schemas/ProductSpecificationRef" + relatedSite: + type: array + description: Reference to a Site where the PRoduct is provided. + items: + $ref: "#/components/schemas/RelatedGeographicSite" + productOffering: + $ref: "#/components/schemas/ProductOfferingRef" + lastUpdateDate: + type: string + format: date-time + description: Latest date when the product has been updated. + externalId: + type: string + description: + This identifier is optionally provided during the product ordering + and stored for informative purpose in the seller inventory + productRelationship: + type: array + description: + A list of references to existing products that are related + to the Product. + items: + $ref: "#/components/schemas/ProductRelationship" + id: + type: string + description: Unique identifier of the product + href: + type: string + description: Reference of the product + billingAccount: + $ref: "#/components/schemas/MEFBillingAccountRef" + productOrderItem: + type: array + description: + The Product Order Item of the associated Product order that + resulted in the creation of this Product. + items: + $ref: "#/components/schemas/MEFProductOrderItemRef" + startDate: + type: string + format: date-time + description: The date from which the product starts + status: + $ref: "#/components/schemas/MEFProductStatusType" + required: + - id + - status + MEFSubUnit: + type: object + description: Allows for sub unit identification + properties: + subUnitNumber: + type: string + description: + "The discriminator used for the subunit, often just a simple\ + \ number but may also be a range." + subUnitType: + type: string + description: + "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ + \ UNIT, WHARF." + required: + - subUnitNumber + - subUnitType + Money: + type: object + description: A base / value business entity used to represent money + properties: + unit: + type: string + description: Currency (ISO4217 norm uses 3 letters to define the currency) + value: + type: number + format: float + description: A positive floating point number + required: + - unit + - value + Price: + type: object + description: + "Provides all amounts (tax included, duty free, tax rate), used\ + \ currency and percentage to apply for Price Alteration." + properties: + taxRate: + type: number + format: float + description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." + taxIncludedAmount: + $ref: "#/components/schemas/Money" + dutyFreeAmount: + $ref: "#/components/schemas/Money" + required: + - dutyFreeAmount + ProductOfferingRef: + type: object + description: + "A reference to a Product Offering offered by the Seller to the\ + \ Buyer. A Product Offering contains the commercial and technical details\ + \ of a Product sold by a particular Seller. A Product Offering defines all\ + \ of the commercial terms and, through association with a particular Product\ + \ Specification, defines all the technical attributes and behaviors of the\ + \ Product. A Product Offering may constrain the allowable set of configurable\ + \ technical attributes and/or behaviors specified in the associated Product\ + \ Specification." + properties: + href: + type: string + description: | + Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. + id: + type: string + description: + id of a Product Offering. It is assigned by the Seller. The + Buyer and the Seller exchange information about offerings' ids during + the onboarding process. + required: + - id + ProductPrice: + type: object + description: + "An amount, usually of money, that represents the actual price\ + \ paid by a Customer for a purchase, a rent or a lease of a Product. The price\ + \ is valid for a defined period of time." + properties: + unitOfMeasure: + type: string + description: + "Unit of Measure if price depending on it (Gb, SMS volume,\ + \ etc..)" + price: + $ref: "#/components/schemas/Price" + name: + type: string + description: A short descriptive name such as "Subscription price". + priceType: + $ref: "#/components/schemas/MEFPriceType" + description: + type: string + description: + A narrative that explains in detail the semantics of this product + price. + recurringChargePeriod: + $ref: "#/components/schemas/MEFChargePeriod" + required: + - price + - priceType + ProductRelationship: + type: object + description: + A relationship to existing Product. The requirements for usage + for given Product are described in the Product Specification. + properties: + relationshipType: + type: string + description: + "Specifies the type (nature) of the relationship to the related\ + \ Product. The nature of required relationships vary for Products of different\ + \ types. For example, a UNI or ENNI Product may not have any relationships,\ + \ but an Access E-Line may have two mandatory relationships (related to\ + \ the UNI on one end and the ENNI on the other). More complex Products\ + \ such as multipoint IP or Firewall Products may have more complex relationships.\ + \ As a result, the allowed and mandatory `relationshipType` values are\ + \ defined in the Product Specification." + id: + type: string + description: unique identifier + href: + type: string + description: Hyperlink of the referenced product + required: + - id + - relationshipType + ProductSpecificationRef: + type: object + description: + A reference to a structured set of well-defined technical attributes + and/or behaviors that are used to construct a Product Offering for sale to + a market. + properties: + href: + type: string + description: | + Hyperlink to a Product Specification in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. + id: + type: string + description: Unique identifier of the product specification + required: + - id + RelatedContactInformation: + type: object + description: + "Contact information of an individual or organization playing a\ + \ role for\nthis Entity. The rule for mapping a represented attribute value\ + \ to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer Order\ + \ Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation Contact:\ + \ `role=buyerImplementationContact` \n- Buyer Technical Contact: `role=buyerTechnicalContact`\n" + properties: + number: + type: string + description: Phone number + emailAddress: + type: string + description: Email address + role: + type: string + description: A role the party plays in a given context. + postalAddress: + $ref: "#/components/schemas/FieldedAddress" + organization: + type: string + description: The organization or company that the contact belongs to + name: + type: string + description: Name of the contact + numberExtension: + type: string + description: Phone number extension + required: + - emailAddress + - name + - number + - role + RelatedGeographicSite: + type: object + description: + "A Geographic Site and an associated role as installation address,\ + \ delivery address, etc...." + properties: + role: + type: string + description: + "Role of the geographic site, such as: [home delivery], [shop\ + \ retrieval]) MEF: The role that the Site plays, e.g. Billing Address,\ + \ UNI Site, or ENNI Site." + id: + type: string + description: Unique identifier of the geographic site + href: + type: string + description: Hyperlink to the referenced geographic site + required: + - id + - role + TimeUnit: + type: string + description: | + Represents a unit of time. + Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) + enum: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + securitySchemes: + oauth2MEFLSOAPI: + description: Default m2m client code + flows: + clientCredentials: + refreshUrl: http://mef.net/example/refresh + scopes: + default: default scope + tokenUrl: http://mef.net/example/token + type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml new file mode 100644 index 00000000..c3594169 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml @@ -0,0 +1,1056 @@ +openapi: 3.0.1 +info: + description: | + **This file forms part of MEF 116** + + This API implements Business Requirements described in MEF 81 + + It allows the Buyer to retrieve the information about existing Product + instances from Seller's Product Inventory. + + List of supported use cases: + - Retrieve Product List + - Retrieve Product by Identifier + + Copyright 2021 MEF Forum and its contributors. + + This file includes content based on the TM Forum Product Inventory + Management API (TMF637 v4.0.0) available at + https://github.com/tmforum-apis/TMF637_ProductInventory, which is licensed + by the TM Forum under the Apache License version 2.0. Such content has been + modified by the MEF Forum and its contributors. + title: Product Inventory Management + version: 7.0.2 +servers: + - url: "https://{serverBase}/mefApi/sonata/productInventory/v7/" + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +security: + - oauth2MEFLSOAPI: + - default +tags: + - name: product + - name: events subscription +paths: + /product: + get: + description: This operation lists or finds Product entities + operationId: listProduct + parameters: + - description: The status of the product + in: query + name: status + required: false + schema: + type: string + enum: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + - description: A reference to a product spec by id + in: query + name: productSpecificationId + required: false + schema: + type: string + - description: A reference to a product offering by id + in: query + name: productOfferingId + required: false + schema: + type: string + - description: A reference to the externalId provided in the order + in: query + name: externalId + required: false + schema: + type: string + - description: A site identifier which is associated to the product + in: query + name: geographicalSiteId + required: false + schema: + type: string + - description: |- + This criteria allows to retrieve all Product records with a Product Relationship to a specified Product. + E.g. All Products related to Product with ID 5 + in: query + name: relatedProductId + required: false + schema: + type: string + - description: The Billing Account associated with the Product. + in: query + name: billingAccountId + required: false + schema: + type: string + - description: Identifies Product Order associated with the Product + in: query + name: productOrderId + required: false + schema: + type: string + - description: Less than the date that is the initial install date for the Product + in: query + name: startDate.lt + required: false + schema: + type: string + format: date-time + - description: + Greater than the date that is the initial install date for the + Product + in: query + name: startDate.gt + required: false + schema: + type: string + format: date-time + - description: + Less than date that the last change affecting this Product was + completed + in: query + name: lastUpdateDate.lt + required: false + schema: + type: string + format: date-time + - description: + Greater than the date that the last change affecting this Product + was completed + in: query + name: lastUpdateDate.gt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 81 (Sn 8.3) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 81 (Sn 8.3) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/MEFProduct_Find" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - listProduct + summary: List or find Product objects + tags: + - product + /product/{id}: + get: + description: This operation retrieves a Product entity. + operationId: retrieveProduct + parameters: + - description: Identifier of the Product + in: path + name: id + required: true + schema: + type: string + - description: Comma-separated properties to provide in response + in: query + name: fields + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 81 (Sn 8.3) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 81 (Sn 8.3) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProduct" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - retrieveProduct + summary: Retrieves a Product by ID + tags: + - product +components: + schemas: + Error400Code: + type: string + description: |- + One of the following error codes: + - missingQueryParameter: The URI is missing a required query-string parameter + - missingQueryValue: The URI is missing a required query-string parameter value + - invalidQuery: The query section of the URI is invalid. + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + Duration: + type: object + description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." + properties: + amount: + type: integer + description: "Duration (number of seconds, minutes, hours, etc.)" + units: + $ref: "#/components/schemas/TimeUnit" + required: + - amount + - units + Error: + type: object + description: | + Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. + properties: + reason: + type: string + description: + Text that explains the reason for the error. This can be shown + to a client user. + maxLength: 255 + message: + type: string + description: + Text that provides mode details and corrective actions related + to the error. This can be shown to a client user. + referenceError: + type: string + format: uri + description: URL pointing to documentation describing the error + required: + - reason + Error400: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error400Code" + required: + - code + description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) + Error401: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error401Code" + required: + - code + description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) + Error401Code: + type: string + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + Error403: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error403Code" + required: + - code + description: + Forbidden. This code indicates that the server understood the request + but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) + Error403Code: + type: string + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + Error404: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - notFound: A current representation for the target resource not found + enum: + - notFound + required: + - code + description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error422: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error422Code" + propertyPath: + type: string + description: | + A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. + Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). + required: + - code + description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + type: string + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + Error500: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. + enum: + - internalError + required: + - code + description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) + FieldedAddress: + type: object + description: + "A type of Address that has a discrete field and value for each\ + \ type of boundary or identifier down to the lowest level of detail. For example\ + \ \"street number\" is one field, \"street name\" is another field, etc. Reference:\ + \ MEF 79 (Sn 8.9.2)" + properties: + country: + type: string + description: Country that the address is in + streetType: + type: string + description: + "The type of street (e.g., alley, avenue, boulevard, brae,\ + \ crescent, drive, highway, lane, terrace, parade, place, tarn, way, wharf)" + postcodeExtension: + type: string + description: + An extension of a postal code. E.g. the part following the + dash in a US urban property address + city: + type: string + description: The city that the address is in + streetNr: + type: string + description: + Number identifying a specific property on a public street. + It may be combined with streetNrLast for ranged addresses. MEF 79 defines + it as required however as in certain countries it is not used we make + it optional in API. + locality: + type: string + description: The locality that the address is in + postcode: + type: string + description: + "Descriptor for a postal delivery area, used to speed and simplify\ + \ the delivery of mail (also known as zip code)" + streetNrLast: + type: string + description: Last number in a range of street numbers allocated to a property + streetNrSuffix: + type: string + description: The first street number suffix + streetName: + type: string + description: Name of the street or other street type + stateOrProvince: + type: string + description: The State or Province that the address is in + streetNrLastSuffix: + type: string + description: Last street number suffix for a ranged address + geographicSubAddress: + $ref: "#/components/schemas/GeographicSubAddress" + streetSuffix: + type: string + description: A modifier denoting a relative direction + required: + - city + - country + - streetName + GeographicSubAddress: + type: object + description: "Additional fields used to specify an address, as detailed as possible." + properties: + buildingName: + type: string + description: | + Allows for identification of places that require building name as part of addressing information + subUnit: + type: array + description: + "Representation of a MEFSubUnit It is used for describing subunit\ + \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ + \ WHARF." + items: + $ref: "#/components/schemas/MEFSubUnit" + levelType: + type: string + description: Describes level types within a building + levelNumber: + type: string + description: + "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ + \ 2" + privateStreetNumber: + type: string + description: Private streets numbers internal to a private street + privateStreetName: + type: string + description: + '"Private streets internal to a property (e.g. a university) + may have internal names that are not recorded by the land title office' + MEFBillingAccountRef: + type: object + description: A reference to the Buyer's Billing Account + properties: + id: + type: string + description: + Identifies the buyer's billing account to which the recurring + and non-recurring charges for this order or order item will be billed. + Required if the Buyer has more than one Billing Account with the Seller + and for all new Product Orders. + required: + - id + MEFChargePeriod: + type: string + description: Used for a recurring charge to indicate period. + enum: + - hour + - day + - week + - month + - year + MEFEndOfTermAction: + type: string + description: The action the Seller will take once the term expires. + enum: + - roll + - autoDisconnect + - autoRenew + MEFItemTerm: + type: object + description: The term of the Item + properties: + duration: + $ref: "#/components/schemas/Duration" + endOfTermAction: + $ref: "#/components/schemas/MEFEndOfTermAction" + name: + type: string + description: Name of the term + description: + type: string + description: Description of the term + rollInterval: + $ref: "#/components/schemas/Duration" + MEFPriceType: + type: string + description: Indicates if the price is for recurring or non-recurring charges. + enum: + - recurring + - nonRecurring + - usageBased + MEFProduct: + type: object + description: A product is realized as one or more service(s) and / or resource(s). + properties: + productSpecification: + $ref: "#/components/schemas/ProductSpecificationRef" + relatedSite: + type: array + description: Reference to a Site where the PRoduct is provided. + items: + $ref: "#/components/schemas/RelatedGeographicSite" + productOffering: + $ref: "#/components/schemas/ProductOfferingRef" + lastUpdateDate: + type: string + format: date-time + description: Latest date when the product has been updated. + relatedContactInformation: + type: array + description: Party playing a role for this Product + items: + $ref: "#/components/schemas/RelatedContactInformation" + "@type": + type: string + description: "When sub-classing, this defines the sub-class entity name" + externalId: + type: string + description: Buyer identifier of the product + statusChange: + type: array + description: status change for the Product + items: + $ref: "#/components/schemas/MEFProductStatusChange" + billingAccount: + $ref: "#/components/schemas/MEFBillingAccountRef" + productOrderItem: + type: array + description: + The Product Order Item of the associated Product order that + resulted in the creation of this Product. + items: + $ref: "#/components/schemas/MEFProductOrderItemRef" + productTerm: + type: array + description: Term of the Product + items: + $ref: "#/components/schemas/MEFItemTerm" + terminationDate: + type: string + format: date-time + description: + "Is the date when the product was terminated. MEF: Termination\ + \ date (commercial) is when the product has been terminated (when the\ + \ disconnect in the product order has been processed)." + productConfiguration: + $ref: "#/components/schemas/MEFProductConfiguration" + productRelationship: + type: array + description: + A list of references to existing products that are related + to the Product. + items: + $ref: "#/components/schemas/ProductRelationship" + id: + type: string + description: Unique identifier of the product + href: + type: string + description: Reference of the product + startDate: + type: string + format: date-time + description: + "Is the date from which the product starts. MEF: Start date\ + \ is when the product is active for the first time (when the install in\ + \ the product order has been processed)." + productPrice: + type: array + description: A list of Prices associated with the Product + items: + $ref: "#/components/schemas/ProductPrice" + status: + $ref: "#/components/schemas/MEFProductStatusType" + required: + - id + - startDate + - status + MEFProductConfiguration: + type: object + description: + MEFProductConfiguration is used as an extension point for MEF specific + product/service payload. The `@type` attribute is used as a discriminator + discriminator: + propertyName: "@type" + properties: + "@type": + type: string + description: + "The name of the type, defined in the JSON schema specified\ + \ above, for the product that is the subject of the POQ Request. The\ + \ named type must be a subclass of MEFProductConfiguration." + required: + - "@type" + MEFProductOrderItemRef: + type: object + description: A reference to a ProductOrder item + properties: + productOrderHref: + type: string + description: Reference of the related ProductOrder. + productOrderItemId: + type: string + description: Id of an Item within the Product Order + productOrderId: + type: string + description: Unique identifier of a ProductOrder. + required: + - productOrderId + - productOrderItemId + MEFProductStatusChange: + type: object + description: + "Holds the reached status, reasons and associated date the Product\ + \ Order status changed, populated by the Seller." + properties: + changeReason: + type: string + description: The reason why the status changed. + changeDate: + type: string + format: date-time + description: The date and time the status changed. + status: + $ref: "#/components/schemas/MEFProductStatusType" + required: + - changeDate + - status + MEFProductStatusType: + type: string + description: |- + Possible values for the status of a MEF product + + | name | MEF 81 name | + | --------------------------- | --------------------------- | + | `active` | ACTIVE | + | `active.pendingChange` | ACTIVE_PENDING_CHANGE | + | `pendingTerminate` | ACTIVE_PENDING_TERMINATE | + | `cancelled` | CANCELLED | + | `pendingActive` | PENDING | + | `suspended` | SUSPENDED | + | `suspendedPendingTerminate` | SUSPENDED_PENDING_TERMINATE | + | `terminated` | TERMINATED | + enum: + - active + - active.pendingChange + - cancelled + - pendingActive + - pendingTerminate + - suspended + - suspendedPendingTerminate + - terminated + MEFProduct_Find: + type: object + description: + Class used to provide product overview retrieved in GET (by list) + operation + properties: + productSpecification: + $ref: "#/components/schemas/ProductSpecificationRef" + relatedSite: + type: array + description: Reference to a Site where the PRoduct is provided. + items: + $ref: "#/components/schemas/RelatedGeographicSite" + productOffering: + $ref: "#/components/schemas/ProductOfferingRef" + lastUpdateDate: + type: string + format: date-time + description: Latest date when the product has been updated. + externalId: + type: string + description: + This identifier is optionally provided during the product ordering + and stored for informative purpose in the seller inventory + productRelationship: + type: array + description: + A list of references to existing products that are related + to the Product. + items: + $ref: "#/components/schemas/ProductRelationship" + id: + type: string + description: Unique identifier of the product + href: + type: string + description: Reference of the product + billingAccount: + $ref: "#/components/schemas/MEFBillingAccountRef" + productOrderItem: + type: array + description: + The Product Order Item of the associated Product order that + resulted in the creation of this Product. + items: + $ref: "#/components/schemas/MEFProductOrderItemRef" + startDate: + type: string + format: date-time + description: The date from which the product starts + status: + $ref: "#/components/schemas/MEFProductStatusType" + required: + - id + - status + MEFSubUnit: + type: object + description: Allows for sub unit identification + properties: + subUnitNumber: + type: string + description: + "The discriminator used for the subunit, often just a simple\ + \ number but may also be a range." + subUnitType: + type: string + description: + "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ + \ UNIT, WHARF." + required: + - subUnitNumber + - subUnitType + Money: + type: object + description: A base / value business entity used to represent money + properties: + unit: + type: string + description: Currency (ISO4217 norm uses 3 letters to define the currency) + value: + type: number + format: float + description: A positive floating point number + required: + - unit + - value + Price: + type: object + description: + "Provides all amounts (tax included, duty free, tax rate), used\ + \ currency and percentage to apply for Price Alteration." + properties: + taxRate: + type: number + format: float + description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." + taxIncludedAmount: + $ref: "#/components/schemas/Money" + dutyFreeAmount: + $ref: "#/components/schemas/Money" + required: + - dutyFreeAmount + ProductOfferingRef: + type: object + description: + "A reference to a Product Offering offered by the Seller to the\ + \ Buyer. A Product Offering contains the commercial and technical details\ + \ of a Product sold by a particular Seller. A Product Offering defines all\ + \ of the commercial terms and, through association with a particular Product\ + \ Specification, defines all the technical attributes and behaviors of the\ + \ Product. A Product Offering may constrain the allowable set of configurable\ + \ technical attributes and/or behaviors specified in the associated Product\ + \ Specification." + properties: + href: + type: string + description: | + Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. + id: + type: string + description: + id of a Product Offering. It is assigned by the Seller. The + Buyer and the Seller exchange information about offerings' ids during + the onboarding process. + required: + - id + ProductPrice: + type: object + description: + "An amount, usually of money, that represents the actual price\ + \ paid by a Customer for a purchase, a rent or a lease of a Product. The price\ + \ is valid for a defined period of time." + properties: + unitOfMeasure: + type: string + description: + "Unit of Measure if price depending on it (Gb, SMS volume,\ + \ etc..)" + price: + $ref: "#/components/schemas/Price" + name: + type: string + description: A short descriptive name such as "Subscription price". + priceType: + $ref: "#/components/schemas/MEFPriceType" + description: + type: string + description: + A narrative that explains in detail the semantics of this product + price. + recurringChargePeriod: + $ref: "#/components/schemas/MEFChargePeriod" + required: + - price + - priceType + ProductRelationship: + type: object + description: + A relationship to existing Product. The requirements for usage + for given Product are described in the Product Specification. + properties: + relationshipType: + type: string + description: + "Specifies the type (nature) of the relationship to the related\ + \ Product. The nature of required relationships vary for Products of different\ + \ types. For example, a UNI or ENNI Product may not have any relationships,\ + \ but an Access E-Line may have two mandatory relationships (related to\ + \ the UNI on one end and the ENNI on the other). More complex Products\ + \ such as multipoint IP or Firewall Products may have more complex relationships.\ + \ As a result, the allowed and mandatory `relationshipType` values are\ + \ defined in the Product Specification." + id: + type: string + description: unique identifier + href: + type: string + description: Hyperlink of the referenced product + required: + - id + - relationshipType + ProductSpecificationRef: + type: object + description: + A reference to a structured set of well-defined technical attributes + and/or behaviors that are used to construct a Product Offering for sale to + a market. + properties: + href: + type: string + description: | + Hyperlink to a Product Specification in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. + id: + type: string + description: Unique identifier of the product specification + required: + - id + RelatedContactInformation: + type: object + description: + "Contact information of an individual or organization playing a\ + \ role for\nthis Entity. The rule for mapping a represented attribute value\ + \ to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer Order\ + \ Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation Contact:\ + \ `role=buyerImplementationContact` \n- Buyer Technical Contact: `role=buyerTechnicalContact`\n" + properties: + number: + type: string + description: Phone number + emailAddress: + type: string + description: Email address + role: + type: string + description: A role the party plays in a given context. + postalAddress: + $ref: "#/components/schemas/FieldedAddress" + organization: + type: string + description: The organization or company that the contact belongs to + name: + type: string + description: Name of the contact + numberExtension: + type: string + description: Phone number extension + required: + - emailAddress + - name + - number + - role + RelatedGeographicSite: + type: object + description: + "A Geographic Site and an associated role as installation address,\ + \ delivery address, etc...." + properties: + role: + type: string + description: + "Role of the geographic site, such as: [home delivery], [shop\ + \ retrieval]) MEF: The role that the Site plays, e.g. Billing Address,\ + \ UNI Site, or ENNI Site." + id: + type: string + description: Unique identifier of the geographic site + href: + type: string + description: Hyperlink to the referenced geographic site + required: + - id + - role + TimeUnit: + type: string + description: | + Represents a unit of time. + Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) + enum: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + securitySchemes: + oauth2MEFLSOAPI: + description: Default m2m client code + flows: + clientCredentials: + refreshUrl: http://mef.net/example/refresh + scopes: + default: default scope + tokenUrl: http://mef.net/example/token + type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml new file mode 100644 index 00000000..5446d94b --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml @@ -0,0 +1,1875 @@ +openapi: 3.0.1 +info: + description: | + **This file forms part of MEF 87** + + This API implements Business Requirements described in MEF 79 + + The Product Offering Qualification (POQ) Management API allows a Buyer to + check whether the Seller can deliver a product or set of products from + among their product offerings at the geographic address or a service site + specified by the Buyer; or modify a previously purchased product. + + The following use cases are managed: + - Create Product Offering Qualification + - Retrieve POQ List + - Retrieve POQ by Identifier + - Register for POQ Notifications (note: Send POQ Notification is supported by productOfferingQualificationNotification.api.yaml) + + Copyright 2021 MEF Forum and its contributors + + This file includes content based on the TM Forum Product Offering + Qualification API (TMF679 v4.0.0) available at + https://github.com/tmforum-apis/TMF679_ProductOfferingQualification, which + is licensed by the TM Forum under the Apache License version 2.0. Such + content has been modified by the MEF Forum and its contributors. + title: Product Offering Qualification Management + version: 7.0.1 +servers: + - url: 'https://{serverBase}/mefApi/sonata/productOfferingQualification/v7/' + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +tags: + - description: + Operations for managing the Product Offering Qualification request. + name: productOfferingQualification + - description: + Operations for managing the subscription for events notification. + name: events subscription +paths: + /hub: + post: + description: >- + A request initiated by the Buyer to instruct the Seller to send + notifications of POQ create, POQ and/or POQ Item state changes if the + Buyer has registered for these notifications. The state change + notifications are sent only in the Deferred response scenario as in the + Immediate response scenario once the response to POQ Request is + provided (create notification), there will be no further state + changes. Reference: MEF 79 (section 8.4.2). + operationId: registerListener + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/EventSubscriptionInput' + description: >- + Data containing the callback endpoint to which to deliver the + information. + required: true + responses: + '201': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/EventSubscription' + description: + 'Created. (https://tools.ietf.org/html/rfc7231#section-6.3.2)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + '501': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error501' + description: >- + Method not implemented. Used in case Seller is not supporting + Notification mechanism + summary: + Allows a Buyer to register to receive POQ state change notifications + tags: + - events subscription + x-codegen-request-body-name: data + '/hub/{id}': + delete: + description: | + This operation is used to delete an event subscription. + Reference: MEF 79 (Sn 8.3) + operationId: unregisterListener + parameters: + - description: Identifier of the EventSubscription + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '204': + description: + 'No Content. (https://tools.ietf.org/html/rfc7231#section-6.3.5)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + '501': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error501' + description: >- + Method not implemented. Used in case Seller is not supporting + Notification mechanism + summary: Unregister a listener + tags: + - events subscription + /productOfferingQualification: + get: + description: >- + The Buyer requests a list of POQs from the Seller based on a set of POQ + filter criteria (as described in MEF79). For each POQ returned, the + Seller also provides a POQ Identifier that uniquely identifies this POQ + within the Seller's system. The order of the elements returned to the + Buyer is defined by the Seller (e.g. natural order) and does not change + between the pages. If criteria for attribute X are provided, all + returned items must match it. + operationId: listProductOfferingQualification + parameters: + - description: >- + State of the POQ to be retrieved. See `MEFPOQTaskStateType` + definition for details + in: query + name: state + schema: + enum: + - acknowledged + - terminatedWithError + - inProgress + - done.unableToProvide + - done.ready + type: string + - name: externalId + required: false + in: query + description: + ID given by the consumer and only understandable by him (to + facilitate his searches afterward) + schema: + type: string + - description: Identifier of Buyer project associated with POQ + in: query + name: projectId + schema: + type: string + - description: POQ expected response date is on or after this date + in: query + name: requestedPOQCompletionDate.gt + schema: + format: date-time + type: string + - description: POQ expected response date is on or before this date + in: query + name: requestedPOQCompletionDate.lt + schema: + format: date-time + type: string + - description: >- + The unique identifier of the organization that is acting as the + Buyer + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller + in: query + name: sellerId + schema: + type: string + - description: >- + Requested index for the start of POQ to be provided in response + requested by the client. Note that the index starts with "0". + in: query + name: offset + schema: + format: int32 + type: integer + - description: >- + Requested number of POQ to be provided in response requested by + client + in: query + name: limit + schema: + format: int32 + type: integer + responses: + '200': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/ProductOfferingQualification_Find' + type: array + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + headers: + X-Pagination-Throttled: + description: > + Used to indicate that result page was throttled to maximum + possible size and there are additional results that can be + fetched + schema: + type: boolean + X-Total-Count: + description: > + The total number of matching POQ. E.g. if there are 50 matching + items in total, but the request has offset=10 and limit=10, + then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of POQ included in the response + schema: + type: integer + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: >- + Retrieve a list of ProductOfferingQualifications based on a set of + criteria + tags: + - productOfferingQualification + post: + description: >- + A request initiated by the Buyer to determine whether the Seller is + able to deliver a product or set of products from among their product + offerings, at the Buyer's location(s); or modify a previously purchased + product. The Seller also provides estimated time intervals to complete + these deliveries. Reference: MEF 79 (Sn 8.4). + operationId: createProductOfferingQualification + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ProductOfferingQualification_Create' + description: >- + POQ content provided by the Buyer. See definition's description for + details. + required: true + responses: + '201': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ProductOfferingQualification' + description: + 'Created. (https://tools.ietf.org/html/rfc7231#section-6.3.2)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: Unprocessable entity due to business validation problems + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Send a request to perform product offering qualification + tags: + - productOfferingQualification + x-codegen-request-body-name: productOfferingQualification + '/productOfferingQualification/{id}': + get: + description: >- + The Buyer requests the full details of a single Product Offering + Qualification based on a POQ identifier returned from the POQ create + (`createProductOfferingQualification`) or POQ find + (`listProductOfferingQualification`) + operationId: retrieveProductOfferingQualification + parameters: + - description: + POQ identifier (matches `ProductOfferingQualification.id`) + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/ProductOfferingQualification' + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Retrieves a ProductOfferingQualification by ID + tags: + - productOfferingQualification +components: + schemas: + AlternateProductOfferingProposal: + description: > + If in the request the Buyer has requested to have alternate product + proposals, then this class represents a single proposal. All properties + are assigned by the Seller. + + Reference: MEF 79 (Sn 8.4.3.2) + properties: + installationInterval: + description: > + The estimated minimum interval that the Seller requires in their + standard process to complete the delivery of this Product from the + time the order is placed and any precedents have been completed. + $ref: '#/components/schemas/Duration' + id: + description: > + Identifier of the Product Offering Qualification alternate + proposal. Assigned by the Seller. + type: string + alternateProduct: + description: Alternate product proposal + $ref: '#/components/schemas/MEFAlternateProduct' + required: + - alternateProduct + - id + - installationInterval + type: object + Error400Code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required query-string + parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + type: string + Duration: + description: + 'A Duration in a given unit of time e.g. 3 hours, or 5 days.' + properties: + amount: + description: 'Duration (number of seconds, minutes, hours, etc.)' + type: integer + units: + description: Time unit type + $ref: '#/components/schemas/TimeUnit' + required: + - amount + - units + type: object + Error: + description: > + Standard Class used to describe API response error Not intended to be + used directly. The `code` in the HTTP header is used as a discriminator + for the type of error returned in runtime. + properties: + reason: + description: >- + Text that explains the reason for the error. This can be shown to a + client user. + maxLength: 255 + type: string + message: + description: >- + Text that provides mode details and corrective actions related to + the error. This can be shown to a client user. + type: string + referenceError: + description: URL pointing to documentation describing the error + format: uri + type: string + required: + - reason + type: object + Error400: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required + query-string parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + $ref: '#/components/schemas/Error400Code' + required: + - code + type: object + description: + 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' + Error401: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + One of the following error codes: + + - missingCredentials: No credentials provided. + + - invalidCredentials: Provided credentials are invalid or + expired + $ref: '#/components/schemas/Error401Code' + required: + - code + type: object + description: + 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' + Error401Code: + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + type: string + Error403: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + $ref: '#/components/schemas/Error403Code' + required: + - code + type: object + description: >- + Forbidden. This code indicates that the server understood the request + but refuses to authorize it. + (https://tools.ietf.org/html/rfc7231#section-6.5.3) + Error403Code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + type: string + Error404: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - notFound: A current representation for the target resource + not found + enum: + - notFound + type: string + required: + - code + type: object + description: >- + Resource for the requested path not found. + (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error422: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused + the validation issue. It is highly recommended that this + property should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + required: + - code + type: object + description: >- + Unprocessable entity due to a business validation problem. + (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + type: string + Error500: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - internalError: Internal server error - the server encountered + an unexpected condition that prevented it from fulfilling the + request. + enum: + - internalError + type: string + required: + - code + type: object + description: >- + Internal Server Error. + (https://tools.ietf.org/html/rfc7231#section-6.6.1) + Error501: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: |- + The following error code:: + - notImplemented: Method not supported by the server + enum: + - notImplemented + type: string + required: + - code + type: object + description: + 'Not Implemented. (https://tools.ietf.org/html/rfc7231#section-6.6.2)' + EventSubscription: + description: | + This resource is used to manage notification subscription. + Reference: MEF 79 (Sn 8.3) + properties: + query: + description: >- + The value provided by the Buyer in `EventSubscriptionInput` during + notification registration + type: string + callback: + description: >- + The value provided by the Buyer in `EventSubscriptionInput` during + notification registration + type: string + id: + description: >- + An identifier of this Event Subscription assigned by the Seller + when a resource is created. + type: string + required: + - callback + - id + type: object + EventSubscriptionInput: + description: This class is used to register for Notifications. + properties: + query: + description: >- + This attribute is used to define to which type of events to + register to. Example: "query":"eventType = poqCreateEvent". To + subscribe for more than one event type, put the values separated by + comma: `eventType=poqCreateEvent,poqStateChangeEvent`. The possible + values are enumerated by the 'POQEventType' in + productOfferingQualificationNotification.api.yaml. An empty query + is treated as specifying no filters - ending in subscription for + all event types. + type: string + callback: + description: >- + This callback value must be set to *host* property from Buyer + ProductOfferingQualification Notification API + (productOfferingQualificationNotification.api.yaml). This property + is appended with the base path and notification resource path + specified in that API to construct an URL to which notification is + sent. E.g. for "callback": "https://buyer.co/listenerEndpoint", the + create event notification will be sent to: + `https://buyer.co/listenerEndpoint/mefApi/sonata/productOfferingQualificationNotification/v7/listener/poqCreateEvent` + type: string + required: + - callback + type: object + FieldedAddress: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + country: + description: Country that the address is in + type: string + streetType: + description: >- + The type of street (e.g., alley, avenue, boulevard, brae, + crescent, drive, highway, lane, terrace, parade, place, tarn, + way, wharf) + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in a US urban property address + type: string + city: + description: The city that the address is in + type: string + streetNr: + description: >- + Number identifying a specific property on a public street. It + may be combined with streetNrLast for ranged addresses. MEF 79 + defines it as required for the Seller response, however in + certain countries it is not used, so it's optional in API. + type: string + locality: + description: The locality that the address is in + type: string + postcode: + description: >- + A descriptor for a postal delivery area, used to speed and + simplify the delivery of mail (also known as zip code) MEF 79 + defines it as required however as in certain countries it is + not used we make it optional in API. + type: string + streetNrLast: + description: + Last number in a range of street numbers allocated to a + property + type: string + streetNrSuffix: + description: The first street number suffix + type: string + streetName: + description: Name of the street or other street type + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + streetNrLastSuffix: + description: Last street number suffix for a ranged address + type: string + geographicSubAddress: + description: >- + Additional fields used to specify an address, as detailed as + possible. + $ref: '#/components/schemas/GeographicSubAddress' + streetSuffix: + description: A modifier denoting a relative direction + type: string + required: + - city + - country + - streetName + type: object + description: >- + A type of Address that has a discrete field and value for each type of + boundary or identifier down to the lowest level of detail. For example + "street number" is one field, "street name" is another field, etc. + Reference: MEF 79 (Sn 8.9.2) + FormattedAddress: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + country: + description: Country that the address is in + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in a US urban property address + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + city: + description: The city that the address is in + type: string + addrLine2: + description: The second address line in a formatted address + type: string + addrLine1: + description: The first address line in a formatted address + type: string + locality: + description: >- + An area of defined or undefined boundaries within a local + authority or other legislatively defined area, usually rural or + semi-rural in nature + type: string + postcode: + description: >- + A descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as ZIP code) + type: string + required: + - addrLine1 + - city + - country + type: object + description: >- + A type of Address that has discrete fields for each type of boundary or + identifier with the exception of the street and more specific location + details, which are combined into a maximum of two strings based on + local postal addressing conventions. Reference: MEF 79 (Sn 8.9.3) + GeographicAddressLabel: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + externalReferenceId: + description: >- + The unique reference to an Address as provided by the + Administrative Authority. + type: string + externalReferenceType: + description: >- + The organization or standard from the organization that + administers this Geographic Address Label ensuring it is unique + within the Administrative Authority. The value(s) to be used + are to be agreed upon during the onboarding. For North American + providers this would normally be CLLI (Common Language Location + Identifier) code. + type: string + required: + - externalReferenceId + - externalReferenceType + type: object + description: >- + A unique identifier controlled by a generally accepted independent + administrative authority that specifies a fixed geographical location. + + Reference: MEF 79 (Sn 8.9.4) + GeographicAddressRef: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + href: + description: > + Hyperlink to the referenced Address. Hyperlink MAY be used by + the Seller in responses. Hyperlink MUST be ignored by the + Seller in case it is provided by the Buyer in a request. + type: string + id: + description: >- + Identifier of the referenced Geographic Address. This + identifier is assigned during a successful address validation + request (Geographic Address Management API) + type: string + required: + - id + type: object + description: > + A reference to a Geographic Address resource available through Address + Validation API. + GeographicSiteRef: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + href: + description: > + Hyperlink to the referenced Site. Hyperlink MAY be used by the + Seller in responses. Hyperlink MUST be ignored by the Seller in + case it is provided by the Buyer in a request. + type: string + id: + description: Identifier of the referenced Geographic Site. + type: string + required: + - id + type: object + description: > + A reference to a Geographic Site resource available through Service + Site API + GeographicSubAddress: + description: + 'Additional fields used to specify an address, as detailed as possible.' + properties: + buildingName: + description: > + Allows for identification of places that require building name as + part of addressing information + type: string + subUnit: + description: >- + Representation of a MEFSubUnit It is used for describing subunit + within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + items: + $ref: '#/components/schemas/MEFSubUnit' + type: array + levelType: + description: Describes level types within a building + type: string + levelNumber: + description: + 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT + 2' + type: string + privateStreetNumber: + description: Private streets numbers internal to a private street + type: string + privateStreetName: + description: >- + Private streets internal to a property (e.g. a university) may have + internal names that are not recorded by the land title office + type: string + type: object + MEFAlternateProduct: + description: >- + An alternative Product Offering that the Seller is proposing to the + Buyer. If 1) the Buyer has set `provideAlternate=true`; 2) the Seller + has determined that the POQ Confidence Level for this item is `yellow` + or `red`; and 3) The Seller has alternate Products (e.g. similar but + lower bandwidth) that may be adequate. + properties: + productSpecification: + description: >- + A reference to a Product Specification of the proposed alternate + product + $ref: '#/components/schemas/ProductSpecificationRef' + productOffering: + description: | + A reference to the alternate product offering. + $ref: '#/components/schemas/ProductOfferingRef' + productConfiguration: + description: >- + MEFProductConfiguration is used to get MEF specific product/service + payload. the @type is used a a discriminator. + $ref: '#/components/schemas/MEFProductConfiguration' + required: + - productConfiguration + - productOffering + type: object + MEFGeographicPoint: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + spatialRef: + description: >- + The spatial reference system used to determine the coordinates + (e.g. "WGS84"). The system used and the value of this field are + to be agreed during the onboarding process. + type: string + x: + description: >- + The latitude expressed in the format specified by the + `spacialRef` + type: string + 'y': + description: >- + The longitude expressed in the format specified by the + `spacialRef` + type: string + z: + description: >- + The elevation expressed in the format specified by the + `spacialRef` + type: string + required: + - spatialRef + - x + - 'y' + type: object + description: > + A MEFGeographicPoint defines a geographic point through coordinates. + Reference: MEF 79 (Sn 8.9.5) + MEFPOQItemStateChange: + description: >- + Holds the reached state, reasons, and associated date the POQ state + changed, populated by the Seller. + properties: + changeReason: + description: Additional comment related to state change + type: string + changeDate: + description: The date on when the state was reached + format: date-time + type: string + state: + description: A state which was reached at change date + $ref: '#/components/schemas/MEFPOQItemTaskStateType' + required: + - changeDate + - state + type: object + MEFPOQItemTaskStateType: + description: | + POQ item states - The specific states are managed by the Seller based on + its processing and/or based on the Buyer's action. The following mapping + has been used between `MEFPOQItemTaskStateType` and MEF 79 (Sn 9.2): + + | MEFPOQItemTaskStateType | MEF79 | Description | + | ----------------------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | + | acknowledged | N/A | A request has been received by the Seller and has passed basic validation. | + | done.ready | READY | POQ Item response is complete. This state does not imply that Seller is able to deliver requested item | + | done.abandoned | ABANDONED | Applied to a POQ Item in case the final state is not reached and any other POQ Item moved to the final state other than done | + | terminatedWithError | INSUFFICIENT_INFORMATION_PROVIDED | The information provided by the Buyer is insufficient for the Seller to provide POQ Item response | + | inProgress | IN_PROGRESS | The Seller is working on a POQ item response and the answer is not ready yet | + enum: + - acknowledged + - terminatedWithError + - inProgress + - done.abandoned + - done.ready + type: string + MEFPOQStateChange: + description: >- + Holds the reached state, reasons, and associated date the POQ state + changed, populated by the Seller. + properties: + changeReason: + description: Additional comment related to state change + type: string + changeDate: + description: The date on when the state was reached + format: date-time + type: string + state: + description: A state reached at change date + $ref: '#/components/schemas/MEFPOQTaskStateType' + required: + - changeDate + - state + type: object + MEFPOQTaskStateType: + description: | + These values represent the valid states through which the product + offering qualification can transition. + + The following mapping has been used between `MEFPOQTaskStateType` and + MEF 79 (Sn 9.1): + + | MEFPOQTaskStateType | MEF 79 | Description | + | -------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------| + | acknowledged | N/A | A request has been received by the Seller, has passed basic validation and the id was assigned. | + | done.ready | READY | Reached when all items are in `done` state | + | done.unableToProvide | UNABLE_TO_PROVIDE | This state is set when the Seller is unable to provide a Product Offering Qualification in the timeframe required by the Buyer. | + | terminatedWithError | INSUFFICIENT_INFORMATION_PROVIDED | This state is achieved when a well-formed POQ request has been received, but there is insufficient information to complete the POQ. | + | inProgress | IN_PROGRESS | There is at least one POQ Item in `inProgress` state | + enum: + - acknowledged + - terminatedWithError + - inProgress + - done.unableToProvide + - done.ready + type: string + MEFProductConfiguration: + description: >- + MEFProductConfiguration is used as an extension point for MEF specific + product/service payload. The `@type` attribute is used as a + discriminator + discriminator: + propertyName: '@type' + properties: + '@type': + description: >- + The name of the type that uniquely identifies the type of the + product that is the subject of the POQ Request. In case of MEF + product this is the URN provided in the Product Specification. + type: string + required: + - '@type' + type: object + MEFProductRefOrValue: + description: >- + Used by the Buyer to point to existing and/or describe the desired + shape of the product. In case of `add` action - only + `productConfiguration` MUST be specified. For `modify` action - both + `id` and `productConfiguration` MUST be provided to point which product + instance to update and to what state. In `delete` only the `id` must be + provided. + properties: + productSpecification: + description: + A reference to a Product Specification used to describe the Product + $ref: '#/components/schemas/ProductSpecificationRef' + productOffering: + description: > + A reference to the product offering. + + MEF 79 defines the `productOffering` as mandatory for the `add` + action, + + however, the API allows additionally the use case of providing the + + `productSpecification` instead. In this scenario, the Buyer asks if + + a particular type of product can be served and gets back from the + Seller + + a direct or alternate `productOfferings` in response. These can be + later used + + in Quote and Product Order steps. + $ref: '#/components/schemas/ProductOfferingRef' + productConfiguration: + description: >- + MEFProductConfiguration is used to specify the MEF specific product + payload. This field MUST be populated if an item `action` is `add` + or `modify`. It MUST NOT be populated when an item `action` is + `delete`. The @type is used as a discriminator. + $ref: '#/components/schemas/MEFProductConfiguration' + productRelationship: + description: >- + A list of references to existing products that are related to the + Product that would be delivered to fulfill the POQ Item. + items: + $ref: '#/components/schemas/ProductRelationshipWithGrouping' + type: array + href: + description: > + Hyperlink to the referenced Product. Hyperlink MAY be used by the + Seller in responses. Hyperlink MUST be ignored by the Seller in + case it is provided by the Buyer in a request. + type: string + id: + description: > + The unique identifier of an in-service Product that is the + qualification's subject. This field MUST be populated if an item + `action` is either `modify` or `delete`. This field MUST NOT be + populated if an item `action` is `add`. + type: string + place: + description: >- + A list of locations that are related to the Product. For example an + installation location + items: + $ref: '#/components/schemas/RelatedPlaceRefOrValue' + type: array + type: object + MEFServiceabilityColor: + description: | + A color that indicates confidence to service the request. When the item + state is `done.ready` the Seller **MUST** provide a value. It **MUST + NOT** be populated for other states. + + + Mapping between `ServiceabilityColor` and POQ Confidence Level: + + + | ServiceabilityColor | MEF 79 | MEF 79 semantics | + |------------------------- | ------------ | ----------------------------------------------------------------------------- | + | green | GREEN | The Seller has high confidence that this Product can be delivered | + | yellow | YELLOW | The Seller believes they can deliver the Product but is not highly confident | + | red | RED | The Seller cannot deliver the Product as specified | + + Reference: MEF 79 (Sn 8.4.3.1) + enum: + - green + - yellow + - red + type: string + MEFSubUnit: + description: Allows for sub unit identification + properties: + subUnitNumber: + description: >- + The discriminator used for the subunit, often just a simple number + but may also be a range. + type: string + subUnitType: + description: >- + The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + type: string + required: + - subUnitNumber + - subUnitType + type: object + ProductActionType: + description: | + Action to be performed on the Product Item. The action types are + described in MEF 79 (Sn 8.4.1.1). + + The following mapping has been used between `ProductActionType` and MEF + 79: + + | ProductActionType | MEF 79 | + |------------------ | ---------- | + | add | INSTALL | + | modify | CHANGE | + | delete | DISCONNECT | + enum: + - add + - modify + - delete + type: string + ProductOfferingQualification: + allOf: + - $ref: '#/components/schemas/ProductOfferingQualification_Common' + - properties: + productOfferingQualificationItem: + description: >- + One or more of Product Offering Qualification Items. It MUST + contain exactly one entry for each item in the POQ request. + items: + $ref: '#/components/schemas/ProductOfferingQualificationItem' + minItems: 1 + type: array + effectiveQualificationDate: + description: >- + Date and time (set by the Seller) when the POQ state was set to + one of the completion states (done.ready, + done.unable_to_provide, terminated_with_error). The Seller MUST + NOT provide this attribute until mentioned states are achieved. + format: date-time + type: string + expectedPOQCompletionDate: + description: >- + The date the Seller expects to provide qualification result. + Set by the Seller in case of providing a deferred response when + the POQ is in an acknowledged or inProgress state. + format: date-time + type: string + stateChange: + description: > + A log of all state transitions for the POQ. It must be in sync + with the most recent POQ Request state. + items: + $ref: '#/components/schemas/MEFPOQStateChange' + type: array + href: + description: > + Hyperlink to this POQ. Hyperlink MAY be used by the Seller in + responses. Hyperlink MUST be ignored by the Seller in case it + is provided by the Buyer in a request. + type: string + id: + description: >- + The Serviceability Request's unique identifier assigned by the + Seller. + type: string + state: + description: The state that represents the qualification status + $ref: '#/components/schemas/MEFPOQTaskStateType' + required: + - id + - productOfferingQualificationItem + - state + type: object + description: > + Represents a response to the Buyer POQ inquiry. This type defines a set + of attributes that are assigned by the Seller while processing the + request. A POQ response is a combination of attributes defined here + with common attributes that are sent in the request. This type is used + in response to an immediate request and POQ retrieval by an identifier. + Reference MEF 79 (Sn 8.7 and 8.4.3). + ProductOfferingQualificationItem: + allOf: + - $ref: '#/components/schemas/ProductOfferingQualificationItem_Common' + - properties: + terminationError: + description: > + A list of text-based reasons the Seller MUST provide when the + request cannot be processed. When item state is + `terminatedWithError` the Seller **MUST** provide at least one + termination error. + items: + $ref: '#/components/schemas/TerminationError' + type: array + serviceabilityConfidence: + description: >- + The level of confidence of the Seller to be able to service the + request. When the item state is `done.ready` the Seller + **MUST** provide a value. It **MUST NOT** be populated for + other states. + $ref: '#/components/schemas/MEFServiceabilityColor' + serviceabilityConfidenceReason: + description: >- + A free text description of the reason a particular color is + being provided. + type: string + alternateProductOfferingProposal: + description: > + A list of one or more alternative Product Offerings that the + Seller is proposing to the Buyer. If 1) the Buyer has set + `provideAlternate=true`; 2) the Seller has determined that the + POQ Confidence Level for this item is `yellow` or `red`; + and 3) The Seller has alternate Products (e.g. similar but + lower bandwidth) that may be adequate. + + **MUST NOT** be specified if 'state' is 'terminatedWithError' + or 'done.abandoned'. + items: + $ref: '#/components/schemas/AlternateProductOfferingProposal' + type: array + installationInterval: + description: > + The estimated minimum interval that the Seller requires in + their standard process to complete the delivery of this Product + from the time the order is placed and any precedents have been + completed. When attribute `serviceabilityConfidence` is set to + `green` or `yellow` the Seller **MUST** populate this + attribute. **MUST NOT** be specified if 'state' is + 'terminatedWithError' or `done.abandoned`. + $ref: '#/components/schemas/Duration' + guaranteedUntilDate: + description: > + Date until the Seller guarantees the qualification result. + **MUST NOT** be specified if 'state' is 'terminatedWithError' + or 'done.abandoned'. + format: date-time + type: string + stateChange: + description: > + A log of all state transitions for the POQ Item. It must be in + sync with the most recent POQ Item's state. + items: + $ref: '#/components/schemas/MEFPOQItemStateChange' + type: array + state: + description: Current state of an item + $ref: '#/components/schemas/MEFPOQItemTaskStateType' + required: + - state + type: object + description: >- + An individual article included in a POQ that describes a Product of a + particular type (Product Offering) being delivered to a specific + geographical location. The objective is to determine if it is feasible + for the Seller to deliver this item as described and for the Seller to + inform the Buyer of the estimated time interval to complete this + delivery. + + Reference: MEF 79 (Sn 8.4.3.1) + ProductOfferingQualificationItem_Common: + description: > + Common attributes shared between a POQ request and response. These + attributes are provided by the Buyer and must not be modified by the + Seller. + properties: + product: + description: > + Used by the Buyer to point to existing and/or describe the desired + shape of the product. In case of `add` action - only + `productConfiguration` MUST be specified. For `modify` action - + both `id` and `productConfiguration` to point which product + instance to update and to what state. In `delete` only the `id` + must be provided. + $ref: '#/components/schemas/MEFProductRefOrValue' + qualificationItemRelationship: + description: | + A list of references to related POQ items in this POQ + items: + $ref: '#/components/schemas/QualificationItemRelationship' + type: array + relatedContactInformation: + description: >- + Contact information of an individual or organization playing a role + for this POQ Item + + (e.g. for MEF 79: POQ Item Location Contact, role=locationContact) + items: + $ref: '#/components/schemas/RelatedContactInformation' + type: array + action: + description: Action to be qualified + $ref: '#/components/schemas/ProductActionType' + id: + description: > + Id of this POQ item which is unique within the POQ. Assigned by the + Buyer. + type: string + required: + - action + - id + - product + type: object + ProductOfferingQualificationItem_Create: + allOf: + - $ref: '#/components/schemas/ProductOfferingQualificationItem_Common' + - type: object + description: >- + This structure serves as a request for a product offering qualification + item. + + A product qualification item is an individual article included in a POQ + that describes a Product of a particular type (Product Offering) being + delivered to the geographic address or a service site specified by the + Buyer. + + The objective is to determine if it is feasible for the Seller to + deliver this item as described and for the Seller to inform the Buyer + of the estimated time interval to complete this delivery. + + The modelling pattern introduces the `Common` supertype to aggregate + attributes that are common to both `ProductOfferingQualificationItem` + and `ProductOfferingQualificationItem_Create`. It happens that it is + the Create type has a subset of attributes of the response type and + does not introduce any new, thus the `Create` type has an empty + definition. + + Reference: MEF 79 (Sn 8.4.1.1) + ProductOfferingQualification_Common: + description: > + Defines a set of POQ attributes that might be used by the Buyer and + cannot be modified by the Seller. The `relatedContactInformation` + entries provided by the Buyer cannot be changed by the Seller, however + the Seller might append related contact information to that list.` + properties: + externalId: + type: string + description: + ID given by the consumer and only understandable by him (to + facilitate his searches afterwards) + instantSyncQualification: + default: false + description: >- + If this flag is set to Yes, Buyer requests to have an instant + qualification to be provided in operation POST response + type: boolean + relatedContactInformation: + description: |- + Party playing a role for this qualification. MEF 79 mandates + providing 'Buyer Contact Information' in the request + ('role=buyerContactInformation') and 'Seller Contact Information' + in the response ('role=sellerContactInformation') + items: + $ref: '#/components/schemas/RelatedContactInformation' + minItems: 1 + type: array + provideAlternative: + default: false + description: >- + Allows the Buyer to indicate if he is willing to get an alternate + proposal if requested product not available. + type: boolean + projectId: + description: >- + This value MAY be assigned by the Buyer to identify a project the + serviceability request is associated with. + type: string + requestedPOQCompletionDate: + description: >- + The latest date a the POQ completion is expected. This attribute is + required when `instantSyncQualification=false` + format: date-time + type: string + required: + - relatedContactInformation + type: object + ProductOfferingQualification_Create: + allOf: + - $ref: '#/components/schemas/ProductOfferingQualification_Common' + - properties: + productOfferingQualificationItem: + description: A non-empty list of POQ items + items: + $ref: '#/components/schemas/ProductOfferingQualificationItem_Create' + minItems: 1 + type: array + required: + - productOfferingQualificationItem + type: object + description: > + Represents a request formulated by the Buyer that is composed of + product offering qualification items. + + Reference: MEF 79 (Sn 8.4) + ProductOfferingQualification_Find: + description: > + This class represent a single list item for the response of + `listProductOfferingQualification` operation. + + Reference: MEF 79 (Sn 8.6) + properties: + id: + description: The POQ Request's unique identifier. + type: string + externalId: + type: string + description: + ID given by the consumer and only understandable by him (to + facilitate his searches afterwards) + state: + description: Current state of the POQ + $ref: '#/components/schemas/MEFPOQTaskStateType' + projectId: + description: + 'The project ID specified by the Buyer in the POQ Request, if any.' + type: string + requestedPOQCompletionDate: + description: > + The latest date the POQ completion is expected by the Buyer, if + specified by the Buyer. + format: date + type: string + required: + - id + - state + type: object + ProductOfferingRef: + description: >- + A reference to a Product Offering offered by the Seller to the + Buyer. A Product Offering contains the commercial and technical + details of a Product sold by a particular Seller. A Product Offering + defines all of the commercial terms and, through association with a + particular Product Specification, defines all the technical attributes + and behaviors of the Product. A Product Offering may constrain the + allowable set of configurable technical attributes and/or behaviors + specified in the associated Product Specification. Defined in MEF 79 + Section 8.4.1.1 + properties: + href: + description: > + Hyperlink to a Product Offering in Sellers catalog. In case Seller + is not providing a catalog API this field is not used. The catalog + is provided by the Seller to the Buyer during onboarding. Hyperlink + MAY be used by the Seller in responses Hyperlink MUST be ignored + by the Seller in case it is provided by the Buyer in a request. + type: string + id: + description: >- + id of a Product Offering. It is assigned by the Seller. The Buyer + and the Seller exchange information about offerings' ids during the + onboarding process. + type: string + required: + - id + type: object + ProductRelationshipWithGrouping: + description: >- + A relationship to existing Product. The requirements for usage for + given Product are described in the Product Specification. The + "WithGrouping" flavour of the Product Relationship allows for providing + a list of related product identifiers within a single Product + Relationship. This can be later used while processing the request as + defined in the Product Specification. The `groupingKey` attribute is + used to achieve this behavior in the API by marking the list of + `ProductRelationshipWithGroupings` within a `product` with a common + key. + properties: + relationshipType: + description: >- + Specifies the type (nature) of the relationship to the related + Product. The nature of required relationships varies for Products + of different types. For example, a UNI or ENNI Product may not have + any relationships, but an Access E-Line may have two mandatory + relationships (related to the UNI on one end and the ENNI on the + other). More complex Products such as multipoint IP or Firewall + Products may have more complex relationships. As a result, the + allowed and mandatory `relationshipType` values are defined in the + Product Specification. + type: string + href: + description: > + Hyperlink to the product in Seller's inventory that is referenced + Hyperlink MAY be set by the Seller in responses. Hyperlink MUST be + ignored by the Seller in case it is provided by the Buyer in a + request. + type: string + id: + description: unique identifier of a Product that is referenced + type: string + groupingKey: + description: > + MEF 79.0.1. Introduces a list of related ids for the + ProductRelationship. For sake of TMF compliance, a `groupingKey` is + introduced to retain id as a simple attribute. Ids from + relationships having the same `groupingKey` and `relationshipType` + MUST be treated as a list of identifiers. + + Reference: MEF 79.0.1 (Sn 7) + type: string + required: + - id + - relationshipType + type: object + ProductSpecificationRef: + description: >- + A reference to a structured set of well-defined technical attributes + and/or behaviors that are used to construct a Product Offering for sale + to a market. + properties: + href: + description: > + Hyperlink to a Product Specification in Sellers catalog. In case + Seller is not providing a catalog API this field is not used. The + catalog is provided by the Seller to the Buyer during onboarding. + Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be + ignored by the Seller in case it is provided by the Buyer in a + request. + type: string + id: + description: Unique identifier of the product specification + type: string + required: + - id + type: object + QualificationItemRelationship: + description: >- + The relationship between product offering qualification items that can + be used to validate business rules between POQ items. + + Reference: MEF 79.0.1 (Sn 6) + properties: + relationshipType: + description: > + One of the relationship types defined in the Product Specification. + For example: "relies on". + type: string + id: + description: + An identifier of the targeted POQ item within the same POQ request + type: string + required: + - id + - relationshipType + type: object + RelatedContactInformation: + description: >- + Contact data for a person or organization that is involved in the + product offering qualification. In a given context it is always + specified by the Seller (e.g. Seller Contact Information) or by the + Buyer. + + Reference: MEF 79 (Sn 8.11) + properties: + number: + description: Phone number + type: string + emailAddress: + description: Email address + type: string + role: + description: A role of the particular contact in the request + type: string + postalAddress: + description: >- + Identifies the postal address of the person or office to be + contacted. + $ref: '#/components/schemas/FieldedAddress' + organization: + description: The organization or company that the contact belongs to + type: string + name: + description: Name of the contact + type: string + numberExtension: + description: Phone number extension + type: string + required: + - emailAddress + - name + - number + - role + type: object + RelatedPlaceRefOrValue: + description: >- + Place defines the places (locations) where the products being subject + of this qualification are to be provided. + discriminator: + mapping: + FieldedAddress: '#/components/schemas/FieldedAddress' + FormattedAddress: '#/components/schemas/FormattedAddress' + GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' + MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' + GeographicAddressRef: '#/components/schemas/GeographicAddressRef' + GeographicSiteRef: '#/components/schemas/GeographicSiteRef' + propertyName: '@type' + properties: + role: + description: >- + Role of this place. The values that can be specified here are + described by Product Specification (e.g. "INSTALL_LOCATION"). + type: string + '@type': + description: > + This field is used as discriminator. The value is the name of one + of the types that inherit from it using 'allOf', i.e. one of + FieldedAddress, FormattedAddress, GeographicAddressLabel, + MEFGeographicPoint, GeographicAddressRef, GeographicSiteRef. + Moreover, it might discriminate for an additional related place as + defined in '@schemaLocation'. + type: string + '@schemaLocation': + description: >- + A URL to a JSON-Schema file that defines additional attributes and + relationships. May be used to define additional related place + types. Usage of this attribute must be agreed between Buyer and + Seller. + format: uri + type: string + required: + - '@type' + - role + type: object + TerminationError: + description: >- + This indicates an error that caused an Item to be terminated. The code + and propertyPath should be used like in Error422. + properties: + code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused the + validation issue. It is highly recommended that this property + should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + value: + description: Text to describe the reason of the termination. + type: string + type: object + TimeUnit: + description: | + Represents a unit of time. + Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) + enum: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + type: string \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml new file mode 100644 index 00000000..b03298d0 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml @@ -0,0 +1,3539 @@ +openapi: 3.0.1 +info: + description: + "**This file forms part of MEF 123** \n\nThis API implements Business\ + \ Requirements described in MEF 57.2\n\nProduct Order Management allows the Buyer\ + \ to request the Seller to initiate and complete the\nfulfillment process of an\ + \ installation of a Product Offering, an update to\nan existing Product, or a\ + \ disconnect of an existing Product at the address\ndefined by the Buyer.\n\n\ + List of supported Use Cases:\n\n- Create Product Order\n- Update Product Order\ + \ by Product Order Identifier\n- Retrieve List of Product Orders\n- Retrieve Product\ + \ Order by Product Order Identifier\n- Modify Product Order Item Requested Delivery\ + \ Date\n- Retrieve Modify Product Order Item Requested Delivery Date List\n- Retrieve\ + \ Modify Product Order Item Requested Delivery Date by Identifier\n- Cancel Product\ + \ Order\n- Retrieve List of Cancel Product Orders\n- Retrieve Cancel Product Order\ + \ Request by Cancel Product Order Identifier\n- Initiate Charge\n- Respond to\ + \ Charge\n- Retrieve List of Charges\n- Retrieve Charge by Charge Identifier\n\ + - Register for Notifications\n\nCopyright 2022 MEF Forum and its contributors.\n\ + \nThis file includes content based on the TM Forum Product Order API (TMF622\n\ + v4.0.0) available at https://github.com/tmforum-apis/TMF622_ProductOrder,\nwhich\ + \ is licensed by the TM Forum under the Apache License version 2.0. Such\ncontent\ + \ has been modified by the MEF Forum and its contributors.\n" + title: Product Ordering Management + version: 10.0.0 +servers: + - url: "https://{serverBase}/mefApi/sonata/productOrderingManagement/v10/" + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +security: + - oauth2MEFLSOAPI: + - default +tags: + - name: productOrder + - name: cancelProductOrder + - name: charge + - name: modifyProductOrderItemRequestedDeliveryDate + - name: events subscription +paths: + /productOrder: + get: + description: This operation lists or finds ProductOrder entities + operationId: listProductOrder + parameters: + - description: State of the Product Order + in: query + name: state + required: false + schema: + type: string + enum: + - acknowledged + - assessingCancellation + - cancelled + - completed + - failed + - held.assessingCharge + - inProgress + - partial + - pending.assessingModification + - pendingCancellation + - rejected + - description: + A number that uniquely identifies an order within the Buyer's + enterprise. + in: query + name: externalId + required: false + schema: + type: string + - description: + An identifier that is used to group Product Orders that represent + a unit of functionality that is important to a Buyer. + in: query + name: projectId + required: false + schema: + type: string + - description: Date when the order was created greater than + in: query + name: orderDate.gt + required: false + schema: + type: string + format: date-time + - description: Date when the order was created lesser than + in: query + name: orderDate.lt + required: false + schema: + type: string + format: date-time + - description: Effective completion date greater than + in: query + name: completionDate.gt + required: false + schema: + type: string + format: date-time + - description: Effective completion date lesser than + in: query + name: completionDate.lt + required: false + schema: + type: string + format: date-time + - description: + This is requested date to get this Product Order Item completed + greater than + in: query + name: itemRequestedCompletionDate.gt + required: false + schema: + type: string + format: date-time + - description: + This is requested date to get this Product Order Item completed + lesser than + in: query + name: itemRequestedCompletionDate.lt + required: false + schema: + type: string + format: date-time + - description: + "Seller planned completion date of the Product Order Item, greater\ + \ than" + in: query + name: itemExpectedCompletionDate.gt + required: false + schema: + type: string + format: date-time + - description: + "Seller planned completion date of the Product Order Item, lesser\ + \ than" + in: query + name: itemExpectedCompletionDate.lt + required: false + schema: + type: string + format: date-time + - description: order cancellation date greater than + in: query + name: cancellationDate.gt + required: false + schema: + type: string + format: date-time + - description: order cancellation date lesser than + in: query + name: cancellationDate.lt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by the client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/ProductOrder_Find" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - listProductOrder + summary: Lists or finds ProductOrder objects + tags: + - productOrder + post: + description: This operation creates a ProductOrder entity. + operationId: createProductOrder + parameters: + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder_Create" + description: The ProductOrder to be created + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder" + description: Created (https://tools.ietf.org/html/rfc7231#section-6.3.2) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - createProductOrder + summary: Creates a ProductOrder + tags: + - productOrder + x-codegen-request-body-name: productOrder + /productOrder/{id}: + get: + description: This operation retrieves a ProductOrder entity. + operationId: retrieveProductOrder + parameters: + - description: Identifier of the ProductOrder + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - retrieveProductOrder + summary: Retrieves a ProductOrder by ID + tags: + - productOrder + patch: + description: This operation updates partially a ProductOrder entity. + operationId: patchProductOrder + parameters: + - description: Identifier of the ProductOrder + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder_Update" + description: The ProductOrder to be updated + required: true + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder" + description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "409": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error409" + description: Conflict + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - patchProductOrder + summary: Updates partially a ProductOrder + tags: + - productOrder + x-codegen-request-body-name: productOrder + /cancelProductOrder: + get: + description: This operation lists or finds CancelProductOrder entities + operationId: listCancelProductOrder + parameters: + - in: query + name: productOrderId + required: false + schema: + type: string + - in: query + name: state + required: false + schema: + type: string + enum: + - acknowledged + - done + - done.declined + - inProgress.assessingCharge + - rejected + - description: + "Identifies the type of reason, Technical or Commercial, for\ + \ the Cancellation request" + in: query + name: cancellationReasonType + required: false + schema: + type: string + enum: + - technical + - commercial + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/CancelProductOrder_Find" + description: Success + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - listCancelProductOrder + summary: Lists or finds CancelProductOrder objects + tags: + - cancelProductOrder + post: + description: This operation creates a CancelProductOrder entity. + operationId: createCancelProductOrder + parameters: + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/CancelProductOrder_Create" + description: The CancelProductOrder to be created + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/CancelProductOrder" + description: Created + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - createCancelProductOrder + summary: Creates a CancelProductOrder + tags: + - cancelProductOrder + x-codegen-request-body-name: cancelProductOrder + /cancelProductOrder/{id}: + get: + description: This operation retrieves a CancelProductOrder entity. + operationId: retrieveCancelProductOrder + parameters: + - description: Identifier of the CancelProductOrder + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/CancelProductOrder" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveCancelProductOrder + summary: Retrieves a CancelProductOrder by ID + tags: + - cancelProductOrder + /charge: + get: + description: This operation lists or finds Charge entities + operationId: listCharge + parameters: + - description: id of the Product Order this Charge relates to. + in: query + name: productOrderId + required: false + schema: + type: string + - description: id of the Product Order Item this Charge relates to. + in: query + name: productOrderItemId + required: false + schema: + type: string + - description: Date that the Charge was created by the Seller (greater than) + in: query + name: creationDate.gt + required: false + schema: + type: string + format: date-time + - description: Date that the Charge was created by the Seller. (greater than) + in: query + name: creationDate.lt + required: false + schema: + type: string + format: date-time + - description: + The date that the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat all + charges as declined (greater than) + in: query + name: responseDueDate.gt + required: false + schema: + type: string + format: date-time + - description: + The date that the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat all + charges as declined (greater than) + in: query + name: responseDueDate.lt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/MEFProductOrderCharge_Find" + description: Success + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - listCharge + summary: Lists or finds Charge objects + tags: + - charge + /charge/{id}: + get: + description: This operation retrieves a Charge entity. + operationId: retrieveCharge + parameters: + - description: Identifier of the Charge + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProductOrderCharge" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveCharge + summary: Retrieves a Charge by ID + tags: + - charge + patch: + description: This operation updates partially a Charge entity. + operationId: patchCharge + parameters: + - description: Identifier of the Charge + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProductOrderCharge_Update" + description: The Charge to be updated + required: true + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProductOrderCharge" + description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "409": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error409" + description: Conflict + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - patchCharge + summary: Updates partially a Charge + tags: + - charge + x-codegen-request-body-name: charge + /hub: + post: + description: + "Sets the communication endpoint address the service instance must\ + \ use to deliver information about its health state, execution state, failures\ + \ and metrics." + operationId: registerListener + parameters: + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/EventSubscriptionInput" + description: Data containing the callback endpoint to deliver the information + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/EventSubscription" + description: Subscribed + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - registerListener + summary: Register a listener + tags: + - events subscription + x-codegen-request-body-name: data + /hub/{id}: + delete: + description: + "Resets the communication endpoint address the service instance\ + \ must use to deliver information about its health state, execution state,\ + \ failures and metrics." + operationId: unregisterListener + parameters: + - description: The id of the registered listener + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "204": + description: Deleted + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - unregisterListener + summary: Unregister a listener + tags: + - events subscription + get: + description: This operation retrieves a hub entity. + operationId: retrieveHub + parameters: + - description: Identifier of the Hub + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/EventSubscription" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveHub + summary: Retrieves a Hub by ID + tags: + - events subscription + /modifyProductOrderItemRequestedDeliveryDate: + get: + description: + This operation lists or finds ModifyProductOrderItemRequestedDeliveryDate + entities + operationId: listModifyProductOrderItemRequestedDeliveryDate + parameters: + - in: query + name: productOrderId + required: false + schema: + type: string + - in: query + name: state + required: false + schema: + type: string + enum: + - acknowledged + - done + - done.declined + - inProgress.assessingCharge + - rejected + - description: Indicates that expedited treatment is requested. + in: query + name: expediteIndicator + required: false + schema: + type: boolean + - description: + Identifies the Buyer's desired due date (requested delivery date) + - greater than + in: query + name: requestedCompletionDate.gt + required: false + schema: + type: string + format: date-time + - description: + Identifies the Buyer's desired due date (requested delivery date) + - lesser than + in: query + name: requestedCompletionDate.lt + required: false + schema: + type: string + format: date-time + - description: + The date on which the Seller assigned the Modify Product Order + Item Requested Delivery Data Identifier - greater than + in: query + name: creationDate.gt + required: false + schema: + type: string + format: date-time + - description: + The date on which the Seller assigned the Modify Product Order + Item Requested Delivery Data Identifier - lesser than + in: query + name: creationDate.lt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" + description: Success + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - listModifyProductOrderItemRequestedDeliveryDate + summary: Lists or finds ModifyProductOrderItemRequestedDeliveryDate objects + tags: + - modifyProductOrderItemRequestedDeliveryDate + post: + description: + This operation creates a ModifyProductOrderItemRequestedDeliveryDate + entity. + operationId: createModifyProductOrderItemRequestedDeliveryDate + parameters: + - description: |- + The unique identifier of the organization that is acting as the Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate_Create" + description: The ModifyProductOrderItemRequestedDeliveryDate to be created + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" + description: Created + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - createModifyProductOrderItemRequestedDeliveryDate + summary: Creates a ModifyProductOrderItemRequestedDeliveryDate + tags: + - modifyProductOrderItemRequestedDeliveryDate + x-codegen-request-body-name: modifyProductOrderItemRequestedDeliveryDate + /modifyProductOrderItemRequestedDeliveryDate/{id}: + get: + description: + This operation retrieves a ModifyProductOrderItemRequestedDeliveryDate + entity. + operationId: retrieveModifyProductOrderItemRequestedDeliveryDate + parameters: + - description: Identifier of the ModifyProductOrderItemRequestedDeliveryDate + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveModifyProductOrderItemRequestedDeliveryDate + summary: Retrieves a ModifyProductOrderItemRequestedDeliveryDate by ID + tags: + - modifyProductOrderItemRequestedDeliveryDate +components: + schemas: + CancelProductOrder: + type: object + description: Request for cancellation an existing product order + properties: + cancellationDeniedReason: + type: string + description: + "If the Cancel Product Order request is denied by the Seller,\ + \ the Seller provides a reason to the Buyer using this attribute." + cancellationReason: + type: string + description: + An optional attribute that allows the Buyer to provide additional + detail to the Seller on their reason for cancelling the Product Order + cancellationReasonType: + $ref: "#/components/schemas/CancellationReasonType" + charge: + $ref: "#/components/schemas/MEFProductOrderChargeRef" + href: + type: string + description: | + Hyperlink to the cancellation request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + Unique identifier for the Cancel Product Order that is generated + by the Seller when the Cancel Product Order request `state` is set to + `acknowledged` + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Cancel Product Order. + The rule for mapping a represented attribute + value to a `role` is to use the _lowerCamelCase_ pattern e.g. + - Cancel Product Order Contact: `role=cancelProductOrderContact` + - Cancel Product Order Seller Contact: `role=cancelProductOrderSellerContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + state: + $ref: "#/components/schemas/MEFChargeableTaskStateType" + required: + - id + - productOrder + - relatedContactInformation + - state + CancelProductOrder_Create: + type: object + description: |- + Request for cancellation an existing product order + Skipped properties: id,href,state,effectiveCancellationDate + properties: + cancellationReason: + type: string + description: + An optional attribute that allows the Buyer to provide additional + detail to the Seller on their reason for cancelling the Product Order + cancellationReasonType: + $ref: "#/components/schemas/CancellationReasonType" + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Cancel Product Order. + The rule for mapping a represented attribute + value to a `role` is to use the _lowerCamelCase_ pattern e.g. + - Cancel Product Order Contact: `role=cancelProductOrderContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + minItems: 1 + required: + - productOrder + - relatedContactInformation + CancelProductOrder_Find: + type: object + description: A response to a Buyer's get List of Cancel Product Orders + properties: + cancellationReasonType: + $ref: "#/components/schemas/CancellationReasonType" + id: + type: string + description: + Unique identifier for the Cancel Product Order that is generated + by the Seller when the Cancel Product Order request `state` is set to + `acknowledged` + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + state: + $ref: "#/components/schemas/MEFChargeableTaskStateType" + required: + - cancellationReasonType + - id + - productOrder + - state + CancellationReasonType: + type: string + description: + "Identifies the type of reason, Technical or Commercial, for the\ + \ Cancellation request" + enum: + - technical + - commercial + Duration: + type: object + description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." + properties: + amount: + type: integer + description: "Duration (number of seconds, minutes, hours, etc.)" + units: + $ref: "#/components/schemas/TimeUnit" + required: + - amount + - units + Error: + type: object + description: | + Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. + properties: + message: + type: string + description: + Text that provides mode details and corrective actions related + to the error. This can be shown to a client user. + reason: + type: string + description: + Text that explains the reason for the error. This can be shown + to a client user. + maxLength: 255 + referenceError: + type: string + format: uri + description: URL pointing to documentation describing the error + required: + - reason + Error400: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error400Code" + required: + - code + description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) + Error400Code: + type: string + description: |- + One of the following error codes: + - missingQueryParameter: The URI is missing a required query-string parameter + - missingQueryValue: The URI is missing a required query-string parameter value + - invalidQuery: The query section of the URI is invalid. + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + Error401: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error401Code" + required: + - code + description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) + Error401Code: + type: string + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + Error403: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error403Code" + required: + - code + description: + Forbidden. This code indicates that the server understood the request + but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) + Error403Code: + type: string + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + Error404: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - notFound: A current representation for the target resource not found + enum: + - notFound + required: + - code + description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error409: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - conflict: The client has provided a value whose semantics are not appropriate for the property. + enum: + - conflict + required: + - code + description: Conflict (https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.8) + Error422: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error422Code" + propertyPath: + type: string + description: | + A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. + Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). + required: + - code + description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + type: string + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + Error500: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. + enum: + - internalError + required: + - code + description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) + Error501: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - notImplemented: Method not supported by the server + enum: + - notImplemented + required: + - code + description: + Not Implemented. Used in case Seller is not supporting an optional + operation (https://tools.ietf.org/html/rfc7231#section-6.6.2) + EventSubscription: + type: object + description: | + This resource is used to respond to notification subscriptions. + properties: + callback: + type: string + description: + The value provided by the Buyer in `EventSubscriptionInput` + during notification registration + id: + type: string + description: + An identifier of this Event Subscription assigned by the Seller + when a resource is created. + query: + type: string + description: + The value provided by the Buyer in `EventSubscriptionInput` + during notification registration + required: + - callback + - id + EventSubscriptionInput: + type: object + description: This class is used to register for Notifications. + properties: + callback: + type: string + description: + "This callback value must be set to *host* property from Buyer\ + \ Product Order Notification API (productOrderNotification.api.yaml).\ + \ This property is appended with the base path and notification resource\ + \ path specified in that API to construct an URL to which notification\ + \ is sent. E.g. for \"callback\": \"https://buyer.co/listenerEndpoint\"\ + , the product order state change event notification will be sent to: `https://buyer.co/listenerEndpoint/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent`" + query: + type: string + description: + "This attribute is used to define to which type of events to\ + \ register to. Example: \"query\":\"eventType = productOrderStateChangeEvent\"\ + . To subscribe for more than one event type, put the values separated\ + \ by comma: `eventType=productOrderStateChangeEvent,productOrderItemStateChangeEvent`.\ + \ The possible values are enumerated by 'ProductOrderEventType', `CancelProductOrderEventType`\ + \ in productOrderNotification.api.yaml. An empty query is treated as specifying\ + \ no filters - ending in subscription for all event types." + required: + - callback + FieldedAddress: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + city: + type: string + description: The city that the address is in + country: + type: string + description: Country that the address is in + geographicSubAddress: + $ref: "#/components/schemas/GeographicSubAddress" + locality: + type: string + description: The locality that the address is in + postcode: + type: string + description: + "Descriptor for a postal delivery area, used to speed and\ + \ simplify the delivery of mail (also known as zip code)" + postcodeExtension: + type: string + description: + An extension of a postal code. E.g. the part following the + dash in a US urban property address + stateOrProvince: + type: string + description: The State or Province that the address is in + streetName: + type: string + description: Name of the street or other street type + streetNr: + type: string + description: + Number identifying a specific property on a public street. + It may be combined with streetNrLast for ranged addresses. MEF 79 defines + it as required however as in certain countries it is not used we make + it optional in API. + streetNrLast: + type: string + description: Last number in a range of street numbers allocated to a property + streetNrLastSuffix: + type: string + description: Last street number suffix for a ranged address + streetNrSuffix: + type: string + description: The first street number suffix + streetSuffix: + type: string + description: A modifier denoting a relative direction + streetType: + type: string + description: + "The type of street (e.g., alley, avenue, boulevard, brae,\ + \ crescent, drive, highway, lane, terrace, parade, place, tarn, way,\ + \ wharf)" + required: + - city + - country + - streetName + description: + "A type of Address that has a discrete field and value for each\ + \ type of boundary or identifier down to the lowest level of detail. For example\ + \ \"street number\" is one field, \"street name\" is another field, etc." + FormattedAddress: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + addrLine1: + type: string + description: The first address line in a formatted address + addrLine2: + type: string + description: The second address line in a formatted address + city: + type: string + description: The city that the address is in + country: + type: string + description: Country that the address is in + locality: + type: string + description: + "An area of defined or undefined boundaries within a local\ + \ authority or other legislatively defined area, usually rural or semi-rural\ + \ in nature" + postcode: + type: string + description: + "Descriptor for a postal delivery area, used to speed and\ + \ simplify the delivery of mail (also known as ZIP code)" + postcodeExtension: + type: string + description: + An extension of a postal code. E.g. the part following the + dash in an US urban property address + stateOrProvince: + type: string + description: The State or Province that the address is in + required: + - addrLine1 + - city + - country + description: + "A type of Address that has discrete fields for each type of boundary\ + \ or identifier with the exception of street and more specific location details,\ + \ which are combined into a maximum of two strings based on local postal addressing\ + \ conventions." + GeographicAddressLabel: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + externalReferenceId: + type: string + description: A reference to an address by id + externalReferenceType: + type: string + description: + Uniquely identifies the authority that specifies the addresses + reference and/or its type (if the authority specifies more than one + type of address). The value(s) to be used are to be agreed during the + onboarding. For North American providers this would normally be CLLI + (Common Language Location Identifier) code. + required: + - externalReferenceId + - externalReferenceType + description: + "A unique identifier controlled by a generally accepted independent + administrative authority that specifies a fixed geographical location. " + GeographicAddressRef: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + href: + type: string + description: | + Hyperlink to the referenced GeographicAddress. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + Identifier of the referenced Geographic Address. This identifier + is assigned during a successful address validation request (Geographic + Address Validation API) + required: + - id + description: | + A reference to a Geographic Address resource available through Address Validation API. + GeographicSiteRef: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + href: + type: string + description: | + Hyperlink to the referenced GeographicSite. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: Identifier of the referenced Geographic Site. + required: + - id + description: | + A reference to a Geographic Site resource available through Service Site API + GeographicSubAddress: + type: object + description: "Additional fields used to specify an address, as detailed as possible." + properties: + buildingName: + type: string + description: | + Allows for identification of places that require building name as part of addressing information + levelNumber: + type: string + description: + "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ + \ 2" + levelType: + type: string + description: Describes level types within a building + privateStreetName: + type: string + description: + '"Private streets internal to a property (e.g. a university) + may have internal names that are not recorded by the land title office' + privateStreetNumber: + type: string + description: Private streets numbers internal to a private street + subUnit: + type: array + description: + "Representation of a MEFSubUnit It is used for describing subunit\ + \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ + \ WHARF." + items: + $ref: "#/components/schemas/MEFSubUnit" + MEFAcceptedRejectedType: + type: string + description: Indicator of acceptance + enum: + - accepted + - rejected + MEFBillingAccountRef: + type: object + description: A reference to the Buyer's Billing Account + properties: + id: + type: string + description: + Identifies the buyer's billing account to which the recurring + and non-recurring charges for this order or order item will be billed. + Required if the Buyer has more than one Billing Account with the Seller + and for all new Product Orders. + required: + - id + MEFBuyerSellerType: + type: string + description: Indicates if the note is from Buyer or Seller. + enum: + - buyer + - seller + MEFCancelProductOrderRef: + type: object + description: A reference to a Cancel Product Order instance + properties: + href: + type: string + description: Hyperlink to access the Cancel Product Order + id: + type: string + description: A unique identifier of the Cancel Product Order + required: + - id + MEFChargePeriod: + type: string + description: Used for a recurring charge to indicate period. + enum: + - hour + - day + - week + - month + - year + MEFChargeableTaskStateType: + type: string + description: | + The states as defined by TMF622 and extended to meet MEF requirements. + + | Name | MEF 57.2 Name | Description | + | -------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | inProgress.assessingCharge | ACCESSING_CHARGE | The Modify Product Order Item Requested Delivery Date request results in a Charge being initiated by the Seller. The Modify Product Order Item Requested Delivery Date remains in this state until the Charge is completed or withdrawn by the Seller. All charges within a Charge that was initiated due to a Modify Product Order Item Requested Delivery Date are considered Blocking charges. If any charge is not accepted by the Buyer, the Modify Product Order Item Requested Delivery Date moves from the `inProgress.assessingCharge` state to the `done.declined` state. | + | acknowledged | ACKNOWLEDGED | A Modify Product Order Item Requested Delivery Date request has been received and has passed basic validation. The Modify Product Order Item Requested Delivery Date Identifier is assigned in the `acknowledged` state. Validation of Modify Product Order Item Requested Delivery Date attributes as applicable is completed in the `acknowledged` state. | + | done | ACCEPTED | A Modify Product Order Item Requested Delivery Date request has been received, passed all validations, if a Charge is associated all Charge Items have been accepted by the Buyer, and the Product Order Item Completion Date has been updated as requested. | + | done.declined | DECLINED | Blocking charges associated with a Modify Product Order Item Requested Delivery Date have been declined by the Buyer. No updates are made to the Product Order Item. | + | rejected | REJECTED | A Modify Product Order Item Requested Delivery Date request was submitted by the Buyer, and it has failed any validation checks the Seller performs during the `acknowledged` state. No updates are made to the referenced Product Order Item. + enum: + - acknowledged + - done + - done.declined + - inProgress.assessingCharge + - rejected + MEFEndOfTermAction: + type: string + description: + "The action the Seller will take once the term expires. \nRoll\ + \ indicates that the Product's contract will continue on a rolling basis for\ + \ the duration of the Roll Interval at the end of the Term. \nAuto-disconnect\ + \ indicates that the Product will be disconnected at the end of the Term.\ + \ \nAuto-renew indicates that the Product's contract will be automatically\ + \ renewed for the Term Duration at the end of the Term." + enum: + - roll + - autoDisconnect + - autoRenew + MEFGeographicPoint: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + spatialRef: + type: string + description: + The spatial reference system used to determine the coordinates + (e.g. "WGS84"). The system used and the value of this field are to be + agreed during the onboarding process. + x: + type: string + description: The latitude expressed in the format specified by the `spacialRef` + "y": + type: string + description: The longitude expressed in the format specified by the `spacialRef` + z: + type: string + description: The elevation expressed in the format specified by the `spacialRef` + required: + - spatialRef + - x + - "y" + description: | + A MEFGeographicPoint defines a geographic point through coordinates. + MEFItemTerm: + type: object + description: The term of the Item + properties: + description: + type: string + description: Description of the term + duration: + $ref: "#/components/schemas/Duration" + endOfTermAction: + $ref: "#/components/schemas/MEFEndOfTermAction" + name: + type: string + description: Name of the term + rollInterval: + $ref: "#/components/schemas/Duration" + required: + - duration + - endOfTermAction + - name + MEFMilestone: + type: object + description: + Milestones associated to the Product Order Item. Set by the Seller + when a Milestone occurs. + properties: + date: + type: string + format: date-time + description: The date on when the milestone was reached + name: + type: string + description: Name of the Milestone. + note: + type: string + description: Additional comment related to milestone change. + required: + - date + - name + MEFModifyProductOrderItemRequestedDeliveryDate: + type: object + description: + A response to a request initiated by the Buyer to modify the Requested + Completion Date or the Expedite Indicator of a Product Order Item. + properties: + creationDate: + type: string + format: date-time + description: + Date that the Modify Product Order Item Requested Delivery + Date was created in the Seller's system and the id was assigned + expediteIndicator: + type: boolean + default: false + description: + "Indicates that expedited treatment is requested. Set by the\ + \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ + \ the Requested Completion Date to the expedited date" + href: + type: string + description: | + Hyperlink to the modification request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + Unique identifier for the MEFModifyProductOrderItemRequestedDeliveryDate + that is generated by the Seller when the MEFModifyProductOrderItemRequestedDeliveryDate + request is moved to the 'acknowledged' state. + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + requestedCompletionDate: + type: string + format: date-time + description: + Identifies the Buyer's desired due date (requested delivery + date) + state: + $ref: "#/components/schemas/MEFChargeableTaskStateType" + required: + - creationDate + - id + - productOrderItem + - state + MEFModifyProductOrderItemRequestedDeliveryDateRef: + type: object + description: a reference to Modify Product Order Item Requested Delivery Date + properties: + href: + type: string + description: + Hyperlink to access the Modify Product Order Item Requested + Delivery Date + id: + type: string + description: + A unique identifier of the Modify Product Order Item Requested + Delivery Date + required: + - id + MEFModifyProductOrderItemRequestedDeliveryDate_Create: + type: object + description: + A request initiated by the Buyer to modify the Requested Requested + Delivery Date or the Expedite Indicator of a Product Order Item. + properties: + expediteIndicator: + type: boolean + default: false + description: + "Indicates that expedited treatment is requested. Set by the\ + \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ + \ the Requested Completion Date to the expedited date" + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + requestedCompletionDate: + type: string + format: date-time + description: + Identifies the Buyer's desired due date (requested delivery + date) + required: + - productOrderItem + MEFOrderItemCoordinatedAction: + type: object + description: + The interval after the completion of one or more related Order + Items that this Order Item can be started or completed + properties: + coordinatedActionDelay: + $ref: "#/components/schemas/Duration" + coordinationDependency: + $ref: "#/components/schemas/MEFOrderItemCoordinationDependencyType" + itemId: + type: string + description: + Specifies Order Item that is to be coordinated with this Order + Item. + required: + - coordinatedActionDelay + - coordinationDependency + - itemId + MEFOrderItemCoordinationDependencyType: + type: string + description: | + Possible values of the Order Item Coordination Dependency + + | OrderItemCoordinationDependencyType | MEF 57.2 | Description | + |-------------------------------------|------------------|----------------------------------------------------------------------------------------------------| + | startToStart | START_TO_START | Work on the Specified Order Item can only be started after the Coordinated Order Items are started | + | startToFinish | START_TO_FINISH | The Coordinated Order Items must complete before work on the Specified Order Item begins | + | finishToStart | FINISH_TO_START | Work on the Related Order Items begins after the completion of the Specified Order Item | + | finishToFinish | FINISH_TO_FINISH | Work on the Related Order Items completes at the same time as the Specified Order Item | + enum: + - startToStart + - startToFinish + - finishToStart + - finishToFinish + MEFPriceType: + type: string + description: Indicates if the price is for recurring or non-recurring charges. + enum: + - recurring + - nonRecurring + - usageBased + MEFProductActionType: + type: string + description: | + Action to be performed on the Product that the Order Item refers to. + + | ProductActionType | MEF 57.2 | + | ----------------- | ---------- | + | add | INSTALL | + | modify | CHANGE | + | delete | DISCONNECT | + enum: + - add + - modify + - delete + MEFProductConfiguration: + type: object + description: + MEFProductConfiguration is used as an extension point for MEF specific + product/service payload. The `@type` attribute is used as a discriminator + discriminator: + propertyName: "@type" + properties: + "@type": + type: string + description: + "The name of the type, defined in the JSON schema specified\ + \ above, for the product that is the subject of the Product Order Request.\ + \ The named type must be a subclass of MEFProductConfiguration." + required: + - "@type" + MEFProductOrderCharge: + type: object + description: + "When non-recurring or updated recurring charges are identified\ + \ by the Seller during their processing of a Product Order, the Seller must\ + \ communicate these charges to the Buyer and the Buyer must respond to the\ + \ Seller informing the Seller if they accept or reject each charge. The Seller\ + \ indicates for each charge, if the charge is Blocking or non-Blocking. If\ + \ the Buyer rejects a Blocking Charge, the Seller will cancel that Product\ + \ Order Item and any related Product Order Items. If the Buyer rejects a non-blocking\ + \ Charge, the Seller may proceed with fulfillment of the Product Order Item." + properties: + cancelProductOrder: + $ref: "#/components/schemas/MEFCancelProductOrderRef" + chargeItem: + type: array + description: A list of Charge Items contained in the Charge + items: + $ref: "#/components/schemas/MEFProductOrderChargeItem" + creationDate: + type: string + format: date-time + description: Date that the Charge was created by the Seller. + href: + type: string + description: | + Hyperlink to the Charge. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: A unique identifier of the Charge + modifyProductOrderItemRequestedDeliveryDate: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDateRef" + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + responseDueDate: + type: string + format: date-time + description: + The date by which the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat + all charges as declined and move them to `declinedByBuyer` status and + put the Charge to `completed` status. + state: + $ref: "#/components/schemas/MEFProductOrderChargeStateType" + required: + - chargeItem + - creationDate + - id + - responseDueDate + - state + MEFProductOrderCharge_Find: + type: object + description: A response object for Buyer's get Charge List request. + properties: + creationDate: + type: string + format: date-time + description: Date that the Charge was created by the Seller. + id: + type: string + description: A unique identifier of the Charge + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + responseDueDate: + type: string + format: date-time + description: + The date by which the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat + all charges as declined and move them to `declinedByBuyer` status and + put the Charge to `completed` status. + state: + $ref: "#/components/schemas/MEFProductOrderChargeStateType" + required: + - creationDate + - id + - responseDueDate + - state + MEFProductOrderChargeActivityType: + type: string + description: | + Possible values for the state of the Charge Activity Type + enum: + - new + - change + MEFProductOrderChargeItem: + type: object + description: A single component part of the Charge + properties: + acceptanceIndicator: + $ref: "#/components/schemas/MEFAcceptedRejectedType" + activityType: + $ref: "#/components/schemas/MEFProductOrderChargeActivityType" + blocking: + type: boolean + description: + "Indicates if rejecting the charge will cause the Seller to\ + \ cancel the Product Order Item, or close the Cancel Product Order or\ + \ Modify Product Order Item Requested Delivery Date without action." + id: + type: string + description: + An identifier that is unique among all Charge Items within + a Charge + note: + type: array + description: | + Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. + items: + $ref: "#/components/schemas/Note" + price: + $ref: "#/components/schemas/Price" + priceCategory: + $ref: "#/components/schemas/MEFPriceCategory" + priceType: + $ref: "#/components/schemas/MEFPriceType" + recurringChargePeriod: + $ref: "#/components/schemas/MEFChargePeriod" + state: + $ref: "#/components/schemas/MEFProductOrderChargeItemStateType" + unitOfMeasure: + type: string + description: + "Unit of Measure if price depending on it is usageBased (Gb,\ + \ SMS volume, etc..)" + required: + - activityType + - blocking + - id + - price + - priceCategory + - priceType + - state + MEFPriceCategory: + type: string + description: A description of the cause of the Charge Item + enum: + - cancellation + - construction + - connection + - disconnect + - expedite + - other + MEFProductOrderChargeItemStateType: + type: string + description: | + Possible values for the state of the Charge Item + + | State | MEF 57.2 Name | Description | + | ------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `awaitingResponse` | AWAITING_RESPONSE | A Charge has been initiated by the Buyer. The charge includes one or more charges related to a Product Order or Product Order Item. Buyer has not indicated whether they accept or reject the charges via a Respond to Charge request. | + | `completed` | COMPLETED | All Charge Items included in the Charge have moved to either the `acceptedByBuyer` state, the `declinedByBuyer` state, or the `withdrawnBySeller` state. | + | `timeout` | TIMEOUT | A Charge Item has been declined by the Buyer. The referenced Product Order and Product Order Items are updated. If a Blocking charge is declined, the Seller may cancel the referenced Product Order Item and any related Product Order Items, the related Cancel Product Order, or the related Modify Product Order Item Requested Delivery Date. | + | `withdrawnBySeller` | WITHDRAWN_BY_SELLER | The Seller determines that the Charge Item is incorrect. They withdraw the Charge Item and initiate a new Charge with the required correction(s) if needed. | + enum: + - awaitingResponse + - acceptedByBuyer + - declinedByBuyer + - withdrawnBySeller + MEFProductOrderChargeItem_Update: + type: object + description: + A type used to perform Buyer's response to a Charge Item - to accept + or reject it. + properties: + acceptanceIndicator: + $ref: "#/components/schemas/MEFAcceptedRejectedType" + id: + type: string + description: + "An identifier that is unique among Charge. Used for Charge\ + \ Item matching, not to be update." + note: + type: array + description: | + Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. + items: + $ref: "#/components/schemas/Note" + required: + - acceptanceIndicator + - id + MEFProductOrderChargeRef: + type: object + description: A reference to a Charge instance + properties: + href: + type: string + description: Hyperlink to access the Charge + id: + type: string + description: A unique identifier of the Charge + required: + - id + MEFProductOrderChargeStateType: + type: string + description: | + Possible values for the state of the Charge + + | State | Description | + | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | + | `completed` | All Charge Items included in the Charge for a given Product Order Item have moved to either the `accepted` state or the `declined` state. | + | `awaitingResponse` | A Charge has been initiated by the Buyer. The charge includes one or more charges. | + | `timeout` | A response has not been received from the Buyer within the `responseDueDate`. This is treated as if the Buyer declined the Charge Items. | + | `withdrawnBySeller` | The Seller determines that the Charge is incorrect. They withdraw the Charge and initiate a new Charge with the required correction(s). | + enum: + - awaitingResponse + - completed + - timeout + - withdrawnBySeller + MEFProductOrderCharge_Update: + type: object + description: + A subset of MEFProductOrderCharge that is allowed to be updated + by the Buyer + properties: + chargeItem: + type: array + description: A list of Charge Items contained in the Charge + items: + $ref: "#/components/schemas/MEFProductOrderChargeItem_Update" + minItems: 1 + required: + - chargeItem + MEFProductOrderItemRef: + type: object + description: It's a ProductOrder item + properties: + productOrderHref: + type: string + description: Reference of the related ProductOrder. + productOrderId: + type: string + description: Unique identifier of a ProductOrder. + productOrderItemId: + type: string + description: Id of an Item within the Product Order + required: + - productOrderId + - productOrderItemId + MEFProductOrderItemStateChange: + type: object + description: + "Holds the State notification reasons and associated date the State\ + \ changed, populated by the server" + properties: + changeDate: + type: string + format: date-time + description: The date on when the state was reached + changeReason: + type: string + description: Additional comment related to state change. + state: + $ref: "#/components/schemas/MEFProductOrderItemStateType" + MEFProductOrderItemStateType: + type: string + description: | + Possible values for the state of the Product Order Item The following + mapping has been used between `MEFProductOrderItemStateType` and MEF + 57.2: + + | state | MEF 57.2 name | Description | + | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | `acknowledged` | ACKNOWLEDGED | A Product Order Item has been received and has passed basic business validations. From the `acknowledged` state the Product Order Item is further validated and depending on the results of the validation and if other Product Order Items in the Product Order are also validated the Product Order Item moves to `inProgress`, `rejected.validated`, or `rejected.unassessed`. | + | `cancelled` | CANCELLED | The Product Order has moved to the `pendingCancellation` state. All Product Order Items move to `cancelled`. | + | `completed` | COMPLETED | The Product Order Item has completed provisioning. This is an end state | + | `failed` | FAILED | The fulfillment of a Product Order Item has failed. A Product Order Item may fail because the Buyer declined a Blocking charge identified via the Charge, the Buyer failed to respond to a Charge Item included in a Charge, or the Seller is unable to fulfill the Product Order Item. A Product Order Item moving to `failed` state results in the Product Order State being `failed` or `partial`. This is a terminal state. | + | `held` | HELD | The Product Order Item cannot be progressed due to Charge the Seller awaiting a response from the Buyer on a Charge. The Seller stops work on the Product Order Item until the Charge has completed. Upon acceptance by the Buyer of all Blocking charges, the Product Order Item returns to `inProgress` state If the Buyer rejects a Blocking charge, the Product Order Item moves to the `failed` state. | + | `inProgress` | IN_PROGRESS | The Product Order Item has been successfully validated and fulfillment has started. If the Seller's system links validation between Product Order Items in a Product Order, a Product Order Item in this state also indicates that the other Product Order Items passed validation. | + | `pending` | PENDING | The Product Order Item cannot be progressed due to the Seller assessing a Cancel Product Order or Modify Product Order Item Requested Delivery Date request. The Seller stops work on the Product Order Item until either the Cancel Product Order has been accepted and the Product Order state moves to `pendingCancellation` and the Product Order Item state moves to `cancelled`, the Cancel Product Order has been rejected and the Product Order Item State moves to `inProgress`, the Modify Product Order Item Requested Delivery Date has been accepted and the Product Order Item State moves to `inProgress`, or the Modify Product Order Item Requested Delivery Date moves to `done.declined` and the Product Order Item state moves to `inProgress` with original delivery dates. | + | `rejected` | REJECTED | A Product Order Item was submitted, and it has failed at least one validation checks the Seller performs during the `acknowledged` state. | + | `rejected.unassessed` | UNASSESSED | A Product Order was submitted and all validation checks the Seller performs during the `acknowledged` state have not been completed, but another Product Order Item in the Product Order has moved to the `rejected` state. | + | `rejected.validated` | VALIDATED | A Product Order was submitted, and it has passed all validation checks the Seller performs during the `acknowledged` state, but another Product Order Item in the Product Order has moved to the `rejected` state | + enum: + - acknowledged + - cancelled + - completed + - failed + - held + - inProgress + - pending + - rejected + - rejected.validated + - rejected.unassessed + MEFProductOrderItem_Common: + type: object + description: | + An identified part of the order. A product order is decomposed into one or more order items. This type holds the attributes common to request and response representation of the Product Order Item. + properties: + action: + $ref: "#/components/schemas/MEFProductActionType" + agreementName: + type: string + description: + The name of the Agreement which is referenced for the Product + Order Item. + billingAccount: + $ref: "#/components/schemas/MEFBillingAccountRef" + coordinatedAction: + type: array + description: + The interval after the completion of one or more related Product + Order Items that this Product Order Item can be started or completed + items: + $ref: "#/components/schemas/MEFOrderItemCoordinatedAction" + endCustomerName: + type: string + description: + "The name of the End Customer, either a business name or an\ + \ individual name depending on the end customer." + expediteIndicator: + type: boolean + default: false + description: + "Indicates that expedited treatment is requested. Set by the\ + \ Buyer. If this is set to TRUE, the Buyer sets the Requested Completion\ + \ Date to the expedited date. See MEF 57.2 section 7.3 for a description\ + \ of the interaction between the Buyer and the Seller." + id: + type: string + description: | + A Buyer provided identifier to identify Product Order Items and to be able to relate them to one another. This is set by the Buyer and is unique within the Product Order. Examples of Reference Identifier could be 1, 2, 3 or A, B, C. The Reference Identifier can be reused in multiple Product Orders to identify a Product Order Item within that Product Order. + note: + type: array + description: | + Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. This is not to be used to inform the Seller of Actions that the Buyer wishes performed. + items: + $ref: "#/components/schemas/Note" + product: + $ref: "#/components/schemas/MEFProductRefOrValueOrder" + productOfferingQualificationItem: + $ref: "#/components/schemas/ProductOfferingQualificationItemRef" + productOrderItemRelationship: + type: array + description: + The relationship between Product Order Items in the Product + Order. + items: + $ref: "#/components/schemas/OrderItemRelationship" + quoteItem: + $ref: "#/components/schemas/MEFQuoteItemRef" + relatedBuyerPON: + type: string + description: + Identifies the Buyer Purchase Order Number that is related + to this Product Order. + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Order Item. + The rule for mapping a represented attribute + value to a `role` is to use the _lowerCamelCase_ pattern e.g. + - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` + - Buyer Implementation Contact: `role=buyerImplementationContact` + - Buyer Technical Contact: `role=buyerTechnicalContact` + - Buyer Billing Contact: `role=buyerBillingContact` + - Buyer Fault Contact: `role=buyerFaultContact` + - Seller Fault Contact: `role=sellerFaultContact` + - Buyer GDPR Contact: `role=buyerGDPRContact` + - Seller GDPR Contact: `role=sellerGDPRContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + requestedCompletionDate: + type: string + format: date-time + description: + Identifies the Buyer's desired due date (requested delivery + date) + requestedItemTerm: + $ref: "#/components/schemas/MEFItemTerm" + tspRestorationPriority: + type: string + description: | + Within the United States, indicates the provisioning and restoration priority as defined under the TSP Service Vendor Handbook. The valid values are defined in ATIS OBF document: ATIS-0404001. + required: + - action + - id + MEFProductOrderItem_Create: + allOf: + - $ref: "#/components/schemas/MEFProductOrderItem_Common" + - type: object + description: + "An identified part of the order. A product order is decomposed\ + \ into\none or more order items. \nThe modelling pattern introduces the\ + \ `Common` supertype to\naggregate attributes that are common to both `ProductOrderItem`\ + \ and\n`ProductOrderItem_Create`. The `Create` type has a subset of\nattributes\ + \ of the response type and does not introduce any new,\nthus the `Create`\ + \ type has an empty definition.\n" + MEFProductOrderItem_Update: + type: object + description: | + An updatable representation of the Product Order Item. + properties: + endCustomerName: + type: string + description: + "The name of the End Customer, either a business name or an\ + \ individual name depending on the end customer." + id: + type: string + description: | + Identifier of the Item. This is to address the Item to be updated within the Product Order. The id itself cannot be updated. + note: + type: array + description: | + Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. + items: + $ref: "#/components/schemas/Note" + relatedBuyerPON: + type: string + description: + This information is not used by the Seller and is maintained + for the convenience of the Buyer (e.g. search purposes). + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Order Item. Buyer may modify, add, or delete only Buyer-related contacts. + - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` + - Buyer Implementation Contact: `role=buyerImplementationContact` + - Buyer Technical Contact: `role=buyerTechnicalContact` + - Buyer Fault Contact: `role=buyerFaultContact` + - Buyer GDPR Contact: `role=buyerGDPRContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + required: + - id + MEFProductOrderRef: + type: object + description: Holds the MEF Product Order reference + properties: + productOrderHref: + type: string + description: Hyperlink to access the order + productOrderId: + type: string + description: + Unique (within the ordering domain) identifier for the order + that is generated by the seller when the order is initially accepted. + required: + - productOrderId + MEFProductOrderStateChange: + type: object + description: + "Holds the State notification reasons and associated date the State\ + \ changed, populated by the server" + properties: + changeDate: + type: string + format: date-time + description: The date on when the state was reached + changeReason: + type: string + description: Additional comment related to state change + state: + $ref: "#/components/schemas/MEFProductOrderStateType" + MEFProductOrderStateType: + type: string + description: | + Possible values for the state of the Product Order The following + mapping has been used between `MEFProductOrderStateType` and MEF 57.2: + + | state | MEF 57.2 name | Description | + | ------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `acknowledged` | ACKNOWLEDGED | A Product Order has been received by the Seller and has passed basic validation. A `productOrder.id` is assigned in the `acknowledged` state and a response is returned to the Buyer. The Product Order remains in the `acknowledged` state while validations of Product Order and Product Order Item(s) attributes as applicable is completed. If the Product Order and Product Order Item attributes are validated the Product Order moves to the `inProgress` state. If not validated, the Product Order moves to the `rejected` state. | + | `assessingCancellation` | ASSESSING_CANCELLATION | A Cancel Product Order request has been received by the Seller. The Product Order is being assessed to determine if the Product Order can be cancelled. If there are charges associated with cancelling the Product Order, these are communicated to the Buyer using the Charge process. The Product Order remains in the `assessingCancellation` state until any relevant Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order moves to the `pendingCancellation` state. If the request is not validated or if any associated Charges are not completed, the Product Order moves to the `inProgress` state and the Product Order is not cancelled. | + | `held.assessingCharge` | ASSESSING_CHARGE | A Charge has been initiated by the Seller that is not the result of a Modify Product Order Item Requested Delivery Date or Cancel Product Order request and the Seller is awaiting a Buyer response to the Charge. If a blocking or non-blocking charge is accepted by the Buyer, the Product Order moves to `inProgress`. If a non-blocking charge is declined by the Buyer, the Product Order moves to `inProgress`. If a blocking charge is declined by the Buyer and there are no unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` and then to the `failed` state. If a blocking charge is declined by the Buyer and there are unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` state. | + | `pending.assessingModification` | ASSESSING_MODIFICATION | A request has been made by the Buyer to modify either the `expediteIndicator` or the `requestedCompletionDate` of a Product Order Item. The Product Order Item is currently being assessed to determine whether the Modify Product Order Item Requested Delivery Date is valid. If there is a charge associated with the Modify Product Order Item Requested Delivery Date, the Product Order remains in the `pending.assessingModification` state until the Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order returns to the `inProgress` state. | + | `cancelled` | CANCELLED | The Product Order has been successfully cancelled. This is a terminal state. | + | `pendingCancellation` | CANCELLING | The Buyer's Cancel Request has been assessed and it has been determined that it is feasible to proceed with the cancellation. This state can also result from a Seller cancelling the Product Order within their systems without a request from the Buyer. | + | `completed` | COMPLETED | The Product Order has completed fulfillment and the Product is now active. This is a terminal state | + | `failed` | FAILED | All Product Order Items have failed which results in the entire Product Order failing. This is a terminal state. | + | `inProgress` | IN_PROGRESS | The Product Order has been successfully validated, and fulfillment has started. | + | `partial` | PARTIAL | Fulfillment of at least one Product Order Item has failed, and fulfillment of at least one Product Order Item has been successful. This is a terminal state. | + | `rejected` | REJECTED | A Product Order was submitted, and it has failed at least one of the validation checks the Seller performs after it reached the `acknowledged` state | + enum: + - acknowledged + - assessingCancellation + - cancelled + - completed + - failed + - held.assessingCharge + - inProgress + - partial + - pending.assessingModification + - pendingCancellation + - rejected + MEFProductRefOrValueOrder: + type: object + description: + Used by the Buyer to point to existing and/or describe the desired + shape of the product. In case of `add` action - only `productConfiguration` + MUST be specified. For `modify` action - both `id` and `productConfiguration` + MUST be provided to point which product instance to update and to what state. + In `delete` only the `id` must be provided. + properties: + href: + type: string + description: + Hyperlink to the referenced Product. Hyperlink MAY be used + by the Seller in responses. Hyperlink MUST be ignored by the Seller in + case it is provided by the Buyer in a request. + id: + type: string + description: + The unique identifier of an in-service Product that is the + ordering subject. This field MUST be populated if an item `action` is + either `modify` or `delete`. This field MUST NOT be populated if an item + `action` is `add`. + place: + type: array + description: + The relationships between this Product Order Item and one or + more Places as defined in the Product Specification. + items: + $ref: "#/components/schemas/RelatedPlaceRefOrValue" + productConfiguration: + $ref: "#/components/schemas/MEFProductConfiguration" + productOffering: + $ref: "#/components/schemas/ProductOfferingRef" + productRelationship: + type: array + description: + A list of references to existing products that are related + to the ordered Product. + items: + $ref: "#/components/schemas/ProductRelationship" + MEFQuoteItemRef: + type: object + description: It's a Quote item that has been executed previously. + properties: + id: + type: string + description: Id of an Quote Item + quoteHref: + type: string + description: Reference of the related Quote. + quoteId: + type: string + description: Unique identifier of a Quote. + required: + - id + - quoteId + MEFSubUnit: + type: object + description: Allows for sub unit identification + properties: + subUnitNumber: + type: string + description: + "The discriminator used for the subunit, often just a simple\ + \ number but may also be a range." + subUnitType: + type: string + description: + "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ + \ UNIT, WHARF." + required: + - subUnitNumber + - subUnitType + Money: + type: object + description: A base / value business entity used to represent money + properties: + unit: + type: string + description: Currency (ISO4217 norm uses 3 letters to define the currency) + value: + type: number + format: float + description: A positive floating point number + Note: + type: object + description: + Extra information about a given entity. Only useful in processes + involving human interaction. Not applicable for the automated process. + properties: + author: + type: string + description: Author of the note + date: + type: string + format: date-time + description: Date the Note was created + id: + type: string + description: + "Identifier of the note within its containing entity (may or\ + \ may not be globally unique, depending on provider implementation)" + source: + $ref: "#/components/schemas/MEFBuyerSellerType" + text: + type: string + description: Text of the note + required: + - author + - date + - id + - source + - text + OrderItemRelationship: + type: object + description: The relationship between Product Order Items in the Product Order. + properties: + id: + type: string + description: Id of the related Order Item (must be in the same Order). + relationshipType: + type: string + description: + Specifies the nature of the relationship to the related Product + Order Item. A string that is one of the relationship types specified in + the Product Specification. + required: + - id + - relationshipType + Price: + type: object + description: + "Provides all amounts (tax included, duty free, tax rate), used\ + \ currency and percentage to apply for Price Alteration." + properties: + dutyFreeAmount: + $ref: "#/components/schemas/Money" + taxIncludedAmount: + $ref: "#/components/schemas/Money" + taxRate: + type: number + format: float + description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." + required: + - dutyFreeAmount + ProductOfferingQualificationItemRef: + type: object + description: + It's a productOfferingQualification item that has been executed + previously. + properties: + alternateProductOfferingProposalId: + type: string + description: + A unique identifier for this Alternate Product Proposal assigned + by the Seller. + id: + type: string + description: Id of an item of a product offering qualification + productOfferingQualificationHref: + type: string + description: Reference to a related Product Offering Qualification resource. + productOfferingQualificationId: + type: string + description: + Unique identifier of related Product Offering Qualification + resource. + required: + - id + - productOfferingQualificationId + ProductOfferingRef: + type: object + description: + "A reference to a Product Offering offered by the Seller to the\ + \ Buyer. A Product Offering contains the commercial and technical details\ + \ of a Product sold by a particular Seller. A Product Offering defines all\ + \ of the commercial terms and, through association with a particular Product\ + \ Specification, defines all the technical attributes and behaviors of the\ + \ Product. A Product Offering may constrain the allowable set of configurable\ + \ technical attributes and/or behaviors specified in the associated Product\ + \ Specification." + properties: + href: + type: string + description: | + Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog capabilities this field is not used. The catalog API definition is provided by the Seller to the Buyer during onboarding Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + id of a Product Offering. It is assigned by the Seller. The + Buyer and the Seller exchange information about offerings' ids during + the onboarding process. + required: + - id + ProductOrder: + allOf: + - $ref: "#/components/schemas/ProductOrder_Common" + - type: object + description: + A Product Order is a type of order which can be used to place + an order between a customer and a service provider or between a service + provider and a partner and vice versa + properties: + cancellationCharge: + type: array + description: Charges associated with cancelling the Product Order + items: + $ref: "#/components/schemas/MEFProductOrderChargeRef" + cancellationDate: + type: string + format: date-time + description: + Identifies the date the Seller cancelled the Order. Set by + Seller when the Order is moved to the cancelled state. + cancellationReason: + type: string + description: + "An optional free-form text field for the Seller to provide\ + \ additional information regarding the reason for the cancellation.\ + \ If the Seller cancels the Product Order, the Seller provides the reason.\ + \ If the Buyer requests the cancellation, the Seller copies the reason\ + \ provided by the Buyer from the Cancel Product Order request." + completionDate: + type: string + format: date-time + description: + Identifies the date that all Product Order Items within the + Order have reached a terminal state. No further action is permitted + on the Product Order. + href: + type: string + description: Hyperlink to access the order + id: + type: string + description: + Unique identifier for the Product Order that is generated + by the Seller when the Product Order is initially accepted via an API. + orderDate: + type: string + format: date-time + description: + Date when the Product Order was created in the Seller's system + and a Product Order Identifier was assigned + productOrderItem: + type: array + description: | + Items contained in the Product Order. + items: + $ref: "#/components/schemas/ProductOrderItem" + minItems: 1 + state: + $ref: "#/components/schemas/MEFProductOrderStateType" + stateChange: + type: array + description: State change for the Product Order + items: + $ref: "#/components/schemas/MEFProductOrderStateChange" + required: + - id + - orderDate + - productOrderItem + - state + ProductOrderItem: + allOf: + - $ref: "#/components/schemas/MEFProductOrderItem_Common" + - type: object + description: | + An identified part of the order. A product order is decomposed into one or more order items. + properties: + charge: + type: array + description: + The Charges associated to this Product Order Item. This list + contains all completed Charges containing accepted Charge Items initiated + by the Seller. Any Charge that is withdrawn or containing all declined + Charge Items must not be included in this list. + items: + $ref: "#/components/schemas/MEFProductOrderChargeRef" + completionDate: + type: string + format: date-time + description: + Identifies the date the Seller completed the Product Order + Item. Set by Seller when all Product Order Items have reached a terminal + state. No further action is permitted on the Product Order after this + state is reached. + expectedCompletionDate: + type: string + format: date-time + description: | + Identifies the date the Seller expects to complete the Product Order Item. + expediteAcceptedIndicator: + type: boolean + default: false + description: + "Indicates if the Seller has accepted the Buyer's Expedite\ + \ request. See MEF 57.2 section 7.3 for a description of the interaction\ + \ between the Buyer and Seller. If this is set to true, the Seller provides\ + \ the costs to expedite the Product Order in the charge attribute" + itemTerm: + type: array + description: Term of the Product Order Item + items: + $ref: "#/components/schemas/MEFItemTerm" + maxItems: 1 + milestone: + type: array + description: + Milestones associated to the Product Order Item. Set by the + Seller when a Milestone occurs. + items: + $ref: "#/components/schemas/MEFMilestone" + state: + $ref: "#/components/schemas/MEFProductOrderItemStateType" + stateChange: + type: array + description: State change for the Product Order Item + items: + $ref: "#/components/schemas/MEFProductOrderItemStateChange" + terminationError: + type: array + description: + "When the Seller cannot process the request, the Seller returns\ + \ a text-based list of reasons here." + items: + $ref: "#/components/schemas/TerminationError" + ProductOrder_Common: + type: object + description: + "A Product Order is a type of order which can be used to place\ + \ an order between a customer and a service provider or between a service\ + \ provider and a partner and vice versa," + properties: + externalId: + type: string + description: An identifier for this order within the Buyer's enterprise. + note: + type: array + description: | + Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. + items: + $ref: "#/components/schemas/Note" + projectId: + type: string + description: + An identifier that is used to group Product Orders that is + important to the Buyer. A projectId can be used to relate multiple Product + Orders together. + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role in this context. + (e.g. Product Order Contact: role=productOrderContact; + Seller Contact: role=sellerContact) + Providing the Product Order Contact in the request is mandatory. + items: + $ref: "#/components/schemas/RelatedContactInformation" + minItems: 1 + orderId: + type: string + instanceId: + type: string + required: + - relatedContactInformation + ProductOrder_Create: + allOf: + - $ref: "#/components/schemas/ProductOrder_Common" + - type: object + description: | + A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa, Skipped properties: id,href,completionDate,orderDate,state,stateChange,cancellationDate,cancellationReason + properties: + productOrderItem: + type: array + description: | + Items contained in the Product Order. + items: + $ref: "#/components/schemas/MEFProductOrderItem_Create" + minItems: 1 + required: + - productOrderItem + ProductOrder_Find: + type: object + description: + Structure to define GET without id response. A list of productOrder + matching request criteria. Provides Product order summary view. + properties: + cancellationDate: + type: string + format: date-time + description: + Identifies the date the Seller cancelled the Order. Set by + Seller when the Order is moved to the cancelled state. + completionDate: + type: string + format: date-time + description: + Identifies the date that all Product Order Items within the + Order have reached a terminal state. No further action is permitted on + the Product Order after this notification. + externalId: + type: string + description: + ID given by the consumer and only understandable by him (to + facilitate his searches afterward). + id: + type: string + description: + Unique identifier for the order that is generated by the Seller + when the order is initially accepted via an API. + orderDate: + type: string + format: date-time + description: Date when the Product Order was created + projectId: + type: string + description: + An identifier that is used to group Product Orders that is + important to the Buyer. A projectId can be used to relate multiple Product + Orders together. + state: + $ref: "#/components/schemas/MEFProductOrderStateType" + required: + - id + - orderDate + - state + ProductOrder_Update: + type: object + description: + A request initiated by the Buyer to update Product Order and/or + Product + properties: + externalId: + type: string + description: An identifier for this Product Order within the Buyer's enterprise. + note: + type: array + description: | + Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. + items: + $ref: "#/components/schemas/Note" + productOrderItem: + type: array + description: | + Order Item attributes that may be updated + items: + $ref: "#/components/schemas/MEFProductOrderItem_Update" + projectId: + type: string + description: + An identifier that is used to group Product Orders that is + important to the Buyer. A projectId can be used to relate multiple Product + Orders together. + relatedContactInformation: + type: array + description: | + Contact information of an individual or organization playing a role in this context. Buyer can modify, add, or delete only Buyer-related contacts. + items: + $ref: "#/components/schemas/RelatedContactInformation" + minItems: 1 + ProductRelationship: + type: object + description: + A relationship to an existing Product. The requirements for usage + for given Product are described in the Product Specification. + properties: + href: + type: string + description: + Hyperlink to the product in Seller's inventory that is referenced + Hyperlink MAY be used when providing a response by the Seller Hyperlink + MUST be ignored by the Seller in case it is provided by the Buyer in a + request + id: + type: string + description: unique identifier of the related Product + relationshipType: + type: string + description: | + Specifies the type (nature) of the relationship to the related Product. The nature of required relationships varies for Products of different types. For example, a UNI or ENNI Product may not have any relationships, but an Access E-Line may have two mandatory relationships (related to the UNI on one end and the ENNI on the other). More complex Products such as multipoint IP or Firewall Products may have more complex relationships. As a result, the allowed and mandatory `relationshipType` values are defined in the Product Specification. + required: + - id + - relationshipType + RelatedContactInformation: + type: object + description: + "Contact information of an individual or organization playing a\ + \ role for\nthis Order Item. The rule for mapping a represented attribute\ + \ value to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer\ + \ Order Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation\ + \ Contact: `role=buyerImplementationContact` \n- Buyer Technical Contact:\ + \ `role=buyerTechnicalContact`\n" + properties: + emailAddress: + type: string + description: Email address + name: + type: string + description: Name of the contact + number: + type: string + description: Phone number + numberExtension: + type: string + description: Phone number extension + organization: + type: string + description: The organization or company that the contact belongs to + postalAddress: + $ref: "#/components/schemas/FieldedAddress" + role: + type: string + description: A role the party plays in a given context. + required: + - emailAddress + - name + - number + - role + RelatedPlaceRefOrValue: + type: object + description: Place defines the places where the product order must be done. + discriminator: + mapping: + FieldedAddress: "#/components/schemas/FieldedAddress" + FormattedAddress: "#/components/schemas/FormattedAddress" + GeographicAddressLabel: "#/components/schemas/GeographicAddressLabel" + GeographicAddressRef: "#/components/schemas/GeographicAddressRef" + GeographicSiteRef: "#/components/schemas/GeographicSiteRef" + MEFGeographicPoint: "#/components/schemas/MEFGeographicPoint" + propertyName: "@type" + properties: + "@schemaLocation": + type: string + format: uri + description: + A URI to a JSON-Schema file that defines additional attributes + and relationships. May be used to define additional related place types. + Usage of this attribute must be agreed upon between Buyer and Seller. + "@type": + type: string + description: | + This field is used as a discriminator and is used between different place representations. This type might discriminate for additional related place as defined in '@schemaLocation'. + enum: + - FieldedAddress + - FormattedAddress + - GeographicAddressLabel + - GeographicAddressRef + - GeographicSiteRef + - MEFGeographicPoint + role: + type: string + description: Role of this place + required: + - "@type" + - role + TerminationError: + type: object + description: + This indicates an error that caused an Item to be terminated. The + code and propertyPath should be used like in Error422. + properties: + code: + $ref: "#/components/schemas/Error422Code" + propertyPath: + type: string + description: | + A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. + Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). + value: + type: string + description: Text to describe the reason of the termination. + TimeUnit: + type: string + description: | + Represents a unit of time. + enum: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + securitySchemes: + oauth2MEFLSOAPI: + description: Default m2m client code + flows: + clientCredentials: + refreshUrl: http://mef.net/example/refresh + scopes: + default: default scope + tokenUrl: http://mef.net/example/token + type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml new file mode 100644 index 00000000..fc3c06a0 --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml @@ -0,0 +1,3535 @@ +openapi: 3.0.1 +info: + description: + "**This file forms part of MEF 123** \n\nThis API implements Business\ + \ Requirements described in MEF 57.2\n\nProduct Order Management allows the Buyer\ + \ to request the Seller to initiate and complete the\nfulfillment process of an\ + \ installation of a Product Offering, an update to\nan existing Product, or a\ + \ disconnect of an existing Product at the address\ndefined by the Buyer.\n\n\ + List of supported Use Cases:\n\n- Create Product Order\n- Update Product Order\ + \ by Product Order Identifier\n- Retrieve List of Product Orders\n- Retrieve Product\ + \ Order by Product Order Identifier\n- Modify Product Order Item Requested Delivery\ + \ Date\n- Retrieve Modify Product Order Item Requested Delivery Date List\n- Retrieve\ + \ Modify Product Order Item Requested Delivery Date by Identifier\n- Cancel Product\ + \ Order\n- Retrieve List of Cancel Product Orders\n- Retrieve Cancel Product Order\ + \ Request by Cancel Product Order Identifier\n- Initiate Charge\n- Respond to\ + \ Charge\n- Retrieve List of Charges\n- Retrieve Charge by Charge Identifier\n\ + - Register for Notifications\n\nCopyright 2022 MEF Forum and its contributors.\n\ + \nThis file includes content based on the TM Forum Product Order API (TMF622\n\ + v4.0.0) available at https://github.com/tmforum-apis/TMF622_ProductOrder,\nwhich\ + \ is licensed by the TM Forum under the Apache License version 2.0. Such\ncontent\ + \ has been modified by the MEF Forum and its contributors.\n" + title: Product Ordering Management + version: 10.0.0 +servers: + - url: "https://{serverBase}/mefApi/sonata/productOrderingManagement/v10/" + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +security: + - oauth2MEFLSOAPI: + - default +tags: + - name: productOrder + - name: cancelProductOrder + - name: charge + - name: modifyProductOrderItemRequestedDeliveryDate + - name: events subscription +paths: + /productOrder: + get: + description: This operation lists or finds ProductOrder entities + operationId: listProductOrder + parameters: + - description: State of the Product Order + in: query + name: state + required: false + schema: + type: string + enum: + - acknowledged + - assessingCancellation + - cancelled + - completed + - failed + - held.assessingCharge + - inProgress + - partial + - pending.assessingModification + - pendingCancellation + - rejected + - description: + A number that uniquely identifies an order within the Buyer's + enterprise. + in: query + name: externalId + required: false + schema: + type: string + - description: + An identifier that is used to group Product Orders that represent + a unit of functionality that is important to a Buyer. + in: query + name: projectId + required: false + schema: + type: string + - description: Date when the order was created greater than + in: query + name: orderDate.gt + required: false + schema: + type: string + format: date-time + - description: Date when the order was created lesser than + in: query + name: orderDate.lt + required: false + schema: + type: string + format: date-time + - description: Effective completion date greater than + in: query + name: completionDate.gt + required: false + schema: + type: string + format: date-time + - description: Effective completion date lesser than + in: query + name: completionDate.lt + required: false + schema: + type: string + format: date-time + - description: + This is requested date to get this Product Order Item completed + greater than + in: query + name: itemRequestedCompletionDate.gt + required: false + schema: + type: string + format: date-time + - description: + This is requested date to get this Product Order Item completed + lesser than + in: query + name: itemRequestedCompletionDate.lt + required: false + schema: + type: string + format: date-time + - description: + "Seller planned completion date of the Product Order Item, greater\ + \ than" + in: query + name: itemExpectedCompletionDate.gt + required: false + schema: + type: string + format: date-time + - description: + "Seller planned completion date of the Product Order Item, lesser\ + \ than" + in: query + name: itemExpectedCompletionDate.lt + required: false + schema: + type: string + format: date-time + - description: order cancellation date greater than + in: query + name: cancellationDate.gt + required: false + schema: + type: string + format: date-time + - description: order cancellation date lesser than + in: query + name: cancellationDate.lt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by the client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/ProductOrder_Find" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - listProductOrder + summary: Lists or finds ProductOrder objects + tags: + - productOrder + post: + description: This operation creates a ProductOrder entity. + operationId: createProductOrder + parameters: + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder_Create" + description: The ProductOrder to be created + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder" + description: Created (https://tools.ietf.org/html/rfc7231#section-6.3.2) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - createProductOrder + summary: Creates a ProductOrder + tags: + - productOrder + x-codegen-request-body-name: productOrder + /productOrder/{id}: + get: + description: This operation retrieves a ProductOrder entity. + operationId: retrieveProductOrder + parameters: + - description: Identifier of the ProductOrder + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder" + description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + security: + - oauth2MEFLSOAPI: + - retrieveProductOrder + summary: Retrieves a ProductOrder by ID + tags: + - productOrder + patch: + description: This operation updates partially a ProductOrder entity. + operationId: patchProductOrder + parameters: + - description: Identifier of the ProductOrder + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder_Update" + description: The ProductOrder to be updated + required: true + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/ProductOrder" + description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "409": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error409" + description: Conflict + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - patchProductOrder + summary: Updates partially a ProductOrder + tags: + - productOrder + x-codegen-request-body-name: productOrder + /cancelProductOrder: + get: + description: This operation lists or finds CancelProductOrder entities + operationId: listCancelProductOrder + parameters: + - in: query + name: productOrderId + required: false + schema: + type: string + - in: query + name: state + required: false + schema: + type: string + enum: + - acknowledged + - done + - done.declined + - inProgress.assessingCharge + - rejected + - description: + "Identifies the type of reason, Technical or Commercial, for\ + \ the Cancellation request" + in: query + name: cancellationReasonType + required: false + schema: + type: string + enum: + - technical + - commercial + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/CancelProductOrder_Find" + description: Success + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - listCancelProductOrder + summary: Lists or finds CancelProductOrder objects + tags: + - cancelProductOrder + post: + description: This operation creates a CancelProductOrder entity. + operationId: createCancelProductOrder + parameters: + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/CancelProductOrder_Create" + description: The CancelProductOrder to be created + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/CancelProductOrder" + description: Created + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - createCancelProductOrder + summary: Creates a CancelProductOrder + tags: + - cancelProductOrder + x-codegen-request-body-name: cancelProductOrder + /cancelProductOrder/{id}: + get: + description: This operation retrieves a CancelProductOrder entity. + operationId: retrieveCancelProductOrder + parameters: + - description: Identifier of the CancelProductOrder + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/CancelProductOrder" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveCancelProductOrder + summary: Retrieves a CancelProductOrder by ID + tags: + - cancelProductOrder + /charge: + get: + description: This operation lists or finds Charge entities + operationId: listCharge + parameters: + - description: id of the Product Order this Charge relates to. + in: query + name: productOrderId + required: false + schema: + type: string + - description: id of the Product Order Item this Charge relates to. + in: query + name: productOrderItemId + required: false + schema: + type: string + - description: Date that the Charge was created by the Seller (greater than) + in: query + name: creationDate.gt + required: false + schema: + type: string + format: date-time + - description: Date that the Charge was created by the Seller. (greater than) + in: query + name: creationDate.lt + required: false + schema: + type: string + format: date-time + - description: + The date that the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat all + charges as declined (greater than) + in: query + name: responseDueDate.gt + required: false + schema: + type: string + format: date-time + - description: + The date that the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat all + charges as declined (greater than) + in: query + name: responseDueDate.lt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/MEFProductOrderCharge_Find" + description: Success + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - listCharge + summary: Lists or finds Charge objects + tags: + - charge + /charge/{id}: + get: + description: This operation retrieves a Charge entity. + operationId: retrieveCharge + parameters: + - description: Identifier of the Charge + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProductOrderCharge" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveCharge + summary: Retrieves a Charge by ID + tags: + - charge + patch: + description: This operation updates partially a Charge entity. + operationId: patchCharge + parameters: + - description: Identifier of the Charge + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProductOrderCharge_Update" + description: The Charge to be updated + required: true + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFProductOrderCharge" + description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "409": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error409" + description: Conflict + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - patchCharge + summary: Updates partially a Charge + tags: + - charge + x-codegen-request-body-name: charge + /hub: + post: + description: + "Sets the communication endpoint address the service instance must\ + \ use to deliver information about its health state, execution state, failures\ + \ and metrics." + operationId: registerListener + parameters: + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/EventSubscriptionInput" + description: Data containing the callback endpoint to deliver the information + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/EventSubscription" + description: Subscribed + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - registerListener + summary: Register a listener + tags: + - events subscription + x-codegen-request-body-name: data + /hub/{id}: + delete: + description: + "Resets the communication endpoint address the service instance\ + \ must use to deliver information about its health state, execution state,\ + \ failures and metrics." + operationId: unregisterListener + parameters: + - description: The id of the registered listener + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "204": + description: Deleted + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - unregisterListener + summary: Unregister a listener + tags: + - events subscription + get: + description: This operation retrieves a hub entity. + operationId: retrieveHub + parameters: + - description: Identifier of the Hub + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/EventSubscription" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveHub + summary: Retrieves a Hub by ID + tags: + - events subscription + /modifyProductOrderItemRequestedDeliveryDate: + get: + description: + This operation lists or finds ModifyProductOrderItemRequestedDeliveryDate + entities + operationId: listModifyProductOrderItemRequestedDeliveryDate + parameters: + - in: query + name: productOrderId + required: false + schema: + type: string + - in: query + name: state + required: false + schema: + type: string + enum: + - acknowledged + - done + - done.declined + - inProgress.assessingCharge + - rejected + - description: Indicates that expedited treatment is requested. + in: query + name: expediteIndicator + required: false + schema: + type: boolean + - description: + Identifies the Buyer's desired due date (requested delivery date) + - greater than + in: query + name: requestedCompletionDate.gt + required: false + schema: + type: string + format: date-time + - description: + Identifies the Buyer's desired due date (requested delivery date) + - lesser than + in: query + name: requestedCompletionDate.lt + required: false + schema: + type: string + format: date-time + - description: + The date on which the Seller assigned the Modify Product Order + Item Requested Delivery Data Identifier - greater than + in: query + name: creationDate.gt + required: false + schema: + type: string + format: date-time + - description: + The date on which the Seller assigned the Modify Product Order + Item Requested Delivery Data Identifier - lesser than + in: query + name: creationDate.lt + required: false + schema: + type: string + format: date-time + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + - description: + Requested index for start of item to be provided in response + requested by client. Note that the index starts with "0". + in: query + name: offset + required: false + schema: + type: integer + format: int32 + - description: + Requested number of items to be provided in response requested + by client + in: query + name: limit + required: false + schema: + type: integer + format: int32 + responses: + "200": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" + description: Success + headers: + X-Pagination-Throttled: + description: | + Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched + schema: + type: boolean + X-Total-Count: + description: | + The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of items included in the response + schema: + type: integer + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - listModifyProductOrderItemRequestedDeliveryDate + summary: Lists or finds ModifyProductOrderItemRequestedDeliveryDate objects + tags: + - modifyProductOrderItemRequestedDeliveryDate + post: + description: + This operation creates a ModifyProductOrderItemRequestedDeliveryDate + entity. + operationId: createModifyProductOrderItemRequestedDeliveryDate + parameters: + - description: |- + The unique identifier of the organization that is acting as the Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate_Create" + description: The ModifyProductOrderItemRequestedDeliveryDate to be created + required: true + responses: + "201": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" + description: Created + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "422": + content: + application/json;charset=utf-8: + schema: + type: array + items: + $ref: "#/components/schemas/Error422" + description: Unprocessable entity due to the business validation problems + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - createModifyProductOrderItemRequestedDeliveryDate + summary: Creates a ModifyProductOrderItemRequestedDeliveryDate + tags: + - modifyProductOrderItemRequestedDeliveryDate + x-codegen-request-body-name: modifyProductOrderItemRequestedDeliveryDate + /modifyProductOrderItemRequestedDeliveryDate/{id}: + get: + description: + This operation retrieves a ModifyProductOrderItemRequestedDeliveryDate + entity. + operationId: retrieveModifyProductOrderItemRequestedDeliveryDate + parameters: + - description: Identifier of the ModifyProductOrderItemRequestedDeliveryDate + in: path + name: id + required: true + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + required: false + schema: + type: string + - description: |- + The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + required: false + schema: + type: string + responses: + "200": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" + description: Success + "400": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error400" + description: Bad Request + "401": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error401" + description: Unauthorized + "403": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error403" + description: Forbidden + "404": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error404" + description: Not Found + "500": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error500" + description: Internal Server Error + "501": + content: + application/json;charset=utf-8: + schema: + $ref: "#/components/schemas/Error501" + description: Method not implemented. + security: + - oauth2MEFLSOAPI: + - retrieveModifyProductOrderItemRequestedDeliveryDate + summary: Retrieves a ModifyProductOrderItemRequestedDeliveryDate by ID + tags: + - modifyProductOrderItemRequestedDeliveryDate +components: + schemas: + CancelProductOrder: + type: object + description: Request for cancellation an existing product order + properties: + cancellationDeniedReason: + type: string + description: + "If the Cancel Product Order request is denied by the Seller,\ + \ the Seller provides a reason to the Buyer using this attribute." + cancellationReason: + type: string + description: + An optional attribute that allows the Buyer to provide additional + detail to the Seller on their reason for cancelling the Product Order + cancellationReasonType: + $ref: "#/components/schemas/CancellationReasonType" + charge: + $ref: "#/components/schemas/MEFProductOrderChargeRef" + href: + type: string + description: | + Hyperlink to the cancellation request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + Unique identifier for the Cancel Product Order that is generated + by the Seller when the Cancel Product Order request `state` is set to + `acknowledged` + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Cancel Product Order. + The rule for mapping a represented attribute + value to a `role` is to use the _lowerCamelCase_ pattern e.g. + - Cancel Product Order Contact: `role=cancelProductOrderContact` + - Cancel Product Order Seller Contact: `role=cancelProductOrderSellerContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + state: + $ref: "#/components/schemas/MEFChargeableTaskStateType" + required: + - id + - productOrder + - relatedContactInformation + - state + CancelProductOrder_Create: + type: object + description: |- + Request for cancellation an existing product order + Skipped properties: id,href,state,effectiveCancellationDate + properties: + cancellationReason: + type: string + description: + An optional attribute that allows the Buyer to provide additional + detail to the Seller on their reason for cancelling the Product Order + cancellationReasonType: + $ref: "#/components/schemas/CancellationReasonType" + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Cancel Product Order. + The rule for mapping a represented attribute + value to a `role` is to use the _lowerCamelCase_ pattern e.g. + - Cancel Product Order Contact: `role=cancelProductOrderContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + minItems: 1 + required: + - productOrder + - relatedContactInformation + CancelProductOrder_Find: + type: object + description: A response to a Buyer's get List of Cancel Product Orders + properties: + cancellationReasonType: + $ref: "#/components/schemas/CancellationReasonType" + id: + type: string + description: + Unique identifier for the Cancel Product Order that is generated + by the Seller when the Cancel Product Order request `state` is set to + `acknowledged` + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + state: + $ref: "#/components/schemas/MEFChargeableTaskStateType" + required: + - cancellationReasonType + - id + - productOrder + - state + CancellationReasonType: + type: string + description: + "Identifies the type of reason, Technical or Commercial, for the\ + \ Cancellation request" + enum: + - technical + - commercial + Duration: + type: object + description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." + properties: + amount: + type: integer + description: "Duration (number of seconds, minutes, hours, etc.)" + units: + $ref: "#/components/schemas/TimeUnit" + required: + - amount + - units + Error: + type: object + description: | + Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. + properties: + message: + type: string + description: + Text that provides mode details and corrective actions related + to the error. This can be shown to a client user. + reason: + type: string + description: + Text that explains the reason for the error. This can be shown + to a client user. + maxLength: 255 + referenceError: + type: string + format: uri + description: URL pointing to documentation describing the error + required: + - reason + Error400: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error400Code" + required: + - code + description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) + Error400Code: + type: string + description: |- + One of the following error codes: + - missingQueryParameter: The URI is missing a required query-string parameter + - missingQueryValue: The URI is missing a required query-string parameter value + - invalidQuery: The query section of the URI is invalid. + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + Error401: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error401Code" + required: + - code + description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) + Error401Code: + type: string + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + Error403: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error403Code" + required: + - code + description: + Forbidden. This code indicates that the server understood the request + but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) + Error403Code: + type: string + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + Error404: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - notFound: A current representation for the target resource not found + enum: + - notFound + required: + - code + description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error409: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - conflict: The client has provided a value whose semantics are not appropriate for the property. + enum: + - conflict + required: + - code + description: Conflict (https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.8) + Error422: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + $ref: "#/components/schemas/Error422Code" + propertyPath: + type: string + description: | + A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. + Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). + required: + - code + description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + type: string + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + Error500: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. + enum: + - internalError + required: + - code + description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) + Error501: + allOf: + - $ref: "#/components/schemas/Error" + - type: object + properties: + code: + type: string + description: |- + The following error code: + - notImplemented: Method not supported by the server + enum: + - notImplemented + required: + - code + description: + Not Implemented. Used in case Seller is not supporting an optional + operation (https://tools.ietf.org/html/rfc7231#section-6.6.2) + EventSubscription: + type: object + description: | + This resource is used to respond to notification subscriptions. + properties: + callback: + type: string + description: + The value provided by the Buyer in `EventSubscriptionInput` + during notification registration + id: + type: string + description: + An identifier of this Event Subscription assigned by the Seller + when a resource is created. + query: + type: string + description: + The value provided by the Buyer in `EventSubscriptionInput` + during notification registration + required: + - callback + - id + EventSubscriptionInput: + type: object + description: This class is used to register for Notifications. + properties: + callback: + type: string + description: + "This callback value must be set to *host* property from Buyer\ + \ Product Order Notification API (productOrderNotification.api.yaml).\ + \ This property is appended with the base path and notification resource\ + \ path specified in that API to construct an URL to which notification\ + \ is sent. E.g. for \"callback\": \"https://buyer.co/listenerEndpoint\"\ + , the product order state change event notification will be sent to: `https://buyer.co/listenerEndpoint/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent`" + query: + type: string + description: + "This attribute is used to define to which type of events to\ + \ register to. Example: \"query\":\"eventType = productOrderStateChangeEvent\"\ + . To subscribe for more than one event type, put the values separated\ + \ by comma: `eventType=productOrderStateChangeEvent,productOrderItemStateChangeEvent`.\ + \ The possible values are enumerated by 'ProductOrderEventType', `CancelProductOrderEventType`\ + \ in productOrderNotification.api.yaml. An empty query is treated as specifying\ + \ no filters - ending in subscription for all event types." + required: + - callback + FieldedAddress: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + city: + type: string + description: The city that the address is in + country: + type: string + description: Country that the address is in + geographicSubAddress: + $ref: "#/components/schemas/GeographicSubAddress" + locality: + type: string + description: The locality that the address is in + postcode: + type: string + description: + "Descriptor for a postal delivery area, used to speed and\ + \ simplify the delivery of mail (also known as zip code)" + postcodeExtension: + type: string + description: + An extension of a postal code. E.g. the part following the + dash in a US urban property address + stateOrProvince: + type: string + description: The State or Province that the address is in + streetName: + type: string + description: Name of the street or other street type + streetNr: + type: string + description: + Number identifying a specific property on a public street. + It may be combined with streetNrLast for ranged addresses. MEF 79 defines + it as required however as in certain countries it is not used we make + it optional in API. + streetNrLast: + type: string + description: Last number in a range of street numbers allocated to a property + streetNrLastSuffix: + type: string + description: Last street number suffix for a ranged address + streetNrSuffix: + type: string + description: The first street number suffix + streetSuffix: + type: string + description: A modifier denoting a relative direction + streetType: + type: string + description: + "The type of street (e.g., alley, avenue, boulevard, brae,\ + \ crescent, drive, highway, lane, terrace, parade, place, tarn, way,\ + \ wharf)" + required: + - city + - country + - streetName + description: + "A type of Address that has a discrete field and value for each\ + \ type of boundary or identifier down to the lowest level of detail. For example\ + \ \"street number\" is one field, \"street name\" is another field, etc." + FormattedAddress: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + addrLine1: + type: string + description: The first address line in a formatted address + addrLine2: + type: string + description: The second address line in a formatted address + city: + type: string + description: The city that the address is in + country: + type: string + description: Country that the address is in + locality: + type: string + description: + "An area of defined or undefined boundaries within a local\ + \ authority or other legislatively defined area, usually rural or semi-rural\ + \ in nature" + postcode: + type: string + description: + "Descriptor for a postal delivery area, used to speed and\ + \ simplify the delivery of mail (also known as ZIP code)" + postcodeExtension: + type: string + description: + An extension of a postal code. E.g. the part following the + dash in an US urban property address + stateOrProvince: + type: string + description: The State or Province that the address is in + required: + - addrLine1 + - city + - country + description: + "A type of Address that has discrete fields for each type of boundary\ + \ or identifier with the exception of street and more specific location details,\ + \ which are combined into a maximum of two strings based on local postal addressing\ + \ conventions." + GeographicAddressLabel: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + externalReferenceId: + type: string + description: A reference to an address by id + externalReferenceType: + type: string + description: + Uniquely identifies the authority that specifies the addresses + reference and/or its type (if the authority specifies more than one + type of address). The value(s) to be used are to be agreed during the + onboarding. For North American providers this would normally be CLLI + (Common Language Location Identifier) code. + required: + - externalReferenceId + - externalReferenceType + description: + "A unique identifier controlled by a generally accepted independent + administrative authority that specifies a fixed geographical location. " + GeographicAddressRef: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + href: + type: string + description: | + Hyperlink to the referenced GeographicAddress. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + Identifier of the referenced Geographic Address. This identifier + is assigned during a successful address validation request (Geographic + Address Validation API) + required: + - id + description: | + A reference to a Geographic Address resource available through Address Validation API. + GeographicSiteRef: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + href: + type: string + description: | + Hyperlink to the referenced GeographicSite. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: Identifier of the referenced Geographic Site. + required: + - id + description: | + A reference to a Geographic Site resource available through Service Site API + GeographicSubAddress: + type: object + description: "Additional fields used to specify an address, as detailed as possible." + properties: + buildingName: + type: string + description: | + Allows for identification of places that require building name as part of addressing information + levelNumber: + type: string + description: + "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ + \ 2" + levelType: + type: string + description: Describes level types within a building + privateStreetName: + type: string + description: + '"Private streets internal to a property (e.g. a university) + may have internal names that are not recorded by the land title office' + privateStreetNumber: + type: string + description: Private streets numbers internal to a private street + subUnit: + type: array + description: + "Representation of a MEFSubUnit It is used for describing subunit\ + \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ + \ WHARF." + items: + $ref: "#/components/schemas/MEFSubUnit" + MEFAcceptedRejectedType: + type: string + description: Indicator of acceptance + enum: + - accepted + - rejected + MEFBillingAccountRef: + type: object + description: A reference to the Buyer's Billing Account + properties: + id: + type: string + description: + Identifies the buyer's billing account to which the recurring + and non-recurring charges for this order or order item will be billed. + Required if the Buyer has more than one Billing Account with the Seller + and for all new Product Orders. + required: + - id + MEFBuyerSellerType: + type: string + description: Indicates if the note is from Buyer or Seller. + enum: + - buyer + - seller + MEFCancelProductOrderRef: + type: object + description: A reference to a Cancel Product Order instance + properties: + href: + type: string + description: Hyperlink to access the Cancel Product Order + id: + type: string + description: A unique identifier of the Cancel Product Order + required: + - id + MEFChargePeriod: + type: string + description: Used for a recurring charge to indicate period. + enum: + - hour + - day + - week + - month + - year + MEFChargeableTaskStateType: + type: string + description: | + The states as defined by TMF622 and extended to meet MEF requirements. + + | Name | MEF 57.2 Name | Description | + | -------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | inProgress.assessingCharge | ACCESSING_CHARGE | The Modify Product Order Item Requested Delivery Date request results in a Charge being initiated by the Seller. The Modify Product Order Item Requested Delivery Date remains in this state until the Charge is completed or withdrawn by the Seller. All charges within a Charge that was initiated due to a Modify Product Order Item Requested Delivery Date are considered Blocking charges. If any charge is not accepted by the Buyer, the Modify Product Order Item Requested Delivery Date moves from the `inProgress.assessingCharge` state to the `done.declined` state. | + | acknowledged | ACKNOWLEDGED | A Modify Product Order Item Requested Delivery Date request has been received and has passed basic validation. The Modify Product Order Item Requested Delivery Date Identifier is assigned in the `acknowledged` state. Validation of Modify Product Order Item Requested Delivery Date attributes as applicable is completed in the `acknowledged` state. | + | done | ACCEPTED | A Modify Product Order Item Requested Delivery Date request has been received, passed all validations, if a Charge is associated all Charge Items have been accepted by the Buyer, and the Product Order Item Completion Date has been updated as requested. | + | done.declined | DECLINED | Blocking charges associated with a Modify Product Order Item Requested Delivery Date have been declined by the Buyer. No updates are made to the Product Order Item. | + | rejected | REJECTED | A Modify Product Order Item Requested Delivery Date request was submitted by the Buyer, and it has failed any validation checks the Seller performs during the `acknowledged` state. No updates are made to the referenced Product Order Item. + enum: + - acknowledged + - done + - done.declined + - inProgress.assessingCharge + - rejected + MEFEndOfTermAction: + type: string + description: + "The action the Seller will take once the term expires. \nRoll\ + \ indicates that the Product's contract will continue on a rolling basis for\ + \ the duration of the Roll Interval at the end of the Term. \nAuto-disconnect\ + \ indicates that the Product will be disconnected at the end of the Term.\ + \ \nAuto-renew indicates that the Product's contract will be automatically\ + \ renewed for the Term Duration at the end of the Term." + enum: + - roll + - autoDisconnect + - autoRenew + MEFGeographicPoint: + allOf: + - $ref: "#/components/schemas/RelatedPlaceRefOrValue" + - type: object + properties: + spatialRef: + type: string + description: + The spatial reference system used to determine the coordinates + (e.g. "WGS84"). The system used and the value of this field are to be + agreed during the onboarding process. + x: + type: string + description: The latitude expressed in the format specified by the `spacialRef` + "y": + type: string + description: The longitude expressed in the format specified by the `spacialRef` + z: + type: string + description: The elevation expressed in the format specified by the `spacialRef` + required: + - spatialRef + - x + - "y" + description: | + A MEFGeographicPoint defines a geographic point through coordinates. + MEFItemTerm: + type: object + description: The term of the Item + properties: + description: + type: string + description: Description of the term + duration: + $ref: "#/components/schemas/Duration" + endOfTermAction: + $ref: "#/components/schemas/MEFEndOfTermAction" + name: + type: string + description: Name of the term + rollInterval: + $ref: "#/components/schemas/Duration" + required: + - duration + - endOfTermAction + - name + MEFMilestone: + type: object + description: + Milestones associated to the Product Order Item. Set by the Seller + when a Milestone occurs. + properties: + date: + type: string + format: date-time + description: The date on when the milestone was reached + name: + type: string + description: Name of the Milestone. + note: + type: string + description: Additional comment related to milestone change. + required: + - date + - name + MEFModifyProductOrderItemRequestedDeliveryDate: + type: object + description: + A response to a request initiated by the Buyer to modify the Requested + Completion Date or the Expedite Indicator of a Product Order Item. + properties: + creationDate: + type: string + format: date-time + description: + Date that the Modify Product Order Item Requested Delivery + Date was created in the Seller's system and the id was assigned + expediteIndicator: + type: boolean + default: false + description: + "Indicates that expedited treatment is requested. Set by the\ + \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ + \ the Requested Completion Date to the expedited date" + href: + type: string + description: | + Hyperlink to the modification request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + Unique identifier for the MEFModifyProductOrderItemRequestedDeliveryDate + that is generated by the Seller when the MEFModifyProductOrderItemRequestedDeliveryDate + request is moved to the 'acknowledged' state. + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + requestedCompletionDate: + type: string + format: date-time + description: + Identifies the Buyer's desired due date (requested delivery + date) + state: + $ref: "#/components/schemas/MEFChargeableTaskStateType" + required: + - creationDate + - id + - productOrderItem + - state + MEFModifyProductOrderItemRequestedDeliveryDateRef: + type: object + description: a reference to Modify Product Order Item Requested Delivery Date + properties: + href: + type: string + description: + Hyperlink to access the Modify Product Order Item Requested + Delivery Date + id: + type: string + description: + A unique identifier of the Modify Product Order Item Requested + Delivery Date + required: + - id + MEFModifyProductOrderItemRequestedDeliveryDate_Create: + type: object + description: + A request initiated by the Buyer to modify the Requested Requested + Delivery Date or the Expedite Indicator of a Product Order Item. + properties: + expediteIndicator: + type: boolean + default: false + description: + "Indicates that expedited treatment is requested. Set by the\ + \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ + \ the Requested Completion Date to the expedited date" + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + requestedCompletionDate: + type: string + format: date-time + description: + Identifies the Buyer's desired due date (requested delivery + date) + required: + - productOrderItem + MEFOrderItemCoordinatedAction: + type: object + description: + The interval after the completion of one or more related Order + Items that this Order Item can be started or completed + properties: + coordinatedActionDelay: + $ref: "#/components/schemas/Duration" + coordinationDependency: + $ref: "#/components/schemas/MEFOrderItemCoordinationDependencyType" + itemId: + type: string + description: + Specifies Order Item that is to be coordinated with this Order + Item. + required: + - coordinatedActionDelay + - coordinationDependency + - itemId + MEFOrderItemCoordinationDependencyType: + type: string + description: | + Possible values of the Order Item Coordination Dependency + + | OrderItemCoordinationDependencyType | MEF 57.2 | Description | + |-------------------------------------|------------------|----------------------------------------------------------------------------------------------------| + | startToStart | START_TO_START | Work on the Specified Order Item can only be started after the Coordinated Order Items are started | + | startToFinish | START_TO_FINISH | The Coordinated Order Items must complete before work on the Specified Order Item begins | + | finishToStart | FINISH_TO_START | Work on the Related Order Items begins after the completion of the Specified Order Item | + | finishToFinish | FINISH_TO_FINISH | Work on the Related Order Items completes at the same time as the Specified Order Item | + enum: + - startToStart + - startToFinish + - finishToStart + - finishToFinish + MEFPriceType: + type: string + description: Indicates if the price is for recurring or non-recurring charges. + enum: + - recurring + - nonRecurring + - usageBased + MEFProductActionType: + type: string + description: | + Action to be performed on the Product that the Order Item refers to. + + | ProductActionType | MEF 57.2 | + | ----------------- | ---------- | + | add | INSTALL | + | modify | CHANGE | + | delete | DISCONNECT | + enum: + - add + - modify + - delete + MEFProductConfiguration: + type: object + description: + MEFProductConfiguration is used as an extension point for MEF specific + product/service payload. The `@type` attribute is used as a discriminator + discriminator: + propertyName: "@type" + properties: + "@type": + type: string + description: + "The name of the type, defined in the JSON schema specified\ + \ above, for the product that is the subject of the Product Order Request.\ + \ The named type must be a subclass of MEFProductConfiguration." + required: + - "@type" + MEFProductOrderCharge: + type: object + description: + "When non-recurring or updated recurring charges are identified\ + \ by the Seller during their processing of a Product Order, the Seller must\ + \ communicate these charges to the Buyer and the Buyer must respond to the\ + \ Seller informing the Seller if they accept or reject each charge. The Seller\ + \ indicates for each charge, if the charge is Blocking or non-Blocking. If\ + \ the Buyer rejects a Blocking Charge, the Seller will cancel that Product\ + \ Order Item and any related Product Order Items. If the Buyer rejects a non-blocking\ + \ Charge, the Seller may proceed with fulfillment of the Product Order Item." + properties: + cancelProductOrder: + $ref: "#/components/schemas/MEFCancelProductOrderRef" + chargeItem: + type: array + description: A list of Charge Items contained in the Charge + items: + $ref: "#/components/schemas/MEFProductOrderChargeItem" + creationDate: + type: string + format: date-time + description: Date that the Charge was created by the Seller. + href: + type: string + description: | + Hyperlink to the Charge. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: A unique identifier of the Charge + modifyProductOrderItemRequestedDeliveryDate: + $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDateRef" + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + responseDueDate: + type: string + format: date-time + description: + The date by which the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat + all charges as declined and move them to `declinedByBuyer` status and + put the Charge to `completed` status. + state: + $ref: "#/components/schemas/MEFProductOrderChargeStateType" + required: + - chargeItem + - creationDate + - id + - responseDueDate + - state + MEFProductOrderCharge_Find: + type: object + description: A response object for Buyer's get Charge List request. + properties: + creationDate: + type: string + format: date-time + description: Date that the Charge was created by the Seller. + id: + type: string + description: A unique identifier of the Charge + productOrder: + $ref: "#/components/schemas/MEFProductOrderRef" + productOrderItem: + $ref: "#/components/schemas/MEFProductOrderItemRef" + responseDueDate: + type: string + format: date-time + description: + The date by which the Buyer must respond to the Seller's Charge. + If there is no response received by the Due Date the Seller will treat + all charges as declined and move them to `declinedByBuyer` status and + put the Charge to `completed` status. + state: + $ref: "#/components/schemas/MEFProductOrderChargeStateType" + required: + - creationDate + - id + - responseDueDate + - state + MEFProductOrderChargeActivityType: + type: string + description: | + Possible values for the state of the Charge Activity Type + enum: + - new + - change + MEFProductOrderChargeItem: + type: object + description: A single component part of the Charge + properties: + acceptanceIndicator: + $ref: "#/components/schemas/MEFAcceptedRejectedType" + activityType: + $ref: "#/components/schemas/MEFProductOrderChargeActivityType" + blocking: + type: boolean + description: + "Indicates if rejecting the charge will cause the Seller to\ + \ cancel the Product Order Item, or close the Cancel Product Order or\ + \ Modify Product Order Item Requested Delivery Date without action." + id: + type: string + description: + An identifier that is unique among all Charge Items within + a Charge + note: + type: array + description: | + Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. + items: + $ref: "#/components/schemas/Note" + price: + $ref: "#/components/schemas/Price" + priceCategory: + $ref: "#/components/schemas/MEFPriceCategory" + priceType: + $ref: "#/components/schemas/MEFPriceType" + recurringChargePeriod: + $ref: "#/components/schemas/MEFChargePeriod" + state: + $ref: "#/components/schemas/MEFProductOrderChargeItemStateType" + unitOfMeasure: + type: string + description: + "Unit of Measure if price depending on it is usageBased (Gb,\ + \ SMS volume, etc..)" + required: + - activityType + - blocking + - id + - price + - priceCategory + - priceType + - state + MEFPriceCategory: + type: string + description: A description of the cause of the Charge Item + enum: + - cancellation + - construction + - connection + - disconnect + - expedite + - other + MEFProductOrderChargeItemStateType: + type: string + description: | + Possible values for the state of the Charge Item + + | State | MEF 57.2 Name | Description | + | ------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `awaitingResponse` | AWAITING_RESPONSE | A Charge has been initiated by the Buyer. The charge includes one or more charges related to a Product Order or Product Order Item. Buyer has not indicated whether they accept or reject the charges via a Respond to Charge request. | + | `completed` | COMPLETED | All Charge Items included in the Charge have moved to either the `acceptedByBuyer` state, the `declinedByBuyer` state, or the `withdrawnBySeller` state. | + | `timeout` | TIMEOUT | A Charge Item has been declined by the Buyer. The referenced Product Order and Product Order Items are updated. If a Blocking charge is declined, the Seller may cancel the referenced Product Order Item and any related Product Order Items, the related Cancel Product Order, or the related Modify Product Order Item Requested Delivery Date. | + | `withdrawnBySeller` | WITHDRAWN_BY_SELLER | The Seller determines that the Charge Item is incorrect. They withdraw the Charge Item and initiate a new Charge with the required correction(s) if needed. | + enum: + - awaitingResponse + - acceptedByBuyer + - declinedByBuyer + - withdrawnBySeller + MEFProductOrderChargeItem_Update: + type: object + description: + A type used to perform Buyer's response to a Charge Item - to accept + or reject it. + properties: + acceptanceIndicator: + $ref: "#/components/schemas/MEFAcceptedRejectedType" + id: + type: string + description: + "An identifier that is unique among Charge. Used for Charge\ + \ Item matching, not to be update." + note: + type: array + description: | + Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. + items: + $ref: "#/components/schemas/Note" + required: + - acceptanceIndicator + - id + MEFProductOrderChargeRef: + type: object + description: A reference to a Charge instance + properties: + href: + type: string + description: Hyperlink to access the Charge + id: + type: string + description: A unique identifier of the Charge + required: + - id + MEFProductOrderChargeStateType: + type: string + description: | + Possible values for the state of the Charge + + | State | Description | + | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | + | `completed` | All Charge Items included in the Charge for a given Product Order Item have moved to either the `accepted` state or the `declined` state. | + | `awaitingResponse` | A Charge has been initiated by the Buyer. The charge includes one or more charges. | + | `timeout` | A response has not been received from the Buyer within the `responseDueDate`. This is treated as if the Buyer declined the Charge Items. | + | `withdrawnBySeller` | The Seller determines that the Charge is incorrect. They withdraw the Charge and initiate a new Charge with the required correction(s). | + enum: + - awaitingResponse + - completed + - timeout + - withdrawnBySeller + MEFProductOrderCharge_Update: + type: object + description: + A subset of MEFProductOrderCharge that is allowed to be updated + by the Buyer + properties: + chargeItem: + type: array + description: A list of Charge Items contained in the Charge + items: + $ref: "#/components/schemas/MEFProductOrderChargeItem_Update" + minItems: 1 + required: + - chargeItem + MEFProductOrderItemRef: + type: object + description: It's a ProductOrder item + properties: + productOrderHref: + type: string + description: Reference of the related ProductOrder. + productOrderId: + type: string + description: Unique identifier of a ProductOrder. + productOrderItemId: + type: string + description: Id of an Item within the Product Order + required: + - productOrderId + - productOrderItemId + MEFProductOrderItemStateChange: + type: object + description: + "Holds the State notification reasons and associated date the State\ + \ changed, populated by the server" + properties: + changeDate: + type: string + format: date-time + description: The date on when the state was reached + changeReason: + type: string + description: Additional comment related to state change. + state: + $ref: "#/components/schemas/MEFProductOrderItemStateType" + MEFProductOrderItemStateType: + type: string + description: | + Possible values for the state of the Product Order Item The following + mapping has been used between `MEFProductOrderItemStateType` and MEF + 57.2: + + | state | MEF 57.2 name | Description | + | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | + | `acknowledged` | ACKNOWLEDGED | A Product Order Item has been received and has passed basic business validations. From the `acknowledged` state the Product Order Item is further validated and depending on the results of the validation and if other Product Order Items in the Product Order are also validated the Product Order Item moves to `inProgress`, `rejected.validated`, or `rejected.unassessed`. | + | `cancelled` | CANCELLED | The Product Order has moved to the `pendingCancellation` state. All Product Order Items move to `cancelled`. | + | `completed` | COMPLETED | The Product Order Item has completed provisioning. This is an end state | + | `failed` | FAILED | The fulfillment of a Product Order Item has failed. A Product Order Item may fail because the Buyer declined a Blocking charge identified via the Charge, the Buyer failed to respond to a Charge Item included in a Charge, or the Seller is unable to fulfill the Product Order Item. A Product Order Item moving to `failed` state results in the Product Order State being `failed` or `partial`. This is a terminal state. | + | `held` | HELD | The Product Order Item cannot be progressed due to Charge the Seller awaiting a response from the Buyer on a Charge. The Seller stops work on the Product Order Item until the Charge has completed. Upon acceptance by the Buyer of all Blocking charges, the Product Order Item returns to `inProgress` state If the Buyer rejects a Blocking charge, the Product Order Item moves to the `failed` state. | + | `inProgress` | IN_PROGRESS | The Product Order Item has been successfully validated and fulfillment has started. If the Seller's system links validation between Product Order Items in a Product Order, a Product Order Item in this state also indicates that the other Product Order Items passed validation. | + | `pending` | PENDING | The Product Order Item cannot be progressed due to the Seller assessing a Cancel Product Order or Modify Product Order Item Requested Delivery Date request. The Seller stops work on the Product Order Item until either the Cancel Product Order has been accepted and the Product Order state moves to `pendingCancellation` and the Product Order Item state moves to `cancelled`, the Cancel Product Order has been rejected and the Product Order Item State moves to `inProgress`, the Modify Product Order Item Requested Delivery Date has been accepted and the Product Order Item State moves to `inProgress`, or the Modify Product Order Item Requested Delivery Date moves to `done.declined` and the Product Order Item state moves to `inProgress` with original delivery dates. | + | `rejected` | REJECTED | A Product Order Item was submitted, and it has failed at least one validation checks the Seller performs during the `acknowledged` state. | + | `rejected.unassessed` | UNASSESSED | A Product Order was submitted and all validation checks the Seller performs during the `acknowledged` state have not been completed, but another Product Order Item in the Product Order has moved to the `rejected` state. | + | `rejected.validated` | VALIDATED | A Product Order was submitted, and it has passed all validation checks the Seller performs during the `acknowledged` state, but another Product Order Item in the Product Order has moved to the `rejected` state | + enum: + - acknowledged + - cancelled + - completed + - failed + - held + - inProgress + - pending + - rejected + - rejected.validated + - rejected.unassessed + MEFProductOrderItem_Common: + type: object + description: | + An identified part of the order. A product order is decomposed into one or more order items. This type holds the attributes common to request and response representation of the Product Order Item. + properties: + action: + $ref: "#/components/schemas/MEFProductActionType" + agreementName: + type: string + description: + The name of the Agreement which is referenced for the Product + Order Item. + billingAccount: + $ref: "#/components/schemas/MEFBillingAccountRef" + coordinatedAction: + type: array + description: + The interval after the completion of one or more related Product + Order Items that this Product Order Item can be started or completed + items: + $ref: "#/components/schemas/MEFOrderItemCoordinatedAction" + endCustomerName: + type: string + description: + "The name of the End Customer, either a business name or an\ + \ individual name depending on the end customer." + expediteIndicator: + type: boolean + default: false + description: + "Indicates that expedited treatment is requested. Set by the\ + \ Buyer. If this is set to TRUE, the Buyer sets the Requested Completion\ + \ Date to the expedited date. See MEF 57.2 section 7.3 for a description\ + \ of the interaction between the Buyer and the Seller." + id: + type: string + description: | + A Buyer provided identifier to identify Product Order Items and to be able to relate them to one another. This is set by the Buyer and is unique within the Product Order. Examples of Reference Identifier could be 1, 2, 3 or A, B, C. The Reference Identifier can be reused in multiple Product Orders to identify a Product Order Item within that Product Order. + note: + type: array + description: | + Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. This is not to be used to inform the Seller of Actions that the Buyer wishes performed. + items: + $ref: "#/components/schemas/Note" + product: + $ref: "#/components/schemas/MEFProductRefOrValueOrder" + productOfferingQualificationItem: + $ref: "#/components/schemas/ProductOfferingQualificationItemRef" + productOrderItemRelationship: + type: array + description: + The relationship between Product Order Items in the Product + Order. + items: + $ref: "#/components/schemas/OrderItemRelationship" + quoteItem: + $ref: "#/components/schemas/MEFQuoteItemRef" + relatedBuyerPON: + type: string + description: + Identifies the Buyer Purchase Order Number that is related + to this Product Order. + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Order Item. + The rule for mapping a represented attribute + value to a `role` is to use the _lowerCamelCase_ pattern e.g. + - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` + - Buyer Implementation Contact: `role=buyerImplementationContact` + - Buyer Technical Contact: `role=buyerTechnicalContact` + - Buyer Billing Contact: `role=buyerBillingContact` + - Buyer Fault Contact: `role=buyerFaultContact` + - Seller Fault Contact: `role=sellerFaultContact` + - Buyer GDPR Contact: `role=buyerGDPRContact` + - Seller GDPR Contact: `role=sellerGDPRContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + requestedCompletionDate: + type: string + format: date-time + description: + Identifies the Buyer's desired due date (requested delivery + date) + requestedItemTerm: + $ref: "#/components/schemas/MEFItemTerm" + tspRestorationPriority: + type: string + description: | + Within the United States, indicates the provisioning and restoration priority as defined under the TSP Service Vendor Handbook. The valid values are defined in ATIS OBF document: ATIS-0404001. + required: + - action + - id + MEFProductOrderItem_Create: + allOf: + - $ref: "#/components/schemas/MEFProductOrderItem_Common" + - type: object + description: + "An identified part of the order. A product order is decomposed\ + \ into\none or more order items. \nThe modelling pattern introduces the\ + \ `Common` supertype to\naggregate attributes that are common to both `ProductOrderItem`\ + \ and\n`ProductOrderItem_Create`. The `Create` type has a subset of\nattributes\ + \ of the response type and does not introduce any new,\nthus the `Create`\ + \ type has an empty definition.\n" + MEFProductOrderItem_Update: + type: object + description: | + An updatable representation of the Product Order Item. + properties: + endCustomerName: + type: string + description: + "The name of the End Customer, either a business name or an\ + \ individual name depending on the end customer." + id: + type: string + description: | + Identifier of the Item. This is to address the Item to be updated within the Product Order. The id itself cannot be updated. + note: + type: array + description: | + Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. + items: + $ref: "#/components/schemas/Note" + relatedBuyerPON: + type: string + description: + This information is not used by the Seller and is maintained + for the convenience of the Buyer (e.g. search purposes). + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role for this Order Item. Buyer may modify, add, or delete only Buyer-related contacts. + - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` + - Buyer Implementation Contact: `role=buyerImplementationContact` + - Buyer Technical Contact: `role=buyerTechnicalContact` + - Buyer Fault Contact: `role=buyerFaultContact` + - Buyer GDPR Contact: `role=buyerGDPRContact` + items: + $ref: "#/components/schemas/RelatedContactInformation" + required: + - id + MEFProductOrderRef: + type: object + description: Holds the MEF Product Order reference + properties: + productOrderHref: + type: string + description: Hyperlink to access the order + productOrderId: + type: string + description: + Unique (within the ordering domain) identifier for the order + that is generated by the seller when the order is initially accepted. + required: + - productOrderId + MEFProductOrderStateChange: + type: object + description: + "Holds the State notification reasons and associated date the State\ + \ changed, populated by the server" + properties: + changeDate: + type: string + format: date-time + description: The date on when the state was reached + changeReason: + type: string + description: Additional comment related to state change + state: + $ref: "#/components/schemas/MEFProductOrderStateType" + MEFProductOrderStateType: + type: string + description: | + Possible values for the state of the Product Order The following + mapping has been used between `MEFProductOrderStateType` and MEF 57.2: + + | state | MEF 57.2 name | Description | + | ------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | + | `acknowledged` | ACKNOWLEDGED | A Product Order has been received by the Seller and has passed basic validation. A `productOrder.id` is assigned in the `acknowledged` state and a response is returned to the Buyer. The Product Order remains in the `acknowledged` state while validations of Product Order and Product Order Item(s) attributes as applicable is completed. If the Product Order and Product Order Item attributes are validated the Product Order moves to the `inProgress` state. If not validated, the Product Order moves to the `rejected` state. | + | `assessingCancellation` | ASSESSING_CANCELLATION | A Cancel Product Order request has been received by the Seller. The Product Order is being assessed to determine if the Product Order can be cancelled. If there are charges associated with cancelling the Product Order, these are communicated to the Buyer using the Charge process. The Product Order remains in the `assessingCancellation` state until any relevant Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order moves to the `pendingCancellation` state. If the request is not validated or if any associated Charges are not completed, the Product Order moves to the `inProgress` state and the Product Order is not cancelled. | + | `held.assessingCharge` | ASSESSING_CHARGE | A Charge has been initiated by the Seller that is not the result of a Modify Product Order Item Requested Delivery Date or Cancel Product Order request and the Seller is awaiting a Buyer response to the Charge. If a blocking or non-blocking charge is accepted by the Buyer, the Product Order moves to `inProgress`. If a non-blocking charge is declined by the Buyer, the Product Order moves to `inProgress`. If a blocking charge is declined by the Buyer and there are no unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` and then to the `failed` state. If a blocking charge is declined by the Buyer and there are unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` state. | + | `pending.assessingModification` | ASSESSING_MODIFICATION | A request has been made by the Buyer to modify either the `expediteIndicator` or the `requestedCompletionDate` of a Product Order Item. The Product Order Item is currently being assessed to determine whether the Modify Product Order Item Requested Delivery Date is valid. If there is a charge associated with the Modify Product Order Item Requested Delivery Date, the Product Order remains in the `pending.assessingModification` state until the Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order returns to the `inProgress` state. | + | `cancelled` | CANCELLED | The Product Order has been successfully cancelled. This is a terminal state. | + | `pendingCancellation` | CANCELLING | The Buyer's Cancel Request has been assessed and it has been determined that it is feasible to proceed with the cancellation. This state can also result from a Seller cancelling the Product Order within their systems without a request from the Buyer. | + | `completed` | COMPLETED | The Product Order has completed fulfillment and the Product is now active. This is a terminal state | + | `failed` | FAILED | All Product Order Items have failed which results in the entire Product Order failing. This is a terminal state. | + | `inProgress` | IN_PROGRESS | The Product Order has been successfully validated, and fulfillment has started. | + | `partial` | PARTIAL | Fulfillment of at least one Product Order Item has failed, and fulfillment of at least one Product Order Item has been successful. This is a terminal state. | + | `rejected` | REJECTED | A Product Order was submitted, and it has failed at least one of the validation checks the Seller performs after it reached the `acknowledged` state | + enum: + - acknowledged + - assessingCancellation + - cancelled + - completed + - failed + - held.assessingCharge + - inProgress + - partial + - pending.assessingModification + - pendingCancellation + - rejected + MEFProductRefOrValueOrder: + type: object + description: + Used by the Buyer to point to existing and/or describe the desired + shape of the product. In case of `add` action - only `productConfiguration` + MUST be specified. For `modify` action - both `id` and `productConfiguration` + MUST be provided to point which product instance to update and to what state. + In `delete` only the `id` must be provided. + properties: + href: + type: string + description: + Hyperlink to the referenced Product. Hyperlink MAY be used + by the Seller in responses. Hyperlink MUST be ignored by the Seller in + case it is provided by the Buyer in a request. + id: + type: string + description: + The unique identifier of an in-service Product that is the + ordering subject. This field MUST be populated if an item `action` is + either `modify` or `delete`. This field MUST NOT be populated if an item + `action` is `add`. + place: + type: array + description: + The relationships between this Product Order Item and one or + more Places as defined in the Product Specification. + items: + $ref: "#/components/schemas/RelatedPlaceRefOrValue" + productConfiguration: + $ref: "#/components/schemas/MEFProductConfiguration" + productOffering: + $ref: "#/components/schemas/ProductOfferingRef" + productRelationship: + type: array + description: + A list of references to existing products that are related + to the ordered Product. + items: + $ref: "#/components/schemas/ProductRelationship" + MEFQuoteItemRef: + type: object + description: It's a Quote item that has been executed previously. + properties: + id: + type: string + description: Id of an Quote Item + quoteHref: + type: string + description: Reference of the related Quote. + quoteId: + type: string + description: Unique identifier of a Quote. + required: + - id + - quoteId + MEFSubUnit: + type: object + description: Allows for sub unit identification + properties: + subUnitNumber: + type: string + description: + "The discriminator used for the subunit, often just a simple\ + \ number but may also be a range." + subUnitType: + type: string + description: + "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ + \ UNIT, WHARF." + required: + - subUnitNumber + - subUnitType + Money: + type: object + description: A base / value business entity used to represent money + properties: + unit: + type: string + description: Currency (ISO4217 norm uses 3 letters to define the currency) + value: + type: number + format: float + description: A positive floating point number + Note: + type: object + description: + Extra information about a given entity. Only useful in processes + involving human interaction. Not applicable for the automated process. + properties: + author: + type: string + description: Author of the note + date: + type: string + format: date-time + description: Date the Note was created + id: + type: string + description: + "Identifier of the note within its containing entity (may or\ + \ may not be globally unique, depending on provider implementation)" + source: + $ref: "#/components/schemas/MEFBuyerSellerType" + text: + type: string + description: Text of the note + required: + - author + - date + - id + - source + - text + OrderItemRelationship: + type: object + description: The relationship between Product Order Items in the Product Order. + properties: + id: + type: string + description: Id of the related Order Item (must be in the same Order). + relationshipType: + type: string + description: + Specifies the nature of the relationship to the related Product + Order Item. A string that is one of the relationship types specified in + the Product Specification. + required: + - id + - relationshipType + Price: + type: object + description: + "Provides all amounts (tax included, duty free, tax rate), used\ + \ currency and percentage to apply for Price Alteration." + properties: + dutyFreeAmount: + $ref: "#/components/schemas/Money" + taxIncludedAmount: + $ref: "#/components/schemas/Money" + taxRate: + type: number + format: float + description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." + required: + - dutyFreeAmount + ProductOfferingQualificationItemRef: + type: object + description: + It's a productOfferingQualification item that has been executed + previously. + properties: + alternateProductOfferingProposalId: + type: string + description: + A unique identifier for this Alternate Product Proposal assigned + by the Seller. + id: + type: string + description: Id of an item of a product offering qualification + productOfferingQualificationHref: + type: string + description: Reference to a related Product Offering Qualification resource. + productOfferingQualificationId: + type: string + description: + Unique identifier of related Product Offering Qualification + resource. + required: + - id + - productOfferingQualificationId + ProductOfferingRef: + type: object + description: + "A reference to a Product Offering offered by the Seller to the\ + \ Buyer. A Product Offering contains the commercial and technical details\ + \ of a Product sold by a particular Seller. A Product Offering defines all\ + \ of the commercial terms and, through association with a particular Product\ + \ Specification, defines all the technical attributes and behaviors of the\ + \ Product. A Product Offering may constrain the allowable set of configurable\ + \ technical attributes and/or behaviors specified in the associated Product\ + \ Specification." + properties: + href: + type: string + description: | + Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog capabilities this field is not used. The catalog API definition is provided by the Seller to the Buyer during onboarding Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request + id: + type: string + description: + id of a Product Offering. It is assigned by the Seller. The + Buyer and the Seller exchange information about offerings' ids during + the onboarding process. + required: + - id + ProductOrder: + allOf: + - $ref: "#/components/schemas/ProductOrder_Common" + - type: object + description: + A Product Order is a type of order which can be used to place + an order between a customer and a service provider or between a service + provider and a partner and vice versa + properties: + cancellationCharge: + type: array + description: Charges associated with cancelling the Product Order + items: + $ref: "#/components/schemas/MEFProductOrderChargeRef" + cancellationDate: + type: string + format: date-time + description: + Identifies the date the Seller cancelled the Order. Set by + Seller when the Order is moved to the cancelled state. + cancellationReason: + type: string + description: + "An optional free-form text field for the Seller to provide\ + \ additional information regarding the reason for the cancellation.\ + \ If the Seller cancels the Product Order, the Seller provides the reason.\ + \ If the Buyer requests the cancellation, the Seller copies the reason\ + \ provided by the Buyer from the Cancel Product Order request." + completionDate: + type: string + format: date-time + description: + Identifies the date that all Product Order Items within the + Order have reached a terminal state. No further action is permitted + on the Product Order. + href: + type: string + description: Hyperlink to access the order + id: + type: string + description: + Unique identifier for the Product Order that is generated + by the Seller when the Product Order is initially accepted via an API. + orderDate: + type: string + format: date-time + description: + Date when the Product Order was created in the Seller's system + and a Product Order Identifier was assigned + productOrderItem: + type: array + description: | + Items contained in the Product Order. + items: + $ref: "#/components/schemas/ProductOrderItem" + minItems: 1 + state: + $ref: "#/components/schemas/MEFProductOrderStateType" + stateChange: + type: array + description: State change for the Product Order + items: + $ref: "#/components/schemas/MEFProductOrderStateChange" + required: + - id + - orderDate + - productOrderItem + - state + ProductOrderItem: + allOf: + - $ref: "#/components/schemas/MEFProductOrderItem_Common" + - type: object + description: | + An identified part of the order. A product order is decomposed into one or more order items. + properties: + charge: + type: array + description: + The Charges associated to this Product Order Item. This list + contains all completed Charges containing accepted Charge Items initiated + by the Seller. Any Charge that is withdrawn or containing all declined + Charge Items must not be included in this list. + items: + $ref: "#/components/schemas/MEFProductOrderChargeRef" + completionDate: + type: string + format: date-time + description: + Identifies the date the Seller completed the Product Order + Item. Set by Seller when all Product Order Items have reached a terminal + state. No further action is permitted on the Product Order after this + state is reached. + expectedCompletionDate: + type: string + format: date-time + description: | + Identifies the date the Seller expects to complete the Product Order Item. + expediteAcceptedIndicator: + type: boolean + default: false + description: + "Indicates if the Seller has accepted the Buyer's Expedite\ + \ request. See MEF 57.2 section 7.3 for a description of the interaction\ + \ between the Buyer and Seller. If this is set to true, the Seller provides\ + \ the costs to expedite the Product Order in the charge attribute" + itemTerm: + type: array + description: Term of the Product Order Item + items: + $ref: "#/components/schemas/MEFItemTerm" + maxItems: 1 + milestone: + type: array + description: + Milestones associated to the Product Order Item. Set by the + Seller when a Milestone occurs. + items: + $ref: "#/components/schemas/MEFMilestone" + state: + $ref: "#/components/schemas/MEFProductOrderItemStateType" + stateChange: + type: array + description: State change for the Product Order Item + items: + $ref: "#/components/schemas/MEFProductOrderItemStateChange" + terminationError: + type: array + description: + "When the Seller cannot process the request, the Seller returns\ + \ a text-based list of reasons here." + items: + $ref: "#/components/schemas/TerminationError" + ProductOrder_Common: + type: object + description: + "A Product Order is a type of order which can be used to place\ + \ an order between a customer and a service provider or between a service\ + \ provider and a partner and vice versa," + properties: + externalId: + type: string + description: An identifier for this order within the Buyer's enterprise. + note: + type: array + description: | + Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. + items: + $ref: "#/components/schemas/Note" + projectId: + type: string + description: + An identifier that is used to group Product Orders that is + important to the Buyer. A projectId can be used to relate multiple Product + Orders together. + relatedContactInformation: + type: array + description: |- + Contact information of an individual or organization playing a role in this context. + (e.g. Product Order Contact: role=productOrderContact; + Seller Contact: role=sellerContact) + Providing the Product Order Contact in the request is mandatory. + items: + $ref: "#/components/schemas/RelatedContactInformation" + minItems: 1 + required: + - relatedContactInformation + ProductOrder_Create: + allOf: + - $ref: "#/components/schemas/ProductOrder_Common" + - type: object + description: | + A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa, Skipped properties: id,href,completionDate,orderDate,state,stateChange,cancellationDate,cancellationReason + properties: + productOrderItem: + type: array + description: | + Items contained in the Product Order. + items: + $ref: "#/components/schemas/MEFProductOrderItem_Create" + minItems: 1 + required: + - productOrderItem + ProductOrder_Find: + type: object + description: + Structure to define GET without id response. A list of productOrder + matching request criteria. Provides Product order summary view. + properties: + cancellationDate: + type: string + format: date-time + description: + Identifies the date the Seller cancelled the Order. Set by + Seller when the Order is moved to the cancelled state. + completionDate: + type: string + format: date-time + description: + Identifies the date that all Product Order Items within the + Order have reached a terminal state. No further action is permitted on + the Product Order after this notification. + externalId: + type: string + description: + ID given by the consumer and only understandable by him (to + facilitate his searches afterward). + id: + type: string + description: + Unique identifier for the order that is generated by the Seller + when the order is initially accepted via an API. + orderDate: + type: string + format: date-time + description: Date when the Product Order was created + projectId: + type: string + description: + An identifier that is used to group Product Orders that is + important to the Buyer. A projectId can be used to relate multiple Product + Orders together. + state: + $ref: "#/components/schemas/MEFProductOrderStateType" + required: + - id + - orderDate + - state + ProductOrder_Update: + type: object + description: + A request initiated by the Buyer to update Product Order and/or + Product + properties: + externalId: + type: string + description: An identifier for this Product Order within the Buyer's enterprise. + note: + type: array + description: | + Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. + items: + $ref: "#/components/schemas/Note" + productOrderItem: + type: array + description: | + Order Item attributes that may be updated + items: + $ref: "#/components/schemas/MEFProductOrderItem_Update" + projectId: + type: string + description: + An identifier that is used to group Product Orders that is + important to the Buyer. A projectId can be used to relate multiple Product + Orders together. + relatedContactInformation: + type: array + description: | + Contact information of an individual or organization playing a role in this context. Buyer can modify, add, or delete only Buyer-related contacts. + items: + $ref: "#/components/schemas/RelatedContactInformation" + minItems: 1 + ProductRelationship: + type: object + description: + A relationship to an existing Product. The requirements for usage + for given Product are described in the Product Specification. + properties: + href: + type: string + description: + Hyperlink to the product in Seller's inventory that is referenced + Hyperlink MAY be used when providing a response by the Seller Hyperlink + MUST be ignored by the Seller in case it is provided by the Buyer in a + request + id: + type: string + description: unique identifier of the related Product + relationshipType: + type: string + description: | + Specifies the type (nature) of the relationship to the related Product. The nature of required relationships varies for Products of different types. For example, a UNI or ENNI Product may not have any relationships, but an Access E-Line may have two mandatory relationships (related to the UNI on one end and the ENNI on the other). More complex Products such as multipoint IP or Firewall Products may have more complex relationships. As a result, the allowed and mandatory `relationshipType` values are defined in the Product Specification. + required: + - id + - relationshipType + RelatedContactInformation: + type: object + description: + "Contact information of an individual or organization playing a\ + \ role for\nthis Order Item. The rule for mapping a represented attribute\ + \ value to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer\ + \ Order Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation\ + \ Contact: `role=buyerImplementationContact` \n- Buyer Technical Contact:\ + \ `role=buyerTechnicalContact`\n" + properties: + emailAddress: + type: string + description: Email address + name: + type: string + description: Name of the contact + number: + type: string + description: Phone number + numberExtension: + type: string + description: Phone number extension + organization: + type: string + description: The organization or company that the contact belongs to + postalAddress: + $ref: "#/components/schemas/FieldedAddress" + role: + type: string + description: A role the party plays in a given context. + required: + - emailAddress + - name + - number + - role + RelatedPlaceRefOrValue: + type: object + description: Place defines the places where the product order must be done. + discriminator: + mapping: + FieldedAddress: "#/components/schemas/FieldedAddress" + FormattedAddress: "#/components/schemas/FormattedAddress" + GeographicAddressLabel: "#/components/schemas/GeographicAddressLabel" + GeographicAddressRef: "#/components/schemas/GeographicAddressRef" + GeographicSiteRef: "#/components/schemas/GeographicSiteRef" + MEFGeographicPoint: "#/components/schemas/MEFGeographicPoint" + propertyName: "@type" + properties: + "@schemaLocation": + type: string + format: uri + description: + A URI to a JSON-Schema file that defines additional attributes + and relationships. May be used to define additional related place types. + Usage of this attribute must be agreed upon between Buyer and Seller. + "@type": + type: string + description: | + This field is used as a discriminator and is used between different place representations. This type might discriminate for additional related place as defined in '@schemaLocation'. + enum: + - FieldedAddress + - FormattedAddress + - GeographicAddressLabel + - GeographicAddressRef + - GeographicSiteRef + - MEFGeographicPoint + role: + type: string + description: Role of this place + required: + - "@type" + - role + TerminationError: + type: object + description: + This indicates an error that caused an Item to be terminated. The + code and propertyPath should be used like in Error422. + properties: + code: + $ref: "#/components/schemas/Error422Code" + propertyPath: + type: string + description: | + A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. + Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). + value: + type: string + description: Text to describe the reason of the termination. + TimeUnit: + type: string + description: | + Represents a unit of time. + enum: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + securitySchemes: + oauth2MEFLSOAPI: + description: Default m2m client code + flows: + clientCredentials: + refreshUrl: http://mef.net/example/refresh + scopes: + default: default scope + tokenUrl: http://mef.net/example/token + type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml new file mode 100644 index 00000000..4654336f --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml @@ -0,0 +1,2223 @@ +openapi: 3.0.1 +info: + description: | + **This file forms part of MEF 115** + + This API implements Business Requirements described in MEF 80 + + Quote API allows the Buyer to submit a request to find out how much the installation + of an instance of a Product Offering, an update to an existing Product, or + a disconnect of an existing Product will cost. + + List of supported Use Cases: + - Create Quote + - Retrieve Quote List + - Retrieve Quote by Quote Identifier + - Cancel Quote by Quote Identifier + - Decline Quote by Quote Identifier + - Register for Quote Notification + + Copyright 2021 MEF Forum and its contributors. + + This file includes content based on the TM Forum Quote Management API + (TMF648 v4.0.0) available at + https://github.com/tmforum-apis/TMF648_QuoteManagement, which is licensed + by the TM Forum under the Apache License version 2.0. Such content has been + modified by the MEF Forum and its contributors. + title: Quote Management + version: 8.0.1 +servers: + - url: 'https://{serverBase}/mefApi/sonata/quoteManagement/v8/' + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +tags: + - name: quote + - name: quote operations + - name: events subscription +paths: + /quote: + get: + description: >- + The Buyer requests a list of Quotes from the Seller based on a set of + filter criteria (as described in MEF 80). For each Quote returned, the + Seller also provides a Quote Identifier that uniquely identifies this + Quote within the Seller. The order of the elements returned to the + Buyer is defined by the Seller (e.g. natural order) and does not change + between the pages. + operationId: listQuote + parameters: + - description: >- + State of the Quote to be retrieved. See `MEFQuoteStateType` + definition for details + in: query + name: state + schema: + enum: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - cancelled + - unableToProvide + - declined + - expired + - inProgress + - inProgress.draft + - rejected + type: string + - description: >- + Level of the quote - could be budgetary, + firmSubjectToFeasibilityCheck, firm + in: query + name: quoteLevel + schema: + enum: + - budgetary + - firmSubjectToFeasibilityCheck + - firm + type: string + - description: >- + ID given by the consumer and only understandable by him (to + facilitate his searches afterward) + in: query + name: externalId + schema: + type: string + - description: >- + An identifier that is used to group Quotes that represent a unit of + functionality that is important to a Buyer. A Project can be used + to relate multiple Quotes together + in: query + name: projectId + schema: + type: string + - description: Date when the quote was created - greater than + in: query + name: quoteDate.gt + schema: + format: date-time + type: string + - description: Date when the quote was created - lower than + in: query + name: quoteDate.lt + schema: + format: date-time + type: string + - description: Requested Quote Completion Date - greater than + in: query + name: requestedQuoteCompletionDate.gt + schema: + format: date-time + type: string + - description: Requested Quote Completion Date - lower than + in: query + name: requestedQuoteCompletionDate.lt + schema: + format: date-time + type: string + - description: Expected Quote Completion Date - greater than + in: query + name: expectedQuoteCompletionDate.gt + schema: + format: date-time + type: string + - description: Expected Quote Completion Date - lower than + in: query + name: expectedQuoteCompletionDate.lt + schema: + format: date-time + type: string + - description: >- + Date when the Quote State was set to one of the Completion States - + greater than + in: query + name: effectiveQuoteCompletionDate.gt + schema: + format: date-time + type: string + - description: >- + Date when the Quote State was set to one of the Completion States - + lower than + in: query + name: effectiveQuoteCompletionDate.lt + schema: + format: date-time + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + - description: + Requested index for start of resources to be provided in response + in: query + name: offset + schema: + type: integer + - description: Requested number of resources to be provided in response + in: query + name: limit + schema: + format: int32 + type: integer + responses: + '200': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Quote_Find' + type: array + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + headers: + X-Pagination-Throttled: + description: > + Used to indicate that result page was throttled to maximum + possible size and there are additional results that can be + fetched + schema: + type: boolean + X-Total-Count: + description: > + The total number of matching records. E.g. if there are 50 + matching records in total, but the request has offset=10 and + limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of records included in the response + schema: + type: integer + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: List or find Quote objects + tags: + - quote + post: + description: This operation creates a Quote entity. + operationId: createQuote + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Quote_Create' + description: The Quote to be created + required: true + responses: + '201': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Quote' + description: + 'Created (https://tools.ietf.org/html/rfc7231#section-6.3.2)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: >- + Unprocessable entity due to the business validation problems in the + Quote or one of the Quote items + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Send request to perform a quotation + tags: + - quote + x-codegen-request-body-name: quote + '/quote/{id}': + get: + description: >- + This operation retrieves a Quote entity. Attribute selection is enabled + for all first level attributes. + operationId: retrieveQuote + parameters: + - description: Identifier of the Quote + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Quote' + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Retrieves a Quote by ID + tags: + - quote + /cancelQuote: + post: + description: This operation sends a cancellation request. + operationId: cancelQuote + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: The details of the Quote Operation + required: true + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: Success + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: >- + Unprocessable entity due to the business validation problems in the + Quote or one of the Quote items + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Cancels a Quote + tags: + - quote operations + x-codegen-request-body-name: cancelQuote + /rejectQuote: + post: + description: This operation sends a rejection request. + operationId: rejectQuote + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: The details of the Quote Operation + required: true + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: Success + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: >- + Unprocessable entity due to the business validation problems in the + Quote or one of the Quote items + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Rejects a Quote + tags: + - quote operations + x-codegen-request-body-name: rejectQuote + /hub: + post: + description: >- + A request initiated by the Buyer to instruct the Seller to send + notifications of Quote state changes in the event the Seller uses the + Deferred Response pattern to respond to a Create Quote request. + operationId: registerListener + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/EventSubscriptionInput' + description: + Data containing the callback endpoint to deliver the information + required: true + responses: + '201': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/EventSubscription' + description: + 'Subscribed (https://tools.ietf.org/html/rfc7231#section-6.3.2)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + '501': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error501' + description: >- + Method not implemented. Used in case Seller is not supporting + Notification mechanism + summary: Allows the Buyer to register to Quote state change notifications + tags: + - events subscription + x-codegen-request-body-name: data + '/hub/{id}': + delete: + description: >- + Resets the communication endpoint address the service instance must use + to deliver information about its health state, execution state, + failures and metrics. + operationId: unregisterListener + parameters: + - description: The id of the EventSubscription + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '204': + description: + 'Deleted (https://tools.ietf.org/html/rfc7231#section-6.3.5)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + '501': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error501' + description: >- + Method not implemented. Used in case Seller is not supporting + Notification mechanism + summary: Unregister a listener + tags: + - events subscription +components: + schemas: + Duration: + description: + 'A Duration in a given unit of time e.g. 3 hours, or 5 days.' + properties: + amount: + description: 'Duration (number of seconds, minutes, hours, etc.)' + type: integer + units: + description: Time unit type + $ref: '#/components/schemas/TimeUnit' + required: + - amount + - units + type: object + Error: + description: > + Standard Class used to describe API response error Not intended to be + used directly. The `code` in the HTTP header is used as a discriminator + for the type of error returned in runtime. + properties: + reason: + description: >- + Text that explains the reason for the error. This can be shown to a + client user. + maxLength: 255 + type: string + message: + description: >- + Text that provides mode details and corrective actions related to + the error. This can be shown to a client user. + type: string + referenceError: + description: URL pointing to documentation describing the error + format: uri + type: string + required: + - reason + type: object + Error400: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required + query-string parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + $ref: '#/components/schemas/Error400Code' + required: + - code + type: object + description: + 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' + Error400Code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required query-string + parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + type: string + Error401: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + One of the following error codes: + + - missingCredentials: No credentials provided. + + - invalidCredentials: Provided credentials are invalid or + expired + $ref: '#/components/schemas/Error401Code' + required: + - code + type: object + description: + 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' + Error401Code: + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + type: string + Error403: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + $ref: '#/components/schemas/Error403Code' + required: + - code + type: object + description: >- + Forbidden. This code indicates that the server understood the request + but refuses to authorize it. + (https://tools.ietf.org/html/rfc7231#section-6.5.3) + Error403Code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + type: string + Error404: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - notFound: A current representation for the target resource + not found + enum: + - notFound + type: string + required: + - code + type: object + description: >- + Resource for the requested path not found. + (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error422: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused + the validation issue. It is highly recommended that this + property should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + required: + - code + type: object + description: >- + Unprocessable entity due to a business validation problem. + (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + type: string + Error500: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - internalError: Internal server error - the server encountered + an unexpected condition that prevented it from fulfilling the + request. + enum: + - internalError + type: string + required: + - code + type: object + description: >- + Internal Server Error. + (https://tools.ietf.org/html/rfc7231#section-6.6.1) + Error501: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: |- + The following error code: + - notImplemented: Method not supported by the server + enum: + - notImplemented + type: string + required: + - code + type: object + description: + 'Not Implemented. (https://tools.ietf.org/html/rfc7231#section-6.6.2)' + EventSubscription: + description: | + This resource is used to manage notification subscription. + Reference: MEF 79 (Sn 8.3) + properties: + query: + description: >- + The value provided by the Buyer in `EventSubscriptionInput` during + notification registration + callback: + description: >- + The value provided by the Buyer in `EventSubscriptionInput` during + notification registration + type: string + id: + description: >- + An identifier of the event subscription assigned by the Seller when + a resource is created. + type: string + required: + - callback + - id + type: object + EventSubscriptionInput: + description: This class is used to register for Notifications. + properties: + query: + description: >- + This attribute is used to define to which type of events to + register to. Example: "query":"eventType = quoteStateChangeEvent". + To subscribe for more than one event type, put the values separated + by comma: + `eventType=quoteStateChangeEvent,quoteItemStateChangeEvent`. The + possible values are enumerated by the 'QuoteEventType' in + quoteNotification.api.yaml. An empty query is treated as specifying + no filters - ending in subscription for all event types. + type: string + callback: + description: >- + This callback value must be set to *host* property from Buyer + Notification API (quoteNotification.api.yaml). This property is + appended with the base path and notification resource path + specified in that API to construct an URL to which notification is + sent. E.g. for "callback": "http://buyer.co/listenerEndpoint", the + state change event notification will be sent to: + `http://buyer.co/listenerEndpoint/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent` + type: string + required: + - callback + type: object + FieldedAddress: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + country: + description: Country that the address is in + type: string + streetType: + description: >- + Alley, avenue, boulevard, brae, crescent, drive, highway, lane, + terrace, parade, place, tarn, way, wharf + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in an american urban property address + type: string + city: + description: The city that the address is in + type: string + streetNr: + description: >- + Number identifying a specific property on a public street. It + may be combined with streetNrLast for ranged addresses. + type: string + locality: + description: The locality that the address is in + type: string + postcode: + description: >- + Descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as zip code) + type: string + streetNrLast: + description: + Last number in a range of street numbers allocated to a + property + type: string + streetNrSuffix: + description: The first street number suffix + type: string + streetName: + description: Name of the street or other street type + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + streetNrLastSuffix: + description: Last street number suffix for a ranged address + type: string + geographicSubAddress: + description: >- + Additional fields used to specify an address, as detailed as + possible. + $ref: '#/components/schemas/GeographicSubAddress' + streetSuffix: + description: A modifier denoting a relative direction + type: string + required: + - city + - country + - streetName + type: object + description: >- + A type of Address that has a discrete field and value for each type of + boundary or identifier down to the lowest level of detail. For example + "street number" is one field, "street name" is another field, etc. + FormattedAddress: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + country: + description: Country that the address is in + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in an US urban property address + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + city: + description: The city that the address is in + type: string + addrLine2: + description: The second address line in a formatted address + type: string + addrLine1: + description: The first address line in a formatted address + type: string + locality: + description: >- + An area of defined or undefined boundaries within a local + authority or other legislatively defined area, usually rural or + semi-rural in nature + type: string + postcode: + description: >- + Descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as ZIP code) + type: string + required: + - addrLine1 + - city + - country + type: object + description: >- + A type of Address that has discrete fields for each type of boundary or + an identifier with the exception of the street and more specific + location details, which are combined into a maximum of two strings + based on local postal addressing conventions. + GeographicAddressLabel: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + externalReferenceId: + description: >- + The unique reference to an Address as provided by the + Administrative Authority. + type: string + externalReferenceType: + description: >- + The organization or standard from the organization that + administers this Geographic Address Label ensuring it is unique + within the Administrative Authority. The value(s) to be used + are to be agreed upon during the onboarding. For North American + providers this would normally be CLLI (Common Language Location + Identifier) code. + type: string + required: + - externalReferenceId + - externalReferenceType + type: object + description: >- + A unique identifier controlled by a generally accepted independent + administrative authority that specifies a fixed geographical location. + + Reference: MEF 79 (Sn 8.9.4), MEF 79.0.2 (Sn 8.9.4) + GeographicAddressRef: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + href: + description: > + Hyperlink to the referenced GeographicAddress. Hyperlink MAY be + used by the Seller in responses. Hyperlink MUST be ignored by + the Seller in case it is provided by the Buyer in a request + type: string + id: + description: >- + Identifier of the referenced Geographic Address. This + identifier is assigned during a successful address validation + request (Geographic Address Validation API) + type: string + required: + - id + type: object + description: > + A reference to a Geographic Address resource available through Address + Validation API. + GeographicSiteRef: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + href: + description: > + Hyperlink to the referenced GeographicSite. Hyperlink MAY be + used by the Seller in responses. Hyperlink MUST be ignored by + the Seller in case it is provided by the Buyer in a request + type: string + id: + description: Identifier of the referenced Geographic Site. + type: string + required: + - id + type: object + description: > + A reference to a Geographic Site resource available through Service + Site API + GeographicSubAddress: + description: + 'Additional fields used to specify an address, as detailed as possible.' + properties: + buildingName: + description: > + Allows for identification of places that require building name as + part of addressing information + type: string + subUnit: + description: >- + Representation of a MEFSubUnit It is used for describing subunit + within a subaddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + items: + $ref: '#/components/schemas/MEFSubUnit' + type: array + levelType: + description: Describes level types within a building + type: string + levelNumber: + description: + 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT + 2' + type: string + privateStreetNumber: + description: Private streets numbers internal to a private street + type: string + privateStreetName: + description: >- + Private streets internal to a property (e.g. a university) may have + internal names that are not recorded by the land title office + type: string + type: object + MEFBuyerQuoteLevel: + description: >- + An indication of whether the Buyer's Quote Request is for a Budgetary + or Firm Quote Level. Set by the Buyer. Buyer Requested Quote Level + contains the possible values and may be set by the Buyer on the + Request. All Quote Items in a Quote have the same Quote Level. + enum: + - budgetary + - firm + type: string + MEFChargePeriod: + description: Used for a recurring charge to indicate period. + enum: + - hour + - day + - week + - month + - year + type: string + MEFEndOfTermAction: + description: + The action that needs to be taken by the Seller once the term expires. + enum: + - roll + - autoDisconnect + - autoRenew + type: string + MEFGeographicPoint: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + spatialRef: + description: >- + The spatial reference system used to determine the coordinates + (e.g. `WGS84`). The system used and the value of this field are + to be agreed upon during the onboarding process. + type: string + x: + description: >- + The latitude expressed in the format specified by the + `spacialRef` + type: string + 'y': + description: >- + The longitude expressed in the format specified by the + `spacialRef` + type: string + z: + description: >- + The elevation expressed in the format specified by the + `spacialRef` + type: string + required: + - spatialRef + - x + - 'y' + type: object + description: > + A MEFGeographicPoint defines a geographic point through coordinates. + Reference: MEF 79 (Sn 8.9.5) + MEFItemTerm: + description: >- + The terms of the Quote Item. Used to describe a term (also known as + commitment) for a Quote Item. Each Quote Item in a Quote Request could + have a different Requested Quote Item Term. The Buyer specifies the + longest term that they would accept. The Buyer may be willing to accept + a shorter term. If the Seller responds with a term longer than the + Buyer's request, it is treated as an alternate response. + properties: + duration: + description: Duration of the term + $ref: '#/components/schemas/Duration' + endOfTermAction: + description: >- + The action that needs to be taken by the Seller once the term + expires + $ref: '#/components/schemas/MEFEndOfTermAction' + name: + description: Name of the term + type: string + description: + description: Description of the term + type: string + rollInterval: + description: >- + The recurring period that the Buyer is willing to pay to the end of + upon disconnecting the Product after the original term has expired. + If `endOfTermAction` is equal to `roll` then `rollInterval` MUST be + specified. If `endOfTermAction` is equal to `autoRenew` or + `autoDisconnect`, then `rollInterval` MUST NOT be specified. + $ref: '#/components/schemas/Duration' + required: + - duration + - endOfTermAction + - name + type: object + MEFPriceType: + description: + Indicates if the price is for recurring or non-recurring charges. + enum: + - recurring + - nonRecurring + - usageBased + type: string + MEFProductActionType: + description: | + Product action to be applied to the Quote Item. This corresponds to the + Order Item Action when an associated product is ordered. + + | MEFProductActionType | MEF 80 | + |--------------------- | ---------- | + | add | INSTALL | + | modify | CHANGE | + | delete | DISCONNECT | + enum: + - add + - modify + - delete + type: string + MEFProductConfiguration: + description: >- + MEFProductConfiguration is used as an extension point for MEF specific + product/service payload. The `@type` attribute is used as a + discriminator + discriminator: + propertyName: '@type' + properties: + '@type': + description: >- + The name of the type that uniquely identifies the type of the + product that is the subject of the POQ Request. In the case of the + MEF product, this is the URN provided in the Product Specification. + type: string + required: + - '@type' + type: object + MEFQuoteItemStateType: + description: > + Possible values for the status of a QuoteItem. + + Following mapping has been used between `MEFQuoteItemStateType` and MEF + 80: + + + | MEFQuoteItemStateType | MEF 80 | + + | ----------------------------| --------------------------------- | + + | answered | ANSWERED | + + | acknowledged | ACKNOWLEDGED | + + | approved.orderable | ORDERABLE | + + | approved.orderableAlternate | ORDERABLE_ALTERNATE | + + | inProgress | IN_PROGRESS | + + | inProgress.draft | IN_PROGRESS_DRAFT | + + | abandoned | ABANDONED | + + | rejected | REJECTED | + + | unableToProvide | UNABLE_TO_PROVIDE | + enum: + - answered + - acknowledged + - approved.orderable + - approved.orderableAlternate + - inProgress + - inProgress.draft + - rejected + - abandoned + - unableToProvide + type: string + MEFQuoteItem_Common: + description: >- + Quote items describe an action to be performed on a productOffering or + a product in order to get pricing elements and conditions. + properties: + requestedQuoteItemTerm: + description: >- + The terms of the Quote Item. Used to describe a term (also known as + commitment) for a Quote Item. Each Quote Item in a Quote Request + could have a different Requested Quote Item Term. The Buyer + specifies the longest term that they would accept. The Buyer may be + willing to accept a shorter term. If the Seller responds with a + term longer than the Buyer's request, it is treated as an alternate + response. + $ref: '#/components/schemas/MEFItemTerm' + note: + description: >- + Free form text associated with the quote item. Only useful in + processes involving human interaction. Not applicable for the + automated process. + items: + $ref: '#/components/schemas/Note' + type: array + product: + description: + The Buyer's existing Product for which the quote is being + requested. + $ref: '#/components/schemas/MEFProductRefOrValueQuote' + productOfferingQualificationItem: + description: A reference to a previously done POQ with item specified + $ref: '#/components/schemas/ProductOfferingQualificationItemRef' + relatedContactInformation: + description: > + Contact information of an individual or organization playing a role + for this Quote. If `instantSyncQuote` equals `false` then 'Quote + Item Technical Contact' must be specified (`role: + quoteItemTechnicalContact`). If `instantSyncQuote` equals `false` + and the Quote Item requires a location, the Buyer MUST provide the + Quote Item Location Contact Information `role: + quoteItemLocationContact`. + items: + $ref: '#/components/schemas/RelatedContactInformation' + type: array + agreementName: + description: >- + Name of the agreement. The name is unique between the Buyer and the + Seller. + type: string + action: + description: >- + Product action to be applied to this Quote Item. This corresponds + to the Order Item Action when an associated product is ordered. + $ref: '#/components/schemas/MEFProductActionType' + dealReference: + description: >- + A pre-agreed pricing modifier reference that the Seller is offering + to the Buyer which will impact the price. + type: string + id: + description: >- + Identifier of the quote item (generally it is a sequence number 01, + 02, 03, ...) + type: string + requestedQuoteItemInstallationInterval: + description: The installation interval requested by the Buyer. + $ref: '#/components/schemas/Duration' + quoteItemRelationship: + description: A relationship from item within a quote + items: + $ref: '#/components/schemas/QuoteItemRelationship' + type: array + required: + - action + - id + type: object + MEFQuoteItem_Create: + allOf: + - $ref: '#/components/schemas/MEFQuoteItem_Common' + - description: >- + A quote item describes an action to be performed on a + productOffering or a product in order to get pricing elements and + condition. The modeling pattern introduces the + `MEFQuoteItem_Common` supertype to aggregate attributes that are + common to both `QuoteItem` and `MEFQuoteItem_Create`. In this case + the create type has a subset of attributes of the response type and + does not introduce any new, thus the `MEFQuoteItem_Create` type has + an empty definition. + type: object + MEFQuoteStateChange: + description: >- + Holds the reached state, reasons, and associated date the Quote state + changed, populated by the Seller. + properties: + changeReason: + description: Additional comment related to state change + type: string + changeDate: + description: The date on when the state was reached + format: date-time + type: string + state: + description: A state reached at the change date + $ref: '#/components/schemas/MEFQuoteStateType' + required: + - changeDate + - state + type: object + MEFQuoteStateType: + description: | + Possible values for the status of a Quote. + Following mapping has been used between `MEFQuoteStateType` and MEF 80: + + | QuoteStateType | MEF 80 | + | ----------------------------------------- | --------------------------------- | + | accepted | ACCEPTED | + | acknowledged | ACKNOWLEDGED | + | answered | ANSWERED | + | approved.orderable | ORDERABLE | + | approved.orderableAlternate | ORDERABLE_ALTERNATE | + | declined | DECLINED | + | expired | EXPIRED | + | cancelled | CANCELLED | + | unableToProvide | UNABLE_TO_PROVIDE | + | inProgress | IN_PROGRESS | + | inProgress.draft | IN_PROGRESS_DRAFT | + | rejected | REJECTED | + enum: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - cancelled + - unableToProvide + - declined + - expired + - inProgress + - inProgress.draft + - rejected + type: string + MEFSellerQuoteLevel: + description: >- + An indication of whether the Seller's Quote Response is Budgetary, Firm + - Subject to Feasibility Check, or Firm. The Seller Quote Level is + provided by the Seller when responding to a Quote request. This + represents the lowest Quote Item Level of all Quote Items included in + the Quote. + enum: + - budgetary + - firmSubjectToFeasibilityCheck + - firm + type: string + MEFSubUnit: + description: Allows for subunit identification + properties: + subUnitNumber: + description: >- + The discriminator used for the subunit, often just a simple number + but may also be a range. + type: string + subUnitType: + description: >- + The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + type: string + required: + - subUnitNumber + - subUnitType + type: object + MEFProductRefOrValueQuote: + description: >- + One or more services sold to a Buyer by a Seller. A particular Product + Offering defines the technical and commercial attributes and behaviors + of a Product. + properties: + id: + description: > + The unique identifier of an in-service Product that is the + quotation's subject. This field MUST be populated if an item + `action` is either `modify` or `delete`. This field MUST NOT be + populated if an item `action` is `add`. + type: string + href: + description: > + Hyperlink to the product in Seller's inventory that is the + quotation's subject. Hyperlink MAY be used when providing a + response by the Seller. Hyperlink MUST be ignored by the Seller in + case it is provided by the Buyer in a request + type: string + place: + description: >- + A list of places that are related to the Product. For example an + installation location + items: + $ref: '#/components/schemas/RelatedPlaceRefOrValue' + type: array + productConfiguration: + description: >- + Technical attributes for the Product that would be delivered to + fulfill the Quote Item. + $ref: '#/components/schemas/MEFProductConfiguration' + productOffering: + description: >- + A particular Product Offering defines the technical and commercial + attributes and behaviors of a Product. + $ref: '#/components/schemas/ProductOfferingRef' + productRelationship: + description: >- + A list of references to existing products that are related to the + Product that would be delivered to fulfill the Quote Item + items: + $ref: '#/components/schemas/ProductRelationshipWithGrouping' + type: array + type: object + Money: + description: A base/value business entity used to represent money + properties: + unit: + description: + Currency (ISO4217 norm uses 3 letters to define the currency) + type: string + value: + description: A positive floating point number + format: float + type: number + type: object + Note: + description: >- + Extra information about a given entity. Only useful in processes + involving human interaction. Not applicable for the automated process. + properties: + date: + description: Date of the note + format: date-time + type: string + author: + description: Author of the note + type: string + id: + description: >- + Identifier of the note within its containing entity (may or may not + be globally unique, depending on provider implementation) + type: string + source: + description: Indicates if the note is from Buyer or Seller + $ref: '#/components/schemas/MEFBuyerSellerType' + text: + description: Text of the note + type: string + required: + - author + - date + - id + - source + - text + type: object + MEFBuyerSellerType: + description: Indicates if the note is from Buyer or Seller. + enum: + - buyer + - seller + type: string + Price: + description: >- + Provides all amounts (tax included, duty-free, tax rate), used currency + and percentage to apply for Price Alteration. + properties: + taxRate: + description: + 'Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax.' + format: float + type: number + taxIncludedAmount: + description: + All taxes included amount (expressed in the given currency) + $ref: '#/components/schemas/Money' + dutyFreeAmount: + description: + All taxes excluded amount (expressed in the given currency) + $ref: '#/components/schemas/Money' + required: + - dutyFreeAmount + type: object + ProductOfferingQualificationItemRef: + description: >- + It's a productOfferingQualification item that has been executed + previously. + properties: + productOfferingQualificationId: + description: + Unique identifier of related Product Offering Qualification. + type: string + alternateProductProposalId: + description: >- + A unique identifier for the Alternate Product Proposal assigned by + the Seller, if the referenced qualification comes from an alternate + product proposal. + type: string + productOfferingQualificationHref: + description: Reference of the related Product Offering Qualification. + type: string + id: + description: Id of an item of a product offering qualification + type: string + required: + - id + - productOfferingQualificationId + type: object + ProductOfferingRef: + description: > + A reference to a Product Offering offered by the Seller to the Buyer. A + Product Offering contains the commercial and technical details of a + Product sold by a particular Seller. A Product Offering defines all of + the commercial terms and, through association with a particular Product + Specification defines all the technical attributes and behaviors of the + Product. A Product Offering may constrain the allowable set of + configurable technical attributes and/or behaviors specified in the + associated Product Specification. + + The id of the Product offering is assigned by the Seller. The Buyer and + the Seller exchange information about offerings' ids during the + onboarding process. + properties: + id: + description: unique identifier of the Product Offering. + type: string + href: + description: >- + Hyperlink to a Product Offering in Sellers catalog. In case Seller + is not providing catalog capabilities this field is not used. The + catalog API definition is provided by the Seller to Buyer during + onboarding Hyperlink MAY be used when providing response by the + Seller Hyperlink MUST be ignored by the Seller in case it is + provided by the Buyer in a requestHyperlink reference + type: string + required: + - id + type: object + ProductRelationshipWithGrouping: + description: >- + A relationship to an existing Product. The requirements for usage for + given Product are described in the Product Specification. The + "WithGrouping" flavor of the Product Relationship allows for providing + a list of related product identifiers within a single Product + Relationship. This can be later used while processing the request as + defined in the Product Specification. The `groupingKey` attribute is + used to achieve this behavior in the API by marking the list of + `ProductRelationshipWithGroupings` within a `product` with a common + key. + properties: + relationshipType: + description: > + Specifies the type (nature) of the relationship to the related + Product. The nature of required relationships varies for Products + of different types. For example, a UNI or ENNI Product may not have + any relationships, but an Access E-Line may have two mandatory + relationships (related to the UNI on one end and the ENNI on the + other). More complex Products such as multipoint IP or Firewall + Products may have more complex relationships. As a result, the + allowed and mandatory `relationshipType` values are defined in the + Product Specification. + type: string + id: + description: unique identifier of a Product that is referenced. + type: string + href: + description: >- + Hyperlink to the product in Seller's inventory that is referenced + Hyperlink MAY be used when providing a response by the Seller + Hyperlink MUST be ignored by the Seller in case it is provided by + the Buyer in a request + type: string + groupingKey: + description: > + MEF 80 Introduces a list of related ids for the + ProductRelationship. For sake of TMF compliance, a `groupingKey` is + introduced to retain id as a simple attribute. Ids from + relationships having the same `groupingKey` and `relationshipType` + MUST be treated as a list of identifiers. + + Reference: MEF 80 (Sn 8.1.8.) + type: string + required: + - id + - relationshipType + type: object + Quote: + allOf: + - $ref: '#/components/schemas/Quote_Common' + - description: >- + Quote can be used to negotiate service and product acquisition or + modification between a customer and a service provider. Quote + contains a list of quote items, a reference to a customer, a list + of productOfferings, and attached prices and conditions. + properties: + effectiveQuoteCompletionDate: + description: >- + Date when the Quote State was set to one of the Completion + States. + format: date-time + type: string + expectedQuoteCompletionDate: + description: >- + This is the date provided by the Seller to indicate the date by + which the Quote is expected to reach a Quote Completion State + format: date-time + type: string + validFor: + description: >- + Quote validity period. For use in the context of this + attribute, only the endDateTime attribute must be used. + $ref: '#/components/schemas/TimePeriod' + quoteLevel: + description: >- + An indication of whether the Seller's Quote Response is + Budgetary, Firm - Subject to Feasibility Check, or Firm. The + Seller Quote Level is provided by the Seller when responding to + a Quote request. This represents the lowest Quote Item Level + of all Quote Items included in the Quote. + $ref: '#/components/schemas/MEFSellerQuoteLevel' + quoteItem: + description: >- + An item of the quote - it is used to describe an operation on a + product to be quoted + items: + $ref: '#/components/schemas/QuoteItem' + minItems: 1 + type: array + stateChange: + description: State change for the Quote + items: + $ref: '#/components/schemas/MEFQuoteStateChange' + type: array + id: + description: Unique identifier - attributed by quoting system + type: string + href: + description: > + Hyperlink representing this Quote. Hyperlink MAY be used when + providing a response by the Seller + type: string + state: + description: The state of the Quote. + $ref: '#/components/schemas/MEFQuoteStateType' + quoteDate: + description: Date and time when the quote was created + format: date-time + type: string + required: + - id + - quoteDate + - quoteItem + type: object + QuoteItem: + allOf: + - $ref: '#/components/schemas/MEFQuoteItem_Common' + - description: >- + Quote items describe an action to be performed on a productOffering + or a product in order to get pricing elements and conditions. + properties: + terminationError: + description: >- + When the Seller cannot process the Quote Item Request, the + Seller returns a text-based list of reasons here. + items: + $ref: '#/components/schemas/TerminationError' + type: array + quoteItemInstallationInterval: + description: >- + Quote Item Installation Interval as proposed by the Seller for + the Quote. + $ref: '#/components/schemas/Duration' + subjectToFeasibilityCheck: + description: >- + For a Firm Quote Level indicates if the pricing requires a + Feasibility Check. The Seller indicates if the Quote Item + requires a Feasibility Check. This is not used for a Budgetary + Quote Level. + type: boolean + quoteItemTerm: + description: >- + Quote Item Term as defined by the Seller and part of the Quote + for the Quote Item. + items: + $ref: '#/components/schemas/MEFItemTerm' + maxItems: 1 + type: array + state: + description: The state of the Quote Item. + $ref: '#/components/schemas/MEFQuoteItemStateType' + quoteItemPrice: + description: Price for this quote item + items: + $ref: '#/components/schemas/QuotePrice' + type: array + required: + - state + type: object + QuoteItemRelationship: + description: >- + Used to describe the relationship between quote items. These + relationships could have an impact on pricing and conditions + properties: + relationshipType: + description: >- + Relationship type as relies on, bundles, etc... MEF: Specifies the + nature of the relationship to the related Quote Items. The nature + of required relationships varies for Products of different types. + For example, a UNI or ENNI Product may not have any relationships, + but an Access E-Line may have two mandatory relationships (related + to the UNI on one end and the ENNI on the other). More complex + Products such as multipoint IP or Firewall Products may have more + complex relationships. As a result, the allowed and mandatory + Relationship Nature values are defined in the Product + Specification. + type: string + id: + description: ID of the related quote item (must be in the same quote) + type: string + required: + - id + - relationshipType + type: object + QuoteOperationData: + description: + Request for operation on an existing Quote (cancel or decline) + properties: + reason: + description: >- + Allows the Buyer to specify a reason for the Cancel or Decline + Quote request. + type: string + quoteId: + description: >- + Unique (within the Seller quoting domain) identifier for the quote, + as attributed by the Seller. + type: string + required: + - quoteId + type: object + QuotePrice: + description: Description of price and discount awarded + properties: + unitOfMeasure: + description: >- + Unit of Measure if price depending on it (Gb, SMS volume, etc..) + MEF: if Quote Item Price Type equals usageBased + type: string + price: + description: The associated price + $ref: '#/components/schemas/Price' + name: + description: Name of the quote/quote item price + type: string + priceType: + description: >- + Indicates if the price is for recurring, non-recurring, or usage + based charges + $ref: '#/components/schemas/MEFPriceType' + description: + description: Description of the quote/quote item price + type: string + recurringChargePeriod: + description: Used for a recurring charge to indicate a period + $ref: '#/components/schemas/MEFChargePeriod' + type: object + Quote_Common: + description: >- + Quote can be used to negotiate service and product acquisition or + modification between a customer and a service provider. Quote contains + a list of quote items, a reference to a customer, a list of + productOfferings, and attached prices and conditions. + properties: + note: + description: >- + Free form text associated with the quote. Only useful in processes + involving human interaction. Not applicable for the automated + process. + items: + $ref: '#/components/schemas/Note' + type: array + requestedQuoteCompletionDate: + description: >- + This is requested date - from quote requester - to get a complete + response for this quote + format: date-time + type: string + relatedContactInformation: + description: >- + Party playing a role for this quote. If `instantSyncQuote` equals + `false` + + then the Buyer MUST specify Buyer Contact Information ('role: + buyerContactInformation') + + and the Seller MUST specify Seller Contact Information ('role: + sellerContactInformation') + items: + $ref: '#/components/schemas/RelatedContactInformation' + type: array + description: + description: Description of the quote + type: string + externalId: + description: >- + ID given by the consumer and only understandable by him (to + facilitate his searches afterwards) + type: string + buyerRequestedQuoteLevel: + description: >- + An indication of whether the Buyer's Quote request is for a Quote + of Budgetary or Firm level. + $ref: '#/components/schemas/MEFBuyerQuoteLevel' + projectId: + description: >- + An identifier that is used to group Quotes that represent a unit of + functionality that is important to a Buyer. A Project can be used + to relate multiple Quotes together. + type: string + instantSyncQuote: + description: >- + If this flag is set to true, the Buyer requests an immediate Quote + to be provided in the response to the creation of a Quote. + type: boolean + required: + - buyerRequestedQuoteLevel + - instantSyncQuote + type: object + Quote_Create: + allOf: + - $ref: '#/components/schemas/Quote_Common' + - description: > + Quote can be used to negotiate service and product acquisition or + modification between a customer and a service provider. Quote + contains a list of quote items, a reference to a customer, a list + of productOfferings, and attached prices and conditions. + properties: + quoteItem: + description: >- + An item of the quote - used to describe an operation on a + product to be quoted + items: + $ref: '#/components/schemas/MEFQuoteItem_Create' + minItems: 1 + type: array + required: + - quoteItem + type: object + Quote_Find: + description: > + This class represents a single list item for the response of + `listQuote` operation. + properties: + effectiveQuoteCompletionDate: + description: + Date when the Quote State was set to one of the Completion States + format: date-time + type: string + expectedQuoteCompletionDate: + description: >- + This is the date provided by the Seller to indicate expected Quote + completion date + format: date-time + type: string + requestedQuoteCompletionDate: + description: >- + This is requested date - from quote requester - to get a complete + response for this quote + format: date-time + type: string + quoteLevel: + description: >- + The level of the Quote provided by the Seller. This represents the + lowest Quote Item Level of all Quote Items included in the Quote. + $ref: '#/components/schemas/MEFSellerQuoteLevel' + externalId: + description: >- + ID given by the consumer and only understandable by him (to + facilitate his searches afterward) + type: string + id: + description: Unique identifier - attributed by quoting system + type: string + state: + description: The state of the Quote. + $ref: '#/components/schemas/MEFQuoteStateType' + projectId: + description: >- + An identifier that is used to group Quotes that represent a unit of + functionality that is important to a Buyer. A Project can be used + to relate multiple Quotes together. + type: string + quoteDate: + description: Date and time when the quote was created + format: date-time + type: string + required: + - state + type: object + RelatedContactInformation: + description: >- + Contact data for a person or organization that is involved in a given + context. It is specified by the Seller (e.g. Seller Contact + Information) or by the Buyer. + + Reference: MEF 80 (Sn 8.1.9) + properties: + number: + description: Phone number + type: string + emailAddress: + description: Email address + type: string + role: + description: The role of the particular contact in a given context. + type: string + postalAddress: + description: >- + Identifies the postal address of the person or office to be + contacted. + $ref: '#/components/schemas/FieldedAddress' + organization: + description: The organization or company that the contact belongs to + type: string + name: + description: Name of the contact + type: string + numberExtension: + description: Phone number extension + type: string + required: + - emailAddress + - name + - number + - role + type: object + RelatedPlaceRefOrValue: + description: + Place defines the places where the products' quotation must be done. + discriminator: + mapping: + FieldedAddress: '#/components/schemas/FieldedAddress' + FormattedAddress: '#/components/schemas/FormattedAddress' + GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' + GeographicAddressRef: '#/components/schemas/GeographicAddressRef' + GeographicSiteRef: '#/components/schemas/GeographicSiteRef' + MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' + propertyName: '@type' + properties: + role: + description: Role of this place + type: string + '@type': + description: > + This field is used as a discriminator and is used between different + place representations. This type might discriminate for the + additional related place as defined in '@schemaLocation'. + type: string + '@schemaLocation': + description: >- + A URI to a JSON-Schema file that defines additional attributes and + relationships. May be used to define additional related place + types. Usage of this attribute must be agreed upon between Buyer + and Seller. + format: uri + type: string + required: + - '@type' + - role + type: object + TerminationError: + description: >- + This indicates an error that caused an Item to be terminated. The code + and propertyPath should be used like in Error422. + properties: + code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused the + validation issue. It is highly recommended that this property + should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + value: + description: Text to describe the reason of the termination. + type: string + type: object + TimePeriod: + description: >- + A period of time, either as a deadline (endDateTime only) a + startDateTime only, or both. + properties: + startDateTime: + description: >- + Start of the time period, using IETC-RFC-3339 format. If you define + a start, you must also define an end + example: 1985-04-12T23:20:50.520Z + format: date-time + type: string + endDateTime: + description: 'End of the time period, using IETC-RFC-3339 format' + example: 1985-04-12T23:20:50.520Z + format: date-time + type: string + type: object + TimeUnit: + description: | + Represents a unit of time. + Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) + enum: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + type: string diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml new file mode 100644 index 00000000..4654336f --- /dev/null +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml @@ -0,0 +1,2223 @@ +openapi: 3.0.1 +info: + description: | + **This file forms part of MEF 115** + + This API implements Business Requirements described in MEF 80 + + Quote API allows the Buyer to submit a request to find out how much the installation + of an instance of a Product Offering, an update to an existing Product, or + a disconnect of an existing Product will cost. + + List of supported Use Cases: + - Create Quote + - Retrieve Quote List + - Retrieve Quote by Quote Identifier + - Cancel Quote by Quote Identifier + - Decline Quote by Quote Identifier + - Register for Quote Notification + + Copyright 2021 MEF Forum and its contributors. + + This file includes content based on the TM Forum Quote Management API + (TMF648 v4.0.0) available at + https://github.com/tmforum-apis/TMF648_QuoteManagement, which is licensed + by the TM Forum under the Apache License version 2.0. Such content has been + modified by the MEF Forum and its contributors. + title: Quote Management + version: 8.0.1 +servers: + - url: 'https://{serverBase}/mefApi/sonata/quoteManagement/v8/' + variables: + serverBase: + default: mef.net + description: The base of Seller's URL. +tags: + - name: quote + - name: quote operations + - name: events subscription +paths: + /quote: + get: + description: >- + The Buyer requests a list of Quotes from the Seller based on a set of + filter criteria (as described in MEF 80). For each Quote returned, the + Seller also provides a Quote Identifier that uniquely identifies this + Quote within the Seller. The order of the elements returned to the + Buyer is defined by the Seller (e.g. natural order) and does not change + between the pages. + operationId: listQuote + parameters: + - description: >- + State of the Quote to be retrieved. See `MEFQuoteStateType` + definition for details + in: query + name: state + schema: + enum: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - cancelled + - unableToProvide + - declined + - expired + - inProgress + - inProgress.draft + - rejected + type: string + - description: >- + Level of the quote - could be budgetary, + firmSubjectToFeasibilityCheck, firm + in: query + name: quoteLevel + schema: + enum: + - budgetary + - firmSubjectToFeasibilityCheck + - firm + type: string + - description: >- + ID given by the consumer and only understandable by him (to + facilitate his searches afterward) + in: query + name: externalId + schema: + type: string + - description: >- + An identifier that is used to group Quotes that represent a unit of + functionality that is important to a Buyer. A Project can be used + to relate multiple Quotes together + in: query + name: projectId + schema: + type: string + - description: Date when the quote was created - greater than + in: query + name: quoteDate.gt + schema: + format: date-time + type: string + - description: Date when the quote was created - lower than + in: query + name: quoteDate.lt + schema: + format: date-time + type: string + - description: Requested Quote Completion Date - greater than + in: query + name: requestedQuoteCompletionDate.gt + schema: + format: date-time + type: string + - description: Requested Quote Completion Date - lower than + in: query + name: requestedQuoteCompletionDate.lt + schema: + format: date-time + type: string + - description: Expected Quote Completion Date - greater than + in: query + name: expectedQuoteCompletionDate.gt + schema: + format: date-time + type: string + - description: Expected Quote Completion Date - lower than + in: query + name: expectedQuoteCompletionDate.lt + schema: + format: date-time + type: string + - description: >- + Date when the Quote State was set to one of the Completion States - + greater than + in: query + name: effectiveQuoteCompletionDate.gt + schema: + format: date-time + type: string + - description: >- + Date when the Quote State was set to one of the Completion States - + lower than + in: query + name: effectiveQuoteCompletionDate.lt + schema: + format: date-time + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + - description: + Requested index for start of resources to be provided in response + in: query + name: offset + schema: + type: integer + - description: Requested number of resources to be provided in response + in: query + name: limit + schema: + format: int32 + type: integer + responses: + '200': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Quote_Find' + type: array + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + headers: + X-Pagination-Throttled: + description: > + Used to indicate that result page was throttled to maximum + possible size and there are additional results that can be + fetched + schema: + type: boolean + X-Total-Count: + description: > + The total number of matching records. E.g. if there are 50 + matching records in total, but the request has offset=10 and + limit=10, then the X-Total-Count is 50. + schema: + type: integer + X-Result-Count: + description: The number of records included in the response + schema: + type: integer + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: List or find Quote objects + tags: + - quote + post: + description: This operation creates a Quote entity. + operationId: createQuote + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Quote_Create' + description: The Quote to be created + required: true + responses: + '201': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Quote' + description: + 'Created (https://tools.ietf.org/html/rfc7231#section-6.3.2)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: >- + Unprocessable entity due to the business validation problems in the + Quote or one of the Quote items + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Send request to perform a quotation + tags: + - quote + x-codegen-request-body-name: quote + '/quote/{id}': + get: + description: >- + This operation retrieves a Quote entity. Attribute selection is enabled + for all first level attributes. + operationId: retrieveQuote + parameters: + - description: Identifier of the Quote + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Quote' + description: + 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Retrieves a Quote by ID + tags: + - quote + /cancelQuote: + post: + description: This operation sends a cancellation request. + operationId: cancelQuote + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: The details of the Quote Operation + required: true + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: Success + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: >- + Unprocessable entity due to the business validation problems in the + Quote or one of the Quote items + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Cancels a Quote + tags: + - quote operations + x-codegen-request-body-name: cancelQuote + /rejectQuote: + post: + description: This operation sends a rejection request. + operationId: rejectQuote + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: The details of the Quote Operation + required: true + responses: + '200': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/QuoteOperationData' + description: Success + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '422': + content: + application/json;charset=utf-8: + schema: + items: + $ref: '#/components/schemas/Error422' + type: array + description: >- + Unprocessable entity due to the business validation problems in the + Quote or one of the Quote items + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + summary: Rejects a Quote + tags: + - quote operations + x-codegen-request-body-name: rejectQuote + /hub: + post: + description: >- + A request initiated by the Buyer to instruct the Seller to send + notifications of Quote state changes in the event the Seller uses the + Deferred Response pattern to respond to a Create Quote request. + operationId: registerListener + parameters: + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + requestBody: + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/EventSubscriptionInput' + description: + Data containing the callback endpoint to deliver the information + required: true + responses: + '201': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/EventSubscription' + description: + 'Subscribed (https://tools.ietf.org/html/rfc7231#section-6.3.2)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad Request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + '501': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error501' + description: >- + Method not implemented. Used in case Seller is not supporting + Notification mechanism + summary: Allows the Buyer to register to Quote state change notifications + tags: + - events subscription + x-codegen-request-body-name: data + '/hub/{id}': + delete: + description: >- + Resets the communication endpoint address the service instance must use + to deliver information about its health state, execution state, + failures and metrics. + operationId: unregisterListener + parameters: + - description: The id of the EventSubscription + in: path + name: id + required: true + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the a + Buyer. MUST be specified in the request only when the requester + represents more than one Buyer. + + Reference: MEF 79 (Sn 8.8) + in: query + name: buyerId + schema: + type: string + - description: >- + The unique identifier of the organization that is acting as the + Seller. MUST be specified in the request only when the responding + entity + represents more than one Seller. + + Reference: MEF 79 (Sn 8.8) + in: query + name: sellerId + schema: + type: string + responses: + '204': + description: + 'Deleted (https://tools.ietf.org/html/rfc7231#section-6.3.5)' + '400': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error400' + description: Bad request + '401': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error401' + description: Unauthorized + '403': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error403' + description: Forbidden + '404': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error404' + description: Not Found + '500': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error500' + description: Internal Server Error + '501': + content: + application/json;charset=utf-8: + schema: + $ref: '#/components/schemas/Error501' + description: >- + Method not implemented. Used in case Seller is not supporting + Notification mechanism + summary: Unregister a listener + tags: + - events subscription +components: + schemas: + Duration: + description: + 'A Duration in a given unit of time e.g. 3 hours, or 5 days.' + properties: + amount: + description: 'Duration (number of seconds, minutes, hours, etc.)' + type: integer + units: + description: Time unit type + $ref: '#/components/schemas/TimeUnit' + required: + - amount + - units + type: object + Error: + description: > + Standard Class used to describe API response error Not intended to be + used directly. The `code` in the HTTP header is used as a discriminator + for the type of error returned in runtime. + properties: + reason: + description: >- + Text that explains the reason for the error. This can be shown to a + client user. + maxLength: 255 + type: string + message: + description: >- + Text that provides mode details and corrective actions related to + the error. This can be shown to a client user. + type: string + referenceError: + description: URL pointing to documentation describing the error + format: uri + type: string + required: + - reason + type: object + Error400: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required + query-string parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + $ref: '#/components/schemas/Error400Code' + required: + - code + type: object + description: + 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' + Error400Code: + description: >- + One of the following error codes: + + - missingQueryParameter: The URI is missing a required query-string + parameter + + - missingQueryValue: The URI is missing a required query-string + parameter value + + - invalidQuery: The query section of the URI is invalid. + + - invalidBody: The request has an invalid body + enum: + - missingQueryParameter + - missingQueryValue + - invalidQuery + - invalidBody + type: string + Error401: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + One of the following error codes: + + - missingCredentials: No credentials provided. + + - invalidCredentials: Provided credentials are invalid or + expired + $ref: '#/components/schemas/Error401Code' + required: + - code + type: object + description: + 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' + Error401Code: + description: |- + One of the following error codes: + - missingCredentials: No credentials provided. + - invalidCredentials: Provided credentials are invalid or expired + enum: + - missingCredentials + - invalidCredentials + type: string + Error403: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + $ref: '#/components/schemas/Error403Code' + required: + - code + type: object + description: >- + Forbidden. This code indicates that the server understood the request + but refuses to authorize it. + (https://tools.ietf.org/html/rfc7231#section-6.5.3) + Error403Code: + description: |- + This code indicates that the server understood + the request but refuses to authorize it because + of one of the following error codes: + - accessDenied: Access denied + - forbiddenRequester: Forbidden requester + - tooManyUsers: Too many users + enum: + - accessDenied + - forbiddenRequester + - tooManyUsers + type: string + Error404: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - notFound: A current representation for the target resource + not found + enum: + - notFound + type: string + required: + - code + type: object + description: >- + Resource for the requested path not found. + (https://tools.ietf.org/html/rfc7231#section-6.5.4) + Error422: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused + the validation issue. It is highly recommended that this + property should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + required: + - code + type: object + description: >- + Unprocessable entity due to a business validation problem. + (https://tools.ietf.org/html/rfc4918#section-11.2) + Error422Code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + enum: + - missingProperty + - invalidValue + - invalidFormat + - referenceNotFound + - unexpectedProperty + - tooManyRecords + - otherIssue + type: string + Error500: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: >- + The following error code: + + - internalError: Internal server error - the server encountered + an unexpected condition that prevented it from fulfilling the + request. + enum: + - internalError + type: string + required: + - code + type: object + description: >- + Internal Server Error. + (https://tools.ietf.org/html/rfc7231#section-6.6.1) + Error501: + allOf: + - $ref: '#/components/schemas/Error' + - properties: + code: + description: |- + The following error code: + - notImplemented: Method not supported by the server + enum: + - notImplemented + type: string + required: + - code + type: object + description: + 'Not Implemented. (https://tools.ietf.org/html/rfc7231#section-6.6.2)' + EventSubscription: + description: | + This resource is used to manage notification subscription. + Reference: MEF 79 (Sn 8.3) + properties: + query: + description: >- + The value provided by the Buyer in `EventSubscriptionInput` during + notification registration + callback: + description: >- + The value provided by the Buyer in `EventSubscriptionInput` during + notification registration + type: string + id: + description: >- + An identifier of the event subscription assigned by the Seller when + a resource is created. + type: string + required: + - callback + - id + type: object + EventSubscriptionInput: + description: This class is used to register for Notifications. + properties: + query: + description: >- + This attribute is used to define to which type of events to + register to. Example: "query":"eventType = quoteStateChangeEvent". + To subscribe for more than one event type, put the values separated + by comma: + `eventType=quoteStateChangeEvent,quoteItemStateChangeEvent`. The + possible values are enumerated by the 'QuoteEventType' in + quoteNotification.api.yaml. An empty query is treated as specifying + no filters - ending in subscription for all event types. + type: string + callback: + description: >- + This callback value must be set to *host* property from Buyer + Notification API (quoteNotification.api.yaml). This property is + appended with the base path and notification resource path + specified in that API to construct an URL to which notification is + sent. E.g. for "callback": "http://buyer.co/listenerEndpoint", the + state change event notification will be sent to: + `http://buyer.co/listenerEndpoint/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent` + type: string + required: + - callback + type: object + FieldedAddress: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + country: + description: Country that the address is in + type: string + streetType: + description: >- + Alley, avenue, boulevard, brae, crescent, drive, highway, lane, + terrace, parade, place, tarn, way, wharf + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in an american urban property address + type: string + city: + description: The city that the address is in + type: string + streetNr: + description: >- + Number identifying a specific property on a public street. It + may be combined with streetNrLast for ranged addresses. + type: string + locality: + description: The locality that the address is in + type: string + postcode: + description: >- + Descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as zip code) + type: string + streetNrLast: + description: + Last number in a range of street numbers allocated to a + property + type: string + streetNrSuffix: + description: The first street number suffix + type: string + streetName: + description: Name of the street or other street type + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + streetNrLastSuffix: + description: Last street number suffix for a ranged address + type: string + geographicSubAddress: + description: >- + Additional fields used to specify an address, as detailed as + possible. + $ref: '#/components/schemas/GeographicSubAddress' + streetSuffix: + description: A modifier denoting a relative direction + type: string + required: + - city + - country + - streetName + type: object + description: >- + A type of Address that has a discrete field and value for each type of + boundary or identifier down to the lowest level of detail. For example + "street number" is one field, "street name" is another field, etc. + FormattedAddress: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + country: + description: Country that the address is in + type: string + postcodeExtension: + description: >- + An extension of a postal code. E.g. the part following the dash + in an US urban property address + type: string + stateOrProvince: + description: The State or Province that the address is in + type: string + city: + description: The city that the address is in + type: string + addrLine2: + description: The second address line in a formatted address + type: string + addrLine1: + description: The first address line in a formatted address + type: string + locality: + description: >- + An area of defined or undefined boundaries within a local + authority or other legislatively defined area, usually rural or + semi-rural in nature + type: string + postcode: + description: >- + Descriptor for a postal delivery area used to speed and + simplify the delivery of mail (also known as ZIP code) + type: string + required: + - addrLine1 + - city + - country + type: object + description: >- + A type of Address that has discrete fields for each type of boundary or + an identifier with the exception of the street and more specific + location details, which are combined into a maximum of two strings + based on local postal addressing conventions. + GeographicAddressLabel: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + externalReferenceId: + description: >- + The unique reference to an Address as provided by the + Administrative Authority. + type: string + externalReferenceType: + description: >- + The organization or standard from the organization that + administers this Geographic Address Label ensuring it is unique + within the Administrative Authority. The value(s) to be used + are to be agreed upon during the onboarding. For North American + providers this would normally be CLLI (Common Language Location + Identifier) code. + type: string + required: + - externalReferenceId + - externalReferenceType + type: object + description: >- + A unique identifier controlled by a generally accepted independent + administrative authority that specifies a fixed geographical location. + + Reference: MEF 79 (Sn 8.9.4), MEF 79.0.2 (Sn 8.9.4) + GeographicAddressRef: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + href: + description: > + Hyperlink to the referenced GeographicAddress. Hyperlink MAY be + used by the Seller in responses. Hyperlink MUST be ignored by + the Seller in case it is provided by the Buyer in a request + type: string + id: + description: >- + Identifier of the referenced Geographic Address. This + identifier is assigned during a successful address validation + request (Geographic Address Validation API) + type: string + required: + - id + type: object + description: > + A reference to a Geographic Address resource available through Address + Validation API. + GeographicSiteRef: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + href: + description: > + Hyperlink to the referenced GeographicSite. Hyperlink MAY be + used by the Seller in responses. Hyperlink MUST be ignored by + the Seller in case it is provided by the Buyer in a request + type: string + id: + description: Identifier of the referenced Geographic Site. + type: string + required: + - id + type: object + description: > + A reference to a Geographic Site resource available through Service + Site API + GeographicSubAddress: + description: + 'Additional fields used to specify an address, as detailed as possible.' + properties: + buildingName: + description: > + Allows for identification of places that require building name as + part of addressing information + type: string + subUnit: + description: >- + Representation of a MEFSubUnit It is used for describing subunit + within a subaddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + items: + $ref: '#/components/schemas/MEFSubUnit' + type: array + levelType: + description: Describes level types within a building + type: string + levelNumber: + description: + 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT + 2' + type: string + privateStreetNumber: + description: Private streets numbers internal to a private street + type: string + privateStreetName: + description: >- + Private streets internal to a property (e.g. a university) may have + internal names that are not recorded by the land title office + type: string + type: object + MEFBuyerQuoteLevel: + description: >- + An indication of whether the Buyer's Quote Request is for a Budgetary + or Firm Quote Level. Set by the Buyer. Buyer Requested Quote Level + contains the possible values and may be set by the Buyer on the + Request. All Quote Items in a Quote have the same Quote Level. + enum: + - budgetary + - firm + type: string + MEFChargePeriod: + description: Used for a recurring charge to indicate period. + enum: + - hour + - day + - week + - month + - year + type: string + MEFEndOfTermAction: + description: + The action that needs to be taken by the Seller once the term expires. + enum: + - roll + - autoDisconnect + - autoRenew + type: string + MEFGeographicPoint: + allOf: + - $ref: '#/components/schemas/RelatedPlaceRefOrValue' + - properties: + spatialRef: + description: >- + The spatial reference system used to determine the coordinates + (e.g. `WGS84`). The system used and the value of this field are + to be agreed upon during the onboarding process. + type: string + x: + description: >- + The latitude expressed in the format specified by the + `spacialRef` + type: string + 'y': + description: >- + The longitude expressed in the format specified by the + `spacialRef` + type: string + z: + description: >- + The elevation expressed in the format specified by the + `spacialRef` + type: string + required: + - spatialRef + - x + - 'y' + type: object + description: > + A MEFGeographicPoint defines a geographic point through coordinates. + Reference: MEF 79 (Sn 8.9.5) + MEFItemTerm: + description: >- + The terms of the Quote Item. Used to describe a term (also known as + commitment) for a Quote Item. Each Quote Item in a Quote Request could + have a different Requested Quote Item Term. The Buyer specifies the + longest term that they would accept. The Buyer may be willing to accept + a shorter term. If the Seller responds with a term longer than the + Buyer's request, it is treated as an alternate response. + properties: + duration: + description: Duration of the term + $ref: '#/components/schemas/Duration' + endOfTermAction: + description: >- + The action that needs to be taken by the Seller once the term + expires + $ref: '#/components/schemas/MEFEndOfTermAction' + name: + description: Name of the term + type: string + description: + description: Description of the term + type: string + rollInterval: + description: >- + The recurring period that the Buyer is willing to pay to the end of + upon disconnecting the Product after the original term has expired. + If `endOfTermAction` is equal to `roll` then `rollInterval` MUST be + specified. If `endOfTermAction` is equal to `autoRenew` or + `autoDisconnect`, then `rollInterval` MUST NOT be specified. + $ref: '#/components/schemas/Duration' + required: + - duration + - endOfTermAction + - name + type: object + MEFPriceType: + description: + Indicates if the price is for recurring or non-recurring charges. + enum: + - recurring + - nonRecurring + - usageBased + type: string + MEFProductActionType: + description: | + Product action to be applied to the Quote Item. This corresponds to the + Order Item Action when an associated product is ordered. + + | MEFProductActionType | MEF 80 | + |--------------------- | ---------- | + | add | INSTALL | + | modify | CHANGE | + | delete | DISCONNECT | + enum: + - add + - modify + - delete + type: string + MEFProductConfiguration: + description: >- + MEFProductConfiguration is used as an extension point for MEF specific + product/service payload. The `@type` attribute is used as a + discriminator + discriminator: + propertyName: '@type' + properties: + '@type': + description: >- + The name of the type that uniquely identifies the type of the + product that is the subject of the POQ Request. In the case of the + MEF product, this is the URN provided in the Product Specification. + type: string + required: + - '@type' + type: object + MEFQuoteItemStateType: + description: > + Possible values for the status of a QuoteItem. + + Following mapping has been used between `MEFQuoteItemStateType` and MEF + 80: + + + | MEFQuoteItemStateType | MEF 80 | + + | ----------------------------| --------------------------------- | + + | answered | ANSWERED | + + | acknowledged | ACKNOWLEDGED | + + | approved.orderable | ORDERABLE | + + | approved.orderableAlternate | ORDERABLE_ALTERNATE | + + | inProgress | IN_PROGRESS | + + | inProgress.draft | IN_PROGRESS_DRAFT | + + | abandoned | ABANDONED | + + | rejected | REJECTED | + + | unableToProvide | UNABLE_TO_PROVIDE | + enum: + - answered + - acknowledged + - approved.orderable + - approved.orderableAlternate + - inProgress + - inProgress.draft + - rejected + - abandoned + - unableToProvide + type: string + MEFQuoteItem_Common: + description: >- + Quote items describe an action to be performed on a productOffering or + a product in order to get pricing elements and conditions. + properties: + requestedQuoteItemTerm: + description: >- + The terms of the Quote Item. Used to describe a term (also known as + commitment) for a Quote Item. Each Quote Item in a Quote Request + could have a different Requested Quote Item Term. The Buyer + specifies the longest term that they would accept. The Buyer may be + willing to accept a shorter term. If the Seller responds with a + term longer than the Buyer's request, it is treated as an alternate + response. + $ref: '#/components/schemas/MEFItemTerm' + note: + description: >- + Free form text associated with the quote item. Only useful in + processes involving human interaction. Not applicable for the + automated process. + items: + $ref: '#/components/schemas/Note' + type: array + product: + description: + The Buyer's existing Product for which the quote is being + requested. + $ref: '#/components/schemas/MEFProductRefOrValueQuote' + productOfferingQualificationItem: + description: A reference to a previously done POQ with item specified + $ref: '#/components/schemas/ProductOfferingQualificationItemRef' + relatedContactInformation: + description: > + Contact information of an individual or organization playing a role + for this Quote. If `instantSyncQuote` equals `false` then 'Quote + Item Technical Contact' must be specified (`role: + quoteItemTechnicalContact`). If `instantSyncQuote` equals `false` + and the Quote Item requires a location, the Buyer MUST provide the + Quote Item Location Contact Information `role: + quoteItemLocationContact`. + items: + $ref: '#/components/schemas/RelatedContactInformation' + type: array + agreementName: + description: >- + Name of the agreement. The name is unique between the Buyer and the + Seller. + type: string + action: + description: >- + Product action to be applied to this Quote Item. This corresponds + to the Order Item Action when an associated product is ordered. + $ref: '#/components/schemas/MEFProductActionType' + dealReference: + description: >- + A pre-agreed pricing modifier reference that the Seller is offering + to the Buyer which will impact the price. + type: string + id: + description: >- + Identifier of the quote item (generally it is a sequence number 01, + 02, 03, ...) + type: string + requestedQuoteItemInstallationInterval: + description: The installation interval requested by the Buyer. + $ref: '#/components/schemas/Duration' + quoteItemRelationship: + description: A relationship from item within a quote + items: + $ref: '#/components/schemas/QuoteItemRelationship' + type: array + required: + - action + - id + type: object + MEFQuoteItem_Create: + allOf: + - $ref: '#/components/schemas/MEFQuoteItem_Common' + - description: >- + A quote item describes an action to be performed on a + productOffering or a product in order to get pricing elements and + condition. The modeling pattern introduces the + `MEFQuoteItem_Common` supertype to aggregate attributes that are + common to both `QuoteItem` and `MEFQuoteItem_Create`. In this case + the create type has a subset of attributes of the response type and + does not introduce any new, thus the `MEFQuoteItem_Create` type has + an empty definition. + type: object + MEFQuoteStateChange: + description: >- + Holds the reached state, reasons, and associated date the Quote state + changed, populated by the Seller. + properties: + changeReason: + description: Additional comment related to state change + type: string + changeDate: + description: The date on when the state was reached + format: date-time + type: string + state: + description: A state reached at the change date + $ref: '#/components/schemas/MEFQuoteStateType' + required: + - changeDate + - state + type: object + MEFQuoteStateType: + description: | + Possible values for the status of a Quote. + Following mapping has been used between `MEFQuoteStateType` and MEF 80: + + | QuoteStateType | MEF 80 | + | ----------------------------------------- | --------------------------------- | + | accepted | ACCEPTED | + | acknowledged | ACKNOWLEDGED | + | answered | ANSWERED | + | approved.orderable | ORDERABLE | + | approved.orderableAlternate | ORDERABLE_ALTERNATE | + | declined | DECLINED | + | expired | EXPIRED | + | cancelled | CANCELLED | + | unableToProvide | UNABLE_TO_PROVIDE | + | inProgress | IN_PROGRESS | + | inProgress.draft | IN_PROGRESS_DRAFT | + | rejected | REJECTED | + enum: + - accepted + - acknowledged + - answered + - approved.orderable + - approved.orderableAlternate + - cancelled + - unableToProvide + - declined + - expired + - inProgress + - inProgress.draft + - rejected + type: string + MEFSellerQuoteLevel: + description: >- + An indication of whether the Seller's Quote Response is Budgetary, Firm + - Subject to Feasibility Check, or Firm. The Seller Quote Level is + provided by the Seller when responding to a Quote request. This + represents the lowest Quote Item Level of all Quote Items included in + the Quote. + enum: + - budgetary + - firmSubjectToFeasibilityCheck + - firm + type: string + MEFSubUnit: + description: Allows for subunit identification + properties: + subUnitNumber: + description: >- + The discriminator used for the subunit, often just a simple number + but may also be a range. + type: string + subUnitType: + description: >- + The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, + UNIT, WHARF. + type: string + required: + - subUnitNumber + - subUnitType + type: object + MEFProductRefOrValueQuote: + description: >- + One or more services sold to a Buyer by a Seller. A particular Product + Offering defines the technical and commercial attributes and behaviors + of a Product. + properties: + id: + description: > + The unique identifier of an in-service Product that is the + quotation's subject. This field MUST be populated if an item + `action` is either `modify` or `delete`. This field MUST NOT be + populated if an item `action` is `add`. + type: string + href: + description: > + Hyperlink to the product in Seller's inventory that is the + quotation's subject. Hyperlink MAY be used when providing a + response by the Seller. Hyperlink MUST be ignored by the Seller in + case it is provided by the Buyer in a request + type: string + place: + description: >- + A list of places that are related to the Product. For example an + installation location + items: + $ref: '#/components/schemas/RelatedPlaceRefOrValue' + type: array + productConfiguration: + description: >- + Technical attributes for the Product that would be delivered to + fulfill the Quote Item. + $ref: '#/components/schemas/MEFProductConfiguration' + productOffering: + description: >- + A particular Product Offering defines the technical and commercial + attributes and behaviors of a Product. + $ref: '#/components/schemas/ProductOfferingRef' + productRelationship: + description: >- + A list of references to existing products that are related to the + Product that would be delivered to fulfill the Quote Item + items: + $ref: '#/components/schemas/ProductRelationshipWithGrouping' + type: array + type: object + Money: + description: A base/value business entity used to represent money + properties: + unit: + description: + Currency (ISO4217 norm uses 3 letters to define the currency) + type: string + value: + description: A positive floating point number + format: float + type: number + type: object + Note: + description: >- + Extra information about a given entity. Only useful in processes + involving human interaction. Not applicable for the automated process. + properties: + date: + description: Date of the note + format: date-time + type: string + author: + description: Author of the note + type: string + id: + description: >- + Identifier of the note within its containing entity (may or may not + be globally unique, depending on provider implementation) + type: string + source: + description: Indicates if the note is from Buyer or Seller + $ref: '#/components/schemas/MEFBuyerSellerType' + text: + description: Text of the note + type: string + required: + - author + - date + - id + - source + - text + type: object + MEFBuyerSellerType: + description: Indicates if the note is from Buyer or Seller. + enum: + - buyer + - seller + type: string + Price: + description: >- + Provides all amounts (tax included, duty-free, tax rate), used currency + and percentage to apply for Price Alteration. + properties: + taxRate: + description: + 'Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax.' + format: float + type: number + taxIncludedAmount: + description: + All taxes included amount (expressed in the given currency) + $ref: '#/components/schemas/Money' + dutyFreeAmount: + description: + All taxes excluded amount (expressed in the given currency) + $ref: '#/components/schemas/Money' + required: + - dutyFreeAmount + type: object + ProductOfferingQualificationItemRef: + description: >- + It's a productOfferingQualification item that has been executed + previously. + properties: + productOfferingQualificationId: + description: + Unique identifier of related Product Offering Qualification. + type: string + alternateProductProposalId: + description: >- + A unique identifier for the Alternate Product Proposal assigned by + the Seller, if the referenced qualification comes from an alternate + product proposal. + type: string + productOfferingQualificationHref: + description: Reference of the related Product Offering Qualification. + type: string + id: + description: Id of an item of a product offering qualification + type: string + required: + - id + - productOfferingQualificationId + type: object + ProductOfferingRef: + description: > + A reference to a Product Offering offered by the Seller to the Buyer. A + Product Offering contains the commercial and technical details of a + Product sold by a particular Seller. A Product Offering defines all of + the commercial terms and, through association with a particular Product + Specification defines all the technical attributes and behaviors of the + Product. A Product Offering may constrain the allowable set of + configurable technical attributes and/or behaviors specified in the + associated Product Specification. + + The id of the Product offering is assigned by the Seller. The Buyer and + the Seller exchange information about offerings' ids during the + onboarding process. + properties: + id: + description: unique identifier of the Product Offering. + type: string + href: + description: >- + Hyperlink to a Product Offering in Sellers catalog. In case Seller + is not providing catalog capabilities this field is not used. The + catalog API definition is provided by the Seller to Buyer during + onboarding Hyperlink MAY be used when providing response by the + Seller Hyperlink MUST be ignored by the Seller in case it is + provided by the Buyer in a requestHyperlink reference + type: string + required: + - id + type: object + ProductRelationshipWithGrouping: + description: >- + A relationship to an existing Product. The requirements for usage for + given Product are described in the Product Specification. The + "WithGrouping" flavor of the Product Relationship allows for providing + a list of related product identifiers within a single Product + Relationship. This can be later used while processing the request as + defined in the Product Specification. The `groupingKey` attribute is + used to achieve this behavior in the API by marking the list of + `ProductRelationshipWithGroupings` within a `product` with a common + key. + properties: + relationshipType: + description: > + Specifies the type (nature) of the relationship to the related + Product. The nature of required relationships varies for Products + of different types. For example, a UNI or ENNI Product may not have + any relationships, but an Access E-Line may have two mandatory + relationships (related to the UNI on one end and the ENNI on the + other). More complex Products such as multipoint IP or Firewall + Products may have more complex relationships. As a result, the + allowed and mandatory `relationshipType` values are defined in the + Product Specification. + type: string + id: + description: unique identifier of a Product that is referenced. + type: string + href: + description: >- + Hyperlink to the product in Seller's inventory that is referenced + Hyperlink MAY be used when providing a response by the Seller + Hyperlink MUST be ignored by the Seller in case it is provided by + the Buyer in a request + type: string + groupingKey: + description: > + MEF 80 Introduces a list of related ids for the + ProductRelationship. For sake of TMF compliance, a `groupingKey` is + introduced to retain id as a simple attribute. Ids from + relationships having the same `groupingKey` and `relationshipType` + MUST be treated as a list of identifiers. + + Reference: MEF 80 (Sn 8.1.8.) + type: string + required: + - id + - relationshipType + type: object + Quote: + allOf: + - $ref: '#/components/schemas/Quote_Common' + - description: >- + Quote can be used to negotiate service and product acquisition or + modification between a customer and a service provider. Quote + contains a list of quote items, a reference to a customer, a list + of productOfferings, and attached prices and conditions. + properties: + effectiveQuoteCompletionDate: + description: >- + Date when the Quote State was set to one of the Completion + States. + format: date-time + type: string + expectedQuoteCompletionDate: + description: >- + This is the date provided by the Seller to indicate the date by + which the Quote is expected to reach a Quote Completion State + format: date-time + type: string + validFor: + description: >- + Quote validity period. For use in the context of this + attribute, only the endDateTime attribute must be used. + $ref: '#/components/schemas/TimePeriod' + quoteLevel: + description: >- + An indication of whether the Seller's Quote Response is + Budgetary, Firm - Subject to Feasibility Check, or Firm. The + Seller Quote Level is provided by the Seller when responding to + a Quote request. This represents the lowest Quote Item Level + of all Quote Items included in the Quote. + $ref: '#/components/schemas/MEFSellerQuoteLevel' + quoteItem: + description: >- + An item of the quote - it is used to describe an operation on a + product to be quoted + items: + $ref: '#/components/schemas/QuoteItem' + minItems: 1 + type: array + stateChange: + description: State change for the Quote + items: + $ref: '#/components/schemas/MEFQuoteStateChange' + type: array + id: + description: Unique identifier - attributed by quoting system + type: string + href: + description: > + Hyperlink representing this Quote. Hyperlink MAY be used when + providing a response by the Seller + type: string + state: + description: The state of the Quote. + $ref: '#/components/schemas/MEFQuoteStateType' + quoteDate: + description: Date and time when the quote was created + format: date-time + type: string + required: + - id + - quoteDate + - quoteItem + type: object + QuoteItem: + allOf: + - $ref: '#/components/schemas/MEFQuoteItem_Common' + - description: >- + Quote items describe an action to be performed on a productOffering + or a product in order to get pricing elements and conditions. + properties: + terminationError: + description: >- + When the Seller cannot process the Quote Item Request, the + Seller returns a text-based list of reasons here. + items: + $ref: '#/components/schemas/TerminationError' + type: array + quoteItemInstallationInterval: + description: >- + Quote Item Installation Interval as proposed by the Seller for + the Quote. + $ref: '#/components/schemas/Duration' + subjectToFeasibilityCheck: + description: >- + For a Firm Quote Level indicates if the pricing requires a + Feasibility Check. The Seller indicates if the Quote Item + requires a Feasibility Check. This is not used for a Budgetary + Quote Level. + type: boolean + quoteItemTerm: + description: >- + Quote Item Term as defined by the Seller and part of the Quote + for the Quote Item. + items: + $ref: '#/components/schemas/MEFItemTerm' + maxItems: 1 + type: array + state: + description: The state of the Quote Item. + $ref: '#/components/schemas/MEFQuoteItemStateType' + quoteItemPrice: + description: Price for this quote item + items: + $ref: '#/components/schemas/QuotePrice' + type: array + required: + - state + type: object + QuoteItemRelationship: + description: >- + Used to describe the relationship between quote items. These + relationships could have an impact on pricing and conditions + properties: + relationshipType: + description: >- + Relationship type as relies on, bundles, etc... MEF: Specifies the + nature of the relationship to the related Quote Items. The nature + of required relationships varies for Products of different types. + For example, a UNI or ENNI Product may not have any relationships, + but an Access E-Line may have two mandatory relationships (related + to the UNI on one end and the ENNI on the other). More complex + Products such as multipoint IP or Firewall Products may have more + complex relationships. As a result, the allowed and mandatory + Relationship Nature values are defined in the Product + Specification. + type: string + id: + description: ID of the related quote item (must be in the same quote) + type: string + required: + - id + - relationshipType + type: object + QuoteOperationData: + description: + Request for operation on an existing Quote (cancel or decline) + properties: + reason: + description: >- + Allows the Buyer to specify a reason for the Cancel or Decline + Quote request. + type: string + quoteId: + description: >- + Unique (within the Seller quoting domain) identifier for the quote, + as attributed by the Seller. + type: string + required: + - quoteId + type: object + QuotePrice: + description: Description of price and discount awarded + properties: + unitOfMeasure: + description: >- + Unit of Measure if price depending on it (Gb, SMS volume, etc..) + MEF: if Quote Item Price Type equals usageBased + type: string + price: + description: The associated price + $ref: '#/components/schemas/Price' + name: + description: Name of the quote/quote item price + type: string + priceType: + description: >- + Indicates if the price is for recurring, non-recurring, or usage + based charges + $ref: '#/components/schemas/MEFPriceType' + description: + description: Description of the quote/quote item price + type: string + recurringChargePeriod: + description: Used for a recurring charge to indicate a period + $ref: '#/components/schemas/MEFChargePeriod' + type: object + Quote_Common: + description: >- + Quote can be used to negotiate service and product acquisition or + modification between a customer and a service provider. Quote contains + a list of quote items, a reference to a customer, a list of + productOfferings, and attached prices and conditions. + properties: + note: + description: >- + Free form text associated with the quote. Only useful in processes + involving human interaction. Not applicable for the automated + process. + items: + $ref: '#/components/schemas/Note' + type: array + requestedQuoteCompletionDate: + description: >- + This is requested date - from quote requester - to get a complete + response for this quote + format: date-time + type: string + relatedContactInformation: + description: >- + Party playing a role for this quote. If `instantSyncQuote` equals + `false` + + then the Buyer MUST specify Buyer Contact Information ('role: + buyerContactInformation') + + and the Seller MUST specify Seller Contact Information ('role: + sellerContactInformation') + items: + $ref: '#/components/schemas/RelatedContactInformation' + type: array + description: + description: Description of the quote + type: string + externalId: + description: >- + ID given by the consumer and only understandable by him (to + facilitate his searches afterwards) + type: string + buyerRequestedQuoteLevel: + description: >- + An indication of whether the Buyer's Quote request is for a Quote + of Budgetary or Firm level. + $ref: '#/components/schemas/MEFBuyerQuoteLevel' + projectId: + description: >- + An identifier that is used to group Quotes that represent a unit of + functionality that is important to a Buyer. A Project can be used + to relate multiple Quotes together. + type: string + instantSyncQuote: + description: >- + If this flag is set to true, the Buyer requests an immediate Quote + to be provided in the response to the creation of a Quote. + type: boolean + required: + - buyerRequestedQuoteLevel + - instantSyncQuote + type: object + Quote_Create: + allOf: + - $ref: '#/components/schemas/Quote_Common' + - description: > + Quote can be used to negotiate service and product acquisition or + modification between a customer and a service provider. Quote + contains a list of quote items, a reference to a customer, a list + of productOfferings, and attached prices and conditions. + properties: + quoteItem: + description: >- + An item of the quote - used to describe an operation on a + product to be quoted + items: + $ref: '#/components/schemas/MEFQuoteItem_Create' + minItems: 1 + type: array + required: + - quoteItem + type: object + Quote_Find: + description: > + This class represents a single list item for the response of + `listQuote` operation. + properties: + effectiveQuoteCompletionDate: + description: + Date when the Quote State was set to one of the Completion States + format: date-time + type: string + expectedQuoteCompletionDate: + description: >- + This is the date provided by the Seller to indicate expected Quote + completion date + format: date-time + type: string + requestedQuoteCompletionDate: + description: >- + This is requested date - from quote requester - to get a complete + response for this quote + format: date-time + type: string + quoteLevel: + description: >- + The level of the Quote provided by the Seller. This represents the + lowest Quote Item Level of all Quote Items included in the Quote. + $ref: '#/components/schemas/MEFSellerQuoteLevel' + externalId: + description: >- + ID given by the consumer and only understandable by him (to + facilitate his searches afterward) + type: string + id: + description: Unique identifier - attributed by quoting system + type: string + state: + description: The state of the Quote. + $ref: '#/components/schemas/MEFQuoteStateType' + projectId: + description: >- + An identifier that is used to group Quotes that represent a unit of + functionality that is important to a Buyer. A Project can be used + to relate multiple Quotes together. + type: string + quoteDate: + description: Date and time when the quote was created + format: date-time + type: string + required: + - state + type: object + RelatedContactInformation: + description: >- + Contact data for a person or organization that is involved in a given + context. It is specified by the Seller (e.g. Seller Contact + Information) or by the Buyer. + + Reference: MEF 80 (Sn 8.1.9) + properties: + number: + description: Phone number + type: string + emailAddress: + description: Email address + type: string + role: + description: The role of the particular contact in a given context. + type: string + postalAddress: + description: >- + Identifies the postal address of the person or office to be + contacted. + $ref: '#/components/schemas/FieldedAddress' + organization: + description: The organization or company that the contact belongs to + type: string + name: + description: Name of the contact + type: string + numberExtension: + description: Phone number extension + type: string + required: + - emailAddress + - name + - number + - role + type: object + RelatedPlaceRefOrValue: + description: + Place defines the places where the products' quotation must be done. + discriminator: + mapping: + FieldedAddress: '#/components/schemas/FieldedAddress' + FormattedAddress: '#/components/schemas/FormattedAddress' + GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' + GeographicAddressRef: '#/components/schemas/GeographicAddressRef' + GeographicSiteRef: '#/components/schemas/GeographicSiteRef' + MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' + propertyName: '@type' + properties: + role: + description: Role of this place + type: string + '@type': + description: > + This field is used as a discriminator and is used between different + place representations. This type might discriminate for the + additional related place as defined in '@schemaLocation'. + type: string + '@schemaLocation': + description: >- + A URI to a JSON-Schema file that defines additional attributes and + relationships. May be used to define additional related place + types. Usage of this attribute must be agreed upon between Buyer + and Seller. + format: uri + type: string + required: + - '@type' + - role + type: object + TerminationError: + description: >- + This indicates an error that caused an Item to be terminated. The code + and propertyPath should be used like in Error422. + properties: + code: + description: | + One of the following error codes: + - missingProperty: The property the Seller has expected is not present in the payload + - invalidValue: The property has an incorrect value + - invalidFormat: The property value does not comply with the expected value format + - referenceNotFound: The object referenced by the property cannot be identified in the Seller system + - unexpectedProperty: Additional property, not expected by the Seller has been provided + - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. + - otherIssue: Other problem was identified (detailed information provided in a reason) + $ref: '#/components/schemas/Error422Code' + propertyPath: + description: > + A pointer to a particular property of the payload that caused the + validation issue. It is highly recommended that this property + should be used. + + Defined using JavaScript Object Notation (JSON) Pointer + (https://tools.ietf.org/html/rfc6901). + type: string + value: + description: Text to describe the reason of the termination. + type: string + type: object + TimePeriod: + description: >- + A period of time, either as a deadline (endDateTime only) a + startDateTime only, or both. + properties: + startDateTime: + description: >- + Start of the time period, using IETC-RFC-3339 format. If you define + a start, you must also define an end + example: 1985-04-12T23:20:50.520Z + format: date-time + type: string + endDateTime: + description: 'End of the time period, using IETC-RFC-3339 format' + example: 1985-04-12T23:20:50.520Z + format: date-time + type: string + type: object + TimeUnit: + description: | + Represents a unit of time. + Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) + enum: + - calendarMonths + - calendarDays + - calendarHours + - calendarMinutes + - businessDays + - businessHours + - businessMinutes + type: string diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml index a94f7686..b325993b 100644 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml +++ b/kraken-app/kraken-app-hub/src/main/resources/mock/product.yaml @@ -77,5 +77,4 @@ spec: #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml - #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml - + #- classpath:/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml \ No newline at end of file From 8c542b30cc9ce0f66f324e1efb2312234dc642e8 Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Fri, 1 Nov 2024 13:17:00 +0800 Subject: [PATCH 6/8] remove test configurations --- .../mock/api-specs/api-spec.address.yaml | 16 - .../mock/api-specs/api-spec.inventory.yaml | 16 - .../mock/api-specs/api-spec.order.yaml | 17 - .../api-specs/api-spec.product.offering.yaml | 13 - .../mock/api-specs/api-spec.quote.yaml | 16 - .../api-target-mapper.address.retrieve.yaml | 75 - .../api-target-mapper.address.validate.yaml | 141 - ...pi-target-mapper.inventory.eline.list.yaml | 83 - ...pi-target-mapper.inventory.eline.read.yaml | 64 - .../api-target-mapper.inventory.uni.list.yaml | 81 - .../api-target-mapper.inventory.uni.read.yaml | 66 - .../api-target-mapper.order.eline.add.yaml | 195 - .../api-target-mapper.order.eline.delete.yaml | 59 - .../api-target-mapper.order.eline.read.yaml | 40 - .../api-target-mapper.order.uni.add.yaml | 173 - .../api-target-mapper.order.uni.delete.yaml | 58 - .../api-target-mapper.order.uni.read.yaml | 42 - ...get-mapper.product.offering.eline.add.yaml | 62 - ...et-mapper.product.offering.eline.read.yaml | 63 - ...arget-mapper.product.offering.uni.add.yaml | 62 - ...rget-mapper.product.offering.uni.read.yaml | 63 - ...pi-target-mapper.quote.eline.add.sync.yaml | 218 - .../api-target-mapper.quote.eline.add.yaml | 59 - ...i-target-mapper.quote.eline.read.sync.yaml | 20 - .../api-target-mapper.quote.eline.read.yaml | 54 - .../api-target-mapper.quote.uni.add.sync.yaml | 201 - .../api-target-mapper.quote.uni.add.yaml | 60 - ...api-target-mapper.quote.uni.read.sync.yaml | 20 - .../api-target-mapper.quote.uni.read.yaml | 56 - .../api-target.address.retrieve.yaml | 30 - .../api-target.address.validate.yaml | 42 - .../mock/api-targets/api-target.hub.add.yaml | 21 - .../api-target.inventory.eline.list.yaml | 36 - .../api-target.inventory.eline.read.yaml | 25 - .../api-target.inventory.uni.list.yaml | 36 - .../api-target.inventory.uni.read.yaml | 25 - .../api-target.order.eline.add.yaml | 33 - .../api-target.order.eline.delete.yaml | 29 - .../api-target.order.eline.read.yaml | 69 - ...arget.order.notification.state.change.yaml | 33 - .../api-targets/api-target.order.uni.add.yaml | 33 - .../api-target.order.uni.delete.yaml | 28 - .../api-target.order.uni.read.yaml | 69 - ...-target.poq.notification.state.change.yaml | 33 - ...api-target.product.offering.eline.add.yaml | 34 - ...pi-target.product.offering.eline.read.yaml | 33 - .../api-target.product.offering.uni.add.yaml | 34 - .../api-target.product.offering.uni.read.yaml | 33 - .../api-target.quote.eline.add.sync.yaml | 61 - .../api-target.quote.eline.add.yaml | 48 - .../api-target.quote.eline.read.sync.yaml | 40 - .../api-target.quote.eline.read.yaml | 46 - ...arget.quote.notification.state.change.yaml | 33 - .../api-target.quote.uni.add.sync.yaml | 64 - .../api-targets/api-target.quote.uni.add.yaml | 51 - .../api-target.quote.uni.read.sync.yaml | 40 - .../api-target.quote.uni.read.yaml | 46 - .../main/resources/mock/apis/api.address.yaml | 150 - .../resources/mock/apis/api.inventory.yaml | 209 - .../resources/mock/apis/api.notification.yaml | 107 - .../main/resources/mock/apis/api.order.yaml | 306 -- .../mock/apis/api.product.offering.yaml | 266 -- .../main/resources/mock/apis/api.quote.yaml | 344 -- .../mapping.matrix.address.validation.yaml | 42 - .../mapping.matrix.inventory.eline.list.yaml | 16 - .../mapping.matrix.inventory.eline.read.yaml | 20 - .../mapping.matrix.inventory.uni.list.yaml | 16 - .../mapping.matrix.inventory.uni.read.yaml | 20 - .../mapping.matrix.order.eline.add.yaml | 60 - .../mapping.matrix.order.eline.delete.yaml | 45 - .../mapping.matrix.order.uni.add.yaml | 57 - .../mapping.matrix.order.uni.delete.yaml | 45 - .../mapping.matrix.quote.eline.add.sync.yaml | 36 - .../mapping.matrix.quote.eline.add.yaml | 31 - .../mapping.matrix.quote.uni.add.sync.yaml | 36 - .../mapping.matrix.quote.uni.add.yaml | 31 - ...aphicAddressManagement.api.customized.yaml | 734 ---- .../geographicAddressManagement.api.yaml | 735 ---- ...uctInventoryManagement.api.customized.yaml | 1056 ----- .../productInventoryManagement.api.yaml | 1056 ----- ...ctOfferingQualificationManagement.api.yaml | 1875 --------- ...productOrderManagement.api.customized.yaml | 3539 ----------------- .../openapi/productOrderManagement.api.yaml | 3535 ---------------- .../quoteManagement.api.customized.yaml | 2223 ----------- .../mock/openapi/quoteManagement.api.yaml | 2223 ----------- 85 files changed, 22011 deletions(-) delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml delete mode 100644 kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml deleted file mode 100644 index a18e9771..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.address.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: kraken.component.api-spec -apiVersion: v1 -metadata: - key: mef.sonata.api-spec.serviceability.address - name: Geographic Address Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/address-validation-202409.png - labels: - mef-api-release: grace - address-api-version: v7 - version: 2 -spec: - baseSpec: - path: classpath:/mock/openapi/geographicAddressManagement.api.yaml - customizedSpec: - path: classpath:/mock/openapi/geographicAddressManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml deleted file mode 100644 index c5e5b3c1..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.inventory.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: kraken.component.api-spec -apiVersion: v1 -metadata: - key: mef.sonata.api-spec.inventory - name: Product Inventory Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/product-inventory.png - labels: - mef-api-release: grace - inventory-api-version: v7 - version: 1 -spec: - baseSpec: - path: classpath:/mef-sonata/openapi/productInventoryManagement.api.yaml - customizedSpec: - path: classpath:/mef-sonata/openapi/productInventoryManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml deleted file mode 100644 index 1b74abd0..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.order.yaml +++ /dev/null @@ -1,17 +0,0 @@ ---- -kind: kraken.component.api-spec -apiVersion: v1 -metadata: - key: mef.sonata.api-spec.order - name: Product Ordering Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/order.png - labels: - mef-api-release: grace - order-api-version: v10 - version: 1 -spec: - baseSpec: - path: classpath:/mock/openapi/productOrderManagement.api.yaml - customizedSpec: - path: classpath:/mock/openapi/productOrderManagement.api.customized.yaml - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml deleted file mode 100644 index a9c1079b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.product.offering.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -kind: kraken.component.api-spec -apiVersion: v1 -metadata: - key: mef.sonata.api-spec.product.offering.qualification - name: Product Offering Qualification Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/product-offering-quality.png - labels: - mef-api-release: grace - poq-api-version: v7 -spec: - baseSpec: - path: classpath:/mef-sonata/openapi/productOfferingQualificationManagement.api.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml deleted file mode 100644 index c8aadf1a..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-specs/api-spec.quote.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: kraken.component.api-spec -apiVersion: v1 -metadata: - key: mef.sonata.api-spec.quote - name: Product Quote Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/quote-202409.png - labels: - mef-api-release: grace - quote-api-version: v8 - version: 2 -spec: - baseSpec: - path: classpath:/mock/openapi/quoteManagement.api.yaml - customizedSpec: - path: classpath:/mock/openapi/quoteManagement.api.customized.yaml diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml deleted file mode 100644 index eb7cc3fb..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml +++ /dev/null @@ -1,75 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.address.retrieve - name: Mapper Of Retrieving Geographic Address - description: This operation retrieves a GeographicAddress entity - version: 3 -spec: - trigger: - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/{id} - method: get - addressType: FieldedAddress - endpoints: - - id: retrieve address - path: /v2/data-center-facility/{id} - method: get - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: mapper.address.retrieve.id - title: "Identifier of the GeographicAddress" - description: address retrieve id mapping - source: "@{{id}}" - sourceLocation: PATH - target: "@{{id}}" - targetLocation: PATH - requiredMapping: true - response: - - name: mapper.address.validation.id - title: "Identifier of the GeographicAddress" - description: address validation id mapping - source: "@{{id}}" - sourceLocation: BODY - target: "@{{id}}" - targetType: string - targetLocation: BODY - requiredMapping: true - - name: mapper.address.validation.country - title: "The country of the Geographic Address" - description: address validation country mapping - source: "@{{company.addresses[*].country}}" - sourceLocation: BODY - target: "@{{associatedGeographicAddress.country}}" - targetType: string - targetLocation: BODY - requiredMapping: false - - name: mapper.address.validation.city - title: "The city of the Geographic Address" - description: address validation city mapping - source: "@{{company.addresses[*].city}}" - sourceLocation: BODY - target: "@{{associatedGeographicAddress.city}}" - targetType: string - targetLocation: BODY - requiredMapping: false - - name: mapper.address.validation.streetName - title: "The street of the Geographic Address" - description: address validation streetName mapping - source: "@{{company.addresses[*].address}}" - sourceLocation: BODY - target: "@{{associatedGeographicAddress.streetName}}" - targetType: string - targetLocation: BODY - requiredMapping: false - - name: address.validation.locality.mapper - title: "The metroId of the identified alternate Geographic Address" - description: "" - source: "@{{associatedGeographicAddress.locality}}" - sourceLocation: BODY - target: "@{{associatedGeographicAddress.locality}}" - targetType: string - targetLocation: BODY - requiredMapping: false - replaceStar: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml deleted file mode 100644 index d06ef6cc..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.address.validate.yaml +++ /dev/null @@ -1,141 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.address.validate - name: Mapper Of Validating Geographic Address - description: This operation creates a GeographicAddressValidation entity - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation - method: post - provideAlternative: false - addressType: FieldedAddress - endpoints: - - id: validate address - path: /v2/data-center-facility - method: get - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: address.validation.city - title: "The city that the address is in" - description: "" - source: "@{{submittedGeographicAddress.city}}" - sourceLocation: BODY - requiredMapping: true - target: "filter={\"where\":{\"company.addresses.country\":\"@{{submittedGeographicAddress.country}}\",\"company.addresses.city\":\"@{{submittedGeographicAddress.city}}\"},\"skip\":0,\"limit\":10}" - targetLocation: HYBRID - - name: address.validation.country - title: "The country that the address is in" - description: "" - source: "@{{submittedGeographicAddress.country}}" - sourceLocation: BODY - requiredMapping: true - target: "filter={\"where\":{\"company.addresses.country\":\"@{{submittedGeographicAddress.country}}\",\"company.addresses.city\":\"@{{submittedGeographicAddress.city}}\"},\"skip\":0,\"limit\":10}" - targetLocation: HYBRID - - name: address.validation.streetName - title: "Name of the street or other street type" - description: "" - source: "@{{submittedGeographicAddress.streetName}}" - sourceLocation: BODY - requiredMapping: false - target: "" - targetLocation: "" - response: - - name: mapper.address.validation.id - title: "Unique identifier of the identified alternate Geographic Address" - description: address validation id mapping - source: "@{{[*].id}}" - sourceLocation: BODY - target: "@{{alternateGeographicAddress[*].id}}" - targetType: string - targetLocation: BODY - requiredMapping: true - replaceStar: false - - name: mapper.address.validation.country - title: "The country of the identified alternate Geographic Address" - description: address validation country mapping - source: "@{{[*].company.addresses[0].country}}" - sourceLocation: BODY - target: "@{{alternateGeographicAddress[*].country}}" - targetType: string - targetLocation: BODY - requiredMapping: false - replaceStar: false - - name: mapper.address.validation.city - title: "The city of the identified alternate Geographic Address" - description: address validation city mapping - source: "@{{[*].company.addresses[0].city}}" - sourceLocation: BODY - target: "@{{alternateGeographicAddress[*].city}}" - targetType: string - targetLocation: BODY - requiredMapping: false - replaceStar: false - - name: mapper.address.validation.streetName - title: "The street of the identified alternate Geographic Address" - description: address validation streetName mapping - source: "@{{[*].company.addresses[0].address}}" - sourceLocation: BODY - target: "@{{alternateGeographicAddress[*].streetName}}" - targetType: string - targetLocation: BODY - requiredMapping: false - replaceStar: false - - name: mapper.address.validation.locality - title: "The metroId of the identified alternate Geographic Address" - description: "" - source: "@{{[*].dataCenterFacility.metroId}}" - sourceLocation: BODY - target: "@{{alternateGeographicAddress[*].locality}}" - targetType: string - targetLocation: BODY - requiredMapping: false - replaceStar: false - - name: mapper.address.validation.bestMatch.id - title: "Unique identifier of the identified best match Address" - requiredMapping: false - description: "" - source: "123" - sourceLocation: BODY - target: "@{{bestMatchGeographicAddress.id}}" - targetType: string - targetLocation: BODY - checkPath: "$.bestMatchGeographicAddress.id" - deletePath: "$.bestMatchGeographicAddress" - replaceStar: false - - name: mapper.address.validation.bestMatch.city - title: "The City of the identified best match Address" - requiredMapping: false - description: "" - source: "Sydney" - sourceLocation: BODY - target: "@{{bestMatchGeographicAddress.city}}" - targetType: string - targetLocation: BODY - replaceStar: false - - name: mapper.address.validation.bestMatch.country - title: "The Country of the identified best match Address" - requiredMapping: false - description: "The City of the identified best match Address" - source: "Sydney" - sourceLocation: BODY - target: "@{{bestMatchGeographicAddress.country}}" - targetType: string - targetLocation: BODY - replaceStar: false - - name: mapper.address.validation.bestMatch.streetName - title: "The streetName of the identified best match Address" - requiredMapping: false - description: "" - source: "" - sourceLocation: BODY - target: "@{{bestMatchGeographicAddress.streetName}}" - targetType: string - targetLocation: BODY - replaceStar: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml deleted file mode 100644 index ee81b6c0..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml +++ /dev/null @@ -1,83 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.inventory.eline.list - name: Inventory Connection API - version: 2 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/productInventory/v7/product - method: get - productType: access_e_line - endpoints: - - id: list eline product - path: /api/v2/company/{username}/connections/{connectionId} - method: get - mappers: - request: - - name: mapper.inventory.eline.list.buyerId - title: "The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer." - source: "@{{buyerId}}" - sourceLocation: QUERY - target: "@{{username}}" - targetType: string - targetLocation: PATH - requiredMapping: false - - name: mapper.inventory.uni.list.orderId - title: "associated order Id." - source: "@{{productOrderId}}" - sourceLocation: "QUERY" - target: "@{{connectionId}}" - targetType: string - targetLocation: "PATH" - convertValue: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" - requiredMapping: true - response: - - name: mapper.inventory.eline.list.id - title: "Unique identifier of the product" - source: "@{{responseBody.id}}" - sourceLocation: BODY - target: "@{{id}}" - targetType: string - targetLocation: BODY - requiredMapping: true - checkPath: "$[0].id" - deletePath: "$[*]" - - name: mapper.inventory.eline.list.startDate - title: "The date from which the product starts" - description: "" - source: "@{{responseBody.createdAt}}" - sourceLocation: BODY - target: "@{{startDate}}" - targetType: string - targetLocation: BODY - requiredMapping: true - - name: mapper.inventory.eline.list.status - title: "Possible values for the status of a MEF product" - source: "@{{responseBody.status}}" - sourceLocation: BODY - target: "@{{[*].status}}" - targetType: enum - targetLocation: BODY - requiredMapping: true - targetValues: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - valueMappings: - ACTIVE: active, - CANCELLED: canceled, - PENDING: pendingActive - DELETING: pendingTerminate - DISABLED: suspended - DELETED: terminated diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml deleted file mode 100644 index 774c9418..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.inventory.eline.read - name: Inventory Connection API - description: This operation retrieves a product entity - version: 11 -spec: - trigger: - path: /mefApi/sonata/productInventory/v7/product/{id} - method: get - productType: access_e_line - endpoints: - - id: retrieve eline product inventory detail by id - path: "/api/v2/company/{username}/connections/{connectionId}" - method: "get" - serverKey: "" - mappers: - request: - - name: mapper.product.inventory.id - title: Identifier of the Product - description: "" - source: "@{{id}}" - sourceLocation: "PATH" - target: "@{{portId}}" - targetLocation: "PATH" - requiredMapping: true - - name: mapper.inventory.eline.read.buyerId - title: "The unique identifier of the organization that is acting as the a Buyer" - source: "@{{buyerId}}" - sourceLocation: "QUERY" - target: "@{{companyName}}" - targetType: string - targetLocation: "PATH" - requiredMapping: false - response: - - name: mapper.product.inventory.read.status - title: the status of a MEF product - description: "" - target: "@{{status}}" - targetType: enum - targetLocation: BODY - requiredMapping: true - targetValues: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - valueMapping: {} - source: "" - sourceLocation: "" - - name: mapper.product.inventory.read.startDate - title: The date from which the product starts - description: "" - target: "@{{startDate}}" - targetLocation: BODY - requiredMapping: true - source: "" - sourceLocation: "" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml deleted file mode 100644 index e4c3b05d..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml +++ /dev/null @@ -1,81 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.inventory.uni.list - name: Inventory Connection API - version: 2 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/productInventory/v7/product - method: get - productType: uni - endpoints: - - id: list uni product - path: /api/company/{companyName}/ports/orders/{orderId} - method: get - mappers: - request: - - name: mapper.inventory.uni.list.buyerId - title: "The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer." - source: "@{{buyerId}}" - sourceLocation: QUERY - target: "@{{companyName}}" - targetLocation: PATH - requiredMapping: false - - name: mapper.inventory.uni.list.orderId - title: "associated order Id." - source: "@{{productOrderId}}" - sourceLocation: "QUERY" - target: "@{{orderId}}" - targetType: string - targetLocation: "PATH" - convertValue: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" - requiredMapping: true - response: - - name: mapper.inventory.uni.list.id - title: "Unique identifier of the product" - source: "@{{responseBody.createdPortId}}" - sourceLocation: BODY - target: "@{{id}}" - targetType: string - targetLocation: BODY - requiredMapping: true - checkPath: "$[0].id" - deletePath: "$[*]" - - name: mapper.inventory.uni.list.startDate - title: "The date from which the product starts" - description: "BODY" - source: "@{{responseBody.createdAt}}" - sourceLocation: BODY - target: "@{{startDate}}" - targetType: string - targetLocation: BODY - requiredMapping: true - - name: mapper.inventory.uni.list.status - title: "Possible values for the status of a MEF product" - source: "@{{responseBody.port.status}}" - sourceLocation: BODY - target: "@{{[*].status}}" - targetType: enum - targetLocation: BODY - requiredMapping: true - targetValues: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - valueMappings: - ACTIVE: active, - ACTIVATING: pendingActive - DELETING: pendingTerminate - DISABLED: suspended - DELETED: terminated diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml deleted file mode 100644 index 0bee6ab4..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.inventory.uni.read.yaml +++ /dev/null @@ -1,66 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.inventory.uni.read - name: Mapper Of reading product inventory UNI - description: This operation retrieves a product entity - version: 13 -spec: - trigger: - path: /mefApi/sonata/productInventory/v7/product/{id} - method: get - productType: uni - endpoints: - - id: retrieve uni product inventory detail by id - path: "/api/company/{companyName}/ports/{portId}" - method: "get" - serverKey: "" - mappers: - request: - - name: mapper.product.inventory.id - title: Identifier of the Product - description: "" - source: "@{{id}}" - sourceLocation: "PATH" - target: "@{{portId}}" - targetLocation: "PATH" - requiredMapping: true - - name: mapper.inventory.uni.read.buyerId - title: "The unique identifier of the organization that is acting as the a Buyer" - source: "@{{buyerId}}" - sourceLocation: "QUERY" - target: "@{{companyName}}" - targetType: string - targetLocation: "PATH" - requiredMapping: false - response: - - name: mapper.product.inventory.read.status - title: the status of a MEF product - description: "" - target: "@{{status}}" - targetType: enum - targetLocation: BODY - requiredMapping: true - targetValues: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - valueMapping: {} - source: "@{{status}}" - sourceLocation: BODY - - name: mapper.inventory.read.startDate - title: The date from which the product starts - description: "" - target: "@{{startDate}}" - targetLocation: BODY - requiredMapping: true - source: "@{{createdAt}}" - sourceLocation: BODY - - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml deleted file mode 100644 index 12451236..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.add.yaml +++ /dev/null @@ -1,195 +0,0 @@ - ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.order.eline.add - name: Mapper Of Creating Order Connection - description: This operation creates a ProductOrder entity -spec: - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create connection order - path: /api/v2/company/{companyName}/connections/layer2 - method: put - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: mapper.order.eline.add.buyerId - title: The unique identifier of the organization that is acting as the a Buyer. - source: "@{{buyerId}}" - target: "@{{username}}" - description: - replaceStar: true - sourceLocation: QUERY - targetLocation: PATH - customizedField: false - requiredMapping: false - - name: mapper.order.eline.add.duration - title: "order item Term duration" - source: "@{{productOrderItem[0].requestedItemTerm.duration.amount}}" - target: "@{{duration}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.eline.add.duration.unit - title: "order item Term unit" - source: "@{{productOrderItem[0].requestedItemTerm.duration.units}}" - target: "@{{durationUnit}}" - sourceType: enum - sourceValues: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - sourceLocation: BODY - targetLocation: BODY - valueMapping: - calendarMonths: m - calendarDays: d - requiredMapping: true - - name: mapper.order.eline.add.endOfTermAction - title: "MEFEndOfTermAction" - source: "@{{productOrderItem[0].requestedItemTerm.endOfTermAction}}" - target: "roll" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.eline.add.rollInterval.amount - title: " quote item Term roll duration" - source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.amount}}" - target: "" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.eline.add.rollInterval.units - title: " quote item Term roll unit" - source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.units}}" - target: "" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.eline.add.bandwidthUnit - title: "The unit of bandwidth" - source: "@{{productOrderItem[0].product.productConfiguration.bandwidthUnit}}" - sourceType: enum - sourceValues: - - MBPS - - GBPS - target: "MBPS" - sourceLocation: BODY - targetLocation: BODY - valueMapping: {} - requiredMapping: true - - name: mapper.order.eline.add.bandwidth - title: "Bandwidth of the UNI" - source: "@{{productOrderItem[0].product.productConfiguration.bandwidth}}" - target: "@{{speed}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.eline.add.name - title: "The name of the UNI" - source: "@{{productOrderItem[0].product.productConfiguration.name}}" - target: "@{{name}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.eline.add.paymentType - title: "The payment type of the UNI" - source: "@{{productOrderItem[0].product.productConfiguration.paymentType}}" - target: "@{{paymentType}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.eline.add.classOfService - title: "The class of Service of the Eline" - source: "@{{productOrderItem[0].product.productConfiguration.classOfService}}" - target: "@{{classOfService}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.eline.add.srcUNI - title: "source UNI or ENNI id" - source: "@{{productOrderItem[0].product.productRelationship[0].id}}" - target: "@{{portId}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.eline.add.destUNI - title: "destination UNI id" - source: "@{{productOrderItem[0].product.productRelationship[1].id}}" - target: "@{{destPortId}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.eline.add.productOffering.id - title: "id of a Product Offering" - source: "@{{productOrderItem[0].product.productOffering.id}}" - target: "ACCESS_E_LINE" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - response: - - name: mapper.order.eline.add.state - title: Order State Mapping - description: order state mapping - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - assessingCancellation - - held.assessingCharge - - pending.assessingModification - - cancelled - - pendingCancellation - - completed - - failed - - inProgress - - partial - - rejected - valueMapping: - CREATING: acknowledged, - ACTIVATING: inProgress, - ACCEPTED: inProgress, - MANUAL: inProgress, - DELETING: inProgress, - DISABLING: inProgress, - DENIED: rejected, - ERROR: failed, - ACTIVE: completed, - DISABLED: disabled, - CANCELLED: disabled, - PENDING: pending, - PENDING_ACCEPTANCE: pending, - DELETED: completed - source: "@{{responseBody.status}}" - sourceLocation: BODY - requiredMapping: true - - name: mapper.order.eline.add.orderId - title: Order Id location - description: orderId mapping - source: "@{{responseBody.id}}" - sourceLocation: BODY - target: "@{{orderId}}" - targetLocation: BODY - customizedField: false - requiredMapping: true - - name: mapper.order.eline.add.instanceId - title: Instance Id location - description: order instanceId mapping - source: "@{{responseBody.port.id}}" - sourceLocation: BODY - target: "@{{instanceId}}" - targetLocation: BODY - customizedField: false - requiredMapping: true - - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml deleted file mode 100644 index 6ce4c986..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.delete.yaml +++ /dev/null @@ -1,59 +0,0 @@ - ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.order.eline.delete - name: Mapper Of Deleting Order Connection - description: This operation deletes a ProductOrder entity -spec: - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: access_e_line - actionType: delete - endpoints: - - id: delete connection by id - path: "" - method: "" - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: mapper.order.eline.delete.buyerId - title: "The unique identifier of the organization that is acting as the a Buyer." - description: "" - source: "@{{buyerId}}" - sourceLocation: "QUERY" - target: "" - targetLocation: "" - requiredMapping: false - - name: mapper.order.eline.delete.productId - title: "The unique identifier of an in-service Product that is the ordering subject" - description: "" - source: "@{{productOrderItem[*].product.id}}" - sourceLocation: "BODY" - target: "" - targetLocation: "" - requiredMapping: false - response: - - name: mapper.order.eline.delete.state - title: Order State Mapping - description: order state mapping - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - assessingCancellation - - held.assessingCharge - - pending.assessingModification - - cancelled - - pendingCancellation - - completed - - failed - - inProgress - - partial - - rejected - valueMapping: {} - source: "" - sourceLocation: "" \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml deleted file mode 100644 index e64b3b87..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.eline.read.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.order.eline.read - name: Mapper Of Reading Order Connection - description: This operation retrieves a ProductOrder entity -spec: - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} - method: get - productType: access_e_line - endpoints: - - path: "" - method: "" - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.order.eline.read.state - title: Order State Mapping - description: order state mapping - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - assessingCancellation - - held.assessingCharge - - pending.assessingModification - - cancelled - - pendingCancellation - - completed - - failed - - inProgress - - partial - - rejected - valueMapping: {} - source: "" - sourceLocation: "" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml deleted file mode 100644 index 46e7aa5b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.add.yaml +++ /dev/null @@ -1,173 +0,0 @@ - ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.order.uni.add - name: Mapper Of Creating Order Port - description: This operation creates a ProductOrder entity -spec: - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: uni - actionType: add - endpoints: - - id: create port order - path: /api/company/{companyName}/ports/orders - method: put - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: mapper.order.uni.add.buyerId - title: >- - The unique identifier of the organization that is acting as the a - Buyer. - source: '@{{buyerId}}' - target: "@{{companyName}}" - description: "" - sourceLocation: QUERY - targetLocation: PATH - requiredMapping: false - - name: mapper.order.uni.add.duration.units - title: "order item Term unit" - source: "@{{productOrderItem[0].requestedItemTerm.duration.units}}" - target: "@{{durationUnit}}" - sourceType: enum - sourceValues: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - sourceLocation: BODY - targetLocation: BODY - valueMapping: - calendarMonths: m - requiredMapping: true - - name: mapper.order.eline.add.endOfTermAction - title: "MEFEndOfTermAction" - source: "@{{productOrderItem[0].requestedItemTerm.endOfTermAction}}" - target: "roll" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.eline.add.rollInterval.amount - title: " quote item Term roll duration" - source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.amount}}" - target: "" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.eline.add.rollInterval.units - title: " quote item Term roll unit" - source: "@{{productOrderItem[0].requestedItemTerm.rollInterval.units}}" - target: "" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.uni.add.place.id - title: >- - the id of the place where the products' installation must be done. - source: '@{{productOrderItem[0].product.place[0].id}}' - target: '@{{dataCenterFacility}}' - description: '' - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.uni.add.bandwidthUnit - title: "The unit of bandwidth" - source: "@{{productOrderItem[0].product.productConfiguration.bandwidthUnit}}" - sourceType: enum - sourceValues: - - MBPS - - GBPS - target: "MBPS" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.uni.add.bandwidth - title: "Bandwidth of the UNI" - source: "@{{productOrderItem[0].product.productConfiguration.bandwidth}}" - target: "@{{speed}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.uni.add.name - title: "The name of the UNI" - source: "@{{productOrderItem[0].product.productConfiguration.name}}" - target: "@{{portName}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.uni.add.paymentType - title: "The payment type of the UNI" - source: "@{{productOrderItem[0].product.productConfiguration.paymentType}}" - target: "@{{paymentType}}" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - - name: mapper.order.uni.add.productOffering.id - title: "id of a Product Offering" - source: "@{{productOrderItem[0].product.productOffering.id}}" - target: "UNI" - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - response: - - name: mapper.order.uni.add.state - title: Order State Mapping - description: Please map order status between Sonata API and Seller API - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - assessingCancellation - - held.assessingCharge - - pending.assessingModification - - cancelled - - pendingCancellation - - completed - - failed - - inProgress - - partial - - rejected - valueMapping: - progressing: inProgress, - created: acknowledged, - CREATING: acknowledged, - ACTIVATING: inProgress, - ACCEPTED: inProgress, - MANUAL: inProgress, - DELETING: inProgress, - DISABLING: inProgress, - DENIED: rejected, - ERROR: failed, - ACTIVE: completed, - DISABLED: disabled, - CANCELLED: disabled, - PENDING: pending, - PENDING_ACCEPTANCE: pending, - DELETED: completed - source: "@{{responseBody.status}}" - sourceLocation: BODY - requiredMapping: true - - name: mapper.order.uni.add.orderId - title: order Id from seller - source: "@{{responseBody.id}}" - target: '@{{orderId}}' - description: orderId mapping - sourceLocation: BODY - targetLocation: BODY - requiredMapping: true - - name: mapper.order.uni.add.instanceId - title: instance id from seller - source: "@{{responseBody.port.id}}" - target: '@{{instanceId}}' - description: order instanceId mapping - sourceLocation: BODY - targetLocation: BODY - requiredMapping: false - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml deleted file mode 100644 index fdd0d670..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.delete.yaml +++ /dev/null @@ -1,58 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.order.uni.delete - name: Mapper Of Deleting Order Port - description: This operation deletes a ProductOrder entity -spec: - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: uni - actionType: delete - endpoints: - - id: delete port - path: "" - method: "" - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: mapper.order.uni.delete.buyerId - title: "The unique identifier of the organization that is acting as the a Buyer." - description: "" - source: "@{{buyerId}}" - sourceLocation: "QUERY" - target: "" - targetLocation: "" - requiredMapping: false - - name: mapper.order.uni.delete.productId - title: "The unique identifier of an in-service Product that is the ordering subject" - description: "" - source: "@{{productOrderItem[*].product.id}}" - sourceLocation: "BODY" - target: "" - targetLocation: "" - requiredMapping: false - response: - - name: mapper.order.uni.delete.state - title: Order State Mapping - description: order state mapping - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - assessingCancellation - - held.assessingCharge - - pending.assessingModification - - cancelled - - pendingCancellation - - completed - - failed - - inProgress - - partial - - rejected - valueMapping: {} - source: "" - sourceLocation: "" \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml deleted file mode 100644 index 6302be8d..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.order.uni.read.yaml +++ /dev/null @@ -1,42 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.order.uni.read - name: Mapper Of Reading Order Port - description: This operation retrieves a ProductOrder entity -spec: - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} - method: get - productType: uni - endpoints: - - id: retrieve connection detail by id - path: "" - method: "" - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.order.uni.read.state - title: Order State Mapping - description: order state mapping - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - assessingCancellation - - held.assessingCharge - - pending.assessingModification - - cancelled - - pendingCancellation - - completed - - failed - - inProgress - - partial - - rejected - valueMapping: {} - source: "" - sourceLocation: "" - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml deleted file mode 100644 index 6d70bd4f..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml +++ /dev/null @@ -1,62 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.eline.add - name: Product Offering Qualification (POQ) API - description: | - A request initiated by the Buyer to determine whether the Seller is - able to deliver a product or set of products from among their product - offerings, at the Buyer's location(s); or modify a previously purchased - product. The Seller also provides estimated time intervals to complete - these deliveries. Reference: MEF 79 (Sn 8.4). -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create a product offering qualification for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.eline.add.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.eline.add.state - title: POQ State Mapping - description: POQ state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml deleted file mode 100644 index 98a1d22f..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml +++ /dev/null @@ -1,63 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.eline.read - name: Product Offering Qualification (POQ) API - description: | - The Buyer requests a list of POQs from the Seller based on a set of POQ - filter criteria (as described in MEF79). For each POQ returned, the - Seller also provides a POQ Identifier that uniquely identifies this POQ - within the Seller's system. The order of the elements returned to the - Buyer is defined by the Seller (e.g. natural order) and does not change - between the pages. If criteria for attribute X are provided, all - returned items must match it. -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: access_e_line - endpoints: - - id: Retrieves a product offering qualification by id for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.eline.read.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.eline.read.state - title: POQ State Mapping - description: quote state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml deleted file mode 100644 index 7b385d12..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml +++ /dev/null @@ -1,62 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.uni.add - name: Product Offering Qualification (POQ) API - description: | - A request initiated by the Buyer to determine whether the Seller is - able to deliver a product or set of products from among their product - offerings, at the Buyer's location(s); or modify a previously purchased - product. The Seller also provides estimated time intervals to complete - these deliveries. Reference: MEF 79 (Sn 8.4). -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: uni - actionType: add - endpoints: - - id: create a product offering qualification for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.uni.add.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.uni.add.state - title: POQ State Mapping - description: POQ state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml deleted file mode 100644 index 29e028f2..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml +++ /dev/null @@ -1,63 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.uni.read - name: Product Offering Qualification (POQ) API - description: | - The Buyer requests a list of POQs from the Seller based on a set of POQ - filter criteria (as described in MEF79). For each POQ returned, the - Seller also provides a POQ Identifier that uniquely identifies this POQ - within the Seller's system. The order of the elements returned to the - Buyer is defined by the Seller (e.g. natural order) and does not change - between the pages. If criteria for attribute X are provided, all - returned items must match it. -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: uni - endpoints: - - id: Retrieves a product offering qualification by id for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.uni.read.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.uni.read.state - title: POQ State Mapping - description: quote state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml deleted file mode 100644 index 3bd46c39..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.sync.yaml +++ /dev/null @@ -1,218 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.eline.add.sync - name: Mapper Of Creating Quote Eline - description: This operation creates a Quote entity -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create quote for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: mapper.quote.uni.add.sync.duration.amount - source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.amount}}" - sourceLocation: BODY - target: "@{{connections[*].duration.value}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.duration.units - source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.units}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - valueMapping: - calendarMonths: m - target: "@{{connections[*].duration.unit}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.endOfTermAction - source: "@{{quoteItem[0].requestedQuoteItemTerm.endOfTermAction}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - roll - - autoDisconnect - - autoRenew - valueMapping: {} - target: "roll" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.rollInterval.amount - source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.amount}}" - sourceLocation: BODY - target: "12" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.rollInterval.units - source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.units}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - valueMapping: {} - target: "calendarMonths" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.place0.id - source: "@{{quoteItem[0].product.place[0].id}}" - sourceLocation: BODY - target: "@{{connections[*].srcDcf}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.place1.id - source: "@{{quoteItem[0].product.place[1].id}}" - sourceLocation: BODY - target: "@{{connections[*].destDcf}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.productConfiguration.bandwidth - source: "@{{quoteItem[0].product.productConfiguration.bandwidth}}" - sourceLocation: BODY - target: "@{{connections[*].bandwidth}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.productConfiguration.bandwidthUnit - source: "@{{quoteItem[0].product.productConfiguration.bandwidthUnit}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - GBPS - - MBPS - valueMapping: {} - target: "MBPS" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.productConfiguration.classOfService - source: "@{{quoteItem[0].product.productConfiguration.classOfService}}" - sourceLocation: BODY - target: "@{{connections[*].classOfService}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.productConfiguration.paymentType - source: "@{{quoteItem[0].product.productConfiguration.paymentType}}" - sourceLocation: BODY - target: "@{{connections[*].paymentMethod}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.productOffering.id - source: "@{{quoteItem[0].product.productOffering.id}}" - sourceLocation: BODY - target: "ACCESS_E_LINE" - targetLocation: BODY - requiredMapping: false - response: - - name: mapper.quote.eline.add.sync.unitOfMeasure - title: Quote unitOfMeasure Mapping - description: quote unitOfMeasure mapping - source: "Gb" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].unitOfMeasure}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.eline.add.price.unit - title: Quote Price Unit Mapping - description: quote price unit mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.eline.add.price.value - title: Quote Price Value Mapping - description: quote price value mapping - source: "@{{responseBody.results[0].price}}" - sourceLocation: "" - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" - requiredMapping: true - - name: mapper.quote.eline.add.sync.taxRate - title: Quote taxRate Mapping - description: quote taxRate mapping - source: "16" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.taxRate}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.eline.add.sync.taxIncludedAmount.unit - title: Quote taxIncludedAmount unit Mapping - description: quote taxIncludedAmount unit mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.unit}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.eline.add.sync.taxIncludedAmount.value - title: Quote taxIncludedAmount value Mapping - description: quote taxIncludedAmount value mapping - source: "100" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.value}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.eline.add.sync.quoteItemPrice.name - title: Quote quoteItemPrice name Mapping - description: quote quoteItemPrice name mapping - source: "name-here" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].name}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.eline.add.sync.quoteItemPrice.priceType - title: Quote quoteItemPrice priceType Mapping - description: quote quoteItemPrice priceType mapping - source: "recurring" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].priceType}}" - targetType: enum - targetLocation: BODY - requiredMapping: false - targetValues: - - recurring - - nonRecurring - - usageBased - valueMapping: {} - - name: mapper.quote.eline.add.sync.quoteItemPrice.description - title: Quote quoteItemPrice description Mapping - description: quote quoteItemPrice description mapping - source: "" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].description}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.eline.add.sync.quoteItemPrice.recurringChargePeriod - title: Quote quoteItemPrice recurringChargePeriod Mapping - description: quote quoteItemPrice recurringChargePeriod mapping - source: "month" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].recurringChargePeriod}}" - targetType: enum - targetLocation: BODY - requiredMapping: false - targetValues: - - hour - - day - - week - - month - - year - valueMapping: {} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml deleted file mode 100644 index 5fae0824..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.add.yaml +++ /dev/null @@ -1,59 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.eline.add - name: Mapper Of Creating Quote Eline - description: This operation creates a Quote entity -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create quote for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.quote.eline.add.state - title: Quote State Mapping - description: quote state mapping - source: "answered" - sourceLocation: "" - target: "@{{quoteItem[0].state}}" - targetType: enum - targetLocation: BODY - targetValues: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - inProgress - - inProgress.draft - - abandoned - - rejected - - unableToProvide - valueMapping: - answered: answered too - ACCEPTED: accepted - requiredMapping: true - - name: mapper.quote.eline.add.price.value - title: Quote Price Value Mapping - description: quote price value mapping - source: "@{{responseBody.results[0].price}}" - sourceLocation: "" - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" - requiredMapping: true - - name: mapper.quote.eline.add.price.unit - title: Quote Price Unit Mapping - description: quote price unit mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" - targetLocation: BODY - requiredMapping: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml deleted file mode 100644 index 42509141..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.sync.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.eline.read.sync - name: Mapper Of Reading Quote Eline - description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: access_e_line - endpoints: - - id: retrieve quote for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml deleted file mode 100644 index 24513338..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.eline.read.yaml +++ /dev/null @@ -1,54 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.eline.read - name: Mapper Of Reading Quote Eline - description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: access_e_line - endpoints: - - id: retrieve quote for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.quote.eline.read.state - title: Quote State Mapping - description: quote state mapping - source: "answered" - sourceLocation: "" - target: "@{{quoteItem[0].state}}" - targetType: enum - targetLocation: BODY - targetValues: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - inProgress - - inProgress.draft - - abandoned - - rejected - - unableToProvide - valueMapping: {} - - name: mapper.quote.eline.read.price.value - title: Quote Price Value Mapping - description: quote price value mapping - source: "@{{responseBody.results[0].price}}" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" - targetLocation: BODY - - name: mapper.quote.eline.read.price.unit - title: Quote Price Unit Mapping - description: quote price unit mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" - targetLocation: BODY \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml deleted file mode 100644 index 089d2d2b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.sync.yaml +++ /dev/null @@ -1,201 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.uni.add.sync - name: Mapper Of Creating Quote UNI - description: This operation creates a Quote entity -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: uni - actionType: add - endpoints: - - id: create quote for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - - name: mapper.quote.uni.add.sync.duration.amount - source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.amount}}" - sourceLocation: BODY - target: "1" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.duration.units - source: "@{{quoteItem[0].requestedQuoteItemTerm.duration.units}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - valueMapping: - calendarMonths: m - target: "@{{ports[*].durationUnit}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.endOfTermAction - source: "@{{quoteItem[0].requestedQuoteItemTerm.endOfTermAction}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - roll - - autoDisconnect - - autoRenew - valueMapping: {} - target: "roll" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.rollInterval.amount - source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.amount}}" - sourceLocation: BODY - target: "1" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.rollInterval.units - source: "@{{quoteItem[0].requestedQuoteItemTerm.rollInterval.units}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - valueMapping: {} - target: "calendarMonths" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.place.id - source: "@{{quoteItem[0].product.place[0].id}}" - sourceLocation: BODY - target: "@{{ports[*].dcf}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.productConfiguration.bandwidth - source: "@{{quoteItem[0].product.productConfiguration.bandwidth}}" - sourceLocation: BODY - target: "@{{ports[*].speed}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.productConfiguration.bandwidthUnit - source: "@{{quoteItem[0].product.productConfiguration.bandwidthUnit}}" - sourceLocation: BODY - sourceType: enum - sourceValues: - - GBPS - - MBPS - valueMapping: {} - target: "MBPS" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.productOffering.id - source: "@{{quoteItem[0].product.productOffering.id}}" - sourceLocation: BODY - target: "UNI" - targetLocation: BODY - requiredMapping: false - response: - - name: mapper.quote.uni.add.sync.unitOfMeasure - title: Quote unitOfMeasure Mapping - description: quote unitOfMeasure mapping - source: "Gb" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].unitOfMeasure}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.price.unit - title: Quote Price Unit Mapping - description: quote price mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.price.value - title: Quote Price Value Mapping - description: quote price mapping - source: "@{{responseBody.results[*].price}}" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.sync.taxRate - title: Quote taxRate Mapping - description: quote taxRate mapping - source: "16" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.taxRate}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.taxIncludedAmount.unit - title: Quote taxIncludedAmount unit Mapping - description: quote taxIncludedAmount unit mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.unit}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.taxIncludedAmount.value - title: Quote taxIncludedAmount value Mapping - description: quote taxIncludedAmount value mapping - source: "100" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.taxIncludedAmount.value}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.quoteItemPrice.name - title: Quote quoteItemPrice name Mapping - description: quote quoteItemPrice name mapping - source: "name-here" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].name}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.quoteItemPrice.priceType - title: Quote quoteItemPrice priceType Mapping - description: quote quoteItemPrice priceType mapping - source: "recurring" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].priceType}}" - targetType: enum - targetLocation: BODY - requiredMapping: false - targetValues: - - recurring - - nonRecurring - - usageBased - valueMapping: {} - - name: mapper.quote.uni.add.sync.quoteItemPrice.description - title: Quote quoteItemPrice description Mapping - description: quote quoteItemPrice description mapping - source: "" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].description}}" - targetLocation: BODY - requiredMapping: false - - name: mapper.quote.uni.add.sync.quoteItemPrice.recurringChargePeriod - title: Quote quoteItemPrice recurringChargePeriod Mapping - description: quote quoteItemPrice recurringChargePeriod mapping - source: "month" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].recurringChargePeriod}}" - targetType: enum - targetLocation: BODY - requiredMapping: false - targetValues: - - hour - - day - - week - - month - - year - valueMapping: {} \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml deleted file mode 100644 index 3360985f..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.add.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.uni.add - name: Mapper Of Creating Quote UNI - description: This operation creates a Quote entity -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: uni - actionType: add - endpoints: - - id: create quote for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.quote.uni.add.state - title: Quote State Mapping - description: quote state mapping - source: "answered" - sourceLocation: "" - target: "@{{quoteItem[0].state}}" - targetType: enum - targetLocation: BODY - requiredMapping: true - targetValues: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - inProgress - - inProgress.draft - - abandoned - - rejected - - unableToProvide - valueMapping: - answered: answered too - ACCEPTED: accepted - - name: mapper.quote.uni.add.price.value - title: Quote Price Value Mapping - description: quote price mapping - source: "@{{responseBody.results[*].price}}" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" - targetLocation: BODY - requiredMapping: true - - name: mapper.quote.uni.add.price.unit - title: Quote Price Unit Mapping - description: quote price mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" - targetLocation: BODY - requiredMapping: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml deleted file mode 100644 index 13cf815a..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.uni.read.sync - name: Mapper Of Reading Quote UNI - description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: uni - endpoints: - - id: retrieve quote for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml deleted file mode 100644 index 4b8e4409..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets-mappers/api-target-mapper.quote.uni.read.yaml +++ /dev/null @@ -1,56 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.quote.uni.read - name: Mapper Of Reading Quote UNI - description: This operation retrieves a Quote entity. Attribute selection is enabled for all first level attributes. -spec: - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: uni - endpoints: - - id: retrieve quote for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.quote.uni.read.state - title: Quote State Mapping - description: quote state mapping - source: "answered" - sourceLocation: "" - target: "@{{quoteItem[0].state}}" - targetType: enum - targetLocation: BODY - targetValues: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - cancelled - - unableToProvide - - declined - - expired - - inProgress - - inProgress.draft - - rejected - valueMapping: {} - - name: mapper.quote.uni.read.price.value - title: Quote Price Value Mapping - description: quote price value mapping - source: "@{{responseBody.results[0].price}}" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.value}}" - targetLocation: BODY - - name: mapper.quote.uni.read.price.unit - title: Quote Price Unit Mapping - description: quote price unit mapping - source: "USD" - sourceLocation: BODY - target: "@{{quoteItem[0].quoteItemPrice[*].price.dutyFreeAmount.unit}}" - targetLocation: BODY \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml deleted file mode 100644 index 50394b68..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.retrieve.yaml +++ /dev/null @@ -1,30 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.address.retrieve - name: Geographic Address Management - mapperKey: mef.sonata.api-target-mapper.address.retrieve - version: 1 -spec: - inputs: - - mefQuery - trigger: - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/{id} - method: get - endpoints: - - id: retrieve address - path: "" - method: "" - requestBody: - responseBody: | - { - "id": "", - "@type": "FieldedAddress", - "associatedGeographicAddress": { - "country": "", - "city": "", - "streetName": "", - "locality": "" - } - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml deleted file mode 100644 index 8ace4ade..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.address.validate.yaml +++ /dev/null @@ -1,42 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.address.validate - name: Geographic Address Management - mapperKey: mef.sonata.api-target-mapper.address.validate - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation - method: post - endpoints: - - id: validate address - requestBody: - responseBody: | - { - "validationResult": "((mefResponseBody.bestMatchGeographicAddress.id == '' ? (mefResponseBody.alternateGeographicAddress.size() == 0 ?'fail':'partial'): 'success'))", - "alternateGeographicAddress": [ - { - "id": "", - "@type": "FieldedAddress", - "country": "", - "city": "", - "streetName": "", - "locality": "" - } - ], - "provideAlternative": "${mefRequestBody.provideAlternative}", - "submittedGeographicAddress": "${mefRequestBody.submittedGeographicAddress}", - "bestMatchGeographicAddress": { - "id": "", - "@type": "FieldedAddress", - "city": "", - "country": "", - "streetName": "" - } - } - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml deleted file mode 100644 index a12482ae..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.hub.add.yaml +++ /dev/null @@ -1,21 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.hub.add - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.hub.add - version: 5 -spec: - inputs: - - mefQuery - - mefRequestBody - - eventEntity - endpoints: - - id: register event - responseBody: | - { - "id": "${eventEntity.id}", - "callback": "${mefRequestBody.callback}", - "query": "${mefRequestBody.query}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml deleted file mode 100644 index 7d2aee9b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.list.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.inventory.eline.list - name: Inventory Connection API - mapperKey: mef.sonata.api-target-mapper.inventory.eline.list - version: 2 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/productInventory/v7/product - method: get - productType: access_e_line - endpoints: - - id: list eline product - pathReferId: "mef.sonata.api-target-mapper.order.eline.add#mapper.order.eline.add.orderId" - responseBody: | - [ - { - "id": "", - "startDate": "", - "status": "", - "productSpecification":{}, - "relatedSite":[], - "productOffering":"${entity.request.productOrderItem[0].product.productOffering}", - "lastUpdateDate":{}, - "externalId":"${entity.request[externalId]?:''}", - "productRelationship":"${entity.request.productOrderItem[0].product.productRelationship}", - "billingAccount":"${entity.request.productOrderItem[0].billingAccount}", - "productOrderItem":"${entity.renderedResponse.productOrderItem}" - } - ] \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml deleted file mode 100644 index f4012ef5..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.eline.read.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.inventory.eline.read - mapperKey: mef.sonata.api-target-mapper.inventory.eline.read - name: Product Inventory eline - version: 7 -spec: - inputs: - - mefQuery - trigger: - path: /mefApi/sonata/productInventory/v7/product/{id} - method: get - productType: access_e_line - endpoints: - - id: Retrieves a product by ID - path: "" - method: "" - responseBody: | - { - "id": "${segment}", - "startDate": "@{{startDate}}", - "status": "@{{status}}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml deleted file mode 100644 index 2a29e6df..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.list.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.inventory.uni.list - name: Inventory Connection API - mapperKey: mef.sonata.api-target-mapper.inventory.uni.list - version: 2 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/productInventory/v7/product - method: get - productType: uni - endpoints: - - id: list uni product - pathReferId: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" - responseBody: | - [ - { - "id": "", - "startDate": "", - "status": "", - "productSpecification":{}, - "relatedSite":[], - "productOffering":"${entity.request.productOrderItem[0].product.productOffering}", - "lastUpdateDate":"", - "externalId":"${entity.request[externalId]?:''}", - "productRelationship":"${entity.request.productOrderItem[0].product.productRelationship}", - "billingAccount":"${entity.request.productOrderItem[0].billingAccount}", - "productOrderItem":"${entity.renderedResponse.productOrderItem}" - } - ] \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml deleted file mode 100644 index b0ee0ec2..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.inventory.uni.read.yaml +++ /dev/null @@ -1,25 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.inventory.uni.read - mapperKey: mef.sonata.api-target-mapper.inventory.uni.read - name: Product Inventory UNI - version: 7 -spec: - inputs: - - mefQuery - trigger: - path: /mefApi/sonata/productInventory/v7/product/{id} - method: get - productType: uni - endpoints: - - id: Retrieves a product by ID - path: "" - method: "" - responseBody: | - { - "id": "${segment}", - "startDate": "@{{startDate}}", - "status": "@{{status}}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml deleted file mode 100644 index 6586861d..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.add.yaml +++ /dev/null @@ -1,33 +0,0 @@ - ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.eline.add - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.order.eline.add - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create connection order - path: "" - method: "" - requestBody: | - {} - responseBody: | - { - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "id": "${entity.id}", - "orderDate":"${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "productOrderItem": "${mefRequestBody.productOrderItem}", - "state": "", - "orderId": "" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml deleted file mode 100644 index eabb2b35..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.delete.yaml +++ /dev/null @@ -1,29 +0,0 @@ - ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.eline.delete - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.order.eline.delete - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: access_e_line - actionType: delete - endpoints: - - id: delete connection by id - path: "" - method: "" - responseBody: | - { - "id":"${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "productOrderItem": "${mefRequestBody.productOrderItem}", - "state": "" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml deleted file mode 100644 index d0c38bc5..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.eline.read.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.eline.read - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.order.eline.read - version: 4 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} - method: get - productType: access_e_line - endpoints: - - id: retrieve connection detail by id - path: "" - pathReferId: "mef.sonata.api-target-mapper.order.eline.add#mapper.order.eline.add.orderId" - method: "" - responseBody: | - { - "id": "${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", - "productOrderItem": [ - { - "action": "${entity.renderedResponse.productOrderItem[0].action}", - "agreementName": "${entity.renderedResponse.productOrderItem[0].agreementName}", - "billingAccount": "${entity.renderedResponse.productOrderItem[0].billingAccount}", - "coordinatedAction": "${entity.renderedResponse.productOrderItem[0].coordinatedAction}", - "endCustomerName": "${entity.renderedResponse.productOrderItem[0].endCustomerName}", - "expediteIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", - "id": "${entity.renderedResponse.productOrderItem[0].id}", - "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].expectedCompletionDate}", - "note": "${entity.renderedResponse.productOrderItem[0].note}", - "product": { - "productOffering": "${entity.renderedResponse.productOrderItem[0].product.productOffering}", - "productConfiguration": "${entity.renderedResponse.productOrderItem[0].product.productConfiguration}", - "productRelationship": "${entity.renderedResponse.productOrderItem[0].product.productRelationship}", - "place": "${entity.renderedResponse.productOrderItem[0].product.place}", - "href": "${entity.renderedResponse.productOrderItem[0].product.href}", - "id": "" - }, - "productOfferingQualificationItem": "${entity.renderedResponse.productOrderItem[0].productOfferingQualificationItem}", - "productOrderItemRelationship": "${entity.renderedResponse.productOrderItem[0].productOrderItemRelationship}", - "quoteItem": "${entity.renderedResponse.productOrderItem[0].quoteItem}", - "relatedBuyerPON": "${entity.renderedResponse.productOrderItem[0].relatedBuyerPON}", - "relatedContactInformation": "${entity.renderedResponse.productOrderItem[0].relatedContactInformation}", - "requestedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", - "requestedItemTerm": "${entity.renderedResponse.productOrderItem[0].requestedItemTerm}", - "tspRestorationPriority": "${entity.renderedResponse.productOrderItem[0].tspRestorationPriority}", - "charge": "${entity.renderedResponse.productOrderItem[0].charge}", - "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", - "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", - "expediteAcceptedIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", - "itemTerm": "${entity.renderedResponse.productOrderItem[0].itemTerm}", - "milestone": "${entity.renderedResponse.productOrderItem[0].milestone}", - "state": "((mefResponseBody.state))", - "terminationError": "${entity.renderedResponse.productOrderItem[0].terminationError}" - } - ], - "orderDate":"${entity.renderedResponse.orderDate}", - "state": "", - "orderId": "${entity.renderedResponse.orderId}", - "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", - "instanceId": "" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml deleted file mode 100644 index 81aa7ce9..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.notification.state.change.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.notification.state.change - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.order.notification.state.change - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - - eventEntity - trigger: - path: /mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent - method: post - endpoints: - - id: notify order state change - path: "/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent" - url: "${eventEntity.registerInfo.callback}" -# path: "/anything" - method: post - requestBody: | - { - "eventId": "${eventEntity.id}", - "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "eventType": "${mefQuery.eventType}", - "event": { - "id": "" - } - } - responseBody: diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml deleted file mode 100644 index 90bdcb04..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.add.yaml +++ /dev/null @@ -1,33 +0,0 @@ - ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.uni.add - name: Order Port API - mapperKey: mef.sonata.api-target-mapper.order.uni.add - version: 2 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: uni - actionType: add - endpoints: - - id: create port order - path: "" - method: "" - requestBody: | - {} - responseBody: | - { - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "id": "${entity.id}", - "orderDate":"${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "productOrderItem": "${mefRequestBody.productOrderItem}", - "state": "", - "orderId": "" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml deleted file mode 100644 index ffde2748..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.delete.yaml +++ /dev/null @@ -1,28 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.uni.delete - name: Order Port API - mapperKey: mef.sonata.api-target-mapper.order.uni.delete - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - productType: uni - actionType: delete - endpoints: - - id: delete port - path: "" - method: "" - responseBody: | - { - "id":"${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "productOrderItem": "${mefRequestBody.productOrderItem}", - "state": "" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml deleted file mode 100644 index 27f25d3b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.order.uni.read.yaml +++ /dev/null @@ -1,69 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.uni.read - mapperKey: mef.sonata.api-target-mapper.order.uni.read - name: Order Connection API - version: 4 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} - method: get - productType: uni - endpoints: - - id: retrieve connection detail by id - path: "" - method: "" - pathReferId: "mef.sonata.api-target-mapper.order.uni.add#mapper.order.uni.add.orderId" - responseBody: | - { - "id": "${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", - "productOrderItem": [ - { - "action": "${entity.renderedResponse.productOrderItem[0].action}", - "agreementName": "${entity.renderedResponse.productOrderItem[0].agreementName}", - "billingAccount": "${entity.renderedResponse.productOrderItem[0].billingAccount}", - "coordinatedAction": "${entity.renderedResponse.productOrderItem[0].coordinatedAction}", - "endCustomerName": "${entity.renderedResponse.productOrderItem[0].endCustomerName}", - "expediteIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", - "id": "${entity.renderedResponse.productOrderItem[0].id}", - "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].expectedCompletionDate}", - "note": "${entity.renderedResponse.productOrderItem[0].note}", - "product": { - "productOffering": "${entity.renderedResponse.productOrderItem[0].product.productOffering}", - "productConfiguration": "${entity.renderedResponse.productOrderItem[0].product.productConfiguration}", - "productRelationship": "${entity.renderedResponse.productOrderItem[0].product.productRelationship}", - "place": "${entity.renderedResponse.productOrderItem[0].product.place}", - "href": "${entity.renderedResponse.productOrderItem[0].product.href}", - "id": "" - }, - "productOfferingQualificationItem": "${entity.renderedResponse.productOrderItem[0].productOfferingQualificationItem}", - "productOrderItemRelationship": "${entity.renderedResponse.productOrderItem[0].productOrderItemRelationship}", - "quoteItem": "${entity.renderedResponse.productOrderItem[0].quoteItem}", - "relatedBuyerPON": "${entity.renderedResponse.productOrderItem[0].relatedBuyerPON}", - "relatedContactInformation": "${entity.renderedResponse.productOrderItem[0].relatedContactInformation}", - "requestedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", - "requestedItemTerm": "${entity.renderedResponse.productOrderItem[0].requestedItemTerm}", - "tspRestorationPriority": "${entity.renderedResponse.productOrderItem[0].tspRestorationPriority}", - "charge": "${entity.renderedResponse.productOrderItem[0].charge}", - "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", - "expectedCompletionDate": "${entity.renderedResponse.productOrderItem[0].requestedCompletionDate}", - "expediteAcceptedIndicator": "${entity.renderedResponse.productOrderItem[0].expediteIndicator}", - "itemTerm": "${entity.renderedResponse.productOrderItem[0].itemTerm}", - "milestone": "${entity.renderedResponse.productOrderItem[0].milestone}", - "state": "((mefResponseBody.state))", - "terminationError": "${entity.renderedResponse.productOrderItem[0].terminationError}" - } - ], - "orderDate":"${entity.renderedResponse.orderDate}", - "state": "", - "orderId": "${entity.renderedResponse.orderId}", - "completionDate": "((mefResponseBody.state=='completed'?mefResponseBody.completionDate:null))", - "instanceId": "" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml deleted file mode 100644 index 63a4b826..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.poq.notification.state.change.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.notification.state.change - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.poq.notification.state.change - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - - eventEntity - trigger: - path: /mefApi/sonata/productOfferingQualificationNotification/v7/listener/poqStateChangeEvent - method: post - endpoints: - - id: notify poq state change - path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" - url: "${eventEntity.registerInfo.callback}" -# path: "/anything" - method: post - requestBody: | - { - "eventId": "${eventEntity.id}", - "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "eventType": "${mefQuery.eventType}", - "event": { - "id": "" - } - } - responseBody: diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml deleted file mode 100644 index 3d9b4a4b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.add.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.eline.add - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.eline.add - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create a product offering qualification for connection - path: "" - method: "" - requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${mefRequestBody.productOfferingQualificationItem[0].product}", - "action": "${mefRequestBody.productOfferingQualificationItem[0].action}", - "id":"${mefRequestBody.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "state": "@{{state}}" - } diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml deleted file mode 100644 index f1e94253..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.eline.read.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.eline.read - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.eline.read - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: access_e_line - endpoints: - - id: Retrieves a product offering qualification by id for connection - path: "" - method: "" - requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${entity.request.productOfferingQualificationItem[0].product}", - "action": "${entity.request.productOfferingQualificationItem[0].action}", - "id":"${entity.request.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${entity.request.relatedContactInformation}", - "state": "@{{state}}" - } diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml deleted file mode 100644 index 50b541a9..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.add.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.uni.add - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.uni.add - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: uni - actionType: add - endpoints: - - id: create a product offering qualification for port - path: "" - method: "" - requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.uni} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${mefRequestBody.productOfferingQualificationItem[0].product}", - "action": "${mefRequestBody.productOfferingQualificationItem[0].action}", - "id":"${mefRequestBody.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "state": "@{{state}}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml deleted file mode 100644 index 5ef7fba3..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.product.offering.uni.read.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.uni.read - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.uni.read - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: uni - endpoints: - - id: Retrieves a product offering qualification by id for port - path: "" - method: "" - requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.uni} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${entity.request.productOfferingQualificationItem[0].product}", - "action": "${entity.request.productOfferingQualificationItem[0].action}", - "id":"${entity.request.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${entity.request.relatedContactInformation}", - "state": "@{{state}}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml deleted file mode 100644 index 985942ac..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.sync.yaml +++ /dev/null @@ -1,61 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.eline.add.sync - name: Quote Connection API - mapperKey: mef.sonata.api-target-mapper.quote.eline.add.sync - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create quote for connection - path: - method: - requestBody: | - {} - responseBody: | - { - "id": "${entity.id}", - "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "quoteItem": [{ - "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}", - "product": "${mefRequestBody.quoteItem[0].product}", - "action": "add", - "id": "${mefRequestBody.quoteItem[0].id}", - "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))", - "quoteItemTerm": "${T(java.util.Arrays).asList(mefRequestBody.quoteItem[0].requestedQuoteItemTerm)}", - "quoteItemPrice": [{ - "unitOfMeasure":"", - "price": { - "dutyFreeAmount": { - "unit": "", - "value": "" - }, - "taxRate":"", - "taxIncludedAmount": { - "unit": "", - "value": "" - } - }, - "name":"", - "priceType":"", - "description":"", - "recurringChargePeriod":"" - }] - }], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${mefRequestBody[externalId]?:''}", - "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", - "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml deleted file mode 100644 index e422fa29..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.add.yaml +++ /dev/null @@ -1,48 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.eline.add - name: Quote Connection API - mapperKey: mef.sonata.api-target-mapper.quote.eline.add - version: 4 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create quote for connection - path: - method: - requestBody: ${mefRequestBody.quoteItem[0].product.productConfiguration.access_e_line} - responseBody: | - { - "id": "${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "quoteItem": [{ - "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", - "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", - "product": "${mefRequestBody.quoteItem[0].product}", - "state": "", - "quoteItemPrice": [{ - "price": { - "dutyFreeAmount": { - "unit": "", - "value": "" - } - } - }] - }], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${mefRequestBody[externalId]?:''}", - "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", - "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml deleted file mode 100644 index 8bd8c417..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.sync.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.eline.read.sync - name: Quote Connection API - mapperKey: mef.sonata.api-target-mapper.quote.eline.read.sync - version: 0 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: access_e_line - endpoints: - - id: retrieve quote for connection - url: ${env.target.url} - path: - method: - requestBody: ${entity.request.quoteItem[0].product.productConfiguration.access_e_line} - responseBody: | - { - "id": "${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", - "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", - "quoteItem": [{ - "product": "${entity.request.quoteItem[0].product}", - "action": "${entity.request.quoteItem[0].action}", - "id": "${entity.request.quoteItem[0].id}", - "state": "${entity.renderedResponse.quoteItem[0].state}", - "quoteItemPrice": "${entity.renderedResponse.quoteItem[0].quoteItemPrice}" - }], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${entity.request[externalId]?:''}", - "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml deleted file mode 100644 index fbf3215e..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.eline.read.yaml +++ /dev/null @@ -1,46 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.eline.read - name: Quote Connection API - mapperKey: mef.sonata.api-target-mapper.quote.eline.read - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: access_e_line - endpoints: - - id: retrieve quote for connection - path: "" - method: "" - requestBody: ${entity.request.quoteItem[0].product.productConfiguration.access_e_line} - responseBody: | - { - "id": "${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", - "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", - "quoteItem": [ - { - "product": "${entity.request.quoteItem[0].product}", - "state": "@{{quoteItem[*].state}}", - "quoteItemPrice": [{ - "price": { - "dutyFreeAmount": { - "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", - "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" - } - } - }] - } - ], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${entity.request[externalId]?:''}", - "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml deleted file mode 100644 index f80c14b8..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.notification.state.change.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.notification.state.change - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.quote.notification.state.change - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - - eventEntity - trigger: - path: /mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent - method: post - endpoints: - - id: notify quote state change - path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" - url: "${eventEntity.registerInfo.callback}" -# path: "/anything" - method: post - requestBody: | - { - "eventId": "${eventEntity.id}", - "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "eventType": "${mefQuery.eventType}", - "event": { - "id": "" - } - } - responseBody: diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml deleted file mode 100644 index a6e386ca..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.sync.yaml +++ /dev/null @@ -1,64 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.uni.add.sync - name: Quote Management API - mapperKey: mef.sonata.api-target-mapper.quote.uni.add.sync - version: 0 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: uni - actionType: add - endpoints: - - id: create quote for port - path: - method: - requestBody: | - {} - responseBody: | - { - "id": "${entity.id}", - "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "quoteItem": [ - { - "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}", - "product": "${mefRequestBody.quoteItem[0].product}", - "action": "add", - "id": "${mefRequestBody.quoteItem[0].id}", - "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))", - "quoteItemTerm": "${T(java.util.Arrays).asList(mefRequestBody.quoteItem[0].requestedQuoteItemTerm)}", - "quoteItemPrice": [{ - "unitOfMeasure":"", - "price": { - "dutyFreeAmount": { - "unit": "", - "value": "" - }, - "taxRate":"", - "taxIncludedAmount": { - "unit": "", - "value": "" - } - }, - "name":"", - "priceType":"", - "description":"", - "recurringChargePeriod":"" - }] - } - ], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${mefRequestBody[externalId]?:''}", - "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", - "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml deleted file mode 100644 index 90c0d6e1..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.add.yaml +++ /dev/null @@ -1,51 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.uni.add - name: Quote Management API - mapperKey: mef.sonata.api-target-mapper.quote.uni.add - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - productType: uni - actionType: add - endpoints: - - id: create quote for port - path: "" - method: "" - requestBody: ${mefRequestBody.quoteItem[0].product.productConfiguration.uni} - responseBody: | - { - "id": "${entity.id}", - "buyerRequestedQuoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "quoteItem": [ - { - "quoteItem": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", - "requestedQuoteItemTerm": "${mefRequestBody.quoteItem[0].requestedQuoteItemTerm}}", - "product": "${mefRequestBody.quoteItem[0].product}", - "state": "", - "quoteItemPrice": [{ - "price": { - "dutyFreeAmount": { - "unit": "", - "value": "" - } - } - }] - } - ], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${mefRequestBody[externalId]?:''}", - "instantSyncQuote":"${mefRequestBody[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${mefRequestBody[requestedQuoteCompletionDate]?:''}", - "quoteLevel": "${mefRequestBody.buyerRequestedQuoteLevel}", - "state": "((mefResponseBody.quoteItem[0].quoteItemPrice[0].price.dutyFreeAmount.value == '' ? 'unableToProvide': 'approved.orderable'))" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml deleted file mode 100644 index fdb94195..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.sync.yaml +++ /dev/null @@ -1,40 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.uni.read.sync - name: Quote Management API - mapperKey: mef.sonata.api-target-mapper.quote.uni.read.sync - version: 0 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: uni - endpoints: - - id: retrieve quote for port - url: ${env.target.url} - path: - method: - requestBody: ${entity.request.quoteItem[0].product.productConfiguration.uni} - responseBody: | - { - "id": "${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", - "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", - "quoteItem": [{ - "product": "${entity.request.quoteItem[0].product}", - "action": "${entity.request.quoteItem[0].action}", - "id": "${entity.request.quoteItem[0].id}", - "state": "${entity.renderedResponse.quoteItem[0].state}", - "quoteItemPrice": "${entity.renderedResponse.quoteItem[0].quoteItemPrice}" - }], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${entity.request[externalId]?:''}", - "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml deleted file mode 100644 index 098f545a..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/api-targets/api-target.quote.uni.read.yaml +++ /dev/null @@ -1,46 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.uni.read - name: Quote Management API - mapperKey: mef.sonata.api-target-mapper.quote.uni.read - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productType: uni - endpoints: - - id: retrieve quote for port - path: "" - method: "" - requestBody: ${entity.request.quoteItem[0].product.productConfiguration.uni} - responseBody: | - { - "id": "${entity.id}", - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation('sellerContactInformation', env.seller.name, env.seller.emailAddress, env.seller.number, entity.request.relatedContactInformation)}", - "buyerRequestedQuoteLevel": "${entity.request.buyerRequestedQuoteLevel}", - "quoteItem": [ - { - "product": "${entity.request.quoteItem[0].product}", - "state": "@{{quoteItem[*].state}}", - "quoteItemPrice": [{ - "price": { - "dutyFreeAmount": { - "unit": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.unit}}", - "value": "@{{quoteItem.quoteItemPrice.price.dutyFreeAmount.value}}" - } - } - }] - } - ], - "quoteDate": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "externalId":"${entity.request[externalId]?:''}", - "instantSyncQuote":"${entity.request[instantSyncQuote]?:''}", - "requestedQuoteCompletionDate": "${entity.request[requestedQuoteCompletionDate]?:''}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml deleted file mode 100644 index a02ec876..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.address.yaml +++ /dev/null @@ -1,150 +0,0 @@ ---- -kind: kraken.component.api -apiVersion: v1 -metadata: - key: mef.sonata.api.serviceability.address - name: Geographic Address Management - labels: - mef-api-release: grace - address-api-version: v7 - version: 6 -spec: - supportedProductTypesAndActions: - - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation - method: post - - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/{id} - method: get - mappings: - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddressValidation - method: post - metadata: - cacheRequestBody: true - actions: - - id: persist_http_request_address_validate - actionType: buildin@db - env: - bizType: "address.validate" - with: - action: create - properties: - - headers - - queryParameters - - requestBody - preRequest: true - - id: calculate_address_type_and_action_via_javascript - actionType: engine@javascript - with: - code: | - (jsonstr) => { - let ret = { - targetAPIConfigKey: 'mef.sonata.api-target.address.validate' - }; - return JSON.stringify(ret); - } - outputKey: address - - id: mapping_matrix_check_address - actionType: buildin@mapping-matrix-checker - env: - mappingMatrixKey: mef.sonata.api.matrix.address.validation - targetKey: ${address.targetAPIConfigKey} - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${address.targetAPIConfigKey} - mefQuery: ${query} - mefRequestBody: ${body} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - id: rewrite-path - actionType: buildin@rewrite-path - with: - engine: spel - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-request-body - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - listLoop: true - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - postResultRender: true - - - id: update-response-body - actionType: buildin@db - with: - action: update - properties: - - responseBody - - responseStatusCode - preRequest: false - postRequest: true - order: -4 - - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/** - method: get - queryParams: - metadata: - cacheRequestBody: true - actions: - - name: retrieve addressId from path - actionType: buildin@pattern - env: - input: ${path} - pattern: /mefApi/sonata/geographicAddressManagement/v7/geographicAddress/(?.*) - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: "mef.sonata.api-target.address.retrieve" - mefQuery: ${query} - id: ${segment} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} -links: - - targetAssetKey: mef.sonata.api-target.address.retrieve - relationship: implementation.target - group: mef.sonata.api-target.address.retrieve - - targetAssetKey: mef.sonata.api-target.address.validate - relationship: implementation.target - group: mef.sonata.api-target.address.validate - - targetAssetKey: mef.sonata.api-spec.serviceability.address - relationship: implementation.standard.api-spec - - targetAssetKey: mef.sonata.api-target-mapper.address.validate - relationship: implementation.target-mapper - group: mef.sonata.api-target.address.validate - - targetAssetKey: mef.sonata.api.matrix.address.validate - relationship: implementation.matrix - group: mef.sonata.api-target.address.validate - - targetAssetKey: mef.sonata.api-target-mapper.address.retrieve - relationship: implementation.target-mapper - group: mef.sonata.api-target.address.retrieve \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml deleted file mode 100644 index b64e1a75..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.inventory.yaml +++ /dev/null @@ -1,209 +0,0 @@ ---- -kind: kraken.component.api -apiVersion: v1 -metadata: - key: mef.sonata.api.inventory - name: Product Inventory Management - labels: - mef-api-release: grace - inventory-api-version: v7 - version: 4 -spec: - supportedProductTypesAndActions: - - path: /mefApi/sonata/productInventory/v7/product - method: get - productTypes: - - UNI - - ACCESS_E_LINE - - path: /mefApi/sonata/productInventory/v7/product/{id} - method: get - productTypes: - - UNI - - ACCESS_E_LINE - mappings: - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/productInventory/v7/product - method: get - metadata: - cacheRequestBody: false - actions: - - id: read request payload by id - actionType: buildin@db - env: - id: ${query.productOrderId} - blankIdErrMsg: "productOrderId id cannot be blank" - notExistedErrMsg: "productOrderId id does not exist" - with: - action: read - preRequest: true - - id: calculate_list_type_for_via_javascript - actionType: engine@javascript - env: - bizType: ${entity.bizType} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - let matrixConfigKey = ''; - if(input.bizType == 'UNI') { - targetAPIConfigKey = 'mef.sonata.api-target.inventory.uni.list'; - matrixConfigKey = 'mef.sonata.api.matrix.inventory.uni.list'; - } else if(input.bizType == 'ACCESS_E_LINE') { - targetAPIConfigKey = 'mef.sonata.api-target.inventory.eline.list'; - matrixConfigKey = 'mef.sonata.api.matrix.inventory.eline.list'; - } else { - targetAPIConfigKey = 'targetKey:notFound'; - matrixConfigKey = 'productOrderId:notFound'; - } - let ret = { - orderType: input.bizType, - targetAPIConfigKey: targetAPIConfigKey, - matrixConfigKey: matrixConfigKey - }; - return JSON.stringify(ret); - } - outputKey: order - - id: mapping-matrix-check-inventory - actionType: buildin@mapping-matrix-checker - env: - mappingMatrixKey: ${order.matrixConfigKey} - targetKey: ${order.targetAPIConfigKey} - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${order.targetAPIConfigKey} - mefQuery: ${query} - entity: ${entity} - with: - render: true - replaceStar: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/productInventory/v7/product/** - method: get - queryParams: - metadata: - cacheRequestBody: true - actions: - - name: retrieve product id from path - actionType: buildin@pattern - env: - input: ${path} - pattern: /mefApi/sonata/productInventory/v7/product/(?.*) - - id: calculate_type_for_via_javascript - actionType: engine@javascript - env: - bizType: ${query.productType} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - let matrixConfigKey = ''; - if(input.bizType == 'UNI') { - targetAPIConfigKey = 'mef.sonata.api-target.inventory.uni.read'; - matrixConfigKey = 'mef.sonata.api.matrix.inventory.uni.read'; - } else if(input.bizType == 'ACCESS_E_LINE') { - targetAPIConfigKey = 'mef.sonata.api-target.inventory.eline.read'; - matrixConfigKey = 'mef.sonata.api.matrix.inventory.eline.read'; - } else { - targetAPIConfigKey = 'targetKey:notFound'; - matrixConfigKey = 'productType:notFound'; - } - let ret = { - orderType: input.bizType, - targetAPIConfigKey: targetAPIConfigKey, - matrixConfigKey: matrixConfigKey - }; - return JSON.stringify(ret); - } - outputKey: order - - id: mapping-matrix-check-inventory-read - actionType: buildin@mapping-matrix-checker - env: - mappingMatrixKey: ${order.matrixConfigKey} - targetKey: ${order.targetAPIConfigKey} - id: ${segment} - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${order.targetAPIConfigKey} - mefQuery: ${query} - id: ${segment} - with: - render: true - replaceStar: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - -links: - - targetAssetKey: mef.sonata.api-target.inventory.uni.list - relationship: implementation.target - group: mef.sonata.api-target.inventory.uni.list - - targetAssetKey: mef.sonata.api.matrix.inventory.uni.list - relationship: implementation.matrix - group: mef.sonata.api-target.inventory.uni.list - - targetAssetKey: mef.sonata.api-target.inventory.eline.list - relationship: implementation.target - group: mef.sonata.api-target.inventory.eline.list - - targetAssetKey: mef.sonata.api.matrix.inventory.eline.list - relationship: implementation.matrix - group: mef.sonata.api-target.inventory.eline.list - - targetAssetKey: mef.sonata.api-target.inventory.eline.read - relationship: implementation.target - group: mef.sonata.api-target.inventory.eline.read - - targetAssetKey: mef.sonata.api.matrix.inventory.eline.read - relationship: implementation.matrix - group: mef.sonata.api-target.inventory.eline.read - - targetAssetKey: mef.sonata.api-target.inventory.uni.read - relationship: implementation.target - group: mef.sonata.api-target.inventory.uni.read - - targetAssetKey: mef.sonata.api.matrix.inventory.uni.read - relationship: implementation.matrix - group: mef.sonata.api-target.inventory.uni.read - - targetAssetKey: mef.sonata.api-target-mapper.inventory.eline.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.inventory.eline.read - - targetAssetKey: mef.sonata.api-target-mapper.inventory.uni.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.inventory.uni.read - - targetAssetKey: mef.sonata.api-target-mapper.inventory.eline.list - relationship: implementation.target-mapper - group: mef.sonata.api-target.inventory.eline.list - - targetAssetKey: mef.sonata.api-target-mapper.inventory.uni.list - relationship: implementation.target-mapper - group: mef.sonata.api-target.inventory.uni.list - - targetAssetKey: mef.sonata.api-spec.inventory - relationship: implementation.standard.api-spec \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml deleted file mode 100644 index 52091506..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.notification.yaml +++ /dev/null @@ -1,107 +0,0 @@ ---- -kind: kraken.component.api -apiVersion: v1 -metadata: - key: mef.sonata.api.notification - name: Product notification API - labels: - mef-api-release: grace - order-api-version: v10 - version: 1 -spec: - mappings: - - uri: ${env.target.url} - trigger: - path: /mefApi/listener/notification - method: post - queryParams: - - eventType - metadata: - cacheRequestBody: true - actions: - - id: persist_http_request - actionType: buildin@db - env: - bizType: notification - with: - action: create - properties: - - headers - - queryParameters - - requestBody - preRequest: true - - - id: read-event - actionType: buildin@register-event - env: - eventType: ${query.eventType} - with: - action: read - preRequest: true - - - id: calculate_target_api_via_javascript - actionType: engine@javascript - env: - eventType: ${query.eventType} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - if(input.eventType = 'productOrderStateChangeEvent') { - targetAPIConfigKey = 'mef.sonata.api-target.order.notification.state.change'; - } else if(input.eventType = 'poqStateChangeEvent') { - targetAPIConfigKey = 'mef.sonata.api-target.poq.notification.state.change'; - } else if(input.eventType = 'quoteStateChangeEvent') { - targetAPIConfigKey = 'mef.sonata.api-target.quote.notification.state.change'; - } - let ret = { - targetAPIConfigKey: targetAPIConfigKey - }; - return JSON.stringify(ret); - } - outputKey: event - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${event.targetAPIConfigKey} - mefQuery: ${query} - mefRequestBody: ${body} - entity: ${entity} - eventEntity: ${eventEntity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-request-body - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - successStatus: 201 - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - - - id: persist_http_response - actionType: buildin@db - with: - action: update - properties: - - responseBody - - responseStatusCode - preRequest: false - postRequest: true - order: -4 - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml deleted file mode 100644 index f31e5495..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.order.yaml +++ /dev/null @@ -1,306 +0,0 @@ ---- -kind: kraken.component.api -apiVersion: v1 -metadata: - key: mef.sonata.api.order - name: Product Ordering Management - labels: - mef-api-release: grace - order-api-version: v10 - version: 6 -spec: - supportedProductTypesAndActions: - - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - actionTypes: - - add - - delete - productTypes: - - UNI - - ACCESS_E_LINE - - path: /mefApi/sonata/productOrderingManagement/v10/productOrder/{id} - method: get - productTypes: - - UNI - - ACCESS_E_LINE - mappings: - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder - method: post - metadata: - cacheRequestBody: true - actions: - - id: calculate_order_type_and_action_via_javascript - actionType: engine@javascript - env: - productOrderItem: ${body['productOrderItem'][0]} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - if(input.productOrderItem['product']['productConfiguration']['@type'] == 'UNI' && input.productOrderItem['action'] == 'add') { - targetAPIConfigKey = 'mef.sonata.api-target.order.uni.add'; - matrixConfigKey = 'mef.sonata.api.matrix.order.uni.add' - } else if(input.productOrderItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE' && input.productOrderItem['action'] == 'add') { - targetAPIConfigKey = 'mef.sonata.api-target.order.eline.add'; - matrixConfigKey = 'mef.sonata.api.matrix.order.eline.add' - } else if(input.productOrderItem['product']['productConfiguration']['@type'] == 'UNI' && input.productOrderItem['action'] == 'delete') { - targetAPIConfigKey = 'mef.sonata.api-target.order.uni.delete'; - matrixConfigKey = 'mef.sonata.api.matrix.order.uni.delete' - } else if(input.productOrderItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE' && input.productOrderItem['action'] == 'delete') { - targetAPIConfigKey = 'mef.sonata.api-target.order.eline.delete'; - matrixConfigKey = 'mef.sonata.api.matrix.order.eline.delete' - } else { - targetAPIConfigKey = 'targetKey:notFound'; - } - let ret = { - orderType: input.productOrderItem['product']['productConfiguration']['@type'], - orderAction: input.productOrderItem['action'], - targetAPIConfigKey: targetAPIConfigKey, - matrixConfigKey: matrixConfigKey - }; - return JSON.stringify(ret); - } - outputKey: order - - id: mapping_matrix_check_order - actionType: buildin@mapping-matrix-checker - env: - mappingMatrixKey: ${order.matrixConfigKey} - targetKey: ${order.targetAPIConfigKey} - - id: persist_http_request - actionType: buildin@db - env: - bizType: ${order.orderType} - with: - action: create - properties: - - headers - - queryParameters - - requestBody - preRequest: true - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${order.targetAPIConfigKey} - mefQuery: ${query} - mefRequestBody: ${body} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-request-body - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body-for-add - actionType: buildin@modify-response-body - with: - engine: spel - successStatus: 201 - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - - - id: persist_http_response - actionType: buildin@db - with: - action: update - properties: - - responseBody - - responseStatusCode - preRequest: false - postRequest: true - order: -4 - - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/productOrder/** - method: get - metadata: - cacheRequestBody: false - actions: - - name: retrieve orderId from path - actionType: buildin@pattern - env: - input: ${path} - pattern: /mefApi/sonata/productOrderingManagement/v10/productOrder/(?.*) - - - id: read request payload by id - actionType: buildin@db - env: - id: ${segment} - blankIdErrMsg: "order id cannot be blank" - notExistedErrMsg: "order id does not exist" - with: - action: read - preRequest: true - - - id: calculate_order_type_for_read_via_javascript - actionType: engine@javascript - env: - bizType: ${entity.bizType} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - if(input.bizType == 'UNI') { - targetAPIConfigKey = 'mef.sonata.api-target.order.uni.read'; - } else if(input.bizType == 'ACCESS_E_LINE') { - targetAPIConfigKey = 'mef.sonata.api-target.order.eline.read'; - } else { - targetAPIConfigKey = 'targetKey:notFound'; - } - let ret = { - orderType: input.bizType, - targetAPIConfigKey: targetAPIConfigKey - }; - return JSON.stringify(ret); - } - outputKey: order - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${order.targetAPIConfigKey} - mefQuery: ${query} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - with: - method: get - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - postResultRender: true - - - trigger: - path: /mefApi/sonata/productOrderingManagement/v10/hub - method: post - metadata: - cacheRequestBody: true - actions: - - - id: calculate_event_types_via_javascript - actionType: engine@javascript - env: - query: ${body.query} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let query = input.query; - let arr = query.split("="); - let eventArr = arr[1].split(","); - let ret = { - "eventTypes": eventArr, - "targetAPIConfigKey": "mef.sonata.api-target.hub.add" - }; - return JSON.stringify(ret); - } - outputKey: event - - id: register-order-event - actionType: buildin@register-event - env: - eventTypes: ${event.eventTypes} - with: - action: register - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${event.targetAPIConfigKey} - mefRequestBody: ${body} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - id: mock-response - actionType: buildin@mock-response - with: - forwardDownstream: false - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - -links: - - targetAssetKey: mef.sonata.api-target.order.eline.add - relationship: implementation.target - group: mef.sonata.api-target.order.eline.add - - targetAssetKey: mef.sonata.api-target.order.eline.delete - relationship: implementation.target - group: mef.sonata.api-target.order.eline.delete - - targetAssetKey: mef.sonata.api-target.order.eline.read - relationship: implementation.target - group: mef.sonata.api-target.order.eline.read - - targetAssetKey: mef.sonata.api-target.order.uni.delete - relationship: implementation.target - group: mef.sonata.api-target.order.uni.delete - - targetAssetKey: mef.sonata.api-target.order.uni.read - relationship: implementation.target - group: mef.sonata.api-target.order.uni.read - - targetAssetKey: mef.sonata.api-target.order.uni.add - relationship: implementation.target - group: mef.sonata.api-target.order.uni.add - - targetAssetKey: mef.sonata.api-spec.order - relationship: implementation.standard.api-spec - - targetAssetKey: mef.sonata.api-target-mapper.order.uni.add - relationship: implementation.target-mapper - group: mef.sonata.api-target.order.uni.add - - targetAssetKey: mef.sonata.api.matrix.order.uni.add - relationship: implementation.matrix - group: mef.sonata.api-target.order.uni.add - - targetAssetKey: mef.sonata.api-target-mapper.order.eline.add - relationship: implementation.target-mapper - group: mef.sonata.api-target.order.eline.add - - targetAssetKey: mef.sonata.api.matrix.order.eline.add - relationship: implementation.matrix - group: mef.sonata.api-target.order.eline.add - - targetAssetKey: mef.sonata.api-target-mapper.order.uni.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.order.uni.read - - targetAssetKey: mef.sonata.api-target-mapper.order.eline.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.order.eline.read - - targetAssetKey: mef.sonata.api-target-mapper.order.uni.delete - relationship: implementation.target-mapper - group: mef.sonata.api-target.order.uni.delete - - targetAssetKey: mef.sonata.api.matrix.order.uni.delete - relationship: implementation.matrix - group: mef.sonata.api-target.order.uni.delete - - targetAssetKey: mef.sonata.api-target-mapper.order.eline.delete - relationship: implementation.target-mapper - group: mef.sonata.api-target.order.eline.delete - - targetAssetKey: mef.sonata.api.matrix.order.eline.delete - relationship: implementation.matrix - group: mef.sonata.api-target.order.eline.delete \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml deleted file mode 100644 index 37e7c4a9..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.product.offering.yaml +++ /dev/null @@ -1,266 +0,0 @@ ---- -kind: kraken.component.api -apiVersion: v1 -metadata: - key: mef.sonata.api.poq - name: Product Offering Qualification (POQ) API Management - labels: - mef-api-release: grace - poq-api-version: v7 - version: 3 -spec: - supportedProductTypesAndActions: - - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - actionTypes: - - add - productTypes: - - UNI - - ACCESS_E_LINE - - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productTypes: - - UNI - - ACCESS_E_LINE - mappings: - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - metadata: - cacheRequestBody: true - actions: - - id: calculate_poq_order_type_and_action_via_javascript - actionType: engine@javascript - env: - productOfferingQualificationItem: ${body['productOfferingQualificationItem'][0]} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - if(input.productOfferingQualificationItem['product']['productConfiguration']['@type'] == 'UNI') { - targetAPIConfigKey = 'mef.sonata.api-target.poq.uni.add'; - } else if(input.productOfferingQualificationItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE') { - targetAPIConfigKey = 'mef.sonata.api-target.poq.eline.add'; - } else { - targetAPIConfigKey = 'targetKey:notFound'; - } - let ret = { - productOfferingType: input.productOfferingQualificationItem['product']['productConfiguration']['@type'], - targetAPIConfigKey: targetAPIConfigKey - }; - return JSON.stringify(ret); - } - outputKey: productOfferingQualification - - - id: persist_http_request - actionType: buildin@db - env: - bizType: ${productOfferingQualification.productOfferingType} - with: - action: create - properties: - - headers - - queryParameters - - requestBody - preRequest: true - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${productOfferingQualification.targetAPIConfigKey} - mefQuery: ${query} - mefRequestBody: ${body} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-request-body-for-poq-add - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body-for-poq-add - actionType: buildin@modify-response-body - with: - engine: spel - successStatus: 201 - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - mefRequestBody: ${body} - - - actionType: buildin@db - with: - action: update - properties: - - responseBody - - responseStatusCode - preRequest: false - postRequest: true - order: -4 - - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/** - method: get - metadata: - cacheRequestBody: false - actions: - - name: retrieve productOfferingQualification Identifier from path - actionType: buildin@pattern - env: - input: ${path} - pattern: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/(?.*) - - - id: read request payload by id - actionType: buildin@db - env: - id: ${segment} - with: - action: read - preRequest: true - - - id: calculate_product_offering_type_read_via_javascript - actionType: engine@javascript - env: - bizType: ${entity.bizType} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - if(input.bizType == 'UNI') { - targetAPIConfigKey = 'mef.sonata.api-target.poq.uni.read'; - } else if(input.bizType == 'ACCESS_E_LINE') { - targetAPIConfigKey = 'mef.sonata.api-target.poq.eline.read'; - } else { - targetAPIConfigKey = 'notImplemented'; - } - let ret = { - productOfferingType: input.bizType, - targetAPIConfigKey: targetAPIConfigKey - }; - return JSON.stringify(ret); - } - outputKey: productOfferingQualification - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${productOfferingQualification.targetAPIConfigKey} - mefQuery: ${query} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-request-body - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - - - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/hub - method: post - metadata: - cacheRequestBody: true - actions: - - - id: calculate_poq_event_types_via_javascript - actionType: engine@javascript - env: - query: ${body.query} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let query = input.query; - let arr = query.split("="); - let eventArr = arr[1].split(","); - let ret = { - "eventTypes": eventArr, - "targetAPIConfigKey": "mef.sonata.api-target.hub.add" - }; - return JSON.stringify(ret); - } - outputKey: event - - id: register-poq-event - actionType: buildin@register-event - env: - eventTypes: ${event.eventTypes} - with: - action: register - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${event.targetAPIConfigKey} - mefRequestBody: ${body} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: mock-response - actionType: buildin@mock-response - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} -links: - - targetAssetKey: mef.sonata.api-target.poq.eline.add - relationship: implementation.target - group: mef.sonata.api-target.poq.eline.add - - targetAssetKey: mef.sonata.api-target.poq.eline.read - relationship: implementation.target - group: mef.sonata.api-target.poq.eline.read - - targetAssetKey: mef.sonata.api-target.poq.uni.add - relationship: implementation.target - group: mef.sonata.api-target.poq.uni.add - - targetAssetKey: mef.sonata.api-target.poq.uni.read - relationship: implementation.target - group: mef.sonata.api-target.poq.uni.read - - targetAssetKey: mef.sonata.api-target-mapper.poq.eline.add - relationship: implementation.target-mapper - group: mef.sonata.api-target.poq.eline.add - - targetAssetKey: mef.sonata.api-target-mapper.poq.eline.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.poq.eline.read - - targetAssetKey: mef.sonata.api-target-mapper.poq.uni.add - relationship: implementation.target-mapper - group: mef.sonata.api-target.poq.uni.add - - targetAssetKey: mef.sonata.api-target-mapper.poq.uni.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.poq.uni.read - - targetAssetKey: mef.sonata.api-spec.product.offering.qualification - relationship: implementation.standard.api-spec \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml deleted file mode 100644 index 382ba0c0..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/apis/api.quote.yaml +++ /dev/null @@ -1,344 +0,0 @@ ---- -kind: kraken.component.api -apiVersion: v1 -metadata: - key: mef.sonata.api.quote - name: Quote Management - labels: - mef-api-release: grace - quote-api-version: v8 - version: 8 -spec: - supportedProductTypesAndActions: - - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - actionTypes: - - add - productTypes: - - UNI - - ACCESS_E_LINE - - path: /mefApi/sonata/quoteManagement/v8/quote/{id} - method: get - productTypes: - - UNI - - ACCESS_E_LINE - mappings: - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote - method: post - metadata: - cacheRequestBody: true - actions: - - id: calculate_quote_type_and_action_via_javascript - actionType: engine@javascript - env: - quoteItem: ${body['quoteItem'][0]} - instantSyncQuote: ${body.instantSyncQuote} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - let forwardDownstream = true; - if(input.quoteItem['product']['productConfiguration']['@type'] == 'UNI') { - if(input.instantSyncQuote === true) { - targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.add.sync'; - matrixConfigKey = 'mef.sonata.api.matrix.quote.uni.add.sync' - } else { - targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.add'; - matrixConfigKey = 'mef.sonata.api.matrix.quote.uni.add' - } - } else if(input.quoteItem['product']['productConfiguration']['@type'] == 'ACCESS_E_LINE') { - if(input.instantSyncQuote === true) { - targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.add.sync'; - matrixConfigKey = 'mef.sonata.api.matrix.quote.eline.add.sync' - } else { - targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.add'; - matrixConfigKey = 'mef.sonata.api.matrix.quote.eline.add' - } - } else { - targetAPIConfigKey = 'targetKey:notFound'; - } - let ret = { - quoteType: input.quoteItem['product']['productConfiguration']['@type'], - instantSyncQuote: input.instantSyncQuote, - forwardDownstream: forwardDownstream, - targetAPIConfigKey: targetAPIConfigKey, - matrixConfigKey: matrixConfigKey - }; - return JSON.stringify(ret); - } - outputKey: quote - - - id: mapping_matrix_check_quote - actionType: buildin@mapping-matrix-checker - env: - mappingMatrixKey: ${quote.matrixConfigKey} - targetKey: ${quote.targetAPIConfigKey} - - id: persist_http_request - actionType: buildin@db - env: - bizType: ${quote.quoteType} - with: - action: create - properties: - - headers - - queryParameters - - requestBody - preRequest: true - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${quote.targetAPIConfigKey} - mefQuery: ${query} - mefRequestBody: ${body} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-request-body-for-quote-add - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body-for-quote-add - actionType: buildin@modify-response-body - with: - engine: spel - successStatus: 201 - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - mefRequestBody: ${body} - postResultRender: true - - - actionType: buildin@db - with: - action: update - properties: - - responseBody - - responseStatusCode - - renderedResponseBody - preRequest: false - postRequest: true - order: -4 - - - uri: ${env.target.url} - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/** - method: get - metadata: - cacheRequestBody: false - actions: - - name: retrieve quoteId from path - actionType: buildin@pattern - env: - input: ${path} - pattern: /mefApi/sonata/quoteManagement/v8/quote/(?.*) - - - id: read request payload by id - actionType: buildin@db - env: - id: ${segment} - blankIdErrMsg: "quote id cannot be blank" - notExistedErrMsg: "quote id does not exist" - with: - action: read - preRequest: true - - - id: calculate_quote_type_for_read_via_javascript - actionType: engine@javascript - env: - bizType: ${entity.bizType} - instantSyncQuote: ${entity.request.instantSyncQuote} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - let forwardDownstream = true; - if(input.bizType == 'UNI') { - if(input.instantSyncQuote === true) { - targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.read.sync'; - forwardDownstream = false; - } else { - targetAPIConfigKey = 'mef.sonata.api-target.quote.uni.read'; - } - } else if(input.bizType == 'ACCESS_E_LINE') { - if(input.instantSyncQuote === true) { - targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.read.sync'; - forwardDownstream = false; - } else { - targetAPIConfigKey = 'mef.sonata.api-target.quote.eline.read'; - } - } else { - targetAPIConfigKey = 'targetKey:notFound'; - } - let ret = { - quoteType: input.bizType, - instantSyncQuote: input.instantSyncQuote, - forwardDownstream: forwardDownstream, - targetAPIConfigKey: targetAPIConfigKey - }; - return JSON.stringify(ret); - } - outputKey: quote - - id: load-downstream-api-config-quote-read - actionType: buildin@load-target-api-config - env: - configKey: ${quote.targetAPIConfigKey} - mefQuery: ${query} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: mock-response - actionType: buildin@mock-response - env: - forwardDownstream: ${quote.forwardDownstream} - - - id: modify-request-body - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - - trigger: - path: /mefApi/sonata/quoteManagement/v8/quote/hub - method: post - metadata: - cacheRequestBody: true - actions: - - id: calculate_quote_event_types_via_javascript - actionType: engine@javascript - env: - query: ${body.query} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let query = input.query; - let arr = query.split("="); - let eventArr = arr[1].split(","); - let ret = { - "eventTypes": eventArr, - "targetAPIConfigKey": "mef.sonata.api-target.hub.add" - }; - return JSON.stringify(ret); - } - outputKey: event - - id: register-quote-event - actionType: buildin@register-event - env: - eventTypes: ${event.eventTypes} - with: - action: register - - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${event.targetAPIConfigKey} - mefRequestBody: ${body} - entity: ${entity} - with: - render: true - outputKey: targetApiConfig - - - id: mock-response - actionType: buildin@mock-response - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} -links: - - targetAssetKey: mef.sonata.api-target.quote.eline.add - relationship: implementation.target - group: mef.sonata.api-target.quote.eline.add - - targetAssetKey: mef.sonata.api-target.quote.eline.read - relationship: implementation.target - group: mef.sonata.api-target.quote.eline.read - - targetAssetKey: mef.sonata.api-target.quote.uni.add - relationship: implementation.target - group: mef.sonata.api-target.quote.uni.add - - targetAssetKey: mef.sonata.api-target.quote.uni.read - relationship: implementation.target - group: mef.sonata.api-target.quote.uni.read - - targetAssetKey: mef.sonata.api-target.quote.eline.add.sync - relationship: implementation.target - group: mef.sonata.api-target.quote.eline.add.sync - - targetAssetKey: mef.sonata.api-target.quote.eline.read.sync - relationship: implementation.target - group: mef.sonata.api-target.quote.eline.read.sync - - targetAssetKey: mef.sonata.api-target.quote.uni.add.sync - relationship: implementation.target - group: mef.sonata.api-target.quote.uni.add.sync - - targetAssetKey: mef.sonata.api-target.quote.uni.read.sync - relationship: implementation.target - group: mef.sonata.api-target.quote.uni.read.sync - - targetAssetKey: mef.sonata.api-spec.quote - relationship: implementation.standard.api-spec - - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.add - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.eline.add - - targetAssetKey: mef.sonata.api.matrix.quote.eline.add - relationship: implementation.matrix - group: mef.sonata.api-target.quote.eline.add - - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.add - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.uni.add - - targetAssetKey: mef.sonata.api.matrix.quote.uni.add - relationship: implementation.matrix - group: mef.sonata.api-target.quote.uni.add - - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.uni.read - - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.read - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.eline.read - - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.add.sync - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.eline.add.sync - - targetAssetKey: mef.sonata.api.matrix.quote.eline.add.sync - relationship: implementation.matrix - group: mef.sonata.api-target.quote.eline.add.sync - - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.add.sync - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.uni.add.sync - - targetAssetKey: mef.sonata.api.matrix.quote.uni.add.sync - relationship: implementation.matrix - group: mef.sonata.api-target.quote.uni.add.sync - - targetAssetKey: mef.sonata.api-target-mapper.quote.uni.read.sync - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.uni.read.sync - - targetAssetKey: mef.sonata.api-target-mapper.quote.eline.read.sync - relationship: implementation.target-mapper - group: mef.sonata.api-target.quote.eline.read.sync \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml deleted file mode 100644 index ed3a8d64..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.address.validation.yaml +++ /dev/null @@ -1,42 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.address.validation - name: MEF Sonata API - labels: - mef-api-release: grace - version: 10 -spec: - matrix: - mef.sonata.api-target.address.validate: - - name: provide_alternative_true - path: "$.body.provideAlternative" - expectType: EXPECTED - value: true - - name: address_type_FieldedAddress - path: "$.body.submittedGeographicAddress.['@type']" - expectType: EXPECTED - value: FieldedAddress - code: 400 - - name: address_submittedGeographicAddress_country - path: "$.body.submittedGeographicAddress.['country']" - expectType: EXPECTED_TRUE - value: "${param}" - errorMsg: "submittedGeographicAddress.country can not be null" - code: 400 - - name: address_submittedGeographicAddress_city - path: "$.body.submittedGeographicAddress.['city']" - expectType: EXPECTED_TRUE - value: "${param}" - code: 400 - errorMsg: "submittedGeographicAddress.city can not be null" - - name: address_submittedGeographicAddress_streetName - path: "$.body.submittedGeographicAddress.['streetName']" - expectType: EXPECTED_TRUE - value: "${param}" - errorMsg: "submittedGeographicAddress.streetName can not be null" - code: 400 - - - diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml deleted file mode 100644 index e81e9d0c..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.list.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.inventory.eline.list - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.inventory.eline.list: - - name: productOrderId - path: "$.query.productOrderId" - expectType: EXPECTED_EXIST - value: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml deleted file mode 100644 index 771efeb6..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.eline.read.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.inventory.eline.read - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.inventory.eline.read: - - name: query_productType - path: "$.query.productType" - expectType: EXPECTED_EXIST - value: true - - name: query_buyerId - path: "$.query.buyerId" - expectType: EXPECTED_EXIST - value: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml deleted file mode 100644 index 055f0e33..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.list.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.inventory.uni.list - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.inventory.uni.list: - - name: productOrderId - path: "$.query.productOrderId" - expectType: EXPECTED_EXIST - value: true diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml deleted file mode 100644 index dd26ea16..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.inventory.uni.read.yaml +++ /dev/null @@ -1,20 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.inventory.uni.read - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.inventory.uni.read: - - name: query_productType - path: "$.query.productType" - expectType: EXPECTED_EXIST - value: true - - name: query_buyerId - path: "$.query.buyerId" - expectType: EXPECTED_EXIST - value: true \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml deleted file mode 100644 index 2e477951..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.add.yaml +++ /dev/null @@ -1,60 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.order.eline.add - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.order.eline.add: - - name: product_type_eline_type - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: ACCESS_E_LINE - - name: action_add - path: "$.body.productOrderItem[*].['action']" - expectType: EXPECTED - value: add - - name: relatedContactInformation_emailAddress - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.emailAddress} - errorMsg: "relatedContactInformation.emailAddress should exist in request" - - name: relatedContactInformation_name - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.name} - errorMsg: "relatedContactInformation.name should exist in request" - - name: relatedContactInformation_number - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.number} - errorMsg: "relatedContactInformation.number should exist in request" - - name: relatedContactInformation_role - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.role} - errorMsg: "relatedContactInformation.role should exist in request" - - name: productOrderItem_id - path: "$.body.productOrderItem[0].id" - expectType: EXPECTED_EXIST - value: true - errorMsg: "productOrderItem.id should exist in request" - - name: productOrderItem_requestedItemTerm_name - path: "$.body.productOrderItem[0].requestedItemTerm.name" - expectType: EXPECTED_EXIST - value: true - errorMsg: "requestedItemTerm.name should exist in request" - - name: productRelationship_relationshipType_0 - path: "$.body.productOrderItem[0].product.productRelationship[0].relationshipType" - expectType: EXPECTED_EXIST - value: true - errorMsg: "productRelationship[0].relationshipType should exist in request" - - name: productRelationship_relationshipType_1 - path: "$.body.productOrderItem[0].product.productRelationship[1].relationshipType" - expectType: EXPECTED_EXIST - value: true - errorMsg: "productRelationship[1].relationshipType should exist in request" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml deleted file mode 100644 index b81b7775..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.eline.delete.yaml +++ /dev/null @@ -1,45 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.order.eline.delete - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.order.eline.delete: - - name: product_type_eline - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: ACCESS_E_LINE - - name: action_delete - path: "$.body.productOrderItem[*].['action']" - expectType: EXPECTED - value: delete - - name: relatedContactInformation_emailAddress - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.emailAddress} - errorMsg: "relatedContactInformation.emailAddress should exist in request" - - name: relatedContactInformation_name - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.name} - errorMsg: "relatedContactInformation.name should exist in request" - - name: relatedContactInformation_number - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.number} - errorMsg: "relatedContactInformation.number should exist in request" - - name: relatedContactInformation_role - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.role} - errorMsg: "relatedContactInformation.role should exist in request" - - name: productOrderItem_id - path: "$.body.productOrderItem[0].id" - expectType: EXPECTED_EXIST - value: true - errorMsg: "productOrderItem.id should exist in request" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml deleted file mode 100644 index d76ac96b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.add.yaml +++ /dev/null @@ -1,57 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.order.uni.add - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.order.uni.add: - - name: product_type_UNI - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: UNI - - name: action_add - path: "$.body.productOrderItem[*].['action']" - expectType: EXPECTED - value: add - - name: productOrderItem_product_place_role - path: "$.body.productOrderItem[0].product.place[0].role" - expectType: EXPECTED_EXIST - value: true - - name: productOrderItem_product_place_@type - path: "$.body.productOrderItem[0].product.place[0].@type" - expectType: EXPECTED_EXIST - value: true - - name: relatedContactInformation_emailAddress - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.emailAddress} - errorMsg: "relatedContactInformation.emailAddress should exist in request" - - name: relatedContactInformation_name - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.name} - errorMsg: "relatedContactInformation.name should exist in request" - - name: relatedContactInformation_number - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.number} - errorMsg: "relatedContactInformation.number should exist in request" - - name: relatedContactInformation_role - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.role} - errorMsg: "relatedContactInformation.role should exist in request" - - name: productOrderItem_id - path: "$.body.productOrderItem[0].id" - expectType: EXPECTED_EXIST - value: true - errorMsg: "productOrderItem.id should exist in request" - - name: productOrderItem_requestedItemTerm_name - path: "$.body.productOrderItem[0].requestedItemTerm.name" - expectType: EXPECTED_EXIST - value: true diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml deleted file mode 100644 index c57218d4..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.order.uni.delete.yaml +++ /dev/null @@ -1,45 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.order.uni.delete - name: MEF Sonata API - labels: - mef-api-release: grace - version: 18 -spec: - matrix: - mef.sonata.api-target.order.uni.delete: - - name: product_type_uni - path: "$.body.productOrderItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: UNI - - name: action_delete - path: "$.body.productOrderItem[*].['action']" - expectType: EXPECTED - value: delete - - name: relatedContactInformation_emailAddress - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.emailAddress} - errorMsg: "relatedContactInformation.emailAddress should exist in request" - - name: relatedContactInformation_name - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.name} - errorMsg: "relatedContactInformation.name should exist in request" - - name: relatedContactInformation_number - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.number} - errorMsg: "relatedContactInformation.number should exist in request" - - name: relatedContactInformation_role - path: "$.body.relatedContactInformation[*]" - expectType: EXPECTED_TRUE - value: ${param.role} - errorMsg: "relatedContactInformation.role should exist in request" - - name: productOrderItem_id - path: "$.body.productOrderItem[0].id" - expectType: EXPECTED_EXIST - value: true - errorMsg: "productOrderItem.id should exist in request" diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml deleted file mode 100644 index f088c02c..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.sync.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.quote.eline.add.sync - name: MEF Sonata API - labels: - mef-api-release: grace - version: 14 -spec: - matrix: - mef.sonata.api-target.quote.eline.add.sync: - - name: product_type_eline - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: ACCESS_E_LINE - - name: action_add - path: "$.body.quoteItem[*].['action']" - expectType: EXPECTED - value: add - - name: syn_mode_true - path: "$.body.instantSyncQuote" - expectType: EXPECTED - value: true - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expectType: EXPECTED - value: firm - - name: quoteItem[0].product.place[0].role - path: "$.body.quoteItem[0].product.place[0].role" - expectType: EXPECTED - value: INSTALL_LOCATION - - name: quoteItem[0].product.place[0].@type - path: "$.body.quoteItem[0].product.place[0].@type" - expectType: EXPECTED - value: GeographicAddressRef \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml deleted file mode 100644 index 4bc3d050..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.eline.add.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.quote.eline.add - name: MEF Sonata API - labels: - mef-api-release: grace - version: 14 -spec: - matrix: - mef.sonata.api-target.quote.eline.add: - - name: enabled - expectType: EXPECTED - value: false - - name: product_type_eline - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: ACCESS_E_LINE - - name: action_add - path: "$.body.quoteItem[*].['action']" - expectType: EXPECTED - value: add - - name: syn_mode_false - path: "$.body.instantSyncQuote" - expectType: EXPECTED - value: false - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expectType: EXPECTED - value: firm diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml deleted file mode 100644 index 91b7ad0e..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.sync.yaml +++ /dev/null @@ -1,36 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.quote.uni.add.sync - name: MEF Sonata API - labels: - mef-api-release: grace - version: 14 -spec: - matrix: - mef.sonata.api-target.quote.uni.add.sync: - - name: product_type_UNI - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: UNI - - name: action_add - path: "$.body.quoteItem[*].['action']" - expectType: EXPECTED - value: add - - name: syn_mode_true - path: "$.body.instantSyncQuote" - expectType: EXPECTED - value: true - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expectType: EXPECTED - value: firm - - name: quoteItem[0].product.place[0].role - path: "$.body.quoteItem[0].product.place[0].role" - expectType: EXPECTED - value: INSTALL_LOCATION - - name: quoteItem[0].product.place[0].@type - path: "$.body.quoteItem[0].product.place[0].@type" - expectType: EXPECTED - value: GeographicAddressRef diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml deleted file mode 100644 index 52657801..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/mapping-matrix/mapping.matrix.quote.uni.add.yaml +++ /dev/null @@ -1,31 +0,0 @@ ---- -kind: kraken.product.mapping.matrix -apiVersion: v1 -metadata: - key: mef.sonata.api.matrix.quote.uni.add - name: MEF Sonata API - labels: - mef-api-release: grace - version: 14 -spec: - matrix: - mef.sonata.api-target.quote.uni.add: - - name: enabled - expectType: EXPECTED - value: false - - name: product_type_UNI - path: "$.body.quoteItem[*].product.productConfiguration.['@type']" - expectType: EXPECTED - value: UNI - - name: action_add - path: "$.body.quoteItem[*].['action']" - expectType: EXPECTED - value: add - - name: syn_mode_false - path: "$.body.instantSyncQuote" - expectType: EXPECTED - value: false - - name: buyer.requested.quote.level.firm - path: "$.body.buyerRequestedQuoteLevel" - expectType: EXPECTED - value: firm diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml deleted file mode 100644 index f744c8cc..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.customized.yaml +++ /dev/null @@ -1,734 +0,0 @@ -openapi: 3.0.1 -info: - description: | - **This file forms part of MEF 121** - - This API implements Business Requirements described in MEF 79 - - It allows the Buyer to retrieve address information from the Seller, including - exact formats, for addresses known to the Seller. - - List of supported use cases: - - - Validate Address - - Retrieve Address by Identifier - - Copyright 2021 MEF Forum and its contributors - - This file includes content based on the TM Forum Geographic Address API - (TMF673 v4.0.1) available at - https://github.com/tmforum-apis/TMF673_GeographicAddress, which is licensed - by the TM Forum under the Apache License version 2.0. Such content has been - modified by the MEF Forum and its contributors. - - - title: Geographic Address Management - version: 7.0.1 -servers: - - url: 'https://{serverBase}/mefApi/sonata/geographicAddressManagement/v7/' - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -tags: - - name: geographicAddressValidation - - name: geographicAddress - - name: events subscription -paths: - /geographicAddressValidation: - post: - description: This operation creates a GeographicAddressValidation entity. - operationId: createGeographicAddressValidation - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/GeographicAddressValidation_Create' - description: The GeographicAddressValidation to be created - required: true - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/GeographicAddressValidation' - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: - Unprocessable entity due to the business validation problems - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Creates a GeographicAddressValidation - tags: - - geographicAddressValidation - x-codegen-request-body-name: geographicAddressValidation - '/geographicAddress/{id}': - get: - description: >- - This operation retrieves a GeographicAddress entity. - operationId: retrieveGeographicAddress - parameters: - - description: Identifier of the GeographicAddress - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/GeographicAddress' - description: OK - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Retrieves a GeographicAddress by ID - tags: - - geographicAddress -components: - schemas: - Error400Code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required query-string - parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - type: string - Error: - description: > - Standard Class used to describe API response error Not intended to be - used directly. The `code` in the HTTP header is used as a discriminator - for the type of error returned in runtime. - properties: - reason: - description: >- - Text that explains the reason for error. This can be shown to a - client user. - maxLength: 255 - type: string - message: - description: >- - Text that provides mode details and corrective actions related to - the error. This can be shown to a client user. - type: string - referenceError: - description: URL pointing to documentation describing the error - format: uri - type: string - required: - - reason - type: object - Error400: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error400Code' - required: - - code - type: object - description: - 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' - Error401: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error401Code' - required: - - code - type: object - description: - 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' - Error401Code: - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - type: string - Error403: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error403Code' - required: - - code - type: object - description: - 'Forbidden. (https://tools.ietf.org/html/rfc7231#section-6.5.3)' - Error403Code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - type: string - Error404: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - notFound: A current representation for the target resource - not found - enum: - - notFound - type: string - required: - - code - type: object - description: >- - Resource for the requested path not found. - (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error422: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused - the validation issue. It is highly recommended that this - property should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - required: - - code - type: object - description: >- - Unprocessable entity due to a business validation problem. - (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - type: string - Error500: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - internalError: Internal server error - the server encountered - an unexpected condition that prevented it from fulfilling the - request. - enum: - - internalError - type: string - required: - - code - type: object - description: >- - Internal Server Error. - (https://tools.ietf.org/html/rfc7231#section-6.6.1) - FieldedAddress: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - country: - description: The country that the address is in - type: string - streetType: - description: >- - The type of street (e.g., alley, avenue, boulevard, brae, - crescent, drive, highway, lane, terrace, parade, place, tarn, - way, wharf) - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in a US urban property address - type: string - city: - description: The city that the address is in - type: string - streetNr: - description: >- - Number identifying a specific property on a public street. It - may be combined with streetNrLast for ranged addresses. MEF 79 - defines it as required however as in certain countries it is - not used we make it optional in API. - type: string - locality: - description: The locality that the address is in - type: string - postcode: - description: >- - A descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as zip code) MEF 79 - defines it as required however as in certain countries it is - not used we make it optional in API. - type: string - streetNrLast: - description: - Last number in a range of street numbers allocated to a - property - type: string - streetNrSuffix: - description: The first street number suffix - type: string - streetName: - description: Name of the street or other street type - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - streetNrLastSuffix: - description: Last street number suffix for a ranged address - type: string - geographicSubAddress: - $ref: '#/components/schemas/GeographicSubAddress' - description: - Additional fields used to specify an address, as detailed as - possible. - streetSuffix: - description: A modifier denoting a relative direction - type: string - required: - - city - - country - - streetName - type: object - description: >- - A type of Address that has a discrete field and value for each type of - boundary or identifier down to the lowest level of detail. For example - "street number" is one field, "street name" is another field, etc. - Reference: MEF 79 (Sn 8.9.2) - FormattedAddress: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - country: - description: The country that the address is in - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in a US urban property address - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - city: - description: The city that the address is in - type: string - addrLine2: - description: The second address line in a formatted address - type: string - addrLine1: - description: The first address line in a formatted address - type: string - locality: - description: >- - An area of defined or undefined boundaries within a local - authority or other legislatively defined area, usually rural or - semi-rural in nature - type: string - postcode: - description: >- - A descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as ZIP code) - type: string - required: - - addrLine1 - - city - - country - type: object - description: >- - A type of Address that has discrete fields for each type of boundary or - identifier with the exception of street and more specific location - details, which are combined into a maximum of two strings based on - local postal addressing conventions. Reference: MEF 79 (Sn 8.9.3) - GeographicAddress: - description: >- - Structured textual way of describing how to find a property in an urban - area (country properties are often defined differently). - - Note: Address corresponds to SID UrbanPropertyAddress - discriminator: - mapping: - FieldedAddress: '#/components/schemas/FieldedAddress' - FormattedAddress: '#/components/schemas/FormattedAddress' - MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' - GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' - propertyName: '@type' - properties: - hasPublicSite: - description: >- - This attribute specifies if that Address contains Service Sites - that are public such as Meet-Me-Rooms at an interconnect location - or a shared telecom room in the basement of a multi-tenant building - readOnly: true - type: boolean - '@type': - description: > - This field is used as discriminator. The value is the name of one - of the types that inherit from it using 'allOf', i.e. one of - FieldedAddress, FormattedAddress, GeographicAddressLabel, - MEFGeographicPoint. Moreover, it might discriminate for an - additional related place as defined in '@schemaLocation'. - type: string - allowsNewSite: - description: >- - This attribute specifies if a Buyer must use one of the known - existing Service Sites at this location for any Products delivered - to this Address. For example, if a particular building owner - mandated that all interconnects be done in a shared Public - Meet-Me-Room, this attribute would be set to False for that - Address. - readOnly: true - type: boolean - id: - description: Unique identifier of the place - readOnly: true - type: string - href: - description: Unique reference of the place - readOnly: true - type: string - '@schemaLocation': - description: >- - A URI to a JSON-Schema file that defines additional attributes and - relationships. May be used to define additional GeographicAddress - types. Usage of this attribute must be agreed upon between Buyer - and Seller. - format: uri - type: string - associatedGeographicAddress: - $ref: '#/components/schemas/FieldedAddress' - readOnly: true - description: - A Fielded Address that is associated with the Geographic Point or - the Geographic Address Label. - required: - - '@type' - type: object - GeographicAddressLabel: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - externalReferenceId: - description: >- - The unique reference to an Address as provided by the - Administrative Authority. - type: string - externalReferenceType: - description: >- - The organization or standard from the organization that - administers this Geographic Address Label ensuring it is unique - within the Administrative Authority. The value(s) to be used - are to be agreed during the onboarding. For North American - providers this would normally be CLLI (Common Language Location - Identifier) code. - type: string - required: - - externalReferenceId - - externalReferenceType - type: object - description: >- - A unique identifier controlled by a generally accepted independent - administrative authority that specifies a fixed geographical location. - - Reference: MEF 79 (Sn 8.9.4) - GeographicAddressValidation: - description: This resource is used to manage address validation response. - properties: - validationResult: - $ref: '#/components/schemas/MEFValidationResultType' - description: - Result of the address validation (success, partial, fail) - alternateGeographicAddress: - items: - $ref: '#/components/schemas/GeographicAddress' - type: array - description: | - An array of zero or more Addresses known to the Seller that are - considered by the Seller to match the submittedGeographicAddress. - Not including the bestMatchAddress. MEF: Alternatives should be - provided regardless of whether best match was found. - provideAlternative: - description: > - Indicator provided by the requester to specify if alternate - addresses must be provided in case of partial or fail result. MEF: - The attribute is kept for TMF API compliance. MEF requires this - attribute always to be set to 'true'. Alternatives should be - provided regardless of whether best match was found. The Seller is - allowed not to implement the support for 'false' - type: boolean - submittedGeographicAddress: - $ref: '#/components/schemas/GeographicAddress' - description: - 'The address as submitted to validation. MEF: Structure used by the - buyer to request geographic address validation' - bestMatchGeographicAddress: - $ref: '#/components/schemas/GeographicAddress' - description: - Represents that the Seller is confident this is likely a direct - match to the submittedGeographicAddress - required: - - provideAlternative - - submittedGeographicAddress - type: object - GeographicAddressValidation_Create: - description: >- - This resource is used to manage address validation request. - - - Skipped properties: alternateGeographicAddress, - bestMatchGeographicAddress, validationResult. - properties: - provideAlternative: - description: > - Indicator provided by the requester to specify if alternate - addresses must be provided in case of partial or fail result. MEF: - The attribute is kept for TMF API compliance. MEF requires this - attribute always to be set to 'true'. Alternatives should be - provided regardless of whether best match was found. The Seller is - allowed not to implement the support for 'false' - type: boolean - submittedGeographicAddress: - $ref: '#/components/schemas/GeographicAddress' - description: - 'The address as submitted to validation. MEF: Structure used by the - buyer to request geographic address validation' - required: - - provideAlternative - - submittedGeographicAddress - type: object - GeographicSubAddress: - description: - 'Additional fields used to specify an address, as detailed as possible.' - properties: - buildingName: - description: > - Allows for identification of places that require building name as - part of addressing information - type: string - subUnit: - description: >- - Representation of a MEFSubUnit It is used for describing subunit - within a subAddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - items: - $ref: '#/components/schemas/MEFSubUnit' - type: array - levelType: - description: Describes level types within a building - type: string - levelNumber: - description: - 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT - 2' - type: string - privateStreetNumber: - description: Private streets numbers internal to a private street - type: string - privateStreetName: - description: >- - Private streets internal to a property (e.g. a university) may have - internal names that are not recorded by the land title office - type: string - type: object - MEFGeographicPoint: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - spatialRef: - description: >- - The spatial reference system used to determine the coordinates. - The system used and the value of this field are to be agreed - during the onboarding process. - type: string - x: - description: >- - The latitude expressed in the format specified by the - `spacialRef` - type: string - 'y': - description: >- - The longitude expressed in the format specified by the - `spacialRef` - type: string - z: - description: >- - The elevation expressed in the format specified by the - `spacialRef` - type: string - required: - - spatialRef - - x - - 'y' - type: object - description: > - A MEFGeographicPoint defines a geographic point through coordinates. - Reference: MEF 79 (Sn 8.9.5), MEF 79.0.2 (Sn 8.9.5) - MEFSubUnit: - description: Allows for sub unit identification - properties: - subUnitNumber: - description: >- - The discriminator used for the subunit, often just a simple number - but may also be a range. - type: string - subUnitType: - description: >- - The type of subunit e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - type: string - required: - - subUnitNumber - - subUnitType - type: object - MEFValidationResultType: - description: | - Result of the address validation: - - success - best match found, - - partial - no best match but alternatives available, - - fail - neither best match nor alternatives provided - enum: - - success - - partial - - fail - type: string diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml deleted file mode 100644 index b14d15a8..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/geographicAddressManagement.api.yaml +++ /dev/null @@ -1,735 +0,0 @@ -openapi: 3.0.1 -info: - description: | - **This file forms part of MEF 121** - - This API implements Business Requirements described in MEF 79 - - It allows the Buyer to retrieve address information from the Seller, including - exact formats, for addresses known to the Seller. - - List of supported use cases: - add some text - - - Validate Address - - Retrieve Address by Identifier - - Copyright 2021 MEF Forum and its contributors - - This file includes content based on the TM Forum Geographic Address API - (TMF673 v4.0.1) available at - https://github.com/tmforum-apis/TMF673_GeographicAddress, which is licensed - by the TM Forum under the Apache License version 2.0. Such content has been - modified by the MEF Forum and its contributors. - - - title: Geographic Address Management - version: 7.0.1 -servers: - - url: 'https://{serverBase}/mefApi/sonata/geographicAddressManagement/v7/' - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -tags: - - name: geographicAddressValidation - - name: geographicAddress - - name: events subscription -paths: - /geographicAddressValidation: - post: - description: This operation creates a GeographicAddressValidation entity. - operationId: createGeographicAddressValidation - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/GeographicAddressValidation_Create' - description: The GeographicAddressValidation to be created - required: true - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/GeographicAddressValidation' - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: - Unprocessable entity due to the business validation problems - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Creates a GeographicAddressValidation - tags: - - geographicAddressValidation - x-codegen-request-body-name: geographicAddressValidation - '/geographicAddress/{id}': - get: - description: >- - This operation retrieves a GeographicAddress entity. - operationId: retrieveGeographicAddress - parameters: - - description: Identifier of the GeographicAddress - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/GeographicAddress' - description: OK - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Retrieves a GeographicAddress by ID - tags: - - geographicAddress -components: - schemas: - Error400Code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required query-string - parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - type: string - Error: - description: > - Standard Class used to describe API response error Not intended to be - used directly. The `code` in the HTTP header is used as a discriminator - for the type of error returned in runtime. - properties: - reason: - description: >- - Text that explains the reason for error. This can be shown to a - client user. - maxLength: 255 - type: string - message: - description: >- - Text that provides mode details and corrective actions related to - the error. This can be shown to a client user. - type: string - referenceError: - description: URL pointing to documentation describing the error - format: uri - type: string - required: - - reason - type: object - Error400: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error400Code' - required: - - code - type: object - description: - 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' - Error401: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error401Code' - required: - - code - type: object - description: - 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' - Error401Code: - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - type: string - Error403: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error403Code' - required: - - code - type: object - description: - 'Forbidden. (https://tools.ietf.org/html/rfc7231#section-6.5.3)' - Error403Code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - type: string - Error404: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - notFound: A current representation for the target resource - not found - enum: - - notFound - type: string - required: - - code - type: object - description: >- - Resource for the requested path not found. - (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error422: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused - the validation issue. It is highly recommended that this - property should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - required: - - code - type: object - description: >- - Unprocessable entity due to a business validation problem. - (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - type: string - Error500: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - internalError: Internal server error - the server encountered - an unexpected condition that prevented it from fulfilling the - request. - enum: - - internalError - type: string - required: - - code - type: object - description: >- - Internal Server Error. - (https://tools.ietf.org/html/rfc7231#section-6.6.1) - FieldedAddress: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - country: - description: The country that the address is in - type: string - streetType: - description: >- - The type of street (e.g., alley, avenue, boulevard, brae, - crescent, drive, highway, lane, terrace, parade, place, tarn, - way, wharf) - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in a US urban property address - type: string - city: - description: The city that the address is in - type: string - streetNr: - description: >- - Number identifying a specific property on a public street. It - may be combined with streetNrLast for ranged addresses. MEF 79 - defines it as required however as in certain countries it is - not used we make it optional in API. - type: string - locality: - description: The locality that the address is in - type: string - postcode: - description: >- - A descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as zip code) MEF 79 - defines it as required however as in certain countries it is - not used we make it optional in API. - type: string - streetNrLast: - description: - Last number in a range of street numbers allocated to a - property - type: string - streetNrSuffix: - description: The first street number suffix - type: string - streetName: - description: Name of the street or other street type - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - streetNrLastSuffix: - description: Last street number suffix for a ranged address - type: string - geographicSubAddress: - $ref: '#/components/schemas/GeographicSubAddress' - description: - Additional fields used to specify an address, as detailed as - possible. - streetSuffix: - description: A modifier denoting a relative direction - type: string - required: - - city - - country - - streetName - type: object - description: >- - A type of Address that has a discrete field and value for each type of - boundary or identifier down to the lowest level of detail. For example - "street number" is one field, "street name" is another field, etc. - Reference: MEF 79 (Sn 8.9.2) - FormattedAddress: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - country: - description: The country that the address is in - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in a US urban property address - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - city: - description: The city that the address is in - type: string - addrLine2: - description: The second address line in a formatted address - type: string - addrLine1: - description: The first address line in a formatted address - type: string - locality: - description: >- - An area of defined or undefined boundaries within a local - authority or other legislatively defined area, usually rural or - semi-rural in nature - type: string - postcode: - description: >- - A descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as ZIP code) - type: string - required: - - addrLine1 - - city - - country - type: object - description: >- - A type of Address that has discrete fields for each type of boundary or - identifier with the exception of street and more specific location - details, which are combined into a maximum of two strings based on - local postal addressing conventions. Reference: MEF 79 (Sn 8.9.3) - GeographicAddress: - description: >- - Structured textual way of describing how to find a property in an urban - area (country properties are often defined differently). - - Note: Address corresponds to SID UrbanPropertyAddress - discriminator: - mapping: - FieldedAddress: '#/components/schemas/FieldedAddress' - FormattedAddress: '#/components/schemas/FormattedAddress' - MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' - GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' - propertyName: '@type' - properties: - hasPublicSite: - description: >- - This attribute specifies if that Address contains Service Sites - that are public such as Meet-Me-Rooms at an interconnect location - or a shared telecom room in the basement of a multi-tenant building - readOnly: true - type: boolean - '@type': - description: > - This field is used as discriminator. The value is the name of one - of the types that inherit from it using 'allOf', i.e. one of - FieldedAddress, FormattedAddress, GeographicAddressLabel, - MEFGeographicPoint. Moreover, it might discriminate for an - additional related place as defined in '@schemaLocation'. - type: string - allowsNewSite: - description: >- - This attribute specifies if a Buyer must use one of the known - existing Service Sites at this location for any Products delivered - to this Address. For example, if a particular building owner - mandated that all interconnects be done in a shared Public - Meet-Me-Room, this attribute would be set to False for that - Address. - readOnly: true - type: boolean - id: - description: Unique identifier of the place - readOnly: true - type: string - href: - description: Unique reference of the place - readOnly: true - type: string - '@schemaLocation': - description: >- - A URI to a JSON-Schema file that defines additional attributes and - relationships. May be used to define additional GeographicAddress - types. Usage of this attribute must be agreed upon between Buyer - and Seller. - format: uri - type: string - associatedGeographicAddress: - $ref: '#/components/schemas/FieldedAddress' - readOnly: true - description: - A Fielded Address that is associated with the Geographic Point or - the Geographic Address Label. - required: - - '@type' - type: object - GeographicAddressLabel: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - externalReferenceId: - description: >- - The unique reference to an Address as provided by the - Administrative Authority. - type: string - externalReferenceType: - description: >- - The organization or standard from the organization that - administers this Geographic Address Label ensuring it is unique - within the Administrative Authority. The value(s) to be used - are to be agreed during the onboarding. For North American - providers this would normally be CLLI (Common Language Location - Identifier) code. - type: string - required: - - externalReferenceId - - externalReferenceType - type: object - description: >- - A unique identifier controlled by a generally accepted independent - administrative authority that specifies a fixed geographical location. - - Reference: MEF 79 (Sn 8.9.4) - GeographicAddressValidation: - description: This resource is used to manage address validation response. - properties: - validationResult: - $ref: '#/components/schemas/MEFValidationResultType' - description: - Result of the address validation (success, partial, fail) - alternateGeographicAddress: - items: - $ref: '#/components/schemas/GeographicAddress' - type: array - description: | - An array of zero or more Addresses known to the Seller that are - considered by the Seller to match the submittedGeographicAddress. - Not including the bestMatchAddress. MEF: Alternatives should be - provided regardless of whether best match was found. - provideAlternative: - description: > - Indicator provided by the requester to specify if alternate - addresses must be provided in case of partial or fail result. MEF: - The attribute is kept for TMF API compliance. MEF requires this - attribute always to be set to 'true'. Alternatives should be - provided regardless of whether best match was found. The Seller is - allowed not to implement the support for 'false' - type: boolean - submittedGeographicAddress: - $ref: '#/components/schemas/GeographicAddress' - description: - 'The address as submitted to validation. MEF: Structure used by the - buyer to request geographic address validation' - bestMatchGeographicAddress: - $ref: '#/components/schemas/GeographicAddress' - description: - Represents that the Seller is confident this is likely a direct - match to the submittedGeographicAddress - required: - - provideAlternative - - submittedGeographicAddress - type: object - GeographicAddressValidation_Create: - description: >- - This resource is used to manage address validation request. - - - Skipped properties: alternateGeographicAddress, - bestMatchGeographicAddress, validationResult. - properties: - provideAlternative: - description: > - Indicator provided by the requester to specify if alternate - addresses must be provided in case of partial or fail result. MEF: - The attribute is kept for TMF API compliance. MEF requires this - attribute always to be set to 'true'. Alternatives should be - provided regardless of whether best match was found. The Seller is - allowed not to implement the support for 'false' - type: boolean - submittedGeographicAddress: - $ref: '#/components/schemas/GeographicAddress' - description: - 'The address as submitted to validation. MEF: Structure used by the - buyer to request geographic address validation' - required: - - provideAlternative - - submittedGeographicAddress - type: object - GeographicSubAddress: - description: - 'Additional fields used to specify an address, as detailed as possible.' - properties: - buildingName: - description: > - Allows for identification of places that require building name as - part of addressing information - type: string - subUnit: - description: >- - Representation of a MEFSubUnit It is used for describing subunit - within a subAddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - items: - $ref: '#/components/schemas/MEFSubUnit' - type: array - levelType: - description: Describes level types within a building - type: string - levelNumber: - description: - 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT - 2' - type: string - privateStreetNumber: - description: Private streets numbers internal to a private street - type: string - privateStreetName: - description: >- - Private streets internal to a property (e.g. a university) may have - internal names that are not recorded by the land title office - type: string - type: object - MEFGeographicPoint: - allOf: - - $ref: '#/components/schemas/GeographicAddress' - - properties: - spatialRef: - description: >- - The spatial reference system used to determine the coordinates. - The system used and the value of this field are to be agreed - during the onboarding process. - type: string - x: - description: >- - The latitude expressed in the format specified by the - `spacialRef` - type: string - 'y': - description: >- - The longitude expressed in the format specified by the - `spacialRef` - type: string - z: - description: >- - The elevation expressed in the format specified by the - `spacialRef` - type: string - required: - - spatialRef - - x - - 'y' - type: object - description: > - A MEFGeographicPoint defines a geographic point through coordinates. - Reference: MEF 79 (Sn 8.9.5), MEF 79.0.2 (Sn 8.9.5) - MEFSubUnit: - description: Allows for sub unit identification - properties: - subUnitNumber: - description: >- - The discriminator used for the subunit, often just a simple number - but may also be a range. - type: string - subUnitType: - description: >- - The type of subunit e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - type: string - required: - - subUnitNumber - - subUnitType - type: object - MEFValidationResultType: - description: | - Result of the address validation: - - success - best match found, - - partial - no best match but alternatives available, - - fail - neither best match nor alternatives provided - enum: - - success - - partial - - fail - type: string diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml deleted file mode 100644 index c3594169..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.customized.yaml +++ /dev/null @@ -1,1056 +0,0 @@ -openapi: 3.0.1 -info: - description: | - **This file forms part of MEF 116** - - This API implements Business Requirements described in MEF 81 - - It allows the Buyer to retrieve the information about existing Product - instances from Seller's Product Inventory. - - List of supported use cases: - - Retrieve Product List - - Retrieve Product by Identifier - - Copyright 2021 MEF Forum and its contributors. - - This file includes content based on the TM Forum Product Inventory - Management API (TMF637 v4.0.0) available at - https://github.com/tmforum-apis/TMF637_ProductInventory, which is licensed - by the TM Forum under the Apache License version 2.0. Such content has been - modified by the MEF Forum and its contributors. - title: Product Inventory Management - version: 7.0.2 -servers: - - url: "https://{serverBase}/mefApi/sonata/productInventory/v7/" - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -security: - - oauth2MEFLSOAPI: - - default -tags: - - name: product - - name: events subscription -paths: - /product: - get: - description: This operation lists or finds Product entities - operationId: listProduct - parameters: - - description: The status of the product - in: query - name: status - required: false - schema: - type: string - enum: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - - description: A reference to a product spec by id - in: query - name: productSpecificationId - required: false - schema: - type: string - - description: A reference to a product offering by id - in: query - name: productOfferingId - required: false - schema: - type: string - - description: A reference to the externalId provided in the order - in: query - name: externalId - required: false - schema: - type: string - - description: A site identifier which is associated to the product - in: query - name: geographicalSiteId - required: false - schema: - type: string - - description: |- - This criteria allows to retrieve all Product records with a Product Relationship to a specified Product. - E.g. All Products related to Product with ID 5 - in: query - name: relatedProductId - required: false - schema: - type: string - - description: The Billing Account associated with the Product. - in: query - name: billingAccountId - required: false - schema: - type: string - - description: Identifies Product Order associated with the Product - in: query - name: productOrderId - required: false - schema: - type: string - - description: Less than the date that is the initial install date for the Product - in: query - name: startDate.lt - required: false - schema: - type: string - format: date-time - - description: - Greater than the date that is the initial install date for the - Product - in: query - name: startDate.gt - required: false - schema: - type: string - format: date-time - - description: - Less than date that the last change affecting this Product was - completed - in: query - name: lastUpdateDate.lt - required: false - schema: - type: string - format: date-time - - description: - Greater than the date that the last change affecting this Product - was completed - in: query - name: lastUpdateDate.gt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 81 (Sn 8.3) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 81 (Sn 8.3) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/MEFProduct_Find" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - listProduct - summary: List or find Product objects - tags: - - product - /product/{id}: - get: - description: This operation retrieves a Product entity. - operationId: retrieveProduct - parameters: - - description: Identifier of the Product - in: path - name: id - required: true - schema: - type: string - - description: Comma-separated properties to provide in response - in: query - name: fields - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 81 (Sn 8.3) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 81 (Sn 8.3) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProduct" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - retrieveProduct - summary: Retrieves a Product by ID - tags: - - product -components: - schemas: - Error400Code: - type: string - description: |- - One of the following error codes: - - missingQueryParameter: The URI is missing a required query-string parameter - - missingQueryValue: The URI is missing a required query-string parameter value - - invalidQuery: The query section of the URI is invalid. - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - Duration: - type: object - description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." - properties: - amount: - type: integer - description: "Duration (number of seconds, minutes, hours, etc.)" - units: - $ref: "#/components/schemas/TimeUnit" - required: - - amount - - units - Error: - type: object - description: | - Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. - properties: - reason: - type: string - description: - Text that explains the reason for the error. This can be shown - to a client user. - maxLength: 255 - message: - type: string - description: - Text that provides mode details and corrective actions related - to the error. This can be shown to a client user. - referenceError: - type: string - format: uri - description: URL pointing to documentation describing the error - required: - - reason - Error400: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error400Code" - required: - - code - description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) - Error401: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error401Code" - required: - - code - description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) - Error401Code: - type: string - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - Error403: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error403Code" - required: - - code - description: - Forbidden. This code indicates that the server understood the request - but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) - Error403Code: - type: string - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - Error404: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - notFound: A current representation for the target resource not found - enum: - - notFound - required: - - code - description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error422: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error422Code" - propertyPath: - type: string - description: | - A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. - Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). - required: - - code - description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - type: string - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - Error500: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. - enum: - - internalError - required: - - code - description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) - FieldedAddress: - type: object - description: - "A type of Address that has a discrete field and value for each\ - \ type of boundary or identifier down to the lowest level of detail. For example\ - \ \"street number\" is one field, \"street name\" is another field, etc. Reference:\ - \ MEF 79 (Sn 8.9.2)" - properties: - country: - type: string - description: Country that the address is in - streetType: - type: string - description: - "The type of street (e.g., alley, avenue, boulevard, brae,\ - \ crescent, drive, highway, lane, terrace, parade, place, tarn, way, wharf)" - postcodeExtension: - type: string - description: - An extension of a postal code. E.g. the part following the - dash in a US urban property address - city: - type: string - description: The city that the address is in - streetNr: - type: string - description: - Number identifying a specific property on a public street. - It may be combined with streetNrLast for ranged addresses. MEF 79 defines - it as required however as in certain countries it is not used we make - it optional in API. - locality: - type: string - description: The locality that the address is in - postcode: - type: string - description: - "Descriptor for a postal delivery area, used to speed and simplify\ - \ the delivery of mail (also known as zip code)" - streetNrLast: - type: string - description: Last number in a range of street numbers allocated to a property - streetNrSuffix: - type: string - description: The first street number suffix - streetName: - type: string - description: Name of the street or other street type - stateOrProvince: - type: string - description: The State or Province that the address is in - streetNrLastSuffix: - type: string - description: Last street number suffix for a ranged address - geographicSubAddress: - $ref: "#/components/schemas/GeographicSubAddress" - streetSuffix: - type: string - description: A modifier denoting a relative direction - required: - - city - - country - - streetName - GeographicSubAddress: - type: object - description: "Additional fields used to specify an address, as detailed as possible." - properties: - buildingName: - type: string - description: | - Allows for identification of places that require building name as part of addressing information - subUnit: - type: array - description: - "Representation of a MEFSubUnit It is used for describing subunit\ - \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ - \ WHARF." - items: - $ref: "#/components/schemas/MEFSubUnit" - levelType: - type: string - description: Describes level types within a building - levelNumber: - type: string - description: - "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ - \ 2" - privateStreetNumber: - type: string - description: Private streets numbers internal to a private street - privateStreetName: - type: string - description: - '"Private streets internal to a property (e.g. a university) - may have internal names that are not recorded by the land title office' - MEFBillingAccountRef: - type: object - description: A reference to the Buyer's Billing Account - properties: - id: - type: string - description: - Identifies the buyer's billing account to which the recurring - and non-recurring charges for this order or order item will be billed. - Required if the Buyer has more than one Billing Account with the Seller - and for all new Product Orders. - required: - - id - MEFChargePeriod: - type: string - description: Used for a recurring charge to indicate period. - enum: - - hour - - day - - week - - month - - year - MEFEndOfTermAction: - type: string - description: The action the Seller will take once the term expires. - enum: - - roll - - autoDisconnect - - autoRenew - MEFItemTerm: - type: object - description: The term of the Item - properties: - duration: - $ref: "#/components/schemas/Duration" - endOfTermAction: - $ref: "#/components/schemas/MEFEndOfTermAction" - name: - type: string - description: Name of the term - description: - type: string - description: Description of the term - rollInterval: - $ref: "#/components/schemas/Duration" - MEFPriceType: - type: string - description: Indicates if the price is for recurring or non-recurring charges. - enum: - - recurring - - nonRecurring - - usageBased - MEFProduct: - type: object - description: A product is realized as one or more service(s) and / or resource(s). - properties: - productSpecification: - $ref: "#/components/schemas/ProductSpecificationRef" - relatedSite: - type: array - description: Reference to a Site where the PRoduct is provided. - items: - $ref: "#/components/schemas/RelatedGeographicSite" - productOffering: - $ref: "#/components/schemas/ProductOfferingRef" - lastUpdateDate: - type: string - format: date-time - description: Latest date when the product has been updated. - relatedContactInformation: - type: array - description: Party playing a role for this Product - items: - $ref: "#/components/schemas/RelatedContactInformation" - "@type": - type: string - description: "When sub-classing, this defines the sub-class entity name" - externalId: - type: string - description: Buyer identifier of the product - statusChange: - type: array - description: status change for the Product - items: - $ref: "#/components/schemas/MEFProductStatusChange" - billingAccount: - $ref: "#/components/schemas/MEFBillingAccountRef" - productOrderItem: - type: array - description: - The Product Order Item of the associated Product order that - resulted in the creation of this Product. - items: - $ref: "#/components/schemas/MEFProductOrderItemRef" - productTerm: - type: array - description: Term of the Product - items: - $ref: "#/components/schemas/MEFItemTerm" - terminationDate: - type: string - format: date-time - description: - "Is the date when the product was terminated. MEF: Termination\ - \ date (commercial) is when the product has been terminated (when the\ - \ disconnect in the product order has been processed)." - productConfiguration: - $ref: "#/components/schemas/MEFProductConfiguration" - productRelationship: - type: array - description: - A list of references to existing products that are related - to the Product. - items: - $ref: "#/components/schemas/ProductRelationship" - id: - type: string - description: Unique identifier of the product - href: - type: string - description: Reference of the product - startDate: - type: string - format: date-time - description: - "Is the date from which the product starts. MEF: Start date\ - \ is when the product is active for the first time (when the install in\ - \ the product order has been processed)." - productPrice: - type: array - description: A list of Prices associated with the Product - items: - $ref: "#/components/schemas/ProductPrice" - status: - $ref: "#/components/schemas/MEFProductStatusType" - required: - - id - - startDate - - status - MEFProductConfiguration: - type: object - description: - MEFProductConfiguration is used as an extension point for MEF specific - product/service payload. The `@type` attribute is used as a discriminator - discriminator: - propertyName: "@type" - properties: - "@type": - type: string - description: - "The name of the type, defined in the JSON schema specified\ - \ above, for the product that is the subject of the POQ Request. The\ - \ named type must be a subclass of MEFProductConfiguration." - required: - - "@type" - MEFProductOrderItemRef: - type: object - description: A reference to a ProductOrder item - properties: - productOrderHref: - type: string - description: Reference of the related ProductOrder. - productOrderItemId: - type: string - description: Id of an Item within the Product Order - productOrderId: - type: string - description: Unique identifier of a ProductOrder. - required: - - productOrderId - - productOrderItemId - MEFProductStatusChange: - type: object - description: - "Holds the reached status, reasons and associated date the Product\ - \ Order status changed, populated by the Seller." - properties: - changeReason: - type: string - description: The reason why the status changed. - changeDate: - type: string - format: date-time - description: The date and time the status changed. - status: - $ref: "#/components/schemas/MEFProductStatusType" - required: - - changeDate - - status - MEFProductStatusType: - type: string - description: |- - Possible values for the status of a MEF product - - | name | MEF 81 name | - | --------------------------- | --------------------------- | - | `active` | ACTIVE | - | `active.pendingChange` | ACTIVE_PENDING_CHANGE | - | `pendingTerminate` | ACTIVE_PENDING_TERMINATE | - | `cancelled` | CANCELLED | - | `pendingActive` | PENDING | - | `suspended` | SUSPENDED | - | `suspendedPendingTerminate` | SUSPENDED_PENDING_TERMINATE | - | `terminated` | TERMINATED | - enum: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - MEFProduct_Find: - type: object - description: - Class used to provide product overview retrieved in GET (by list) - operation - properties: - productSpecification: - $ref: "#/components/schemas/ProductSpecificationRef" - relatedSite: - type: array - description: Reference to a Site where the PRoduct is provided. - items: - $ref: "#/components/schemas/RelatedGeographicSite" - productOffering: - $ref: "#/components/schemas/ProductOfferingRef" - lastUpdateDate: - type: string - format: date-time - description: Latest date when the product has been updated. - externalId: - type: string - description: - This identifier is optionally provided during the product ordering - and stored for informative purpose in the seller inventory - productRelationship: - type: array - description: - A list of references to existing products that are related - to the Product. - items: - $ref: "#/components/schemas/ProductRelationship" - id: - type: string - description: Unique identifier of the product - href: - type: string - description: Reference of the product - billingAccount: - $ref: "#/components/schemas/MEFBillingAccountRef" - productOrderItem: - type: array - description: - The Product Order Item of the associated Product order that - resulted in the creation of this Product. - items: - $ref: "#/components/schemas/MEFProductOrderItemRef" - startDate: - type: string - format: date-time - description: The date from which the product starts - status: - $ref: "#/components/schemas/MEFProductStatusType" - required: - - id - - status - MEFSubUnit: - type: object - description: Allows for sub unit identification - properties: - subUnitNumber: - type: string - description: - "The discriminator used for the subunit, often just a simple\ - \ number but may also be a range." - subUnitType: - type: string - description: - "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ - \ UNIT, WHARF." - required: - - subUnitNumber - - subUnitType - Money: - type: object - description: A base / value business entity used to represent money - properties: - unit: - type: string - description: Currency (ISO4217 norm uses 3 letters to define the currency) - value: - type: number - format: float - description: A positive floating point number - required: - - unit - - value - Price: - type: object - description: - "Provides all amounts (tax included, duty free, tax rate), used\ - \ currency and percentage to apply for Price Alteration." - properties: - taxRate: - type: number - format: float - description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." - taxIncludedAmount: - $ref: "#/components/schemas/Money" - dutyFreeAmount: - $ref: "#/components/schemas/Money" - required: - - dutyFreeAmount - ProductOfferingRef: - type: object - description: - "A reference to a Product Offering offered by the Seller to the\ - \ Buyer. A Product Offering contains the commercial and technical details\ - \ of a Product sold by a particular Seller. A Product Offering defines all\ - \ of the commercial terms and, through association with a particular Product\ - \ Specification, defines all the technical attributes and behaviors of the\ - \ Product. A Product Offering may constrain the allowable set of configurable\ - \ technical attributes and/or behaviors specified in the associated Product\ - \ Specification." - properties: - href: - type: string - description: | - Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. - id: - type: string - description: - id of a Product Offering. It is assigned by the Seller. The - Buyer and the Seller exchange information about offerings' ids during - the onboarding process. - required: - - id - ProductPrice: - type: object - description: - "An amount, usually of money, that represents the actual price\ - \ paid by a Customer for a purchase, a rent or a lease of a Product. The price\ - \ is valid for a defined period of time." - properties: - unitOfMeasure: - type: string - description: - "Unit of Measure if price depending on it (Gb, SMS volume,\ - \ etc..)" - price: - $ref: "#/components/schemas/Price" - name: - type: string - description: A short descriptive name such as "Subscription price". - priceType: - $ref: "#/components/schemas/MEFPriceType" - description: - type: string - description: - A narrative that explains in detail the semantics of this product - price. - recurringChargePeriod: - $ref: "#/components/schemas/MEFChargePeriod" - required: - - price - - priceType - ProductRelationship: - type: object - description: - A relationship to existing Product. The requirements for usage - for given Product are described in the Product Specification. - properties: - relationshipType: - type: string - description: - "Specifies the type (nature) of the relationship to the related\ - \ Product. The nature of required relationships vary for Products of different\ - \ types. For example, a UNI or ENNI Product may not have any relationships,\ - \ but an Access E-Line may have two mandatory relationships (related to\ - \ the UNI on one end and the ENNI on the other). More complex Products\ - \ such as multipoint IP or Firewall Products may have more complex relationships.\ - \ As a result, the allowed and mandatory `relationshipType` values are\ - \ defined in the Product Specification." - id: - type: string - description: unique identifier - href: - type: string - description: Hyperlink of the referenced product - required: - - id - - relationshipType - ProductSpecificationRef: - type: object - description: - A reference to a structured set of well-defined technical attributes - and/or behaviors that are used to construct a Product Offering for sale to - a market. - properties: - href: - type: string - description: | - Hyperlink to a Product Specification in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. - id: - type: string - description: Unique identifier of the product specification - required: - - id - RelatedContactInformation: - type: object - description: - "Contact information of an individual or organization playing a\ - \ role for\nthis Entity. The rule for mapping a represented attribute value\ - \ to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer Order\ - \ Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation Contact:\ - \ `role=buyerImplementationContact` \n- Buyer Technical Contact: `role=buyerTechnicalContact`\n" - properties: - number: - type: string - description: Phone number - emailAddress: - type: string - description: Email address - role: - type: string - description: A role the party plays in a given context. - postalAddress: - $ref: "#/components/schemas/FieldedAddress" - organization: - type: string - description: The organization or company that the contact belongs to - name: - type: string - description: Name of the contact - numberExtension: - type: string - description: Phone number extension - required: - - emailAddress - - name - - number - - role - RelatedGeographicSite: - type: object - description: - "A Geographic Site and an associated role as installation address,\ - \ delivery address, etc...." - properties: - role: - type: string - description: - "Role of the geographic site, such as: [home delivery], [shop\ - \ retrieval]) MEF: The role that the Site plays, e.g. Billing Address,\ - \ UNI Site, or ENNI Site." - id: - type: string - description: Unique identifier of the geographic site - href: - type: string - description: Hyperlink to the referenced geographic site - required: - - id - - role - TimeUnit: - type: string - description: | - Represents a unit of time. - Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) - enum: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - securitySchemes: - oauth2MEFLSOAPI: - description: Default m2m client code - flows: - clientCredentials: - refreshUrl: http://mef.net/example/refresh - scopes: - default: default scope - tokenUrl: http://mef.net/example/token - type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml deleted file mode 100644 index c3594169..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productInventoryManagement.api.yaml +++ /dev/null @@ -1,1056 +0,0 @@ -openapi: 3.0.1 -info: - description: | - **This file forms part of MEF 116** - - This API implements Business Requirements described in MEF 81 - - It allows the Buyer to retrieve the information about existing Product - instances from Seller's Product Inventory. - - List of supported use cases: - - Retrieve Product List - - Retrieve Product by Identifier - - Copyright 2021 MEF Forum and its contributors. - - This file includes content based on the TM Forum Product Inventory - Management API (TMF637 v4.0.0) available at - https://github.com/tmforum-apis/TMF637_ProductInventory, which is licensed - by the TM Forum under the Apache License version 2.0. Such content has been - modified by the MEF Forum and its contributors. - title: Product Inventory Management - version: 7.0.2 -servers: - - url: "https://{serverBase}/mefApi/sonata/productInventory/v7/" - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -security: - - oauth2MEFLSOAPI: - - default -tags: - - name: product - - name: events subscription -paths: - /product: - get: - description: This operation lists or finds Product entities - operationId: listProduct - parameters: - - description: The status of the product - in: query - name: status - required: false - schema: - type: string - enum: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - - description: A reference to a product spec by id - in: query - name: productSpecificationId - required: false - schema: - type: string - - description: A reference to a product offering by id - in: query - name: productOfferingId - required: false - schema: - type: string - - description: A reference to the externalId provided in the order - in: query - name: externalId - required: false - schema: - type: string - - description: A site identifier which is associated to the product - in: query - name: geographicalSiteId - required: false - schema: - type: string - - description: |- - This criteria allows to retrieve all Product records with a Product Relationship to a specified Product. - E.g. All Products related to Product with ID 5 - in: query - name: relatedProductId - required: false - schema: - type: string - - description: The Billing Account associated with the Product. - in: query - name: billingAccountId - required: false - schema: - type: string - - description: Identifies Product Order associated with the Product - in: query - name: productOrderId - required: false - schema: - type: string - - description: Less than the date that is the initial install date for the Product - in: query - name: startDate.lt - required: false - schema: - type: string - format: date-time - - description: - Greater than the date that is the initial install date for the - Product - in: query - name: startDate.gt - required: false - schema: - type: string - format: date-time - - description: - Less than date that the last change affecting this Product was - completed - in: query - name: lastUpdateDate.lt - required: false - schema: - type: string - format: date-time - - description: - Greater than the date that the last change affecting this Product - was completed - in: query - name: lastUpdateDate.gt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 81 (Sn 8.3) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 81 (Sn 8.3) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/MEFProduct_Find" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - listProduct - summary: List or find Product objects - tags: - - product - /product/{id}: - get: - description: This operation retrieves a Product entity. - operationId: retrieveProduct - parameters: - - description: Identifier of the Product - in: path - name: id - required: true - schema: - type: string - - description: Comma-separated properties to provide in response - in: query - name: fields - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 81 (Sn 8.3) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 81 (Sn 8.3) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProduct" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - retrieveProduct - summary: Retrieves a Product by ID - tags: - - product -components: - schemas: - Error400Code: - type: string - description: |- - One of the following error codes: - - missingQueryParameter: The URI is missing a required query-string parameter - - missingQueryValue: The URI is missing a required query-string parameter value - - invalidQuery: The query section of the URI is invalid. - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - Duration: - type: object - description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." - properties: - amount: - type: integer - description: "Duration (number of seconds, minutes, hours, etc.)" - units: - $ref: "#/components/schemas/TimeUnit" - required: - - amount - - units - Error: - type: object - description: | - Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. - properties: - reason: - type: string - description: - Text that explains the reason for the error. This can be shown - to a client user. - maxLength: 255 - message: - type: string - description: - Text that provides mode details and corrective actions related - to the error. This can be shown to a client user. - referenceError: - type: string - format: uri - description: URL pointing to documentation describing the error - required: - - reason - Error400: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error400Code" - required: - - code - description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) - Error401: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error401Code" - required: - - code - description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) - Error401Code: - type: string - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - Error403: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error403Code" - required: - - code - description: - Forbidden. This code indicates that the server understood the request - but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) - Error403Code: - type: string - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - Error404: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - notFound: A current representation for the target resource not found - enum: - - notFound - required: - - code - description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error422: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error422Code" - propertyPath: - type: string - description: | - A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. - Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). - required: - - code - description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - type: string - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - Error500: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. - enum: - - internalError - required: - - code - description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) - FieldedAddress: - type: object - description: - "A type of Address that has a discrete field and value for each\ - \ type of boundary or identifier down to the lowest level of detail. For example\ - \ \"street number\" is one field, \"street name\" is another field, etc. Reference:\ - \ MEF 79 (Sn 8.9.2)" - properties: - country: - type: string - description: Country that the address is in - streetType: - type: string - description: - "The type of street (e.g., alley, avenue, boulevard, brae,\ - \ crescent, drive, highway, lane, terrace, parade, place, tarn, way, wharf)" - postcodeExtension: - type: string - description: - An extension of a postal code. E.g. the part following the - dash in a US urban property address - city: - type: string - description: The city that the address is in - streetNr: - type: string - description: - Number identifying a specific property on a public street. - It may be combined with streetNrLast for ranged addresses. MEF 79 defines - it as required however as in certain countries it is not used we make - it optional in API. - locality: - type: string - description: The locality that the address is in - postcode: - type: string - description: - "Descriptor for a postal delivery area, used to speed and simplify\ - \ the delivery of mail (also known as zip code)" - streetNrLast: - type: string - description: Last number in a range of street numbers allocated to a property - streetNrSuffix: - type: string - description: The first street number suffix - streetName: - type: string - description: Name of the street or other street type - stateOrProvince: - type: string - description: The State or Province that the address is in - streetNrLastSuffix: - type: string - description: Last street number suffix for a ranged address - geographicSubAddress: - $ref: "#/components/schemas/GeographicSubAddress" - streetSuffix: - type: string - description: A modifier denoting a relative direction - required: - - city - - country - - streetName - GeographicSubAddress: - type: object - description: "Additional fields used to specify an address, as detailed as possible." - properties: - buildingName: - type: string - description: | - Allows for identification of places that require building name as part of addressing information - subUnit: - type: array - description: - "Representation of a MEFSubUnit It is used for describing subunit\ - \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ - \ WHARF." - items: - $ref: "#/components/schemas/MEFSubUnit" - levelType: - type: string - description: Describes level types within a building - levelNumber: - type: string - description: - "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ - \ 2" - privateStreetNumber: - type: string - description: Private streets numbers internal to a private street - privateStreetName: - type: string - description: - '"Private streets internal to a property (e.g. a university) - may have internal names that are not recorded by the land title office' - MEFBillingAccountRef: - type: object - description: A reference to the Buyer's Billing Account - properties: - id: - type: string - description: - Identifies the buyer's billing account to which the recurring - and non-recurring charges for this order or order item will be billed. - Required if the Buyer has more than one Billing Account with the Seller - and for all new Product Orders. - required: - - id - MEFChargePeriod: - type: string - description: Used for a recurring charge to indicate period. - enum: - - hour - - day - - week - - month - - year - MEFEndOfTermAction: - type: string - description: The action the Seller will take once the term expires. - enum: - - roll - - autoDisconnect - - autoRenew - MEFItemTerm: - type: object - description: The term of the Item - properties: - duration: - $ref: "#/components/schemas/Duration" - endOfTermAction: - $ref: "#/components/schemas/MEFEndOfTermAction" - name: - type: string - description: Name of the term - description: - type: string - description: Description of the term - rollInterval: - $ref: "#/components/schemas/Duration" - MEFPriceType: - type: string - description: Indicates if the price is for recurring or non-recurring charges. - enum: - - recurring - - nonRecurring - - usageBased - MEFProduct: - type: object - description: A product is realized as one or more service(s) and / or resource(s). - properties: - productSpecification: - $ref: "#/components/schemas/ProductSpecificationRef" - relatedSite: - type: array - description: Reference to a Site where the PRoduct is provided. - items: - $ref: "#/components/schemas/RelatedGeographicSite" - productOffering: - $ref: "#/components/schemas/ProductOfferingRef" - lastUpdateDate: - type: string - format: date-time - description: Latest date when the product has been updated. - relatedContactInformation: - type: array - description: Party playing a role for this Product - items: - $ref: "#/components/schemas/RelatedContactInformation" - "@type": - type: string - description: "When sub-classing, this defines the sub-class entity name" - externalId: - type: string - description: Buyer identifier of the product - statusChange: - type: array - description: status change for the Product - items: - $ref: "#/components/schemas/MEFProductStatusChange" - billingAccount: - $ref: "#/components/schemas/MEFBillingAccountRef" - productOrderItem: - type: array - description: - The Product Order Item of the associated Product order that - resulted in the creation of this Product. - items: - $ref: "#/components/schemas/MEFProductOrderItemRef" - productTerm: - type: array - description: Term of the Product - items: - $ref: "#/components/schemas/MEFItemTerm" - terminationDate: - type: string - format: date-time - description: - "Is the date when the product was terminated. MEF: Termination\ - \ date (commercial) is when the product has been terminated (when the\ - \ disconnect in the product order has been processed)." - productConfiguration: - $ref: "#/components/schemas/MEFProductConfiguration" - productRelationship: - type: array - description: - A list of references to existing products that are related - to the Product. - items: - $ref: "#/components/schemas/ProductRelationship" - id: - type: string - description: Unique identifier of the product - href: - type: string - description: Reference of the product - startDate: - type: string - format: date-time - description: - "Is the date from which the product starts. MEF: Start date\ - \ is when the product is active for the first time (when the install in\ - \ the product order has been processed)." - productPrice: - type: array - description: A list of Prices associated with the Product - items: - $ref: "#/components/schemas/ProductPrice" - status: - $ref: "#/components/schemas/MEFProductStatusType" - required: - - id - - startDate - - status - MEFProductConfiguration: - type: object - description: - MEFProductConfiguration is used as an extension point for MEF specific - product/service payload. The `@type` attribute is used as a discriminator - discriminator: - propertyName: "@type" - properties: - "@type": - type: string - description: - "The name of the type, defined in the JSON schema specified\ - \ above, for the product that is the subject of the POQ Request. The\ - \ named type must be a subclass of MEFProductConfiguration." - required: - - "@type" - MEFProductOrderItemRef: - type: object - description: A reference to a ProductOrder item - properties: - productOrderHref: - type: string - description: Reference of the related ProductOrder. - productOrderItemId: - type: string - description: Id of an Item within the Product Order - productOrderId: - type: string - description: Unique identifier of a ProductOrder. - required: - - productOrderId - - productOrderItemId - MEFProductStatusChange: - type: object - description: - "Holds the reached status, reasons and associated date the Product\ - \ Order status changed, populated by the Seller." - properties: - changeReason: - type: string - description: The reason why the status changed. - changeDate: - type: string - format: date-time - description: The date and time the status changed. - status: - $ref: "#/components/schemas/MEFProductStatusType" - required: - - changeDate - - status - MEFProductStatusType: - type: string - description: |- - Possible values for the status of a MEF product - - | name | MEF 81 name | - | --------------------------- | --------------------------- | - | `active` | ACTIVE | - | `active.pendingChange` | ACTIVE_PENDING_CHANGE | - | `pendingTerminate` | ACTIVE_PENDING_TERMINATE | - | `cancelled` | CANCELLED | - | `pendingActive` | PENDING | - | `suspended` | SUSPENDED | - | `suspendedPendingTerminate` | SUSPENDED_PENDING_TERMINATE | - | `terminated` | TERMINATED | - enum: - - active - - active.pendingChange - - cancelled - - pendingActive - - pendingTerminate - - suspended - - suspendedPendingTerminate - - terminated - MEFProduct_Find: - type: object - description: - Class used to provide product overview retrieved in GET (by list) - operation - properties: - productSpecification: - $ref: "#/components/schemas/ProductSpecificationRef" - relatedSite: - type: array - description: Reference to a Site where the PRoduct is provided. - items: - $ref: "#/components/schemas/RelatedGeographicSite" - productOffering: - $ref: "#/components/schemas/ProductOfferingRef" - lastUpdateDate: - type: string - format: date-time - description: Latest date when the product has been updated. - externalId: - type: string - description: - This identifier is optionally provided during the product ordering - and stored for informative purpose in the seller inventory - productRelationship: - type: array - description: - A list of references to existing products that are related - to the Product. - items: - $ref: "#/components/schemas/ProductRelationship" - id: - type: string - description: Unique identifier of the product - href: - type: string - description: Reference of the product - billingAccount: - $ref: "#/components/schemas/MEFBillingAccountRef" - productOrderItem: - type: array - description: - The Product Order Item of the associated Product order that - resulted in the creation of this Product. - items: - $ref: "#/components/schemas/MEFProductOrderItemRef" - startDate: - type: string - format: date-time - description: The date from which the product starts - status: - $ref: "#/components/schemas/MEFProductStatusType" - required: - - id - - status - MEFSubUnit: - type: object - description: Allows for sub unit identification - properties: - subUnitNumber: - type: string - description: - "The discriminator used for the subunit, often just a simple\ - \ number but may also be a range." - subUnitType: - type: string - description: - "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ - \ UNIT, WHARF." - required: - - subUnitNumber - - subUnitType - Money: - type: object - description: A base / value business entity used to represent money - properties: - unit: - type: string - description: Currency (ISO4217 norm uses 3 letters to define the currency) - value: - type: number - format: float - description: A positive floating point number - required: - - unit - - value - Price: - type: object - description: - "Provides all amounts (tax included, duty free, tax rate), used\ - \ currency and percentage to apply for Price Alteration." - properties: - taxRate: - type: number - format: float - description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." - taxIncludedAmount: - $ref: "#/components/schemas/Money" - dutyFreeAmount: - $ref: "#/components/schemas/Money" - required: - - dutyFreeAmount - ProductOfferingRef: - type: object - description: - "A reference to a Product Offering offered by the Seller to the\ - \ Buyer. A Product Offering contains the commercial and technical details\ - \ of a Product sold by a particular Seller. A Product Offering defines all\ - \ of the commercial terms and, through association with a particular Product\ - \ Specification, defines all the technical attributes and behaviors of the\ - \ Product. A Product Offering may constrain the allowable set of configurable\ - \ technical attributes and/or behaviors specified in the associated Product\ - \ Specification." - properties: - href: - type: string - description: | - Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. - id: - type: string - description: - id of a Product Offering. It is assigned by the Seller. The - Buyer and the Seller exchange information about offerings' ids during - the onboarding process. - required: - - id - ProductPrice: - type: object - description: - "An amount, usually of money, that represents the actual price\ - \ paid by a Customer for a purchase, a rent or a lease of a Product. The price\ - \ is valid for a defined period of time." - properties: - unitOfMeasure: - type: string - description: - "Unit of Measure if price depending on it (Gb, SMS volume,\ - \ etc..)" - price: - $ref: "#/components/schemas/Price" - name: - type: string - description: A short descriptive name such as "Subscription price". - priceType: - $ref: "#/components/schemas/MEFPriceType" - description: - type: string - description: - A narrative that explains in detail the semantics of this product - price. - recurringChargePeriod: - $ref: "#/components/schemas/MEFChargePeriod" - required: - - price - - priceType - ProductRelationship: - type: object - description: - A relationship to existing Product. The requirements for usage - for given Product are described in the Product Specification. - properties: - relationshipType: - type: string - description: - "Specifies the type (nature) of the relationship to the related\ - \ Product. The nature of required relationships vary for Products of different\ - \ types. For example, a UNI or ENNI Product may not have any relationships,\ - \ but an Access E-Line may have two mandatory relationships (related to\ - \ the UNI on one end and the ENNI on the other). More complex Products\ - \ such as multipoint IP or Firewall Products may have more complex relationships.\ - \ As a result, the allowed and mandatory `relationshipType` values are\ - \ defined in the Product Specification." - id: - type: string - description: unique identifier - href: - type: string - description: Hyperlink of the referenced product - required: - - id - - relationshipType - ProductSpecificationRef: - type: object - description: - A reference to a structured set of well-defined technical attributes - and/or behaviors that are used to construct a Product Offering for sale to - a market. - properties: - href: - type: string - description: | - Hyperlink to a Product Specification in Sellers catalog. In case Seller is not providing a catalog API this field is not used. The catalog is provided by the Seller to the Buyer during onboarding. - id: - type: string - description: Unique identifier of the product specification - required: - - id - RelatedContactInformation: - type: object - description: - "Contact information of an individual or organization playing a\ - \ role for\nthis Entity. The rule for mapping a represented attribute value\ - \ to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer Order\ - \ Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation Contact:\ - \ `role=buyerImplementationContact` \n- Buyer Technical Contact: `role=buyerTechnicalContact`\n" - properties: - number: - type: string - description: Phone number - emailAddress: - type: string - description: Email address - role: - type: string - description: A role the party plays in a given context. - postalAddress: - $ref: "#/components/schemas/FieldedAddress" - organization: - type: string - description: The organization or company that the contact belongs to - name: - type: string - description: Name of the contact - numberExtension: - type: string - description: Phone number extension - required: - - emailAddress - - name - - number - - role - RelatedGeographicSite: - type: object - description: - "A Geographic Site and an associated role as installation address,\ - \ delivery address, etc...." - properties: - role: - type: string - description: - "Role of the geographic site, such as: [home delivery], [shop\ - \ retrieval]) MEF: The role that the Site plays, e.g. Billing Address,\ - \ UNI Site, or ENNI Site." - id: - type: string - description: Unique identifier of the geographic site - href: - type: string - description: Hyperlink to the referenced geographic site - required: - - id - - role - TimeUnit: - type: string - description: | - Represents a unit of time. - Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) - enum: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - securitySchemes: - oauth2MEFLSOAPI: - description: Default m2m client code - flows: - clientCredentials: - refreshUrl: http://mef.net/example/refresh - scopes: - default: default scope - tokenUrl: http://mef.net/example/token - type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml deleted file mode 100644 index 5446d94b..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOfferingQualificationManagement.api.yaml +++ /dev/null @@ -1,1875 +0,0 @@ -openapi: 3.0.1 -info: - description: | - **This file forms part of MEF 87** - - This API implements Business Requirements described in MEF 79 - - The Product Offering Qualification (POQ) Management API allows a Buyer to - check whether the Seller can deliver a product or set of products from - among their product offerings at the geographic address or a service site - specified by the Buyer; or modify a previously purchased product. - - The following use cases are managed: - - Create Product Offering Qualification - - Retrieve POQ List - - Retrieve POQ by Identifier - - Register for POQ Notifications (note: Send POQ Notification is supported by productOfferingQualificationNotification.api.yaml) - - Copyright 2021 MEF Forum and its contributors - - This file includes content based on the TM Forum Product Offering - Qualification API (TMF679 v4.0.0) available at - https://github.com/tmforum-apis/TMF679_ProductOfferingQualification, which - is licensed by the TM Forum under the Apache License version 2.0. Such - content has been modified by the MEF Forum and its contributors. - title: Product Offering Qualification Management - version: 7.0.1 -servers: - - url: 'https://{serverBase}/mefApi/sonata/productOfferingQualification/v7/' - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -tags: - - description: - Operations for managing the Product Offering Qualification request. - name: productOfferingQualification - - description: - Operations for managing the subscription for events notification. - name: events subscription -paths: - /hub: - post: - description: >- - A request initiated by the Buyer to instruct the Seller to send - notifications of POQ create, POQ and/or POQ Item state changes if the - Buyer has registered for these notifications. The state change - notifications are sent only in the Deferred response scenario as in the - Immediate response scenario once the response to POQ Request is - provided (create notification), there will be no further state - changes. Reference: MEF 79 (section 8.4.2). - operationId: registerListener - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/EventSubscriptionInput' - description: >- - Data containing the callback endpoint to which to deliver the - information. - required: true - responses: - '201': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/EventSubscription' - description: - 'Created. (https://tools.ietf.org/html/rfc7231#section-6.3.2)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - '501': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error501' - description: >- - Method not implemented. Used in case Seller is not supporting - Notification mechanism - summary: - Allows a Buyer to register to receive POQ state change notifications - tags: - - events subscription - x-codegen-request-body-name: data - '/hub/{id}': - delete: - description: | - This operation is used to delete an event subscription. - Reference: MEF 79 (Sn 8.3) - operationId: unregisterListener - parameters: - - description: Identifier of the EventSubscription - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '204': - description: - 'No Content. (https://tools.ietf.org/html/rfc7231#section-6.3.5)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - '501': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error501' - description: >- - Method not implemented. Used in case Seller is not supporting - Notification mechanism - summary: Unregister a listener - tags: - - events subscription - /productOfferingQualification: - get: - description: >- - The Buyer requests a list of POQs from the Seller based on a set of POQ - filter criteria (as described in MEF79). For each POQ returned, the - Seller also provides a POQ Identifier that uniquely identifies this POQ - within the Seller's system. The order of the elements returned to the - Buyer is defined by the Seller (e.g. natural order) and does not change - between the pages. If criteria for attribute X are provided, all - returned items must match it. - operationId: listProductOfferingQualification - parameters: - - description: >- - State of the POQ to be retrieved. See `MEFPOQTaskStateType` - definition for details - in: query - name: state - schema: - enum: - - acknowledged - - terminatedWithError - - inProgress - - done.unableToProvide - - done.ready - type: string - - name: externalId - required: false - in: query - description: - ID given by the consumer and only understandable by him (to - facilitate his searches afterward) - schema: - type: string - - description: Identifier of Buyer project associated with POQ - in: query - name: projectId - schema: - type: string - - description: POQ expected response date is on or after this date - in: query - name: requestedPOQCompletionDate.gt - schema: - format: date-time - type: string - - description: POQ expected response date is on or before this date - in: query - name: requestedPOQCompletionDate.lt - schema: - format: date-time - type: string - - description: >- - The unique identifier of the organization that is acting as the - Buyer - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller - in: query - name: sellerId - schema: - type: string - - description: >- - Requested index for the start of POQ to be provided in response - requested by the client. Note that the index starts with "0". - in: query - name: offset - schema: - format: int32 - type: integer - - description: >- - Requested number of POQ to be provided in response requested by - client - in: query - name: limit - schema: - format: int32 - type: integer - responses: - '200': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/ProductOfferingQualification_Find' - type: array - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - headers: - X-Pagination-Throttled: - description: > - Used to indicate that result page was throttled to maximum - possible size and there are additional results that can be - fetched - schema: - type: boolean - X-Total-Count: - description: > - The total number of matching POQ. E.g. if there are 50 matching - items in total, but the request has offset=10 and limit=10, - then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of POQ included in the response - schema: - type: integer - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: >- - Retrieve a list of ProductOfferingQualifications based on a set of - criteria - tags: - - productOfferingQualification - post: - description: >- - A request initiated by the Buyer to determine whether the Seller is - able to deliver a product or set of products from among their product - offerings, at the Buyer's location(s); or modify a previously purchased - product. The Seller also provides estimated time intervals to complete - these deliveries. Reference: MEF 79 (Sn 8.4). - operationId: createProductOfferingQualification - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/ProductOfferingQualification_Create' - description: >- - POQ content provided by the Buyer. See definition's description for - details. - required: true - responses: - '201': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/ProductOfferingQualification' - description: - 'Created. (https://tools.ietf.org/html/rfc7231#section-6.3.2)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: Unprocessable entity due to business validation problems - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Send a request to perform product offering qualification - tags: - - productOfferingQualification - x-codegen-request-body-name: productOfferingQualification - '/productOfferingQualification/{id}': - get: - description: >- - The Buyer requests the full details of a single Product Offering - Qualification based on a POQ identifier returned from the POQ create - (`createProductOfferingQualification`) or POQ find - (`listProductOfferingQualification`) - operationId: retrieveProductOfferingQualification - parameters: - - description: - POQ identifier (matches `ProductOfferingQualification.id`) - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/ProductOfferingQualification' - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Retrieves a ProductOfferingQualification by ID - tags: - - productOfferingQualification -components: - schemas: - AlternateProductOfferingProposal: - description: > - If in the request the Buyer has requested to have alternate product - proposals, then this class represents a single proposal. All properties - are assigned by the Seller. - - Reference: MEF 79 (Sn 8.4.3.2) - properties: - installationInterval: - description: > - The estimated minimum interval that the Seller requires in their - standard process to complete the delivery of this Product from the - time the order is placed and any precedents have been completed. - $ref: '#/components/schemas/Duration' - id: - description: > - Identifier of the Product Offering Qualification alternate - proposal. Assigned by the Seller. - type: string - alternateProduct: - description: Alternate product proposal - $ref: '#/components/schemas/MEFAlternateProduct' - required: - - alternateProduct - - id - - installationInterval - type: object - Error400Code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required query-string - parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - type: string - Duration: - description: - 'A Duration in a given unit of time e.g. 3 hours, or 5 days.' - properties: - amount: - description: 'Duration (number of seconds, minutes, hours, etc.)' - type: integer - units: - description: Time unit type - $ref: '#/components/schemas/TimeUnit' - required: - - amount - - units - type: object - Error: - description: > - Standard Class used to describe API response error Not intended to be - used directly. The `code` in the HTTP header is used as a discriminator - for the type of error returned in runtime. - properties: - reason: - description: >- - Text that explains the reason for the error. This can be shown to a - client user. - maxLength: 255 - type: string - message: - description: >- - Text that provides mode details and corrective actions related to - the error. This can be shown to a client user. - type: string - referenceError: - description: URL pointing to documentation describing the error - format: uri - type: string - required: - - reason - type: object - Error400: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required - query-string parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - $ref: '#/components/schemas/Error400Code' - required: - - code - type: object - description: - 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' - Error401: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - One of the following error codes: - - - missingCredentials: No credentials provided. - - - invalidCredentials: Provided credentials are invalid or - expired - $ref: '#/components/schemas/Error401Code' - required: - - code - type: object - description: - 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' - Error401Code: - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - type: string - Error403: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - $ref: '#/components/schemas/Error403Code' - required: - - code - type: object - description: >- - Forbidden. This code indicates that the server understood the request - but refuses to authorize it. - (https://tools.ietf.org/html/rfc7231#section-6.5.3) - Error403Code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - type: string - Error404: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - notFound: A current representation for the target resource - not found - enum: - - notFound - type: string - required: - - code - type: object - description: >- - Resource for the requested path not found. - (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error422: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused - the validation issue. It is highly recommended that this - property should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - required: - - code - type: object - description: >- - Unprocessable entity due to a business validation problem. - (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - type: string - Error500: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - internalError: Internal server error - the server encountered - an unexpected condition that prevented it from fulfilling the - request. - enum: - - internalError - type: string - required: - - code - type: object - description: >- - Internal Server Error. - (https://tools.ietf.org/html/rfc7231#section-6.6.1) - Error501: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: |- - The following error code:: - - notImplemented: Method not supported by the server - enum: - - notImplemented - type: string - required: - - code - type: object - description: - 'Not Implemented. (https://tools.ietf.org/html/rfc7231#section-6.6.2)' - EventSubscription: - description: | - This resource is used to manage notification subscription. - Reference: MEF 79 (Sn 8.3) - properties: - query: - description: >- - The value provided by the Buyer in `EventSubscriptionInput` during - notification registration - type: string - callback: - description: >- - The value provided by the Buyer in `EventSubscriptionInput` during - notification registration - type: string - id: - description: >- - An identifier of this Event Subscription assigned by the Seller - when a resource is created. - type: string - required: - - callback - - id - type: object - EventSubscriptionInput: - description: This class is used to register for Notifications. - properties: - query: - description: >- - This attribute is used to define to which type of events to - register to. Example: "query":"eventType = poqCreateEvent". To - subscribe for more than one event type, put the values separated by - comma: `eventType=poqCreateEvent,poqStateChangeEvent`. The possible - values are enumerated by the 'POQEventType' in - productOfferingQualificationNotification.api.yaml. An empty query - is treated as specifying no filters - ending in subscription for - all event types. - type: string - callback: - description: >- - This callback value must be set to *host* property from Buyer - ProductOfferingQualification Notification API - (productOfferingQualificationNotification.api.yaml). This property - is appended with the base path and notification resource path - specified in that API to construct an URL to which notification is - sent. E.g. for "callback": "https://buyer.co/listenerEndpoint", the - create event notification will be sent to: - `https://buyer.co/listenerEndpoint/mefApi/sonata/productOfferingQualificationNotification/v7/listener/poqCreateEvent` - type: string - required: - - callback - type: object - FieldedAddress: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - country: - description: Country that the address is in - type: string - streetType: - description: >- - The type of street (e.g., alley, avenue, boulevard, brae, - crescent, drive, highway, lane, terrace, parade, place, tarn, - way, wharf) - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in a US urban property address - type: string - city: - description: The city that the address is in - type: string - streetNr: - description: >- - Number identifying a specific property on a public street. It - may be combined with streetNrLast for ranged addresses. MEF 79 - defines it as required for the Seller response, however in - certain countries it is not used, so it's optional in API. - type: string - locality: - description: The locality that the address is in - type: string - postcode: - description: >- - A descriptor for a postal delivery area, used to speed and - simplify the delivery of mail (also known as zip code) MEF 79 - defines it as required however as in certain countries it is - not used we make it optional in API. - type: string - streetNrLast: - description: - Last number in a range of street numbers allocated to a - property - type: string - streetNrSuffix: - description: The first street number suffix - type: string - streetName: - description: Name of the street or other street type - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - streetNrLastSuffix: - description: Last street number suffix for a ranged address - type: string - geographicSubAddress: - description: >- - Additional fields used to specify an address, as detailed as - possible. - $ref: '#/components/schemas/GeographicSubAddress' - streetSuffix: - description: A modifier denoting a relative direction - type: string - required: - - city - - country - - streetName - type: object - description: >- - A type of Address that has a discrete field and value for each type of - boundary or identifier down to the lowest level of detail. For example - "street number" is one field, "street name" is another field, etc. - Reference: MEF 79 (Sn 8.9.2) - FormattedAddress: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - country: - description: Country that the address is in - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in a US urban property address - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - city: - description: The city that the address is in - type: string - addrLine2: - description: The second address line in a formatted address - type: string - addrLine1: - description: The first address line in a formatted address - type: string - locality: - description: >- - An area of defined or undefined boundaries within a local - authority or other legislatively defined area, usually rural or - semi-rural in nature - type: string - postcode: - description: >- - A descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as ZIP code) - type: string - required: - - addrLine1 - - city - - country - type: object - description: >- - A type of Address that has discrete fields for each type of boundary or - identifier with the exception of the street and more specific location - details, which are combined into a maximum of two strings based on - local postal addressing conventions. Reference: MEF 79 (Sn 8.9.3) - GeographicAddressLabel: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - externalReferenceId: - description: >- - The unique reference to an Address as provided by the - Administrative Authority. - type: string - externalReferenceType: - description: >- - The organization or standard from the organization that - administers this Geographic Address Label ensuring it is unique - within the Administrative Authority. The value(s) to be used - are to be agreed upon during the onboarding. For North American - providers this would normally be CLLI (Common Language Location - Identifier) code. - type: string - required: - - externalReferenceId - - externalReferenceType - type: object - description: >- - A unique identifier controlled by a generally accepted independent - administrative authority that specifies a fixed geographical location. - - Reference: MEF 79 (Sn 8.9.4) - GeographicAddressRef: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - href: - description: > - Hyperlink to the referenced Address. Hyperlink MAY be used by - the Seller in responses. Hyperlink MUST be ignored by the - Seller in case it is provided by the Buyer in a request. - type: string - id: - description: >- - Identifier of the referenced Geographic Address. This - identifier is assigned during a successful address validation - request (Geographic Address Management API) - type: string - required: - - id - type: object - description: > - A reference to a Geographic Address resource available through Address - Validation API. - GeographicSiteRef: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - href: - description: > - Hyperlink to the referenced Site. Hyperlink MAY be used by the - Seller in responses. Hyperlink MUST be ignored by the Seller in - case it is provided by the Buyer in a request. - type: string - id: - description: Identifier of the referenced Geographic Site. - type: string - required: - - id - type: object - description: > - A reference to a Geographic Site resource available through Service - Site API - GeographicSubAddress: - description: - 'Additional fields used to specify an address, as detailed as possible.' - properties: - buildingName: - description: > - Allows for identification of places that require building name as - part of addressing information - type: string - subUnit: - description: >- - Representation of a MEFSubUnit It is used for describing subunit - within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - items: - $ref: '#/components/schemas/MEFSubUnit' - type: array - levelType: - description: Describes level types within a building - type: string - levelNumber: - description: - 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT - 2' - type: string - privateStreetNumber: - description: Private streets numbers internal to a private street - type: string - privateStreetName: - description: >- - Private streets internal to a property (e.g. a university) may have - internal names that are not recorded by the land title office - type: string - type: object - MEFAlternateProduct: - description: >- - An alternative Product Offering that the Seller is proposing to the - Buyer. If 1) the Buyer has set `provideAlternate=true`; 2) the Seller - has determined that the POQ Confidence Level for this item is `yellow` - or `red`; and 3) The Seller has alternate Products (e.g. similar but - lower bandwidth) that may be adequate. - properties: - productSpecification: - description: >- - A reference to a Product Specification of the proposed alternate - product - $ref: '#/components/schemas/ProductSpecificationRef' - productOffering: - description: | - A reference to the alternate product offering. - $ref: '#/components/schemas/ProductOfferingRef' - productConfiguration: - description: >- - MEFProductConfiguration is used to get MEF specific product/service - payload. the @type is used a a discriminator. - $ref: '#/components/schemas/MEFProductConfiguration' - required: - - productConfiguration - - productOffering - type: object - MEFGeographicPoint: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - spatialRef: - description: >- - The spatial reference system used to determine the coordinates - (e.g. "WGS84"). The system used and the value of this field are - to be agreed during the onboarding process. - type: string - x: - description: >- - The latitude expressed in the format specified by the - `spacialRef` - type: string - 'y': - description: >- - The longitude expressed in the format specified by the - `spacialRef` - type: string - z: - description: >- - The elevation expressed in the format specified by the - `spacialRef` - type: string - required: - - spatialRef - - x - - 'y' - type: object - description: > - A MEFGeographicPoint defines a geographic point through coordinates. - Reference: MEF 79 (Sn 8.9.5) - MEFPOQItemStateChange: - description: >- - Holds the reached state, reasons, and associated date the POQ state - changed, populated by the Seller. - properties: - changeReason: - description: Additional comment related to state change - type: string - changeDate: - description: The date on when the state was reached - format: date-time - type: string - state: - description: A state which was reached at change date - $ref: '#/components/schemas/MEFPOQItemTaskStateType' - required: - - changeDate - - state - type: object - MEFPOQItemTaskStateType: - description: | - POQ item states - The specific states are managed by the Seller based on - its processing and/or based on the Buyer's action. The following mapping - has been used between `MEFPOQItemTaskStateType` and MEF 79 (Sn 9.2): - - | MEFPOQItemTaskStateType | MEF79 | Description | - | ----------------------- | --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- | - | acknowledged | N/A | A request has been received by the Seller and has passed basic validation. | - | done.ready | READY | POQ Item response is complete. This state does not imply that Seller is able to deliver requested item | - | done.abandoned | ABANDONED | Applied to a POQ Item in case the final state is not reached and any other POQ Item moved to the final state other than done | - | terminatedWithError | INSUFFICIENT_INFORMATION_PROVIDED | The information provided by the Buyer is insufficient for the Seller to provide POQ Item response | - | inProgress | IN_PROGRESS | The Seller is working on a POQ item response and the answer is not ready yet | - enum: - - acknowledged - - terminatedWithError - - inProgress - - done.abandoned - - done.ready - type: string - MEFPOQStateChange: - description: >- - Holds the reached state, reasons, and associated date the POQ state - changed, populated by the Seller. - properties: - changeReason: - description: Additional comment related to state change - type: string - changeDate: - description: The date on when the state was reached - format: date-time - type: string - state: - description: A state reached at change date - $ref: '#/components/schemas/MEFPOQTaskStateType' - required: - - changeDate - - state - type: object - MEFPOQTaskStateType: - description: | - These values represent the valid states through which the product - offering qualification can transition. - - The following mapping has been used between `MEFPOQTaskStateType` and - MEF 79 (Sn 9.1): - - | MEFPOQTaskStateType | MEF 79 | Description | - | -------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------| - | acknowledged | N/A | A request has been received by the Seller, has passed basic validation and the id was assigned. | - | done.ready | READY | Reached when all items are in `done` state | - | done.unableToProvide | UNABLE_TO_PROVIDE | This state is set when the Seller is unable to provide a Product Offering Qualification in the timeframe required by the Buyer. | - | terminatedWithError | INSUFFICIENT_INFORMATION_PROVIDED | This state is achieved when a well-formed POQ request has been received, but there is insufficient information to complete the POQ. | - | inProgress | IN_PROGRESS | There is at least one POQ Item in `inProgress` state | - enum: - - acknowledged - - terminatedWithError - - inProgress - - done.unableToProvide - - done.ready - type: string - MEFProductConfiguration: - description: >- - MEFProductConfiguration is used as an extension point for MEF specific - product/service payload. The `@type` attribute is used as a - discriminator - discriminator: - propertyName: '@type' - properties: - '@type': - description: >- - The name of the type that uniquely identifies the type of the - product that is the subject of the POQ Request. In case of MEF - product this is the URN provided in the Product Specification. - type: string - required: - - '@type' - type: object - MEFProductRefOrValue: - description: >- - Used by the Buyer to point to existing and/or describe the desired - shape of the product. In case of `add` action - only - `productConfiguration` MUST be specified. For `modify` action - both - `id` and `productConfiguration` MUST be provided to point which product - instance to update and to what state. In `delete` only the `id` must be - provided. - properties: - productSpecification: - description: - A reference to a Product Specification used to describe the Product - $ref: '#/components/schemas/ProductSpecificationRef' - productOffering: - description: > - A reference to the product offering. - - MEF 79 defines the `productOffering` as mandatory for the `add` - action, - - however, the API allows additionally the use case of providing the - - `productSpecification` instead. In this scenario, the Buyer asks if - - a particular type of product can be served and gets back from the - Seller - - a direct or alternate `productOfferings` in response. These can be - later used - - in Quote and Product Order steps. - $ref: '#/components/schemas/ProductOfferingRef' - productConfiguration: - description: >- - MEFProductConfiguration is used to specify the MEF specific product - payload. This field MUST be populated if an item `action` is `add` - or `modify`. It MUST NOT be populated when an item `action` is - `delete`. The @type is used as a discriminator. - $ref: '#/components/schemas/MEFProductConfiguration' - productRelationship: - description: >- - A list of references to existing products that are related to the - Product that would be delivered to fulfill the POQ Item. - items: - $ref: '#/components/schemas/ProductRelationshipWithGrouping' - type: array - href: - description: > - Hyperlink to the referenced Product. Hyperlink MAY be used by the - Seller in responses. Hyperlink MUST be ignored by the Seller in - case it is provided by the Buyer in a request. - type: string - id: - description: > - The unique identifier of an in-service Product that is the - qualification's subject. This field MUST be populated if an item - `action` is either `modify` or `delete`. This field MUST NOT be - populated if an item `action` is `add`. - type: string - place: - description: >- - A list of locations that are related to the Product. For example an - installation location - items: - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - type: array - type: object - MEFServiceabilityColor: - description: | - A color that indicates confidence to service the request. When the item - state is `done.ready` the Seller **MUST** provide a value. It **MUST - NOT** be populated for other states. - - - Mapping between `ServiceabilityColor` and POQ Confidence Level: - - - | ServiceabilityColor | MEF 79 | MEF 79 semantics | - |------------------------- | ------------ | ----------------------------------------------------------------------------- | - | green | GREEN | The Seller has high confidence that this Product can be delivered | - | yellow | YELLOW | The Seller believes they can deliver the Product but is not highly confident | - | red | RED | The Seller cannot deliver the Product as specified | - - Reference: MEF 79 (Sn 8.4.3.1) - enum: - - green - - yellow - - red - type: string - MEFSubUnit: - description: Allows for sub unit identification - properties: - subUnitNumber: - description: >- - The discriminator used for the subunit, often just a simple number - but may also be a range. - type: string - subUnitType: - description: >- - The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - type: string - required: - - subUnitNumber - - subUnitType - type: object - ProductActionType: - description: | - Action to be performed on the Product Item. The action types are - described in MEF 79 (Sn 8.4.1.1). - - The following mapping has been used between `ProductActionType` and MEF - 79: - - | ProductActionType | MEF 79 | - |------------------ | ---------- | - | add | INSTALL | - | modify | CHANGE | - | delete | DISCONNECT | - enum: - - add - - modify - - delete - type: string - ProductOfferingQualification: - allOf: - - $ref: '#/components/schemas/ProductOfferingQualification_Common' - - properties: - productOfferingQualificationItem: - description: >- - One or more of Product Offering Qualification Items. It MUST - contain exactly one entry for each item in the POQ request. - items: - $ref: '#/components/schemas/ProductOfferingQualificationItem' - minItems: 1 - type: array - effectiveQualificationDate: - description: >- - Date and time (set by the Seller) when the POQ state was set to - one of the completion states (done.ready, - done.unable_to_provide, terminated_with_error). The Seller MUST - NOT provide this attribute until mentioned states are achieved. - format: date-time - type: string - expectedPOQCompletionDate: - description: >- - The date the Seller expects to provide qualification result. - Set by the Seller in case of providing a deferred response when - the POQ is in an acknowledged or inProgress state. - format: date-time - type: string - stateChange: - description: > - A log of all state transitions for the POQ. It must be in sync - with the most recent POQ Request state. - items: - $ref: '#/components/schemas/MEFPOQStateChange' - type: array - href: - description: > - Hyperlink to this POQ. Hyperlink MAY be used by the Seller in - responses. Hyperlink MUST be ignored by the Seller in case it - is provided by the Buyer in a request. - type: string - id: - description: >- - The Serviceability Request's unique identifier assigned by the - Seller. - type: string - state: - description: The state that represents the qualification status - $ref: '#/components/schemas/MEFPOQTaskStateType' - required: - - id - - productOfferingQualificationItem - - state - type: object - description: > - Represents a response to the Buyer POQ inquiry. This type defines a set - of attributes that are assigned by the Seller while processing the - request. A POQ response is a combination of attributes defined here - with common attributes that are sent in the request. This type is used - in response to an immediate request and POQ retrieval by an identifier. - Reference MEF 79 (Sn 8.7 and 8.4.3). - ProductOfferingQualificationItem: - allOf: - - $ref: '#/components/schemas/ProductOfferingQualificationItem_Common' - - properties: - terminationError: - description: > - A list of text-based reasons the Seller MUST provide when the - request cannot be processed. When item state is - `terminatedWithError` the Seller **MUST** provide at least one - termination error. - items: - $ref: '#/components/schemas/TerminationError' - type: array - serviceabilityConfidence: - description: >- - The level of confidence of the Seller to be able to service the - request. When the item state is `done.ready` the Seller - **MUST** provide a value. It **MUST NOT** be populated for - other states. - $ref: '#/components/schemas/MEFServiceabilityColor' - serviceabilityConfidenceReason: - description: >- - A free text description of the reason a particular color is - being provided. - type: string - alternateProductOfferingProposal: - description: > - A list of one or more alternative Product Offerings that the - Seller is proposing to the Buyer. If 1) the Buyer has set - `provideAlternate=true`; 2) the Seller has determined that the - POQ Confidence Level for this item is `yellow` or `red`; - and 3) The Seller has alternate Products (e.g. similar but - lower bandwidth) that may be adequate. - - **MUST NOT** be specified if 'state' is 'terminatedWithError' - or 'done.abandoned'. - items: - $ref: '#/components/schemas/AlternateProductOfferingProposal' - type: array - installationInterval: - description: > - The estimated minimum interval that the Seller requires in - their standard process to complete the delivery of this Product - from the time the order is placed and any precedents have been - completed. When attribute `serviceabilityConfidence` is set to - `green` or `yellow` the Seller **MUST** populate this - attribute. **MUST NOT** be specified if 'state' is - 'terminatedWithError' or `done.abandoned`. - $ref: '#/components/schemas/Duration' - guaranteedUntilDate: - description: > - Date until the Seller guarantees the qualification result. - **MUST NOT** be specified if 'state' is 'terminatedWithError' - or 'done.abandoned'. - format: date-time - type: string - stateChange: - description: > - A log of all state transitions for the POQ Item. It must be in - sync with the most recent POQ Item's state. - items: - $ref: '#/components/schemas/MEFPOQItemStateChange' - type: array - state: - description: Current state of an item - $ref: '#/components/schemas/MEFPOQItemTaskStateType' - required: - - state - type: object - description: >- - An individual article included in a POQ that describes a Product of a - particular type (Product Offering) being delivered to a specific - geographical location. The objective is to determine if it is feasible - for the Seller to deliver this item as described and for the Seller to - inform the Buyer of the estimated time interval to complete this - delivery. - - Reference: MEF 79 (Sn 8.4.3.1) - ProductOfferingQualificationItem_Common: - description: > - Common attributes shared between a POQ request and response. These - attributes are provided by the Buyer and must not be modified by the - Seller. - properties: - product: - description: > - Used by the Buyer to point to existing and/or describe the desired - shape of the product. In case of `add` action - only - `productConfiguration` MUST be specified. For `modify` action - - both `id` and `productConfiguration` to point which product - instance to update and to what state. In `delete` only the `id` - must be provided. - $ref: '#/components/schemas/MEFProductRefOrValue' - qualificationItemRelationship: - description: | - A list of references to related POQ items in this POQ - items: - $ref: '#/components/schemas/QualificationItemRelationship' - type: array - relatedContactInformation: - description: >- - Contact information of an individual or organization playing a role - for this POQ Item - - (e.g. for MEF 79: POQ Item Location Contact, role=locationContact) - items: - $ref: '#/components/schemas/RelatedContactInformation' - type: array - action: - description: Action to be qualified - $ref: '#/components/schemas/ProductActionType' - id: - description: > - Id of this POQ item which is unique within the POQ. Assigned by the - Buyer. - type: string - required: - - action - - id - - product - type: object - ProductOfferingQualificationItem_Create: - allOf: - - $ref: '#/components/schemas/ProductOfferingQualificationItem_Common' - - type: object - description: >- - This structure serves as a request for a product offering qualification - item. - - A product qualification item is an individual article included in a POQ - that describes a Product of a particular type (Product Offering) being - delivered to the geographic address or a service site specified by the - Buyer. - - The objective is to determine if it is feasible for the Seller to - deliver this item as described and for the Seller to inform the Buyer - of the estimated time interval to complete this delivery. - - The modelling pattern introduces the `Common` supertype to aggregate - attributes that are common to both `ProductOfferingQualificationItem` - and `ProductOfferingQualificationItem_Create`. It happens that it is - the Create type has a subset of attributes of the response type and - does not introduce any new, thus the `Create` type has an empty - definition. - - Reference: MEF 79 (Sn 8.4.1.1) - ProductOfferingQualification_Common: - description: > - Defines a set of POQ attributes that might be used by the Buyer and - cannot be modified by the Seller. The `relatedContactInformation` - entries provided by the Buyer cannot be changed by the Seller, however - the Seller might append related contact information to that list.` - properties: - externalId: - type: string - description: - ID given by the consumer and only understandable by him (to - facilitate his searches afterwards) - instantSyncQualification: - default: false - description: >- - If this flag is set to Yes, Buyer requests to have an instant - qualification to be provided in operation POST response - type: boolean - relatedContactInformation: - description: |- - Party playing a role for this qualification. MEF 79 mandates - providing 'Buyer Contact Information' in the request - ('role=buyerContactInformation') and 'Seller Contact Information' - in the response ('role=sellerContactInformation') - items: - $ref: '#/components/schemas/RelatedContactInformation' - minItems: 1 - type: array - provideAlternative: - default: false - description: >- - Allows the Buyer to indicate if he is willing to get an alternate - proposal if requested product not available. - type: boolean - projectId: - description: >- - This value MAY be assigned by the Buyer to identify a project the - serviceability request is associated with. - type: string - requestedPOQCompletionDate: - description: >- - The latest date a the POQ completion is expected. This attribute is - required when `instantSyncQualification=false` - format: date-time - type: string - required: - - relatedContactInformation - type: object - ProductOfferingQualification_Create: - allOf: - - $ref: '#/components/schemas/ProductOfferingQualification_Common' - - properties: - productOfferingQualificationItem: - description: A non-empty list of POQ items - items: - $ref: '#/components/schemas/ProductOfferingQualificationItem_Create' - minItems: 1 - type: array - required: - - productOfferingQualificationItem - type: object - description: > - Represents a request formulated by the Buyer that is composed of - product offering qualification items. - - Reference: MEF 79 (Sn 8.4) - ProductOfferingQualification_Find: - description: > - This class represent a single list item for the response of - `listProductOfferingQualification` operation. - - Reference: MEF 79 (Sn 8.6) - properties: - id: - description: The POQ Request's unique identifier. - type: string - externalId: - type: string - description: - ID given by the consumer and only understandable by him (to - facilitate his searches afterwards) - state: - description: Current state of the POQ - $ref: '#/components/schemas/MEFPOQTaskStateType' - projectId: - description: - 'The project ID specified by the Buyer in the POQ Request, if any.' - type: string - requestedPOQCompletionDate: - description: > - The latest date the POQ completion is expected by the Buyer, if - specified by the Buyer. - format: date - type: string - required: - - id - - state - type: object - ProductOfferingRef: - description: >- - A reference to a Product Offering offered by the Seller to the - Buyer. A Product Offering contains the commercial and technical - details of a Product sold by a particular Seller. A Product Offering - defines all of the commercial terms and, through association with a - particular Product Specification, defines all the technical attributes - and behaviors of the Product. A Product Offering may constrain the - allowable set of configurable technical attributes and/or behaviors - specified in the associated Product Specification. Defined in MEF 79 - Section 8.4.1.1 - properties: - href: - description: > - Hyperlink to a Product Offering in Sellers catalog. In case Seller - is not providing a catalog API this field is not used. The catalog - is provided by the Seller to the Buyer during onboarding. Hyperlink - MAY be used by the Seller in responses Hyperlink MUST be ignored - by the Seller in case it is provided by the Buyer in a request. - type: string - id: - description: >- - id of a Product Offering. It is assigned by the Seller. The Buyer - and the Seller exchange information about offerings' ids during the - onboarding process. - type: string - required: - - id - type: object - ProductRelationshipWithGrouping: - description: >- - A relationship to existing Product. The requirements for usage for - given Product are described in the Product Specification. The - "WithGrouping" flavour of the Product Relationship allows for providing - a list of related product identifiers within a single Product - Relationship. This can be later used while processing the request as - defined in the Product Specification. The `groupingKey` attribute is - used to achieve this behavior in the API by marking the list of - `ProductRelationshipWithGroupings` within a `product` with a common - key. - properties: - relationshipType: - description: >- - Specifies the type (nature) of the relationship to the related - Product. The nature of required relationships varies for Products - of different types. For example, a UNI or ENNI Product may not have - any relationships, but an Access E-Line may have two mandatory - relationships (related to the UNI on one end and the ENNI on the - other). More complex Products such as multipoint IP or Firewall - Products may have more complex relationships. As a result, the - allowed and mandatory `relationshipType` values are defined in the - Product Specification. - type: string - href: - description: > - Hyperlink to the product in Seller's inventory that is referenced - Hyperlink MAY be set by the Seller in responses. Hyperlink MUST be - ignored by the Seller in case it is provided by the Buyer in a - request. - type: string - id: - description: unique identifier of a Product that is referenced - type: string - groupingKey: - description: > - MEF 79.0.1. Introduces a list of related ids for the - ProductRelationship. For sake of TMF compliance, a `groupingKey` is - introduced to retain id as a simple attribute. Ids from - relationships having the same `groupingKey` and `relationshipType` - MUST be treated as a list of identifiers. - - Reference: MEF 79.0.1 (Sn 7) - type: string - required: - - id - - relationshipType - type: object - ProductSpecificationRef: - description: >- - A reference to a structured set of well-defined technical attributes - and/or behaviors that are used to construct a Product Offering for sale - to a market. - properties: - href: - description: > - Hyperlink to a Product Specification in Sellers catalog. In case - Seller is not providing a catalog API this field is not used. The - catalog is provided by the Seller to the Buyer during onboarding. - Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be - ignored by the Seller in case it is provided by the Buyer in a - request. - type: string - id: - description: Unique identifier of the product specification - type: string - required: - - id - type: object - QualificationItemRelationship: - description: >- - The relationship between product offering qualification items that can - be used to validate business rules between POQ items. - - Reference: MEF 79.0.1 (Sn 6) - properties: - relationshipType: - description: > - One of the relationship types defined in the Product Specification. - For example: "relies on". - type: string - id: - description: - An identifier of the targeted POQ item within the same POQ request - type: string - required: - - id - - relationshipType - type: object - RelatedContactInformation: - description: >- - Contact data for a person or organization that is involved in the - product offering qualification. In a given context it is always - specified by the Seller (e.g. Seller Contact Information) or by the - Buyer. - - Reference: MEF 79 (Sn 8.11) - properties: - number: - description: Phone number - type: string - emailAddress: - description: Email address - type: string - role: - description: A role of the particular contact in the request - type: string - postalAddress: - description: >- - Identifies the postal address of the person or office to be - contacted. - $ref: '#/components/schemas/FieldedAddress' - organization: - description: The organization or company that the contact belongs to - type: string - name: - description: Name of the contact - type: string - numberExtension: - description: Phone number extension - type: string - required: - - emailAddress - - name - - number - - role - type: object - RelatedPlaceRefOrValue: - description: >- - Place defines the places (locations) where the products being subject - of this qualification are to be provided. - discriminator: - mapping: - FieldedAddress: '#/components/schemas/FieldedAddress' - FormattedAddress: '#/components/schemas/FormattedAddress' - GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' - MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' - GeographicAddressRef: '#/components/schemas/GeographicAddressRef' - GeographicSiteRef: '#/components/schemas/GeographicSiteRef' - propertyName: '@type' - properties: - role: - description: >- - Role of this place. The values that can be specified here are - described by Product Specification (e.g. "INSTALL_LOCATION"). - type: string - '@type': - description: > - This field is used as discriminator. The value is the name of one - of the types that inherit from it using 'allOf', i.e. one of - FieldedAddress, FormattedAddress, GeographicAddressLabel, - MEFGeographicPoint, GeographicAddressRef, GeographicSiteRef. - Moreover, it might discriminate for an additional related place as - defined in '@schemaLocation'. - type: string - '@schemaLocation': - description: >- - A URL to a JSON-Schema file that defines additional attributes and - relationships. May be used to define additional related place - types. Usage of this attribute must be agreed between Buyer and - Seller. - format: uri - type: string - required: - - '@type' - - role - type: object - TerminationError: - description: >- - This indicates an error that caused an Item to be terminated. The code - and propertyPath should be used like in Error422. - properties: - code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused the - validation issue. It is highly recommended that this property - should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - value: - description: Text to describe the reason of the termination. - type: string - type: object - TimeUnit: - description: | - Represents a unit of time. - Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) - enum: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - type: string \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml deleted file mode 100644 index b03298d0..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.customized.yaml +++ /dev/null @@ -1,3539 +0,0 @@ -openapi: 3.0.1 -info: - description: - "**This file forms part of MEF 123** \n\nThis API implements Business\ - \ Requirements described in MEF 57.2\n\nProduct Order Management allows the Buyer\ - \ to request the Seller to initiate and complete the\nfulfillment process of an\ - \ installation of a Product Offering, an update to\nan existing Product, or a\ - \ disconnect of an existing Product at the address\ndefined by the Buyer.\n\n\ - List of supported Use Cases:\n\n- Create Product Order\n- Update Product Order\ - \ by Product Order Identifier\n- Retrieve List of Product Orders\n- Retrieve Product\ - \ Order by Product Order Identifier\n- Modify Product Order Item Requested Delivery\ - \ Date\n- Retrieve Modify Product Order Item Requested Delivery Date List\n- Retrieve\ - \ Modify Product Order Item Requested Delivery Date by Identifier\n- Cancel Product\ - \ Order\n- Retrieve List of Cancel Product Orders\n- Retrieve Cancel Product Order\ - \ Request by Cancel Product Order Identifier\n- Initiate Charge\n- Respond to\ - \ Charge\n- Retrieve List of Charges\n- Retrieve Charge by Charge Identifier\n\ - - Register for Notifications\n\nCopyright 2022 MEF Forum and its contributors.\n\ - \nThis file includes content based on the TM Forum Product Order API (TMF622\n\ - v4.0.0) available at https://github.com/tmforum-apis/TMF622_ProductOrder,\nwhich\ - \ is licensed by the TM Forum under the Apache License version 2.0. Such\ncontent\ - \ has been modified by the MEF Forum and its contributors.\n" - title: Product Ordering Management - version: 10.0.0 -servers: - - url: "https://{serverBase}/mefApi/sonata/productOrderingManagement/v10/" - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -security: - - oauth2MEFLSOAPI: - - default -tags: - - name: productOrder - - name: cancelProductOrder - - name: charge - - name: modifyProductOrderItemRequestedDeliveryDate - - name: events subscription -paths: - /productOrder: - get: - description: This operation lists or finds ProductOrder entities - operationId: listProductOrder - parameters: - - description: State of the Product Order - in: query - name: state - required: false - schema: - type: string - enum: - - acknowledged - - assessingCancellation - - cancelled - - completed - - failed - - held.assessingCharge - - inProgress - - partial - - pending.assessingModification - - pendingCancellation - - rejected - - description: - A number that uniquely identifies an order within the Buyer's - enterprise. - in: query - name: externalId - required: false - schema: - type: string - - description: - An identifier that is used to group Product Orders that represent - a unit of functionality that is important to a Buyer. - in: query - name: projectId - required: false - schema: - type: string - - description: Date when the order was created greater than - in: query - name: orderDate.gt - required: false - schema: - type: string - format: date-time - - description: Date when the order was created lesser than - in: query - name: orderDate.lt - required: false - schema: - type: string - format: date-time - - description: Effective completion date greater than - in: query - name: completionDate.gt - required: false - schema: - type: string - format: date-time - - description: Effective completion date lesser than - in: query - name: completionDate.lt - required: false - schema: - type: string - format: date-time - - description: - This is requested date to get this Product Order Item completed - greater than - in: query - name: itemRequestedCompletionDate.gt - required: false - schema: - type: string - format: date-time - - description: - This is requested date to get this Product Order Item completed - lesser than - in: query - name: itemRequestedCompletionDate.lt - required: false - schema: - type: string - format: date-time - - description: - "Seller planned completion date of the Product Order Item, greater\ - \ than" - in: query - name: itemExpectedCompletionDate.gt - required: false - schema: - type: string - format: date-time - - description: - "Seller planned completion date of the Product Order Item, lesser\ - \ than" - in: query - name: itemExpectedCompletionDate.lt - required: false - schema: - type: string - format: date-time - - description: order cancellation date greater than - in: query - name: cancellationDate.gt - required: false - schema: - type: string - format: date-time - - description: order cancellation date lesser than - in: query - name: cancellationDate.lt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by the client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/ProductOrder_Find" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - listProductOrder - summary: Lists or finds ProductOrder objects - tags: - - productOrder - post: - description: This operation creates a ProductOrder entity. - operationId: createProductOrder - parameters: - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder_Create" - description: The ProductOrder to be created - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder" - description: Created (https://tools.ietf.org/html/rfc7231#section-6.3.2) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - createProductOrder - summary: Creates a ProductOrder - tags: - - productOrder - x-codegen-request-body-name: productOrder - /productOrder/{id}: - get: - description: This operation retrieves a ProductOrder entity. - operationId: retrieveProductOrder - parameters: - - description: Identifier of the ProductOrder - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - retrieveProductOrder - summary: Retrieves a ProductOrder by ID - tags: - - productOrder - patch: - description: This operation updates partially a ProductOrder entity. - operationId: patchProductOrder - parameters: - - description: Identifier of the ProductOrder - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder_Update" - description: The ProductOrder to be updated - required: true - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder" - description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "409": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error409" - description: Conflict - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - patchProductOrder - summary: Updates partially a ProductOrder - tags: - - productOrder - x-codegen-request-body-name: productOrder - /cancelProductOrder: - get: - description: This operation lists or finds CancelProductOrder entities - operationId: listCancelProductOrder - parameters: - - in: query - name: productOrderId - required: false - schema: - type: string - - in: query - name: state - required: false - schema: - type: string - enum: - - acknowledged - - done - - done.declined - - inProgress.assessingCharge - - rejected - - description: - "Identifies the type of reason, Technical or Commercial, for\ - \ the Cancellation request" - in: query - name: cancellationReasonType - required: false - schema: - type: string - enum: - - technical - - commercial - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/CancelProductOrder_Find" - description: Success - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - listCancelProductOrder - summary: Lists or finds CancelProductOrder objects - tags: - - cancelProductOrder - post: - description: This operation creates a CancelProductOrder entity. - operationId: createCancelProductOrder - parameters: - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/CancelProductOrder_Create" - description: The CancelProductOrder to be created - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/CancelProductOrder" - description: Created - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - createCancelProductOrder - summary: Creates a CancelProductOrder - tags: - - cancelProductOrder - x-codegen-request-body-name: cancelProductOrder - /cancelProductOrder/{id}: - get: - description: This operation retrieves a CancelProductOrder entity. - operationId: retrieveCancelProductOrder - parameters: - - description: Identifier of the CancelProductOrder - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/CancelProductOrder" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveCancelProductOrder - summary: Retrieves a CancelProductOrder by ID - tags: - - cancelProductOrder - /charge: - get: - description: This operation lists or finds Charge entities - operationId: listCharge - parameters: - - description: id of the Product Order this Charge relates to. - in: query - name: productOrderId - required: false - schema: - type: string - - description: id of the Product Order Item this Charge relates to. - in: query - name: productOrderItemId - required: false - schema: - type: string - - description: Date that the Charge was created by the Seller (greater than) - in: query - name: creationDate.gt - required: false - schema: - type: string - format: date-time - - description: Date that the Charge was created by the Seller. (greater than) - in: query - name: creationDate.lt - required: false - schema: - type: string - format: date-time - - description: - The date that the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat all - charges as declined (greater than) - in: query - name: responseDueDate.gt - required: false - schema: - type: string - format: date-time - - description: - The date that the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat all - charges as declined (greater than) - in: query - name: responseDueDate.lt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/MEFProductOrderCharge_Find" - description: Success - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - listCharge - summary: Lists or finds Charge objects - tags: - - charge - /charge/{id}: - get: - description: This operation retrieves a Charge entity. - operationId: retrieveCharge - parameters: - - description: Identifier of the Charge - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProductOrderCharge" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveCharge - summary: Retrieves a Charge by ID - tags: - - charge - patch: - description: This operation updates partially a Charge entity. - operationId: patchCharge - parameters: - - description: Identifier of the Charge - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProductOrderCharge_Update" - description: The Charge to be updated - required: true - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProductOrderCharge" - description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "409": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error409" - description: Conflict - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - patchCharge - summary: Updates partially a Charge - tags: - - charge - x-codegen-request-body-name: charge - /hub: - post: - description: - "Sets the communication endpoint address the service instance must\ - \ use to deliver information about its health state, execution state, failures\ - \ and metrics." - operationId: registerListener - parameters: - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/EventSubscriptionInput" - description: Data containing the callback endpoint to deliver the information - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/EventSubscription" - description: Subscribed - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - registerListener - summary: Register a listener - tags: - - events subscription - x-codegen-request-body-name: data - /hub/{id}: - delete: - description: - "Resets the communication endpoint address the service instance\ - \ must use to deliver information about its health state, execution state,\ - \ failures and metrics." - operationId: unregisterListener - parameters: - - description: The id of the registered listener - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "204": - description: Deleted - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - unregisterListener - summary: Unregister a listener - tags: - - events subscription - get: - description: This operation retrieves a hub entity. - operationId: retrieveHub - parameters: - - description: Identifier of the Hub - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/EventSubscription" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveHub - summary: Retrieves a Hub by ID - tags: - - events subscription - /modifyProductOrderItemRequestedDeliveryDate: - get: - description: - This operation lists or finds ModifyProductOrderItemRequestedDeliveryDate - entities - operationId: listModifyProductOrderItemRequestedDeliveryDate - parameters: - - in: query - name: productOrderId - required: false - schema: - type: string - - in: query - name: state - required: false - schema: - type: string - enum: - - acknowledged - - done - - done.declined - - inProgress.assessingCharge - - rejected - - description: Indicates that expedited treatment is requested. - in: query - name: expediteIndicator - required: false - schema: - type: boolean - - description: - Identifies the Buyer's desired due date (requested delivery date) - - greater than - in: query - name: requestedCompletionDate.gt - required: false - schema: - type: string - format: date-time - - description: - Identifies the Buyer's desired due date (requested delivery date) - - lesser than - in: query - name: requestedCompletionDate.lt - required: false - schema: - type: string - format: date-time - - description: - The date on which the Seller assigned the Modify Product Order - Item Requested Delivery Data Identifier - greater than - in: query - name: creationDate.gt - required: false - schema: - type: string - format: date-time - - description: - The date on which the Seller assigned the Modify Product Order - Item Requested Delivery Data Identifier - lesser than - in: query - name: creationDate.lt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" - description: Success - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - listModifyProductOrderItemRequestedDeliveryDate - summary: Lists or finds ModifyProductOrderItemRequestedDeliveryDate objects - tags: - - modifyProductOrderItemRequestedDeliveryDate - post: - description: - This operation creates a ModifyProductOrderItemRequestedDeliveryDate - entity. - operationId: createModifyProductOrderItemRequestedDeliveryDate - parameters: - - description: |- - The unique identifier of the organization that is acting as the Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate_Create" - description: The ModifyProductOrderItemRequestedDeliveryDate to be created - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" - description: Created - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - createModifyProductOrderItemRequestedDeliveryDate - summary: Creates a ModifyProductOrderItemRequestedDeliveryDate - tags: - - modifyProductOrderItemRequestedDeliveryDate - x-codegen-request-body-name: modifyProductOrderItemRequestedDeliveryDate - /modifyProductOrderItemRequestedDeliveryDate/{id}: - get: - description: - This operation retrieves a ModifyProductOrderItemRequestedDeliveryDate - entity. - operationId: retrieveModifyProductOrderItemRequestedDeliveryDate - parameters: - - description: Identifier of the ModifyProductOrderItemRequestedDeliveryDate - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveModifyProductOrderItemRequestedDeliveryDate - summary: Retrieves a ModifyProductOrderItemRequestedDeliveryDate by ID - tags: - - modifyProductOrderItemRequestedDeliveryDate -components: - schemas: - CancelProductOrder: - type: object - description: Request for cancellation an existing product order - properties: - cancellationDeniedReason: - type: string - description: - "If the Cancel Product Order request is denied by the Seller,\ - \ the Seller provides a reason to the Buyer using this attribute." - cancellationReason: - type: string - description: - An optional attribute that allows the Buyer to provide additional - detail to the Seller on their reason for cancelling the Product Order - cancellationReasonType: - $ref: "#/components/schemas/CancellationReasonType" - charge: - $ref: "#/components/schemas/MEFProductOrderChargeRef" - href: - type: string - description: | - Hyperlink to the cancellation request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - Unique identifier for the Cancel Product Order that is generated - by the Seller when the Cancel Product Order request `state` is set to - `acknowledged` - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Cancel Product Order. - The rule for mapping a represented attribute - value to a `role` is to use the _lowerCamelCase_ pattern e.g. - - Cancel Product Order Contact: `role=cancelProductOrderContact` - - Cancel Product Order Seller Contact: `role=cancelProductOrderSellerContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - state: - $ref: "#/components/schemas/MEFChargeableTaskStateType" - required: - - id - - productOrder - - relatedContactInformation - - state - CancelProductOrder_Create: - type: object - description: |- - Request for cancellation an existing product order - Skipped properties: id,href,state,effectiveCancellationDate - properties: - cancellationReason: - type: string - description: - An optional attribute that allows the Buyer to provide additional - detail to the Seller on their reason for cancelling the Product Order - cancellationReasonType: - $ref: "#/components/schemas/CancellationReasonType" - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Cancel Product Order. - The rule for mapping a represented attribute - value to a `role` is to use the _lowerCamelCase_ pattern e.g. - - Cancel Product Order Contact: `role=cancelProductOrderContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - minItems: 1 - required: - - productOrder - - relatedContactInformation - CancelProductOrder_Find: - type: object - description: A response to a Buyer's get List of Cancel Product Orders - properties: - cancellationReasonType: - $ref: "#/components/schemas/CancellationReasonType" - id: - type: string - description: - Unique identifier for the Cancel Product Order that is generated - by the Seller when the Cancel Product Order request `state` is set to - `acknowledged` - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - state: - $ref: "#/components/schemas/MEFChargeableTaskStateType" - required: - - cancellationReasonType - - id - - productOrder - - state - CancellationReasonType: - type: string - description: - "Identifies the type of reason, Technical or Commercial, for the\ - \ Cancellation request" - enum: - - technical - - commercial - Duration: - type: object - description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." - properties: - amount: - type: integer - description: "Duration (number of seconds, minutes, hours, etc.)" - units: - $ref: "#/components/schemas/TimeUnit" - required: - - amount - - units - Error: - type: object - description: | - Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. - properties: - message: - type: string - description: - Text that provides mode details and corrective actions related - to the error. This can be shown to a client user. - reason: - type: string - description: - Text that explains the reason for the error. This can be shown - to a client user. - maxLength: 255 - referenceError: - type: string - format: uri - description: URL pointing to documentation describing the error - required: - - reason - Error400: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error400Code" - required: - - code - description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) - Error400Code: - type: string - description: |- - One of the following error codes: - - missingQueryParameter: The URI is missing a required query-string parameter - - missingQueryValue: The URI is missing a required query-string parameter value - - invalidQuery: The query section of the URI is invalid. - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - Error401: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error401Code" - required: - - code - description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) - Error401Code: - type: string - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - Error403: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error403Code" - required: - - code - description: - Forbidden. This code indicates that the server understood the request - but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) - Error403Code: - type: string - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - Error404: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - notFound: A current representation for the target resource not found - enum: - - notFound - required: - - code - description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error409: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - conflict: The client has provided a value whose semantics are not appropriate for the property. - enum: - - conflict - required: - - code - description: Conflict (https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.8) - Error422: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error422Code" - propertyPath: - type: string - description: | - A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. - Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). - required: - - code - description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - type: string - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - Error500: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. - enum: - - internalError - required: - - code - description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) - Error501: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - notImplemented: Method not supported by the server - enum: - - notImplemented - required: - - code - description: - Not Implemented. Used in case Seller is not supporting an optional - operation (https://tools.ietf.org/html/rfc7231#section-6.6.2) - EventSubscription: - type: object - description: | - This resource is used to respond to notification subscriptions. - properties: - callback: - type: string - description: - The value provided by the Buyer in `EventSubscriptionInput` - during notification registration - id: - type: string - description: - An identifier of this Event Subscription assigned by the Seller - when a resource is created. - query: - type: string - description: - The value provided by the Buyer in `EventSubscriptionInput` - during notification registration - required: - - callback - - id - EventSubscriptionInput: - type: object - description: This class is used to register for Notifications. - properties: - callback: - type: string - description: - "This callback value must be set to *host* property from Buyer\ - \ Product Order Notification API (productOrderNotification.api.yaml).\ - \ This property is appended with the base path and notification resource\ - \ path specified in that API to construct an URL to which notification\ - \ is sent. E.g. for \"callback\": \"https://buyer.co/listenerEndpoint\"\ - , the product order state change event notification will be sent to: `https://buyer.co/listenerEndpoint/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent`" - query: - type: string - description: - "This attribute is used to define to which type of events to\ - \ register to. Example: \"query\":\"eventType = productOrderStateChangeEvent\"\ - . To subscribe for more than one event type, put the values separated\ - \ by comma: `eventType=productOrderStateChangeEvent,productOrderItemStateChangeEvent`.\ - \ The possible values are enumerated by 'ProductOrderEventType', `CancelProductOrderEventType`\ - \ in productOrderNotification.api.yaml. An empty query is treated as specifying\ - \ no filters - ending in subscription for all event types." - required: - - callback - FieldedAddress: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - city: - type: string - description: The city that the address is in - country: - type: string - description: Country that the address is in - geographicSubAddress: - $ref: "#/components/schemas/GeographicSubAddress" - locality: - type: string - description: The locality that the address is in - postcode: - type: string - description: - "Descriptor for a postal delivery area, used to speed and\ - \ simplify the delivery of mail (also known as zip code)" - postcodeExtension: - type: string - description: - An extension of a postal code. E.g. the part following the - dash in a US urban property address - stateOrProvince: - type: string - description: The State or Province that the address is in - streetName: - type: string - description: Name of the street or other street type - streetNr: - type: string - description: - Number identifying a specific property on a public street. - It may be combined with streetNrLast for ranged addresses. MEF 79 defines - it as required however as in certain countries it is not used we make - it optional in API. - streetNrLast: - type: string - description: Last number in a range of street numbers allocated to a property - streetNrLastSuffix: - type: string - description: Last street number suffix for a ranged address - streetNrSuffix: - type: string - description: The first street number suffix - streetSuffix: - type: string - description: A modifier denoting a relative direction - streetType: - type: string - description: - "The type of street (e.g., alley, avenue, boulevard, brae,\ - \ crescent, drive, highway, lane, terrace, parade, place, tarn, way,\ - \ wharf)" - required: - - city - - country - - streetName - description: - "A type of Address that has a discrete field and value for each\ - \ type of boundary or identifier down to the lowest level of detail. For example\ - \ \"street number\" is one field, \"street name\" is another field, etc." - FormattedAddress: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - addrLine1: - type: string - description: The first address line in a formatted address - addrLine2: - type: string - description: The second address line in a formatted address - city: - type: string - description: The city that the address is in - country: - type: string - description: Country that the address is in - locality: - type: string - description: - "An area of defined or undefined boundaries within a local\ - \ authority or other legislatively defined area, usually rural or semi-rural\ - \ in nature" - postcode: - type: string - description: - "Descriptor for a postal delivery area, used to speed and\ - \ simplify the delivery of mail (also known as ZIP code)" - postcodeExtension: - type: string - description: - An extension of a postal code. E.g. the part following the - dash in an US urban property address - stateOrProvince: - type: string - description: The State or Province that the address is in - required: - - addrLine1 - - city - - country - description: - "A type of Address that has discrete fields for each type of boundary\ - \ or identifier with the exception of street and more specific location details,\ - \ which are combined into a maximum of two strings based on local postal addressing\ - \ conventions." - GeographicAddressLabel: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - externalReferenceId: - type: string - description: A reference to an address by id - externalReferenceType: - type: string - description: - Uniquely identifies the authority that specifies the addresses - reference and/or its type (if the authority specifies more than one - type of address). The value(s) to be used are to be agreed during the - onboarding. For North American providers this would normally be CLLI - (Common Language Location Identifier) code. - required: - - externalReferenceId - - externalReferenceType - description: - "A unique identifier controlled by a generally accepted independent - administrative authority that specifies a fixed geographical location. " - GeographicAddressRef: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - href: - type: string - description: | - Hyperlink to the referenced GeographicAddress. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - Identifier of the referenced Geographic Address. This identifier - is assigned during a successful address validation request (Geographic - Address Validation API) - required: - - id - description: | - A reference to a Geographic Address resource available through Address Validation API. - GeographicSiteRef: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - href: - type: string - description: | - Hyperlink to the referenced GeographicSite. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: Identifier of the referenced Geographic Site. - required: - - id - description: | - A reference to a Geographic Site resource available through Service Site API - GeographicSubAddress: - type: object - description: "Additional fields used to specify an address, as detailed as possible." - properties: - buildingName: - type: string - description: | - Allows for identification of places that require building name as part of addressing information - levelNumber: - type: string - description: - "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ - \ 2" - levelType: - type: string - description: Describes level types within a building - privateStreetName: - type: string - description: - '"Private streets internal to a property (e.g. a university) - may have internal names that are not recorded by the land title office' - privateStreetNumber: - type: string - description: Private streets numbers internal to a private street - subUnit: - type: array - description: - "Representation of a MEFSubUnit It is used for describing subunit\ - \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ - \ WHARF." - items: - $ref: "#/components/schemas/MEFSubUnit" - MEFAcceptedRejectedType: - type: string - description: Indicator of acceptance - enum: - - accepted - - rejected - MEFBillingAccountRef: - type: object - description: A reference to the Buyer's Billing Account - properties: - id: - type: string - description: - Identifies the buyer's billing account to which the recurring - and non-recurring charges for this order or order item will be billed. - Required if the Buyer has more than one Billing Account with the Seller - and for all new Product Orders. - required: - - id - MEFBuyerSellerType: - type: string - description: Indicates if the note is from Buyer or Seller. - enum: - - buyer - - seller - MEFCancelProductOrderRef: - type: object - description: A reference to a Cancel Product Order instance - properties: - href: - type: string - description: Hyperlink to access the Cancel Product Order - id: - type: string - description: A unique identifier of the Cancel Product Order - required: - - id - MEFChargePeriod: - type: string - description: Used for a recurring charge to indicate period. - enum: - - hour - - day - - week - - month - - year - MEFChargeableTaskStateType: - type: string - description: | - The states as defined by TMF622 and extended to meet MEF requirements. - - | Name | MEF 57.2 Name | Description | - | -------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | inProgress.assessingCharge | ACCESSING_CHARGE | The Modify Product Order Item Requested Delivery Date request results in a Charge being initiated by the Seller. The Modify Product Order Item Requested Delivery Date remains in this state until the Charge is completed or withdrawn by the Seller. All charges within a Charge that was initiated due to a Modify Product Order Item Requested Delivery Date are considered Blocking charges. If any charge is not accepted by the Buyer, the Modify Product Order Item Requested Delivery Date moves from the `inProgress.assessingCharge` state to the `done.declined` state. | - | acknowledged | ACKNOWLEDGED | A Modify Product Order Item Requested Delivery Date request has been received and has passed basic validation. The Modify Product Order Item Requested Delivery Date Identifier is assigned in the `acknowledged` state. Validation of Modify Product Order Item Requested Delivery Date attributes as applicable is completed in the `acknowledged` state. | - | done | ACCEPTED | A Modify Product Order Item Requested Delivery Date request has been received, passed all validations, if a Charge is associated all Charge Items have been accepted by the Buyer, and the Product Order Item Completion Date has been updated as requested. | - | done.declined | DECLINED | Blocking charges associated with a Modify Product Order Item Requested Delivery Date have been declined by the Buyer. No updates are made to the Product Order Item. | - | rejected | REJECTED | A Modify Product Order Item Requested Delivery Date request was submitted by the Buyer, and it has failed any validation checks the Seller performs during the `acknowledged` state. No updates are made to the referenced Product Order Item. - enum: - - acknowledged - - done - - done.declined - - inProgress.assessingCharge - - rejected - MEFEndOfTermAction: - type: string - description: - "The action the Seller will take once the term expires. \nRoll\ - \ indicates that the Product's contract will continue on a rolling basis for\ - \ the duration of the Roll Interval at the end of the Term. \nAuto-disconnect\ - \ indicates that the Product will be disconnected at the end of the Term.\ - \ \nAuto-renew indicates that the Product's contract will be automatically\ - \ renewed for the Term Duration at the end of the Term." - enum: - - roll - - autoDisconnect - - autoRenew - MEFGeographicPoint: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - spatialRef: - type: string - description: - The spatial reference system used to determine the coordinates - (e.g. "WGS84"). The system used and the value of this field are to be - agreed during the onboarding process. - x: - type: string - description: The latitude expressed in the format specified by the `spacialRef` - "y": - type: string - description: The longitude expressed in the format specified by the `spacialRef` - z: - type: string - description: The elevation expressed in the format specified by the `spacialRef` - required: - - spatialRef - - x - - "y" - description: | - A MEFGeographicPoint defines a geographic point through coordinates. - MEFItemTerm: - type: object - description: The term of the Item - properties: - description: - type: string - description: Description of the term - duration: - $ref: "#/components/schemas/Duration" - endOfTermAction: - $ref: "#/components/schemas/MEFEndOfTermAction" - name: - type: string - description: Name of the term - rollInterval: - $ref: "#/components/schemas/Duration" - required: - - duration - - endOfTermAction - - name - MEFMilestone: - type: object - description: - Milestones associated to the Product Order Item. Set by the Seller - when a Milestone occurs. - properties: - date: - type: string - format: date-time - description: The date on when the milestone was reached - name: - type: string - description: Name of the Milestone. - note: - type: string - description: Additional comment related to milestone change. - required: - - date - - name - MEFModifyProductOrderItemRequestedDeliveryDate: - type: object - description: - A response to a request initiated by the Buyer to modify the Requested - Completion Date or the Expedite Indicator of a Product Order Item. - properties: - creationDate: - type: string - format: date-time - description: - Date that the Modify Product Order Item Requested Delivery - Date was created in the Seller's system and the id was assigned - expediteIndicator: - type: boolean - default: false - description: - "Indicates that expedited treatment is requested. Set by the\ - \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ - \ the Requested Completion Date to the expedited date" - href: - type: string - description: | - Hyperlink to the modification request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - Unique identifier for the MEFModifyProductOrderItemRequestedDeliveryDate - that is generated by the Seller when the MEFModifyProductOrderItemRequestedDeliveryDate - request is moved to the 'acknowledged' state. - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - requestedCompletionDate: - type: string - format: date-time - description: - Identifies the Buyer's desired due date (requested delivery - date) - state: - $ref: "#/components/schemas/MEFChargeableTaskStateType" - required: - - creationDate - - id - - productOrderItem - - state - MEFModifyProductOrderItemRequestedDeliveryDateRef: - type: object - description: a reference to Modify Product Order Item Requested Delivery Date - properties: - href: - type: string - description: - Hyperlink to access the Modify Product Order Item Requested - Delivery Date - id: - type: string - description: - A unique identifier of the Modify Product Order Item Requested - Delivery Date - required: - - id - MEFModifyProductOrderItemRequestedDeliveryDate_Create: - type: object - description: - A request initiated by the Buyer to modify the Requested Requested - Delivery Date or the Expedite Indicator of a Product Order Item. - properties: - expediteIndicator: - type: boolean - default: false - description: - "Indicates that expedited treatment is requested. Set by the\ - \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ - \ the Requested Completion Date to the expedited date" - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - requestedCompletionDate: - type: string - format: date-time - description: - Identifies the Buyer's desired due date (requested delivery - date) - required: - - productOrderItem - MEFOrderItemCoordinatedAction: - type: object - description: - The interval after the completion of one or more related Order - Items that this Order Item can be started or completed - properties: - coordinatedActionDelay: - $ref: "#/components/schemas/Duration" - coordinationDependency: - $ref: "#/components/schemas/MEFOrderItemCoordinationDependencyType" - itemId: - type: string - description: - Specifies Order Item that is to be coordinated with this Order - Item. - required: - - coordinatedActionDelay - - coordinationDependency - - itemId - MEFOrderItemCoordinationDependencyType: - type: string - description: | - Possible values of the Order Item Coordination Dependency - - | OrderItemCoordinationDependencyType | MEF 57.2 | Description | - |-------------------------------------|------------------|----------------------------------------------------------------------------------------------------| - | startToStart | START_TO_START | Work on the Specified Order Item can only be started after the Coordinated Order Items are started | - | startToFinish | START_TO_FINISH | The Coordinated Order Items must complete before work on the Specified Order Item begins | - | finishToStart | FINISH_TO_START | Work on the Related Order Items begins after the completion of the Specified Order Item | - | finishToFinish | FINISH_TO_FINISH | Work on the Related Order Items completes at the same time as the Specified Order Item | - enum: - - startToStart - - startToFinish - - finishToStart - - finishToFinish - MEFPriceType: - type: string - description: Indicates if the price is for recurring or non-recurring charges. - enum: - - recurring - - nonRecurring - - usageBased - MEFProductActionType: - type: string - description: | - Action to be performed on the Product that the Order Item refers to. - - | ProductActionType | MEF 57.2 | - | ----------------- | ---------- | - | add | INSTALL | - | modify | CHANGE | - | delete | DISCONNECT | - enum: - - add - - modify - - delete - MEFProductConfiguration: - type: object - description: - MEFProductConfiguration is used as an extension point for MEF specific - product/service payload. The `@type` attribute is used as a discriminator - discriminator: - propertyName: "@type" - properties: - "@type": - type: string - description: - "The name of the type, defined in the JSON schema specified\ - \ above, for the product that is the subject of the Product Order Request.\ - \ The named type must be a subclass of MEFProductConfiguration." - required: - - "@type" - MEFProductOrderCharge: - type: object - description: - "When non-recurring or updated recurring charges are identified\ - \ by the Seller during their processing of a Product Order, the Seller must\ - \ communicate these charges to the Buyer and the Buyer must respond to the\ - \ Seller informing the Seller if they accept or reject each charge. The Seller\ - \ indicates for each charge, if the charge is Blocking or non-Blocking. If\ - \ the Buyer rejects a Blocking Charge, the Seller will cancel that Product\ - \ Order Item and any related Product Order Items. If the Buyer rejects a non-blocking\ - \ Charge, the Seller may proceed with fulfillment of the Product Order Item." - properties: - cancelProductOrder: - $ref: "#/components/schemas/MEFCancelProductOrderRef" - chargeItem: - type: array - description: A list of Charge Items contained in the Charge - items: - $ref: "#/components/schemas/MEFProductOrderChargeItem" - creationDate: - type: string - format: date-time - description: Date that the Charge was created by the Seller. - href: - type: string - description: | - Hyperlink to the Charge. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: A unique identifier of the Charge - modifyProductOrderItemRequestedDeliveryDate: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDateRef" - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - responseDueDate: - type: string - format: date-time - description: - The date by which the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat - all charges as declined and move them to `declinedByBuyer` status and - put the Charge to `completed` status. - state: - $ref: "#/components/schemas/MEFProductOrderChargeStateType" - required: - - chargeItem - - creationDate - - id - - responseDueDate - - state - MEFProductOrderCharge_Find: - type: object - description: A response object for Buyer's get Charge List request. - properties: - creationDate: - type: string - format: date-time - description: Date that the Charge was created by the Seller. - id: - type: string - description: A unique identifier of the Charge - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - responseDueDate: - type: string - format: date-time - description: - The date by which the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat - all charges as declined and move them to `declinedByBuyer` status and - put the Charge to `completed` status. - state: - $ref: "#/components/schemas/MEFProductOrderChargeStateType" - required: - - creationDate - - id - - responseDueDate - - state - MEFProductOrderChargeActivityType: - type: string - description: | - Possible values for the state of the Charge Activity Type - enum: - - new - - change - MEFProductOrderChargeItem: - type: object - description: A single component part of the Charge - properties: - acceptanceIndicator: - $ref: "#/components/schemas/MEFAcceptedRejectedType" - activityType: - $ref: "#/components/schemas/MEFProductOrderChargeActivityType" - blocking: - type: boolean - description: - "Indicates if rejecting the charge will cause the Seller to\ - \ cancel the Product Order Item, or close the Cancel Product Order or\ - \ Modify Product Order Item Requested Delivery Date without action." - id: - type: string - description: - An identifier that is unique among all Charge Items within - a Charge - note: - type: array - description: | - Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. - items: - $ref: "#/components/schemas/Note" - price: - $ref: "#/components/schemas/Price" - priceCategory: - $ref: "#/components/schemas/MEFPriceCategory" - priceType: - $ref: "#/components/schemas/MEFPriceType" - recurringChargePeriod: - $ref: "#/components/schemas/MEFChargePeriod" - state: - $ref: "#/components/schemas/MEFProductOrderChargeItemStateType" - unitOfMeasure: - type: string - description: - "Unit of Measure if price depending on it is usageBased (Gb,\ - \ SMS volume, etc..)" - required: - - activityType - - blocking - - id - - price - - priceCategory - - priceType - - state - MEFPriceCategory: - type: string - description: A description of the cause of the Charge Item - enum: - - cancellation - - construction - - connection - - disconnect - - expedite - - other - MEFProductOrderChargeItemStateType: - type: string - description: | - Possible values for the state of the Charge Item - - | State | MEF 57.2 Name | Description | - | ------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `awaitingResponse` | AWAITING_RESPONSE | A Charge has been initiated by the Buyer. The charge includes one or more charges related to a Product Order or Product Order Item. Buyer has not indicated whether they accept or reject the charges via a Respond to Charge request. | - | `completed` | COMPLETED | All Charge Items included in the Charge have moved to either the `acceptedByBuyer` state, the `declinedByBuyer` state, or the `withdrawnBySeller` state. | - | `timeout` | TIMEOUT | A Charge Item has been declined by the Buyer. The referenced Product Order and Product Order Items are updated. If a Blocking charge is declined, the Seller may cancel the referenced Product Order Item and any related Product Order Items, the related Cancel Product Order, or the related Modify Product Order Item Requested Delivery Date. | - | `withdrawnBySeller` | WITHDRAWN_BY_SELLER | The Seller determines that the Charge Item is incorrect. They withdraw the Charge Item and initiate a new Charge with the required correction(s) if needed. | - enum: - - awaitingResponse - - acceptedByBuyer - - declinedByBuyer - - withdrawnBySeller - MEFProductOrderChargeItem_Update: - type: object - description: - A type used to perform Buyer's response to a Charge Item - to accept - or reject it. - properties: - acceptanceIndicator: - $ref: "#/components/schemas/MEFAcceptedRejectedType" - id: - type: string - description: - "An identifier that is unique among Charge. Used for Charge\ - \ Item matching, not to be update." - note: - type: array - description: | - Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. - items: - $ref: "#/components/schemas/Note" - required: - - acceptanceIndicator - - id - MEFProductOrderChargeRef: - type: object - description: A reference to a Charge instance - properties: - href: - type: string - description: Hyperlink to access the Charge - id: - type: string - description: A unique identifier of the Charge - required: - - id - MEFProductOrderChargeStateType: - type: string - description: | - Possible values for the state of the Charge - - | State | Description | - | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | - | `completed` | All Charge Items included in the Charge for a given Product Order Item have moved to either the `accepted` state or the `declined` state. | - | `awaitingResponse` | A Charge has been initiated by the Buyer. The charge includes one or more charges. | - | `timeout` | A response has not been received from the Buyer within the `responseDueDate`. This is treated as if the Buyer declined the Charge Items. | - | `withdrawnBySeller` | The Seller determines that the Charge is incorrect. They withdraw the Charge and initiate a new Charge with the required correction(s). | - enum: - - awaitingResponse - - completed - - timeout - - withdrawnBySeller - MEFProductOrderCharge_Update: - type: object - description: - A subset of MEFProductOrderCharge that is allowed to be updated - by the Buyer - properties: - chargeItem: - type: array - description: A list of Charge Items contained in the Charge - items: - $ref: "#/components/schemas/MEFProductOrderChargeItem_Update" - minItems: 1 - required: - - chargeItem - MEFProductOrderItemRef: - type: object - description: It's a ProductOrder item - properties: - productOrderHref: - type: string - description: Reference of the related ProductOrder. - productOrderId: - type: string - description: Unique identifier of a ProductOrder. - productOrderItemId: - type: string - description: Id of an Item within the Product Order - required: - - productOrderId - - productOrderItemId - MEFProductOrderItemStateChange: - type: object - description: - "Holds the State notification reasons and associated date the State\ - \ changed, populated by the server" - properties: - changeDate: - type: string - format: date-time - description: The date on when the state was reached - changeReason: - type: string - description: Additional comment related to state change. - state: - $ref: "#/components/schemas/MEFProductOrderItemStateType" - MEFProductOrderItemStateType: - type: string - description: | - Possible values for the state of the Product Order Item The following - mapping has been used between `MEFProductOrderItemStateType` and MEF - 57.2: - - | state | MEF 57.2 name | Description | - | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | - | `acknowledged` | ACKNOWLEDGED | A Product Order Item has been received and has passed basic business validations. From the `acknowledged` state the Product Order Item is further validated and depending on the results of the validation and if other Product Order Items in the Product Order are also validated the Product Order Item moves to `inProgress`, `rejected.validated`, or `rejected.unassessed`. | - | `cancelled` | CANCELLED | The Product Order has moved to the `pendingCancellation` state. All Product Order Items move to `cancelled`. | - | `completed` | COMPLETED | The Product Order Item has completed provisioning. This is an end state | - | `failed` | FAILED | The fulfillment of a Product Order Item has failed. A Product Order Item may fail because the Buyer declined a Blocking charge identified via the Charge, the Buyer failed to respond to a Charge Item included in a Charge, or the Seller is unable to fulfill the Product Order Item. A Product Order Item moving to `failed` state results in the Product Order State being `failed` or `partial`. This is a terminal state. | - | `held` | HELD | The Product Order Item cannot be progressed due to Charge the Seller awaiting a response from the Buyer on a Charge. The Seller stops work on the Product Order Item until the Charge has completed. Upon acceptance by the Buyer of all Blocking charges, the Product Order Item returns to `inProgress` state If the Buyer rejects a Blocking charge, the Product Order Item moves to the `failed` state. | - | `inProgress` | IN_PROGRESS | The Product Order Item has been successfully validated and fulfillment has started. If the Seller's system links validation between Product Order Items in a Product Order, a Product Order Item in this state also indicates that the other Product Order Items passed validation. | - | `pending` | PENDING | The Product Order Item cannot be progressed due to the Seller assessing a Cancel Product Order or Modify Product Order Item Requested Delivery Date request. The Seller stops work on the Product Order Item until either the Cancel Product Order has been accepted and the Product Order state moves to `pendingCancellation` and the Product Order Item state moves to `cancelled`, the Cancel Product Order has been rejected and the Product Order Item State moves to `inProgress`, the Modify Product Order Item Requested Delivery Date has been accepted and the Product Order Item State moves to `inProgress`, or the Modify Product Order Item Requested Delivery Date moves to `done.declined` and the Product Order Item state moves to `inProgress` with original delivery dates. | - | `rejected` | REJECTED | A Product Order Item was submitted, and it has failed at least one validation checks the Seller performs during the `acknowledged` state. | - | `rejected.unassessed` | UNASSESSED | A Product Order was submitted and all validation checks the Seller performs during the `acknowledged` state have not been completed, but another Product Order Item in the Product Order has moved to the `rejected` state. | - | `rejected.validated` | VALIDATED | A Product Order was submitted, and it has passed all validation checks the Seller performs during the `acknowledged` state, but another Product Order Item in the Product Order has moved to the `rejected` state | - enum: - - acknowledged - - cancelled - - completed - - failed - - held - - inProgress - - pending - - rejected - - rejected.validated - - rejected.unassessed - MEFProductOrderItem_Common: - type: object - description: | - An identified part of the order. A product order is decomposed into one or more order items. This type holds the attributes common to request and response representation of the Product Order Item. - properties: - action: - $ref: "#/components/schemas/MEFProductActionType" - agreementName: - type: string - description: - The name of the Agreement which is referenced for the Product - Order Item. - billingAccount: - $ref: "#/components/schemas/MEFBillingAccountRef" - coordinatedAction: - type: array - description: - The interval after the completion of one or more related Product - Order Items that this Product Order Item can be started or completed - items: - $ref: "#/components/schemas/MEFOrderItemCoordinatedAction" - endCustomerName: - type: string - description: - "The name of the End Customer, either a business name or an\ - \ individual name depending on the end customer." - expediteIndicator: - type: boolean - default: false - description: - "Indicates that expedited treatment is requested. Set by the\ - \ Buyer. If this is set to TRUE, the Buyer sets the Requested Completion\ - \ Date to the expedited date. See MEF 57.2 section 7.3 for a description\ - \ of the interaction between the Buyer and the Seller." - id: - type: string - description: | - A Buyer provided identifier to identify Product Order Items and to be able to relate them to one another. This is set by the Buyer and is unique within the Product Order. Examples of Reference Identifier could be 1, 2, 3 or A, B, C. The Reference Identifier can be reused in multiple Product Orders to identify a Product Order Item within that Product Order. - note: - type: array - description: | - Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. This is not to be used to inform the Seller of Actions that the Buyer wishes performed. - items: - $ref: "#/components/schemas/Note" - product: - $ref: "#/components/schemas/MEFProductRefOrValueOrder" - productOfferingQualificationItem: - $ref: "#/components/schemas/ProductOfferingQualificationItemRef" - productOrderItemRelationship: - type: array - description: - The relationship between Product Order Items in the Product - Order. - items: - $ref: "#/components/schemas/OrderItemRelationship" - quoteItem: - $ref: "#/components/schemas/MEFQuoteItemRef" - relatedBuyerPON: - type: string - description: - Identifies the Buyer Purchase Order Number that is related - to this Product Order. - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Order Item. - The rule for mapping a represented attribute - value to a `role` is to use the _lowerCamelCase_ pattern e.g. - - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` - - Buyer Implementation Contact: `role=buyerImplementationContact` - - Buyer Technical Contact: `role=buyerTechnicalContact` - - Buyer Billing Contact: `role=buyerBillingContact` - - Buyer Fault Contact: `role=buyerFaultContact` - - Seller Fault Contact: `role=sellerFaultContact` - - Buyer GDPR Contact: `role=buyerGDPRContact` - - Seller GDPR Contact: `role=sellerGDPRContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - requestedCompletionDate: - type: string - format: date-time - description: - Identifies the Buyer's desired due date (requested delivery - date) - requestedItemTerm: - $ref: "#/components/schemas/MEFItemTerm" - tspRestorationPriority: - type: string - description: | - Within the United States, indicates the provisioning and restoration priority as defined under the TSP Service Vendor Handbook. The valid values are defined in ATIS OBF document: ATIS-0404001. - required: - - action - - id - MEFProductOrderItem_Create: - allOf: - - $ref: "#/components/schemas/MEFProductOrderItem_Common" - - type: object - description: - "An identified part of the order. A product order is decomposed\ - \ into\none or more order items. \nThe modelling pattern introduces the\ - \ `Common` supertype to\naggregate attributes that are common to both `ProductOrderItem`\ - \ and\n`ProductOrderItem_Create`. The `Create` type has a subset of\nattributes\ - \ of the response type and does not introduce any new,\nthus the `Create`\ - \ type has an empty definition.\n" - MEFProductOrderItem_Update: - type: object - description: | - An updatable representation of the Product Order Item. - properties: - endCustomerName: - type: string - description: - "The name of the End Customer, either a business name or an\ - \ individual name depending on the end customer." - id: - type: string - description: | - Identifier of the Item. This is to address the Item to be updated within the Product Order. The id itself cannot be updated. - note: - type: array - description: | - Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. - items: - $ref: "#/components/schemas/Note" - relatedBuyerPON: - type: string - description: - This information is not used by the Seller and is maintained - for the convenience of the Buyer (e.g. search purposes). - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Order Item. Buyer may modify, add, or delete only Buyer-related contacts. - - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` - - Buyer Implementation Contact: `role=buyerImplementationContact` - - Buyer Technical Contact: `role=buyerTechnicalContact` - - Buyer Fault Contact: `role=buyerFaultContact` - - Buyer GDPR Contact: `role=buyerGDPRContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - required: - - id - MEFProductOrderRef: - type: object - description: Holds the MEF Product Order reference - properties: - productOrderHref: - type: string - description: Hyperlink to access the order - productOrderId: - type: string - description: - Unique (within the ordering domain) identifier for the order - that is generated by the seller when the order is initially accepted. - required: - - productOrderId - MEFProductOrderStateChange: - type: object - description: - "Holds the State notification reasons and associated date the State\ - \ changed, populated by the server" - properties: - changeDate: - type: string - format: date-time - description: The date on when the state was reached - changeReason: - type: string - description: Additional comment related to state change - state: - $ref: "#/components/schemas/MEFProductOrderStateType" - MEFProductOrderStateType: - type: string - description: | - Possible values for the state of the Product Order The following - mapping has been used between `MEFProductOrderStateType` and MEF 57.2: - - | state | MEF 57.2 name | Description | - | ------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `acknowledged` | ACKNOWLEDGED | A Product Order has been received by the Seller and has passed basic validation. A `productOrder.id` is assigned in the `acknowledged` state and a response is returned to the Buyer. The Product Order remains in the `acknowledged` state while validations of Product Order and Product Order Item(s) attributes as applicable is completed. If the Product Order and Product Order Item attributes are validated the Product Order moves to the `inProgress` state. If not validated, the Product Order moves to the `rejected` state. | - | `assessingCancellation` | ASSESSING_CANCELLATION | A Cancel Product Order request has been received by the Seller. The Product Order is being assessed to determine if the Product Order can be cancelled. If there are charges associated with cancelling the Product Order, these are communicated to the Buyer using the Charge process. The Product Order remains in the `assessingCancellation` state until any relevant Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order moves to the `pendingCancellation` state. If the request is not validated or if any associated Charges are not completed, the Product Order moves to the `inProgress` state and the Product Order is not cancelled. | - | `held.assessingCharge` | ASSESSING_CHARGE | A Charge has been initiated by the Seller that is not the result of a Modify Product Order Item Requested Delivery Date or Cancel Product Order request and the Seller is awaiting a Buyer response to the Charge. If a blocking or non-blocking charge is accepted by the Buyer, the Product Order moves to `inProgress`. If a non-blocking charge is declined by the Buyer, the Product Order moves to `inProgress`. If a blocking charge is declined by the Buyer and there are no unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` and then to the `failed` state. If a blocking charge is declined by the Buyer and there are unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` state. | - | `pending.assessingModification` | ASSESSING_MODIFICATION | A request has been made by the Buyer to modify either the `expediteIndicator` or the `requestedCompletionDate` of a Product Order Item. The Product Order Item is currently being assessed to determine whether the Modify Product Order Item Requested Delivery Date is valid. If there is a charge associated with the Modify Product Order Item Requested Delivery Date, the Product Order remains in the `pending.assessingModification` state until the Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order returns to the `inProgress` state. | - | `cancelled` | CANCELLED | The Product Order has been successfully cancelled. This is a terminal state. | - | `pendingCancellation` | CANCELLING | The Buyer's Cancel Request has been assessed and it has been determined that it is feasible to proceed with the cancellation. This state can also result from a Seller cancelling the Product Order within their systems without a request from the Buyer. | - | `completed` | COMPLETED | The Product Order has completed fulfillment and the Product is now active. This is a terminal state | - | `failed` | FAILED | All Product Order Items have failed which results in the entire Product Order failing. This is a terminal state. | - | `inProgress` | IN_PROGRESS | The Product Order has been successfully validated, and fulfillment has started. | - | `partial` | PARTIAL | Fulfillment of at least one Product Order Item has failed, and fulfillment of at least one Product Order Item has been successful. This is a terminal state. | - | `rejected` | REJECTED | A Product Order was submitted, and it has failed at least one of the validation checks the Seller performs after it reached the `acknowledged` state | - enum: - - acknowledged - - assessingCancellation - - cancelled - - completed - - failed - - held.assessingCharge - - inProgress - - partial - - pending.assessingModification - - pendingCancellation - - rejected - MEFProductRefOrValueOrder: - type: object - description: - Used by the Buyer to point to existing and/or describe the desired - shape of the product. In case of `add` action - only `productConfiguration` - MUST be specified. For `modify` action - both `id` and `productConfiguration` - MUST be provided to point which product instance to update and to what state. - In `delete` only the `id` must be provided. - properties: - href: - type: string - description: - Hyperlink to the referenced Product. Hyperlink MAY be used - by the Seller in responses. Hyperlink MUST be ignored by the Seller in - case it is provided by the Buyer in a request. - id: - type: string - description: - The unique identifier of an in-service Product that is the - ordering subject. This field MUST be populated if an item `action` is - either `modify` or `delete`. This field MUST NOT be populated if an item - `action` is `add`. - place: - type: array - description: - The relationships between this Product Order Item and one or - more Places as defined in the Product Specification. - items: - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - productConfiguration: - $ref: "#/components/schemas/MEFProductConfiguration" - productOffering: - $ref: "#/components/schemas/ProductOfferingRef" - productRelationship: - type: array - description: - A list of references to existing products that are related - to the ordered Product. - items: - $ref: "#/components/schemas/ProductRelationship" - MEFQuoteItemRef: - type: object - description: It's a Quote item that has been executed previously. - properties: - id: - type: string - description: Id of an Quote Item - quoteHref: - type: string - description: Reference of the related Quote. - quoteId: - type: string - description: Unique identifier of a Quote. - required: - - id - - quoteId - MEFSubUnit: - type: object - description: Allows for sub unit identification - properties: - subUnitNumber: - type: string - description: - "The discriminator used for the subunit, often just a simple\ - \ number but may also be a range." - subUnitType: - type: string - description: - "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ - \ UNIT, WHARF." - required: - - subUnitNumber - - subUnitType - Money: - type: object - description: A base / value business entity used to represent money - properties: - unit: - type: string - description: Currency (ISO4217 norm uses 3 letters to define the currency) - value: - type: number - format: float - description: A positive floating point number - Note: - type: object - description: - Extra information about a given entity. Only useful in processes - involving human interaction. Not applicable for the automated process. - properties: - author: - type: string - description: Author of the note - date: - type: string - format: date-time - description: Date the Note was created - id: - type: string - description: - "Identifier of the note within its containing entity (may or\ - \ may not be globally unique, depending on provider implementation)" - source: - $ref: "#/components/schemas/MEFBuyerSellerType" - text: - type: string - description: Text of the note - required: - - author - - date - - id - - source - - text - OrderItemRelationship: - type: object - description: The relationship between Product Order Items in the Product Order. - properties: - id: - type: string - description: Id of the related Order Item (must be in the same Order). - relationshipType: - type: string - description: - Specifies the nature of the relationship to the related Product - Order Item. A string that is one of the relationship types specified in - the Product Specification. - required: - - id - - relationshipType - Price: - type: object - description: - "Provides all amounts (tax included, duty free, tax rate), used\ - \ currency and percentage to apply for Price Alteration." - properties: - dutyFreeAmount: - $ref: "#/components/schemas/Money" - taxIncludedAmount: - $ref: "#/components/schemas/Money" - taxRate: - type: number - format: float - description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." - required: - - dutyFreeAmount - ProductOfferingQualificationItemRef: - type: object - description: - It's a productOfferingQualification item that has been executed - previously. - properties: - alternateProductOfferingProposalId: - type: string - description: - A unique identifier for this Alternate Product Proposal assigned - by the Seller. - id: - type: string - description: Id of an item of a product offering qualification - productOfferingQualificationHref: - type: string - description: Reference to a related Product Offering Qualification resource. - productOfferingQualificationId: - type: string - description: - Unique identifier of related Product Offering Qualification - resource. - required: - - id - - productOfferingQualificationId - ProductOfferingRef: - type: object - description: - "A reference to a Product Offering offered by the Seller to the\ - \ Buyer. A Product Offering contains the commercial and technical details\ - \ of a Product sold by a particular Seller. A Product Offering defines all\ - \ of the commercial terms and, through association with a particular Product\ - \ Specification, defines all the technical attributes and behaviors of the\ - \ Product. A Product Offering may constrain the allowable set of configurable\ - \ technical attributes and/or behaviors specified in the associated Product\ - \ Specification." - properties: - href: - type: string - description: | - Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog capabilities this field is not used. The catalog API definition is provided by the Seller to the Buyer during onboarding Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - id of a Product Offering. It is assigned by the Seller. The - Buyer and the Seller exchange information about offerings' ids during - the onboarding process. - required: - - id - ProductOrder: - allOf: - - $ref: "#/components/schemas/ProductOrder_Common" - - type: object - description: - A Product Order is a type of order which can be used to place - an order between a customer and a service provider or between a service - provider and a partner and vice versa - properties: - cancellationCharge: - type: array - description: Charges associated with cancelling the Product Order - items: - $ref: "#/components/schemas/MEFProductOrderChargeRef" - cancellationDate: - type: string - format: date-time - description: - Identifies the date the Seller cancelled the Order. Set by - Seller when the Order is moved to the cancelled state. - cancellationReason: - type: string - description: - "An optional free-form text field for the Seller to provide\ - \ additional information regarding the reason for the cancellation.\ - \ If the Seller cancels the Product Order, the Seller provides the reason.\ - \ If the Buyer requests the cancellation, the Seller copies the reason\ - \ provided by the Buyer from the Cancel Product Order request." - completionDate: - type: string - format: date-time - description: - Identifies the date that all Product Order Items within the - Order have reached a terminal state. No further action is permitted - on the Product Order. - href: - type: string - description: Hyperlink to access the order - id: - type: string - description: - Unique identifier for the Product Order that is generated - by the Seller when the Product Order is initially accepted via an API. - orderDate: - type: string - format: date-time - description: - Date when the Product Order was created in the Seller's system - and a Product Order Identifier was assigned - productOrderItem: - type: array - description: | - Items contained in the Product Order. - items: - $ref: "#/components/schemas/ProductOrderItem" - minItems: 1 - state: - $ref: "#/components/schemas/MEFProductOrderStateType" - stateChange: - type: array - description: State change for the Product Order - items: - $ref: "#/components/schemas/MEFProductOrderStateChange" - required: - - id - - orderDate - - productOrderItem - - state - ProductOrderItem: - allOf: - - $ref: "#/components/schemas/MEFProductOrderItem_Common" - - type: object - description: | - An identified part of the order. A product order is decomposed into one or more order items. - properties: - charge: - type: array - description: - The Charges associated to this Product Order Item. This list - contains all completed Charges containing accepted Charge Items initiated - by the Seller. Any Charge that is withdrawn or containing all declined - Charge Items must not be included in this list. - items: - $ref: "#/components/schemas/MEFProductOrderChargeRef" - completionDate: - type: string - format: date-time - description: - Identifies the date the Seller completed the Product Order - Item. Set by Seller when all Product Order Items have reached a terminal - state. No further action is permitted on the Product Order after this - state is reached. - expectedCompletionDate: - type: string - format: date-time - description: | - Identifies the date the Seller expects to complete the Product Order Item. - expediteAcceptedIndicator: - type: boolean - default: false - description: - "Indicates if the Seller has accepted the Buyer's Expedite\ - \ request. See MEF 57.2 section 7.3 for a description of the interaction\ - \ between the Buyer and Seller. If this is set to true, the Seller provides\ - \ the costs to expedite the Product Order in the charge attribute" - itemTerm: - type: array - description: Term of the Product Order Item - items: - $ref: "#/components/schemas/MEFItemTerm" - maxItems: 1 - milestone: - type: array - description: - Milestones associated to the Product Order Item. Set by the - Seller when a Milestone occurs. - items: - $ref: "#/components/schemas/MEFMilestone" - state: - $ref: "#/components/schemas/MEFProductOrderItemStateType" - stateChange: - type: array - description: State change for the Product Order Item - items: - $ref: "#/components/schemas/MEFProductOrderItemStateChange" - terminationError: - type: array - description: - "When the Seller cannot process the request, the Seller returns\ - \ a text-based list of reasons here." - items: - $ref: "#/components/schemas/TerminationError" - ProductOrder_Common: - type: object - description: - "A Product Order is a type of order which can be used to place\ - \ an order between a customer and a service provider or between a service\ - \ provider and a partner and vice versa," - properties: - externalId: - type: string - description: An identifier for this order within the Buyer's enterprise. - note: - type: array - description: | - Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. - items: - $ref: "#/components/schemas/Note" - projectId: - type: string - description: - An identifier that is used to group Product Orders that is - important to the Buyer. A projectId can be used to relate multiple Product - Orders together. - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role in this context. - (e.g. Product Order Contact: role=productOrderContact; - Seller Contact: role=sellerContact) - Providing the Product Order Contact in the request is mandatory. - items: - $ref: "#/components/schemas/RelatedContactInformation" - minItems: 1 - orderId: - type: string - instanceId: - type: string - required: - - relatedContactInformation - ProductOrder_Create: - allOf: - - $ref: "#/components/schemas/ProductOrder_Common" - - type: object - description: | - A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa, Skipped properties: id,href,completionDate,orderDate,state,stateChange,cancellationDate,cancellationReason - properties: - productOrderItem: - type: array - description: | - Items contained in the Product Order. - items: - $ref: "#/components/schemas/MEFProductOrderItem_Create" - minItems: 1 - required: - - productOrderItem - ProductOrder_Find: - type: object - description: - Structure to define GET without id response. A list of productOrder - matching request criteria. Provides Product order summary view. - properties: - cancellationDate: - type: string - format: date-time - description: - Identifies the date the Seller cancelled the Order. Set by - Seller when the Order is moved to the cancelled state. - completionDate: - type: string - format: date-time - description: - Identifies the date that all Product Order Items within the - Order have reached a terminal state. No further action is permitted on - the Product Order after this notification. - externalId: - type: string - description: - ID given by the consumer and only understandable by him (to - facilitate his searches afterward). - id: - type: string - description: - Unique identifier for the order that is generated by the Seller - when the order is initially accepted via an API. - orderDate: - type: string - format: date-time - description: Date when the Product Order was created - projectId: - type: string - description: - An identifier that is used to group Product Orders that is - important to the Buyer. A projectId can be used to relate multiple Product - Orders together. - state: - $ref: "#/components/schemas/MEFProductOrderStateType" - required: - - id - - orderDate - - state - ProductOrder_Update: - type: object - description: - A request initiated by the Buyer to update Product Order and/or - Product - properties: - externalId: - type: string - description: An identifier for this Product Order within the Buyer's enterprise. - note: - type: array - description: | - Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. - items: - $ref: "#/components/schemas/Note" - productOrderItem: - type: array - description: | - Order Item attributes that may be updated - items: - $ref: "#/components/schemas/MEFProductOrderItem_Update" - projectId: - type: string - description: - An identifier that is used to group Product Orders that is - important to the Buyer. A projectId can be used to relate multiple Product - Orders together. - relatedContactInformation: - type: array - description: | - Contact information of an individual or organization playing a role in this context. Buyer can modify, add, or delete only Buyer-related contacts. - items: - $ref: "#/components/schemas/RelatedContactInformation" - minItems: 1 - ProductRelationship: - type: object - description: - A relationship to an existing Product. The requirements for usage - for given Product are described in the Product Specification. - properties: - href: - type: string - description: - Hyperlink to the product in Seller's inventory that is referenced - Hyperlink MAY be used when providing a response by the Seller Hyperlink - MUST be ignored by the Seller in case it is provided by the Buyer in a - request - id: - type: string - description: unique identifier of the related Product - relationshipType: - type: string - description: | - Specifies the type (nature) of the relationship to the related Product. The nature of required relationships varies for Products of different types. For example, a UNI or ENNI Product may not have any relationships, but an Access E-Line may have two mandatory relationships (related to the UNI on one end and the ENNI on the other). More complex Products such as multipoint IP or Firewall Products may have more complex relationships. As a result, the allowed and mandatory `relationshipType` values are defined in the Product Specification. - required: - - id - - relationshipType - RelatedContactInformation: - type: object - description: - "Contact information of an individual or organization playing a\ - \ role for\nthis Order Item. The rule for mapping a represented attribute\ - \ value to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer\ - \ Order Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation\ - \ Contact: `role=buyerImplementationContact` \n- Buyer Technical Contact:\ - \ `role=buyerTechnicalContact`\n" - properties: - emailAddress: - type: string - description: Email address - name: - type: string - description: Name of the contact - number: - type: string - description: Phone number - numberExtension: - type: string - description: Phone number extension - organization: - type: string - description: The organization or company that the contact belongs to - postalAddress: - $ref: "#/components/schemas/FieldedAddress" - role: - type: string - description: A role the party plays in a given context. - required: - - emailAddress - - name - - number - - role - RelatedPlaceRefOrValue: - type: object - description: Place defines the places where the product order must be done. - discriminator: - mapping: - FieldedAddress: "#/components/schemas/FieldedAddress" - FormattedAddress: "#/components/schemas/FormattedAddress" - GeographicAddressLabel: "#/components/schemas/GeographicAddressLabel" - GeographicAddressRef: "#/components/schemas/GeographicAddressRef" - GeographicSiteRef: "#/components/schemas/GeographicSiteRef" - MEFGeographicPoint: "#/components/schemas/MEFGeographicPoint" - propertyName: "@type" - properties: - "@schemaLocation": - type: string - format: uri - description: - A URI to a JSON-Schema file that defines additional attributes - and relationships. May be used to define additional related place types. - Usage of this attribute must be agreed upon between Buyer and Seller. - "@type": - type: string - description: | - This field is used as a discriminator and is used between different place representations. This type might discriminate for additional related place as defined in '@schemaLocation'. - enum: - - FieldedAddress - - FormattedAddress - - GeographicAddressLabel - - GeographicAddressRef - - GeographicSiteRef - - MEFGeographicPoint - role: - type: string - description: Role of this place - required: - - "@type" - - role - TerminationError: - type: object - description: - This indicates an error that caused an Item to be terminated. The - code and propertyPath should be used like in Error422. - properties: - code: - $ref: "#/components/schemas/Error422Code" - propertyPath: - type: string - description: | - A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. - Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). - value: - type: string - description: Text to describe the reason of the termination. - TimeUnit: - type: string - description: | - Represents a unit of time. - enum: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - securitySchemes: - oauth2MEFLSOAPI: - description: Default m2m client code - flows: - clientCredentials: - refreshUrl: http://mef.net/example/refresh - scopes: - default: default scope - tokenUrl: http://mef.net/example/token - type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml deleted file mode 100644 index fc3c06a0..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/productOrderManagement.api.yaml +++ /dev/null @@ -1,3535 +0,0 @@ -openapi: 3.0.1 -info: - description: - "**This file forms part of MEF 123** \n\nThis API implements Business\ - \ Requirements described in MEF 57.2\n\nProduct Order Management allows the Buyer\ - \ to request the Seller to initiate and complete the\nfulfillment process of an\ - \ installation of a Product Offering, an update to\nan existing Product, or a\ - \ disconnect of an existing Product at the address\ndefined by the Buyer.\n\n\ - List of supported Use Cases:\n\n- Create Product Order\n- Update Product Order\ - \ by Product Order Identifier\n- Retrieve List of Product Orders\n- Retrieve Product\ - \ Order by Product Order Identifier\n- Modify Product Order Item Requested Delivery\ - \ Date\n- Retrieve Modify Product Order Item Requested Delivery Date List\n- Retrieve\ - \ Modify Product Order Item Requested Delivery Date by Identifier\n- Cancel Product\ - \ Order\n- Retrieve List of Cancel Product Orders\n- Retrieve Cancel Product Order\ - \ Request by Cancel Product Order Identifier\n- Initiate Charge\n- Respond to\ - \ Charge\n- Retrieve List of Charges\n- Retrieve Charge by Charge Identifier\n\ - - Register for Notifications\n\nCopyright 2022 MEF Forum and its contributors.\n\ - \nThis file includes content based on the TM Forum Product Order API (TMF622\n\ - v4.0.0) available at https://github.com/tmforum-apis/TMF622_ProductOrder,\nwhich\ - \ is licensed by the TM Forum under the Apache License version 2.0. Such\ncontent\ - \ has been modified by the MEF Forum and its contributors.\n" - title: Product Ordering Management - version: 10.0.0 -servers: - - url: "https://{serverBase}/mefApi/sonata/productOrderingManagement/v10/" - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -security: - - oauth2MEFLSOAPI: - - default -tags: - - name: productOrder - - name: cancelProductOrder - - name: charge - - name: modifyProductOrderItemRequestedDeliveryDate - - name: events subscription -paths: - /productOrder: - get: - description: This operation lists or finds ProductOrder entities - operationId: listProductOrder - parameters: - - description: State of the Product Order - in: query - name: state - required: false - schema: - type: string - enum: - - acknowledged - - assessingCancellation - - cancelled - - completed - - failed - - held.assessingCharge - - inProgress - - partial - - pending.assessingModification - - pendingCancellation - - rejected - - description: - A number that uniquely identifies an order within the Buyer's - enterprise. - in: query - name: externalId - required: false - schema: - type: string - - description: - An identifier that is used to group Product Orders that represent - a unit of functionality that is important to a Buyer. - in: query - name: projectId - required: false - schema: - type: string - - description: Date when the order was created greater than - in: query - name: orderDate.gt - required: false - schema: - type: string - format: date-time - - description: Date when the order was created lesser than - in: query - name: orderDate.lt - required: false - schema: - type: string - format: date-time - - description: Effective completion date greater than - in: query - name: completionDate.gt - required: false - schema: - type: string - format: date-time - - description: Effective completion date lesser than - in: query - name: completionDate.lt - required: false - schema: - type: string - format: date-time - - description: - This is requested date to get this Product Order Item completed - greater than - in: query - name: itemRequestedCompletionDate.gt - required: false - schema: - type: string - format: date-time - - description: - This is requested date to get this Product Order Item completed - lesser than - in: query - name: itemRequestedCompletionDate.lt - required: false - schema: - type: string - format: date-time - - description: - "Seller planned completion date of the Product Order Item, greater\ - \ than" - in: query - name: itemExpectedCompletionDate.gt - required: false - schema: - type: string - format: date-time - - description: - "Seller planned completion date of the Product Order Item, lesser\ - \ than" - in: query - name: itemExpectedCompletionDate.lt - required: false - schema: - type: string - format: date-time - - description: order cancellation date greater than - in: query - name: cancellationDate.gt - required: false - schema: - type: string - format: date-time - - description: order cancellation date lesser than - in: query - name: cancellationDate.lt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by the client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/ProductOrder_Find" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - listProductOrder - summary: Lists or finds ProductOrder objects - tags: - - productOrder - post: - description: This operation creates a ProductOrder entity. - operationId: createProductOrder - parameters: - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when the responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder_Create" - description: The ProductOrder to be created - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder" - description: Created (https://tools.ietf.org/html/rfc7231#section-6.3.2) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - createProductOrder - summary: Creates a ProductOrder - tags: - - productOrder - x-codegen-request-body-name: productOrder - /productOrder/{id}: - get: - description: This operation retrieves a ProductOrder entity. - operationId: retrieveProductOrder - parameters: - - description: Identifier of the ProductOrder - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder" - description: OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - security: - - oauth2MEFLSOAPI: - - retrieveProductOrder - summary: Retrieves a ProductOrder by ID - tags: - - productOrder - patch: - description: This operation updates partially a ProductOrder entity. - operationId: patchProductOrder - parameters: - - description: Identifier of the ProductOrder - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder_Update" - description: The ProductOrder to be updated - required: true - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/ProductOrder" - description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "409": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error409" - description: Conflict - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - patchProductOrder - summary: Updates partially a ProductOrder - tags: - - productOrder - x-codegen-request-body-name: productOrder - /cancelProductOrder: - get: - description: This operation lists or finds CancelProductOrder entities - operationId: listCancelProductOrder - parameters: - - in: query - name: productOrderId - required: false - schema: - type: string - - in: query - name: state - required: false - schema: - type: string - enum: - - acknowledged - - done - - done.declined - - inProgress.assessingCharge - - rejected - - description: - "Identifies the type of reason, Technical or Commercial, for\ - \ the Cancellation request" - in: query - name: cancellationReasonType - required: false - schema: - type: string - enum: - - technical - - commercial - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/CancelProductOrder_Find" - description: Success - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - listCancelProductOrder - summary: Lists or finds CancelProductOrder objects - tags: - - cancelProductOrder - post: - description: This operation creates a CancelProductOrder entity. - operationId: createCancelProductOrder - parameters: - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/CancelProductOrder_Create" - description: The CancelProductOrder to be created - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/CancelProductOrder" - description: Created - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - createCancelProductOrder - summary: Creates a CancelProductOrder - tags: - - cancelProductOrder - x-codegen-request-body-name: cancelProductOrder - /cancelProductOrder/{id}: - get: - description: This operation retrieves a CancelProductOrder entity. - operationId: retrieveCancelProductOrder - parameters: - - description: Identifier of the CancelProductOrder - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/CancelProductOrder" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveCancelProductOrder - summary: Retrieves a CancelProductOrder by ID - tags: - - cancelProductOrder - /charge: - get: - description: This operation lists or finds Charge entities - operationId: listCharge - parameters: - - description: id of the Product Order this Charge relates to. - in: query - name: productOrderId - required: false - schema: - type: string - - description: id of the Product Order Item this Charge relates to. - in: query - name: productOrderItemId - required: false - schema: - type: string - - description: Date that the Charge was created by the Seller (greater than) - in: query - name: creationDate.gt - required: false - schema: - type: string - format: date-time - - description: Date that the Charge was created by the Seller. (greater than) - in: query - name: creationDate.lt - required: false - schema: - type: string - format: date-time - - description: - The date that the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat all - charges as declined (greater than) - in: query - name: responseDueDate.gt - required: false - schema: - type: string - format: date-time - - description: - The date that the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat all - charges as declined (greater than) - in: query - name: responseDueDate.lt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/MEFProductOrderCharge_Find" - description: Success - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - listCharge - summary: Lists or finds Charge objects - tags: - - charge - /charge/{id}: - get: - description: This operation retrieves a Charge entity. - operationId: retrieveCharge - parameters: - - description: Identifier of the Charge - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProductOrderCharge" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveCharge - summary: Retrieves a Charge by ID - tags: - - charge - patch: - description: This operation updates partially a Charge entity. - operationId: patchCharge - parameters: - - description: Identifier of the Charge - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProductOrderCharge_Update" - description: The Charge to be updated - required: true - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFProductOrderCharge" - description: Updated (https://tools.ietf.org/html/rfc7231#section-6.3.1) - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "409": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error409" - description: Conflict - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - patchCharge - summary: Updates partially a Charge - tags: - - charge - x-codegen-request-body-name: charge - /hub: - post: - description: - "Sets the communication endpoint address the service instance must\ - \ use to deliver information about its health state, execution state, failures\ - \ and metrics." - operationId: registerListener - parameters: - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/EventSubscriptionInput" - description: Data containing the callback endpoint to deliver the information - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/EventSubscription" - description: Subscribed - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - registerListener - summary: Register a listener - tags: - - events subscription - x-codegen-request-body-name: data - /hub/{id}: - delete: - description: - "Resets the communication endpoint address the service instance\ - \ must use to deliver information about its health state, execution state,\ - \ failures and metrics." - operationId: unregisterListener - parameters: - - description: The id of the registered listener - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "204": - description: Deleted - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - unregisterListener - summary: Unregister a listener - tags: - - events subscription - get: - description: This operation retrieves a hub entity. - operationId: retrieveHub - parameters: - - description: Identifier of the Hub - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/EventSubscription" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveHub - summary: Retrieves a Hub by ID - tags: - - events subscription - /modifyProductOrderItemRequestedDeliveryDate: - get: - description: - This operation lists or finds ModifyProductOrderItemRequestedDeliveryDate - entities - operationId: listModifyProductOrderItemRequestedDeliveryDate - parameters: - - in: query - name: productOrderId - required: false - schema: - type: string - - in: query - name: state - required: false - schema: - type: string - enum: - - acknowledged - - done - - done.declined - - inProgress.assessingCharge - - rejected - - description: Indicates that expedited treatment is requested. - in: query - name: expediteIndicator - required: false - schema: - type: boolean - - description: - Identifies the Buyer's desired due date (requested delivery date) - - greater than - in: query - name: requestedCompletionDate.gt - required: false - schema: - type: string - format: date-time - - description: - Identifies the Buyer's desired due date (requested delivery date) - - lesser than - in: query - name: requestedCompletionDate.lt - required: false - schema: - type: string - format: date-time - - description: - The date on which the Seller assigned the Modify Product Order - Item Requested Delivery Data Identifier - greater than - in: query - name: creationDate.gt - required: false - schema: - type: string - format: date-time - - description: - The date on which the Seller assigned the Modify Product Order - Item Requested Delivery Data Identifier - lesser than - in: query - name: creationDate.lt - required: false - schema: - type: string - format: date-time - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - - description: - Requested index for start of item to be provided in response - requested by client. Note that the index starts with "0". - in: query - name: offset - required: false - schema: - type: integer - format: int32 - - description: - Requested number of items to be provided in response requested - by client - in: query - name: limit - required: false - schema: - type: integer - format: int32 - responses: - "200": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" - description: Success - headers: - X-Pagination-Throttled: - description: | - Used to indicate that result page was throttled to maximum possible size and there are additional results that can be fetched - schema: - type: boolean - X-Total-Count: - description: | - The total number of matching items. E.g. if there are 50 matching items in total, but the request has offset=10 and limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of items included in the response - schema: - type: integer - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - listModifyProductOrderItemRequestedDeliveryDate - summary: Lists or finds ModifyProductOrderItemRequestedDeliveryDate objects - tags: - - modifyProductOrderItemRequestedDeliveryDate - post: - description: - This operation creates a ModifyProductOrderItemRequestedDeliveryDate - entity. - operationId: createModifyProductOrderItemRequestedDeliveryDate - parameters: - - description: |- - The unique identifier of the organization that is acting as the Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate_Create" - description: The ModifyProductOrderItemRequestedDeliveryDate to be created - required: true - responses: - "201": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" - description: Created - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "422": - content: - application/json;charset=utf-8: - schema: - type: array - items: - $ref: "#/components/schemas/Error422" - description: Unprocessable entity due to the business validation problems - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - createModifyProductOrderItemRequestedDeliveryDate - summary: Creates a ModifyProductOrderItemRequestedDeliveryDate - tags: - - modifyProductOrderItemRequestedDeliveryDate - x-codegen-request-body-name: modifyProductOrderItemRequestedDeliveryDate - /modifyProductOrderItemRequestedDeliveryDate/{id}: - get: - description: - This operation retrieves a ModifyProductOrderItemRequestedDeliveryDate - entity. - operationId: retrieveModifyProductOrderItemRequestedDeliveryDate - parameters: - - description: Identifier of the ModifyProductOrderItemRequestedDeliveryDate - in: path - name: id - required: true - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the a Buyer. MUST be specified in the request only when the requester represents more than one Buyer. - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - required: false - schema: - type: string - - description: |- - The unique identifier of the organization that is acting as the Seller. MUST be specified in the request only when responding entity represents more than one Seller. - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - required: false - schema: - type: string - responses: - "200": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDate" - description: Success - "400": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error400" - description: Bad Request - "401": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error401" - description: Unauthorized - "403": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error403" - description: Forbidden - "404": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error404" - description: Not Found - "500": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error500" - description: Internal Server Error - "501": - content: - application/json;charset=utf-8: - schema: - $ref: "#/components/schemas/Error501" - description: Method not implemented. - security: - - oauth2MEFLSOAPI: - - retrieveModifyProductOrderItemRequestedDeliveryDate - summary: Retrieves a ModifyProductOrderItemRequestedDeliveryDate by ID - tags: - - modifyProductOrderItemRequestedDeliveryDate -components: - schemas: - CancelProductOrder: - type: object - description: Request for cancellation an existing product order - properties: - cancellationDeniedReason: - type: string - description: - "If the Cancel Product Order request is denied by the Seller,\ - \ the Seller provides a reason to the Buyer using this attribute." - cancellationReason: - type: string - description: - An optional attribute that allows the Buyer to provide additional - detail to the Seller on their reason for cancelling the Product Order - cancellationReasonType: - $ref: "#/components/schemas/CancellationReasonType" - charge: - $ref: "#/components/schemas/MEFProductOrderChargeRef" - href: - type: string - description: | - Hyperlink to the cancellation request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - Unique identifier for the Cancel Product Order that is generated - by the Seller when the Cancel Product Order request `state` is set to - `acknowledged` - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Cancel Product Order. - The rule for mapping a represented attribute - value to a `role` is to use the _lowerCamelCase_ pattern e.g. - - Cancel Product Order Contact: `role=cancelProductOrderContact` - - Cancel Product Order Seller Contact: `role=cancelProductOrderSellerContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - state: - $ref: "#/components/schemas/MEFChargeableTaskStateType" - required: - - id - - productOrder - - relatedContactInformation - - state - CancelProductOrder_Create: - type: object - description: |- - Request for cancellation an existing product order - Skipped properties: id,href,state,effectiveCancellationDate - properties: - cancellationReason: - type: string - description: - An optional attribute that allows the Buyer to provide additional - detail to the Seller on their reason for cancelling the Product Order - cancellationReasonType: - $ref: "#/components/schemas/CancellationReasonType" - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Cancel Product Order. - The rule for mapping a represented attribute - value to a `role` is to use the _lowerCamelCase_ pattern e.g. - - Cancel Product Order Contact: `role=cancelProductOrderContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - minItems: 1 - required: - - productOrder - - relatedContactInformation - CancelProductOrder_Find: - type: object - description: A response to a Buyer's get List of Cancel Product Orders - properties: - cancellationReasonType: - $ref: "#/components/schemas/CancellationReasonType" - id: - type: string - description: - Unique identifier for the Cancel Product Order that is generated - by the Seller when the Cancel Product Order request `state` is set to - `acknowledged` - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - state: - $ref: "#/components/schemas/MEFChargeableTaskStateType" - required: - - cancellationReasonType - - id - - productOrder - - state - CancellationReasonType: - type: string - description: - "Identifies the type of reason, Technical or Commercial, for the\ - \ Cancellation request" - enum: - - technical - - commercial - Duration: - type: object - description: "A Duration in a given unit of time e.g. 3 hours, or 5 days." - properties: - amount: - type: integer - description: "Duration (number of seconds, minutes, hours, etc.)" - units: - $ref: "#/components/schemas/TimeUnit" - required: - - amount - - units - Error: - type: object - description: | - Standard Class used to describe API response error Not intended to be used directly. The `code` in the HTTP header is used as a discriminator for the type of error returned in runtime. - properties: - message: - type: string - description: - Text that provides mode details and corrective actions related - to the error. This can be shown to a client user. - reason: - type: string - description: - Text that explains the reason for the error. This can be shown - to a client user. - maxLength: 255 - referenceError: - type: string - format: uri - description: URL pointing to documentation describing the error - required: - - reason - Error400: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error400Code" - required: - - code - description: Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1) - Error400Code: - type: string - description: |- - One of the following error codes: - - missingQueryParameter: The URI is missing a required query-string parameter - - missingQueryValue: The URI is missing a required query-string parameter value - - invalidQuery: The query section of the URI is invalid. - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - Error401: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error401Code" - required: - - code - description: Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1) - Error401Code: - type: string - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - Error403: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error403Code" - required: - - code - description: - Forbidden. This code indicates that the server understood the request - but refuses to authorize it. (https://tools.ietf.org/html/rfc7231#section-6.5.3) - Error403Code: - type: string - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - Error404: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - notFound: A current representation for the target resource not found - enum: - - notFound - required: - - code - description: Resource for the requested path not found. (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error409: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - conflict: The client has provided a value whose semantics are not appropriate for the property. - enum: - - conflict - required: - - code - description: Conflict (https://datatracker.ietf.org/doc/html/rfc7231#section-6.5.8) - Error422: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - $ref: "#/components/schemas/Error422Code" - propertyPath: - type: string - description: | - A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. - Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). - required: - - code - description: Unprocessable entity due to a business validation problem. (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - type: string - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - Error500: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - internalError: Internal server error - the server encountered an unexpected condition that prevented it from fulfilling the request. - enum: - - internalError - required: - - code - description: Internal Server Error. (https://tools.ietf.org/html/rfc7231#section-6.6.1) - Error501: - allOf: - - $ref: "#/components/schemas/Error" - - type: object - properties: - code: - type: string - description: |- - The following error code: - - notImplemented: Method not supported by the server - enum: - - notImplemented - required: - - code - description: - Not Implemented. Used in case Seller is not supporting an optional - operation (https://tools.ietf.org/html/rfc7231#section-6.6.2) - EventSubscription: - type: object - description: | - This resource is used to respond to notification subscriptions. - properties: - callback: - type: string - description: - The value provided by the Buyer in `EventSubscriptionInput` - during notification registration - id: - type: string - description: - An identifier of this Event Subscription assigned by the Seller - when a resource is created. - query: - type: string - description: - The value provided by the Buyer in `EventSubscriptionInput` - during notification registration - required: - - callback - - id - EventSubscriptionInput: - type: object - description: This class is used to register for Notifications. - properties: - callback: - type: string - description: - "This callback value must be set to *host* property from Buyer\ - \ Product Order Notification API (productOrderNotification.api.yaml).\ - \ This property is appended with the base path and notification resource\ - \ path specified in that API to construct an URL to which notification\ - \ is sent. E.g. for \"callback\": \"https://buyer.co/listenerEndpoint\"\ - , the product order state change event notification will be sent to: `https://buyer.co/listenerEndpoint/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent`" - query: - type: string - description: - "This attribute is used to define to which type of events to\ - \ register to. Example: \"query\":\"eventType = productOrderStateChangeEvent\"\ - . To subscribe for more than one event type, put the values separated\ - \ by comma: `eventType=productOrderStateChangeEvent,productOrderItemStateChangeEvent`.\ - \ The possible values are enumerated by 'ProductOrderEventType', `CancelProductOrderEventType`\ - \ in productOrderNotification.api.yaml. An empty query is treated as specifying\ - \ no filters - ending in subscription for all event types." - required: - - callback - FieldedAddress: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - city: - type: string - description: The city that the address is in - country: - type: string - description: Country that the address is in - geographicSubAddress: - $ref: "#/components/schemas/GeographicSubAddress" - locality: - type: string - description: The locality that the address is in - postcode: - type: string - description: - "Descriptor for a postal delivery area, used to speed and\ - \ simplify the delivery of mail (also known as zip code)" - postcodeExtension: - type: string - description: - An extension of a postal code. E.g. the part following the - dash in a US urban property address - stateOrProvince: - type: string - description: The State or Province that the address is in - streetName: - type: string - description: Name of the street or other street type - streetNr: - type: string - description: - Number identifying a specific property on a public street. - It may be combined with streetNrLast for ranged addresses. MEF 79 defines - it as required however as in certain countries it is not used we make - it optional in API. - streetNrLast: - type: string - description: Last number in a range of street numbers allocated to a property - streetNrLastSuffix: - type: string - description: Last street number suffix for a ranged address - streetNrSuffix: - type: string - description: The first street number suffix - streetSuffix: - type: string - description: A modifier denoting a relative direction - streetType: - type: string - description: - "The type of street (e.g., alley, avenue, boulevard, brae,\ - \ crescent, drive, highway, lane, terrace, parade, place, tarn, way,\ - \ wharf)" - required: - - city - - country - - streetName - description: - "A type of Address that has a discrete field and value for each\ - \ type of boundary or identifier down to the lowest level of detail. For example\ - \ \"street number\" is one field, \"street name\" is another field, etc." - FormattedAddress: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - addrLine1: - type: string - description: The first address line in a formatted address - addrLine2: - type: string - description: The second address line in a formatted address - city: - type: string - description: The city that the address is in - country: - type: string - description: Country that the address is in - locality: - type: string - description: - "An area of defined or undefined boundaries within a local\ - \ authority or other legislatively defined area, usually rural or semi-rural\ - \ in nature" - postcode: - type: string - description: - "Descriptor for a postal delivery area, used to speed and\ - \ simplify the delivery of mail (also known as ZIP code)" - postcodeExtension: - type: string - description: - An extension of a postal code. E.g. the part following the - dash in an US urban property address - stateOrProvince: - type: string - description: The State or Province that the address is in - required: - - addrLine1 - - city - - country - description: - "A type of Address that has discrete fields for each type of boundary\ - \ or identifier with the exception of street and more specific location details,\ - \ which are combined into a maximum of two strings based on local postal addressing\ - \ conventions." - GeographicAddressLabel: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - externalReferenceId: - type: string - description: A reference to an address by id - externalReferenceType: - type: string - description: - Uniquely identifies the authority that specifies the addresses - reference and/or its type (if the authority specifies more than one - type of address). The value(s) to be used are to be agreed during the - onboarding. For North American providers this would normally be CLLI - (Common Language Location Identifier) code. - required: - - externalReferenceId - - externalReferenceType - description: - "A unique identifier controlled by a generally accepted independent - administrative authority that specifies a fixed geographical location. " - GeographicAddressRef: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - href: - type: string - description: | - Hyperlink to the referenced GeographicAddress. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - Identifier of the referenced Geographic Address. This identifier - is assigned during a successful address validation request (Geographic - Address Validation API) - required: - - id - description: | - A reference to a Geographic Address resource available through Address Validation API. - GeographicSiteRef: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - href: - type: string - description: | - Hyperlink to the referenced GeographicSite. Hyperlink MAY be used by the Seller in responses. Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: Identifier of the referenced Geographic Site. - required: - - id - description: | - A reference to a Geographic Site resource available through Service Site API - GeographicSubAddress: - type: object - description: "Additional fields used to specify an address, as detailed as possible." - properties: - buildingName: - type: string - description: | - Allows for identification of places that require building name as part of addressing information - levelNumber: - type: string - description: - "Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT\ - \ 2" - levelType: - type: string - description: Describes level types within a building - privateStreetName: - type: string - description: - '"Private streets internal to a property (e.g. a university) - may have internal names that are not recorded by the land title office' - privateStreetNumber: - type: string - description: Private streets numbers internal to a private street - subUnit: - type: array - description: - "Representation of a MEFSubUnit It is used for describing subunit\ - \ within a subAddress e.g. BERTH, FLAT, PIER, SUITE, SHOP, TOWER, UNIT,\ - \ WHARF." - items: - $ref: "#/components/schemas/MEFSubUnit" - MEFAcceptedRejectedType: - type: string - description: Indicator of acceptance - enum: - - accepted - - rejected - MEFBillingAccountRef: - type: object - description: A reference to the Buyer's Billing Account - properties: - id: - type: string - description: - Identifies the buyer's billing account to which the recurring - and non-recurring charges for this order or order item will be billed. - Required if the Buyer has more than one Billing Account with the Seller - and for all new Product Orders. - required: - - id - MEFBuyerSellerType: - type: string - description: Indicates if the note is from Buyer or Seller. - enum: - - buyer - - seller - MEFCancelProductOrderRef: - type: object - description: A reference to a Cancel Product Order instance - properties: - href: - type: string - description: Hyperlink to access the Cancel Product Order - id: - type: string - description: A unique identifier of the Cancel Product Order - required: - - id - MEFChargePeriod: - type: string - description: Used for a recurring charge to indicate period. - enum: - - hour - - day - - week - - month - - year - MEFChargeableTaskStateType: - type: string - description: | - The states as defined by TMF622 and extended to meet MEF requirements. - - | Name | MEF 57.2 Name | Description | - | -------------------------- | ---------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | inProgress.assessingCharge | ACCESSING_CHARGE | The Modify Product Order Item Requested Delivery Date request results in a Charge being initiated by the Seller. The Modify Product Order Item Requested Delivery Date remains in this state until the Charge is completed or withdrawn by the Seller. All charges within a Charge that was initiated due to a Modify Product Order Item Requested Delivery Date are considered Blocking charges. If any charge is not accepted by the Buyer, the Modify Product Order Item Requested Delivery Date moves from the `inProgress.assessingCharge` state to the `done.declined` state. | - | acknowledged | ACKNOWLEDGED | A Modify Product Order Item Requested Delivery Date request has been received and has passed basic validation. The Modify Product Order Item Requested Delivery Date Identifier is assigned in the `acknowledged` state. Validation of Modify Product Order Item Requested Delivery Date attributes as applicable is completed in the `acknowledged` state. | - | done | ACCEPTED | A Modify Product Order Item Requested Delivery Date request has been received, passed all validations, if a Charge is associated all Charge Items have been accepted by the Buyer, and the Product Order Item Completion Date has been updated as requested. | - | done.declined | DECLINED | Blocking charges associated with a Modify Product Order Item Requested Delivery Date have been declined by the Buyer. No updates are made to the Product Order Item. | - | rejected | REJECTED | A Modify Product Order Item Requested Delivery Date request was submitted by the Buyer, and it has failed any validation checks the Seller performs during the `acknowledged` state. No updates are made to the referenced Product Order Item. - enum: - - acknowledged - - done - - done.declined - - inProgress.assessingCharge - - rejected - MEFEndOfTermAction: - type: string - description: - "The action the Seller will take once the term expires. \nRoll\ - \ indicates that the Product's contract will continue on a rolling basis for\ - \ the duration of the Roll Interval at the end of the Term. \nAuto-disconnect\ - \ indicates that the Product will be disconnected at the end of the Term.\ - \ \nAuto-renew indicates that the Product's contract will be automatically\ - \ renewed for the Term Duration at the end of the Term." - enum: - - roll - - autoDisconnect - - autoRenew - MEFGeographicPoint: - allOf: - - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - - type: object - properties: - spatialRef: - type: string - description: - The spatial reference system used to determine the coordinates - (e.g. "WGS84"). The system used and the value of this field are to be - agreed during the onboarding process. - x: - type: string - description: The latitude expressed in the format specified by the `spacialRef` - "y": - type: string - description: The longitude expressed in the format specified by the `spacialRef` - z: - type: string - description: The elevation expressed in the format specified by the `spacialRef` - required: - - spatialRef - - x - - "y" - description: | - A MEFGeographicPoint defines a geographic point through coordinates. - MEFItemTerm: - type: object - description: The term of the Item - properties: - description: - type: string - description: Description of the term - duration: - $ref: "#/components/schemas/Duration" - endOfTermAction: - $ref: "#/components/schemas/MEFEndOfTermAction" - name: - type: string - description: Name of the term - rollInterval: - $ref: "#/components/schemas/Duration" - required: - - duration - - endOfTermAction - - name - MEFMilestone: - type: object - description: - Milestones associated to the Product Order Item. Set by the Seller - when a Milestone occurs. - properties: - date: - type: string - format: date-time - description: The date on when the milestone was reached - name: - type: string - description: Name of the Milestone. - note: - type: string - description: Additional comment related to milestone change. - required: - - date - - name - MEFModifyProductOrderItemRequestedDeliveryDate: - type: object - description: - A response to a request initiated by the Buyer to modify the Requested - Completion Date or the Expedite Indicator of a Product Order Item. - properties: - creationDate: - type: string - format: date-time - description: - Date that the Modify Product Order Item Requested Delivery - Date was created in the Seller's system and the id was assigned - expediteIndicator: - type: boolean - default: false - description: - "Indicates that expedited treatment is requested. Set by the\ - \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ - \ the Requested Completion Date to the expedited date" - href: - type: string - description: | - Hyperlink to the modification request. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - Unique identifier for the MEFModifyProductOrderItemRequestedDeliveryDate - that is generated by the Seller when the MEFModifyProductOrderItemRequestedDeliveryDate - request is moved to the 'acknowledged' state. - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - requestedCompletionDate: - type: string - format: date-time - description: - Identifies the Buyer's desired due date (requested delivery - date) - state: - $ref: "#/components/schemas/MEFChargeableTaskStateType" - required: - - creationDate - - id - - productOrderItem - - state - MEFModifyProductOrderItemRequestedDeliveryDateRef: - type: object - description: a reference to Modify Product Order Item Requested Delivery Date - properties: - href: - type: string - description: - Hyperlink to access the Modify Product Order Item Requested - Delivery Date - id: - type: string - description: - A unique identifier of the Modify Product Order Item Requested - Delivery Date - required: - - id - MEFModifyProductOrderItemRequestedDeliveryDate_Create: - type: object - description: - A request initiated by the Buyer to modify the Requested Requested - Delivery Date or the Expedite Indicator of a Product Order Item. - properties: - expediteIndicator: - type: boolean - default: false - description: - "Indicates that expedited treatment is requested. Set by the\ - \ Buyer. Default Value = FALSE. If this is set to TRUE, the Buyer sets\ - \ the Requested Completion Date to the expedited date" - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - requestedCompletionDate: - type: string - format: date-time - description: - Identifies the Buyer's desired due date (requested delivery - date) - required: - - productOrderItem - MEFOrderItemCoordinatedAction: - type: object - description: - The interval after the completion of one or more related Order - Items that this Order Item can be started or completed - properties: - coordinatedActionDelay: - $ref: "#/components/schemas/Duration" - coordinationDependency: - $ref: "#/components/schemas/MEFOrderItemCoordinationDependencyType" - itemId: - type: string - description: - Specifies Order Item that is to be coordinated with this Order - Item. - required: - - coordinatedActionDelay - - coordinationDependency - - itemId - MEFOrderItemCoordinationDependencyType: - type: string - description: | - Possible values of the Order Item Coordination Dependency - - | OrderItemCoordinationDependencyType | MEF 57.2 | Description | - |-------------------------------------|------------------|----------------------------------------------------------------------------------------------------| - | startToStart | START_TO_START | Work on the Specified Order Item can only be started after the Coordinated Order Items are started | - | startToFinish | START_TO_FINISH | The Coordinated Order Items must complete before work on the Specified Order Item begins | - | finishToStart | FINISH_TO_START | Work on the Related Order Items begins after the completion of the Specified Order Item | - | finishToFinish | FINISH_TO_FINISH | Work on the Related Order Items completes at the same time as the Specified Order Item | - enum: - - startToStart - - startToFinish - - finishToStart - - finishToFinish - MEFPriceType: - type: string - description: Indicates if the price is for recurring or non-recurring charges. - enum: - - recurring - - nonRecurring - - usageBased - MEFProductActionType: - type: string - description: | - Action to be performed on the Product that the Order Item refers to. - - | ProductActionType | MEF 57.2 | - | ----------------- | ---------- | - | add | INSTALL | - | modify | CHANGE | - | delete | DISCONNECT | - enum: - - add - - modify - - delete - MEFProductConfiguration: - type: object - description: - MEFProductConfiguration is used as an extension point for MEF specific - product/service payload. The `@type` attribute is used as a discriminator - discriminator: - propertyName: "@type" - properties: - "@type": - type: string - description: - "The name of the type, defined in the JSON schema specified\ - \ above, for the product that is the subject of the Product Order Request.\ - \ The named type must be a subclass of MEFProductConfiguration." - required: - - "@type" - MEFProductOrderCharge: - type: object - description: - "When non-recurring or updated recurring charges are identified\ - \ by the Seller during their processing of a Product Order, the Seller must\ - \ communicate these charges to the Buyer and the Buyer must respond to the\ - \ Seller informing the Seller if they accept or reject each charge. The Seller\ - \ indicates for each charge, if the charge is Blocking or non-Blocking. If\ - \ the Buyer rejects a Blocking Charge, the Seller will cancel that Product\ - \ Order Item and any related Product Order Items. If the Buyer rejects a non-blocking\ - \ Charge, the Seller may proceed with fulfillment of the Product Order Item." - properties: - cancelProductOrder: - $ref: "#/components/schemas/MEFCancelProductOrderRef" - chargeItem: - type: array - description: A list of Charge Items contained in the Charge - items: - $ref: "#/components/schemas/MEFProductOrderChargeItem" - creationDate: - type: string - format: date-time - description: Date that the Charge was created by the Seller. - href: - type: string - description: | - Hyperlink to the Charge. Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: A unique identifier of the Charge - modifyProductOrderItemRequestedDeliveryDate: - $ref: "#/components/schemas/MEFModifyProductOrderItemRequestedDeliveryDateRef" - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - responseDueDate: - type: string - format: date-time - description: - The date by which the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat - all charges as declined and move them to `declinedByBuyer` status and - put the Charge to `completed` status. - state: - $ref: "#/components/schemas/MEFProductOrderChargeStateType" - required: - - chargeItem - - creationDate - - id - - responseDueDate - - state - MEFProductOrderCharge_Find: - type: object - description: A response object for Buyer's get Charge List request. - properties: - creationDate: - type: string - format: date-time - description: Date that the Charge was created by the Seller. - id: - type: string - description: A unique identifier of the Charge - productOrder: - $ref: "#/components/schemas/MEFProductOrderRef" - productOrderItem: - $ref: "#/components/schemas/MEFProductOrderItemRef" - responseDueDate: - type: string - format: date-time - description: - The date by which the Buyer must respond to the Seller's Charge. - If there is no response received by the Due Date the Seller will treat - all charges as declined and move them to `declinedByBuyer` status and - put the Charge to `completed` status. - state: - $ref: "#/components/schemas/MEFProductOrderChargeStateType" - required: - - creationDate - - id - - responseDueDate - - state - MEFProductOrderChargeActivityType: - type: string - description: | - Possible values for the state of the Charge Activity Type - enum: - - new - - change - MEFProductOrderChargeItem: - type: object - description: A single component part of the Charge - properties: - acceptanceIndicator: - $ref: "#/components/schemas/MEFAcceptedRejectedType" - activityType: - $ref: "#/components/schemas/MEFProductOrderChargeActivityType" - blocking: - type: boolean - description: - "Indicates if rejecting the charge will cause the Seller to\ - \ cancel the Product Order Item, or close the Cancel Product Order or\ - \ Modify Product Order Item Requested Delivery Date without action." - id: - type: string - description: - An identifier that is unique among all Charge Items within - a Charge - note: - type: array - description: | - Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. - items: - $ref: "#/components/schemas/Note" - price: - $ref: "#/components/schemas/Price" - priceCategory: - $ref: "#/components/schemas/MEFPriceCategory" - priceType: - $ref: "#/components/schemas/MEFPriceType" - recurringChargePeriod: - $ref: "#/components/schemas/MEFChargePeriod" - state: - $ref: "#/components/schemas/MEFProductOrderChargeItemStateType" - unitOfMeasure: - type: string - description: - "Unit of Measure if price depending on it is usageBased (Gb,\ - \ SMS volume, etc..)" - required: - - activityType - - blocking - - id - - price - - priceCategory - - priceType - - state - MEFPriceCategory: - type: string - description: A description of the cause of the Charge Item - enum: - - cancellation - - construction - - connection - - disconnect - - expedite - - other - MEFProductOrderChargeItemStateType: - type: string - description: | - Possible values for the state of the Charge Item - - | State | MEF 57.2 Name | Description | - | ------------------- | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `awaitingResponse` | AWAITING_RESPONSE | A Charge has been initiated by the Buyer. The charge includes one or more charges related to a Product Order or Product Order Item. Buyer has not indicated whether they accept or reject the charges via a Respond to Charge request. | - | `completed` | COMPLETED | All Charge Items included in the Charge have moved to either the `acceptedByBuyer` state, the `declinedByBuyer` state, or the `withdrawnBySeller` state. | - | `timeout` | TIMEOUT | A Charge Item has been declined by the Buyer. The referenced Product Order and Product Order Items are updated. If a Blocking charge is declined, the Seller may cancel the referenced Product Order Item and any related Product Order Items, the related Cancel Product Order, or the related Modify Product Order Item Requested Delivery Date. | - | `withdrawnBySeller` | WITHDRAWN_BY_SELLER | The Seller determines that the Charge Item is incorrect. They withdraw the Charge Item and initiate a new Charge with the required correction(s) if needed. | - enum: - - awaitingResponse - - acceptedByBuyer - - declinedByBuyer - - withdrawnBySeller - MEFProductOrderChargeItem_Update: - type: object - description: - A type used to perform Buyer's response to a Charge Item - to accept - or reject it. - properties: - acceptanceIndicator: - $ref: "#/components/schemas/MEFAcceptedRejectedType" - id: - type: string - description: - "An identifier that is unique among Charge. Used for Charge\ - \ Item matching, not to be update." - note: - type: array - description: | - Free form text to clarify or explain the Charge Item. Only new notes can be entered. The Seller cannot modify an existing Note. - items: - $ref: "#/components/schemas/Note" - required: - - acceptanceIndicator - - id - MEFProductOrderChargeRef: - type: object - description: A reference to a Charge instance - properties: - href: - type: string - description: Hyperlink to access the Charge - id: - type: string - description: A unique identifier of the Charge - required: - - id - MEFProductOrderChargeStateType: - type: string - description: | - Possible values for the state of the Charge - - | State | Description | - | ------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | - | `completed` | All Charge Items included in the Charge for a given Product Order Item have moved to either the `accepted` state or the `declined` state. | - | `awaitingResponse` | A Charge has been initiated by the Buyer. The charge includes one or more charges. | - | `timeout` | A response has not been received from the Buyer within the `responseDueDate`. This is treated as if the Buyer declined the Charge Items. | - | `withdrawnBySeller` | The Seller determines that the Charge is incorrect. They withdraw the Charge and initiate a new Charge with the required correction(s). | - enum: - - awaitingResponse - - completed - - timeout - - withdrawnBySeller - MEFProductOrderCharge_Update: - type: object - description: - A subset of MEFProductOrderCharge that is allowed to be updated - by the Buyer - properties: - chargeItem: - type: array - description: A list of Charge Items contained in the Charge - items: - $ref: "#/components/schemas/MEFProductOrderChargeItem_Update" - minItems: 1 - required: - - chargeItem - MEFProductOrderItemRef: - type: object - description: It's a ProductOrder item - properties: - productOrderHref: - type: string - description: Reference of the related ProductOrder. - productOrderId: - type: string - description: Unique identifier of a ProductOrder. - productOrderItemId: - type: string - description: Id of an Item within the Product Order - required: - - productOrderId - - productOrderItemId - MEFProductOrderItemStateChange: - type: object - description: - "Holds the State notification reasons and associated date the State\ - \ changed, populated by the server" - properties: - changeDate: - type: string - format: date-time - description: The date on when the state was reached - changeReason: - type: string - description: Additional comment related to state change. - state: - $ref: "#/components/schemas/MEFProductOrderItemStateType" - MEFProductOrderItemStateType: - type: string - description: | - Possible values for the state of the Product Order Item The following - mapping has been used between `MEFProductOrderItemStateType` and MEF - 57.2: - - | state | MEF 57.2 name | Description | - | --------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | - | `acknowledged` | ACKNOWLEDGED | A Product Order Item has been received and has passed basic business validations. From the `acknowledged` state the Product Order Item is further validated and depending on the results of the validation and if other Product Order Items in the Product Order are also validated the Product Order Item moves to `inProgress`, `rejected.validated`, or `rejected.unassessed`. | - | `cancelled` | CANCELLED | The Product Order has moved to the `pendingCancellation` state. All Product Order Items move to `cancelled`. | - | `completed` | COMPLETED | The Product Order Item has completed provisioning. This is an end state | - | `failed` | FAILED | The fulfillment of a Product Order Item has failed. A Product Order Item may fail because the Buyer declined a Blocking charge identified via the Charge, the Buyer failed to respond to a Charge Item included in a Charge, or the Seller is unable to fulfill the Product Order Item. A Product Order Item moving to `failed` state results in the Product Order State being `failed` or `partial`. This is a terminal state. | - | `held` | HELD | The Product Order Item cannot be progressed due to Charge the Seller awaiting a response from the Buyer on a Charge. The Seller stops work on the Product Order Item until the Charge has completed. Upon acceptance by the Buyer of all Blocking charges, the Product Order Item returns to `inProgress` state If the Buyer rejects a Blocking charge, the Product Order Item moves to the `failed` state. | - | `inProgress` | IN_PROGRESS | The Product Order Item has been successfully validated and fulfillment has started. If the Seller's system links validation between Product Order Items in a Product Order, a Product Order Item in this state also indicates that the other Product Order Items passed validation. | - | `pending` | PENDING | The Product Order Item cannot be progressed due to the Seller assessing a Cancel Product Order or Modify Product Order Item Requested Delivery Date request. The Seller stops work on the Product Order Item until either the Cancel Product Order has been accepted and the Product Order state moves to `pendingCancellation` and the Product Order Item state moves to `cancelled`, the Cancel Product Order has been rejected and the Product Order Item State moves to `inProgress`, the Modify Product Order Item Requested Delivery Date has been accepted and the Product Order Item State moves to `inProgress`, or the Modify Product Order Item Requested Delivery Date moves to `done.declined` and the Product Order Item state moves to `inProgress` with original delivery dates. | - | `rejected` | REJECTED | A Product Order Item was submitted, and it has failed at least one validation checks the Seller performs during the `acknowledged` state. | - | `rejected.unassessed` | UNASSESSED | A Product Order was submitted and all validation checks the Seller performs during the `acknowledged` state have not been completed, but another Product Order Item in the Product Order has moved to the `rejected` state. | - | `rejected.validated` | VALIDATED | A Product Order was submitted, and it has passed all validation checks the Seller performs during the `acknowledged` state, but another Product Order Item in the Product Order has moved to the `rejected` state | - enum: - - acknowledged - - cancelled - - completed - - failed - - held - - inProgress - - pending - - rejected - - rejected.validated - - rejected.unassessed - MEFProductOrderItem_Common: - type: object - description: | - An identified part of the order. A product order is decomposed into one or more order items. This type holds the attributes common to request and response representation of the Product Order Item. - properties: - action: - $ref: "#/components/schemas/MEFProductActionType" - agreementName: - type: string - description: - The name of the Agreement which is referenced for the Product - Order Item. - billingAccount: - $ref: "#/components/schemas/MEFBillingAccountRef" - coordinatedAction: - type: array - description: - The interval after the completion of one or more related Product - Order Items that this Product Order Item can be started or completed - items: - $ref: "#/components/schemas/MEFOrderItemCoordinatedAction" - endCustomerName: - type: string - description: - "The name of the End Customer, either a business name or an\ - \ individual name depending on the end customer." - expediteIndicator: - type: boolean - default: false - description: - "Indicates that expedited treatment is requested. Set by the\ - \ Buyer. If this is set to TRUE, the Buyer sets the Requested Completion\ - \ Date to the expedited date. See MEF 57.2 section 7.3 for a description\ - \ of the interaction between the Buyer and the Seller." - id: - type: string - description: | - A Buyer provided identifier to identify Product Order Items and to be able to relate them to one another. This is set by the Buyer and is unique within the Product Order. Examples of Reference Identifier could be 1, 2, 3 or A, B, C. The Reference Identifier can be reused in multiple Product Orders to identify a Product Order Item within that Product Order. - note: - type: array - description: | - Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. This is not to be used to inform the Seller of Actions that the Buyer wishes performed. - items: - $ref: "#/components/schemas/Note" - product: - $ref: "#/components/schemas/MEFProductRefOrValueOrder" - productOfferingQualificationItem: - $ref: "#/components/schemas/ProductOfferingQualificationItemRef" - productOrderItemRelationship: - type: array - description: - The relationship between Product Order Items in the Product - Order. - items: - $ref: "#/components/schemas/OrderItemRelationship" - quoteItem: - $ref: "#/components/schemas/MEFQuoteItemRef" - relatedBuyerPON: - type: string - description: - Identifies the Buyer Purchase Order Number that is related - to this Product Order. - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Order Item. - The rule for mapping a represented attribute - value to a `role` is to use the _lowerCamelCase_ pattern e.g. - - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` - - Buyer Implementation Contact: `role=buyerImplementationContact` - - Buyer Technical Contact: `role=buyerTechnicalContact` - - Buyer Billing Contact: `role=buyerBillingContact` - - Buyer Fault Contact: `role=buyerFaultContact` - - Seller Fault Contact: `role=sellerFaultContact` - - Buyer GDPR Contact: `role=buyerGDPRContact` - - Seller GDPR Contact: `role=sellerGDPRContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - requestedCompletionDate: - type: string - format: date-time - description: - Identifies the Buyer's desired due date (requested delivery - date) - requestedItemTerm: - $ref: "#/components/schemas/MEFItemTerm" - tspRestorationPriority: - type: string - description: | - Within the United States, indicates the provisioning and restoration priority as defined under the TSP Service Vendor Handbook. The valid values are defined in ATIS OBF document: ATIS-0404001. - required: - - action - - id - MEFProductOrderItem_Create: - allOf: - - $ref: "#/components/schemas/MEFProductOrderItem_Common" - - type: object - description: - "An identified part of the order. A product order is decomposed\ - \ into\none or more order items. \nThe modelling pattern introduces the\ - \ `Common` supertype to\naggregate attributes that are common to both `ProductOrderItem`\ - \ and\n`ProductOrderItem_Create`. The `Create` type has a subset of\nattributes\ - \ of the response type and does not introduce any new,\nthus the `Create`\ - \ type has an empty definition.\n" - MEFProductOrderItem_Update: - type: object - description: | - An updatable representation of the Product Order Item. - properties: - endCustomerName: - type: string - description: - "The name of the End Customer, either a business name or an\ - \ individual name depending on the end customer." - id: - type: string - description: | - Identifier of the Item. This is to address the Item to be updated within the Product Order. The id itself cannot be updated. - note: - type: array - description: | - Free form text to clarify or explain the Product Order Item. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order Item or when updating it. The Seller may add notes at any time. - items: - $ref: "#/components/schemas/Note" - relatedBuyerPON: - type: string - description: - This information is not used by the Seller and is maintained - for the convenience of the Buyer (e.g. search purposes). - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role for this Order Item. Buyer may modify, add, or delete only Buyer-related contacts. - - Buyer Product Order Item Contact: `role=buyerProductOrderItemContact` - - Buyer Implementation Contact: `role=buyerImplementationContact` - - Buyer Technical Contact: `role=buyerTechnicalContact` - - Buyer Fault Contact: `role=buyerFaultContact` - - Buyer GDPR Contact: `role=buyerGDPRContact` - items: - $ref: "#/components/schemas/RelatedContactInformation" - required: - - id - MEFProductOrderRef: - type: object - description: Holds the MEF Product Order reference - properties: - productOrderHref: - type: string - description: Hyperlink to access the order - productOrderId: - type: string - description: - Unique (within the ordering domain) identifier for the order - that is generated by the seller when the order is initially accepted. - required: - - productOrderId - MEFProductOrderStateChange: - type: object - description: - "Holds the State notification reasons and associated date the State\ - \ changed, populated by the server" - properties: - changeDate: - type: string - format: date-time - description: The date on when the state was reached - changeReason: - type: string - description: Additional comment related to state change - state: - $ref: "#/components/schemas/MEFProductOrderStateType" - MEFProductOrderStateType: - type: string - description: | - Possible values for the state of the Product Order The following - mapping has been used between `MEFProductOrderStateType` and MEF 57.2: - - | state | MEF 57.2 name | Description | - | ------------------------------- | ---------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | - | `acknowledged` | ACKNOWLEDGED | A Product Order has been received by the Seller and has passed basic validation. A `productOrder.id` is assigned in the `acknowledged` state and a response is returned to the Buyer. The Product Order remains in the `acknowledged` state while validations of Product Order and Product Order Item(s) attributes as applicable is completed. If the Product Order and Product Order Item attributes are validated the Product Order moves to the `inProgress` state. If not validated, the Product Order moves to the `rejected` state. | - | `assessingCancellation` | ASSESSING_CANCELLATION | A Cancel Product Order request has been received by the Seller. The Product Order is being assessed to determine if the Product Order can be cancelled. If there are charges associated with cancelling the Product Order, these are communicated to the Buyer using the Charge process. The Product Order remains in the `assessingCancellation` state until any relevant Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order moves to the `pendingCancellation` state. If the request is not validated or if any associated Charges are not completed, the Product Order moves to the `inProgress` state and the Product Order is not cancelled. | - | `held.assessingCharge` | ASSESSING_CHARGE | A Charge has been initiated by the Seller that is not the result of a Modify Product Order Item Requested Delivery Date or Cancel Product Order request and the Seller is awaiting a Buyer response to the Charge. If a blocking or non-blocking charge is accepted by the Buyer, the Product Order moves to `inProgress`. If a non-blocking charge is declined by the Buyer, the Product Order moves to `inProgress`. If a blocking charge is declined by the Buyer and there are no unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` and then to the `failed` state. If a blocking charge is declined by the Buyer and there are unrelated Product Order Items in the Product Order, the Product Order moves to the `inProgress` state. | - | `pending.assessingModification` | ASSESSING_MODIFICATION | A request has been made by the Buyer to modify either the `expediteIndicator` or the `requestedCompletionDate` of a Product Order Item. The Product Order Item is currently being assessed to determine whether the Modify Product Order Item Requested Delivery Date is valid. If there is a charge associated with the Modify Product Order Item Requested Delivery Date, the Product Order remains in the `pending.assessingModification` state until the Charge is completed or withdrawn by the Seller. Once the Buyer's request has been validated and any associated Charges completed, the Product Order returns to the `inProgress` state. | - | `cancelled` | CANCELLED | The Product Order has been successfully cancelled. This is a terminal state. | - | `pendingCancellation` | CANCELLING | The Buyer's Cancel Request has been assessed and it has been determined that it is feasible to proceed with the cancellation. This state can also result from a Seller cancelling the Product Order within their systems without a request from the Buyer. | - | `completed` | COMPLETED | The Product Order has completed fulfillment and the Product is now active. This is a terminal state | - | `failed` | FAILED | All Product Order Items have failed which results in the entire Product Order failing. This is a terminal state. | - | `inProgress` | IN_PROGRESS | The Product Order has been successfully validated, and fulfillment has started. | - | `partial` | PARTIAL | Fulfillment of at least one Product Order Item has failed, and fulfillment of at least one Product Order Item has been successful. This is a terminal state. | - | `rejected` | REJECTED | A Product Order was submitted, and it has failed at least one of the validation checks the Seller performs after it reached the `acknowledged` state | - enum: - - acknowledged - - assessingCancellation - - cancelled - - completed - - failed - - held.assessingCharge - - inProgress - - partial - - pending.assessingModification - - pendingCancellation - - rejected - MEFProductRefOrValueOrder: - type: object - description: - Used by the Buyer to point to existing and/or describe the desired - shape of the product. In case of `add` action - only `productConfiguration` - MUST be specified. For `modify` action - both `id` and `productConfiguration` - MUST be provided to point which product instance to update and to what state. - In `delete` only the `id` must be provided. - properties: - href: - type: string - description: - Hyperlink to the referenced Product. Hyperlink MAY be used - by the Seller in responses. Hyperlink MUST be ignored by the Seller in - case it is provided by the Buyer in a request. - id: - type: string - description: - The unique identifier of an in-service Product that is the - ordering subject. This field MUST be populated if an item `action` is - either `modify` or `delete`. This field MUST NOT be populated if an item - `action` is `add`. - place: - type: array - description: - The relationships between this Product Order Item and one or - more Places as defined in the Product Specification. - items: - $ref: "#/components/schemas/RelatedPlaceRefOrValue" - productConfiguration: - $ref: "#/components/schemas/MEFProductConfiguration" - productOffering: - $ref: "#/components/schemas/ProductOfferingRef" - productRelationship: - type: array - description: - A list of references to existing products that are related - to the ordered Product. - items: - $ref: "#/components/schemas/ProductRelationship" - MEFQuoteItemRef: - type: object - description: It's a Quote item that has been executed previously. - properties: - id: - type: string - description: Id of an Quote Item - quoteHref: - type: string - description: Reference of the related Quote. - quoteId: - type: string - description: Unique identifier of a Quote. - required: - - id - - quoteId - MEFSubUnit: - type: object - description: Allows for sub unit identification - properties: - subUnitNumber: - type: string - description: - "The discriminator used for the subunit, often just a simple\ - \ number but may also be a range." - subUnitType: - type: string - description: - "The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER,\ - \ UNIT, WHARF." - required: - - subUnitNumber - - subUnitType - Money: - type: object - description: A base / value business entity used to represent money - properties: - unit: - type: string - description: Currency (ISO4217 norm uses 3 letters to define the currency) - value: - type: number - format: float - description: A positive floating point number - Note: - type: object - description: - Extra information about a given entity. Only useful in processes - involving human interaction. Not applicable for the automated process. - properties: - author: - type: string - description: Author of the note - date: - type: string - format: date-time - description: Date the Note was created - id: - type: string - description: - "Identifier of the note within its containing entity (may or\ - \ may not be globally unique, depending on provider implementation)" - source: - $ref: "#/components/schemas/MEFBuyerSellerType" - text: - type: string - description: Text of the note - required: - - author - - date - - id - - source - - text - OrderItemRelationship: - type: object - description: The relationship between Product Order Items in the Product Order. - properties: - id: - type: string - description: Id of the related Order Item (must be in the same Order). - relationshipType: - type: string - description: - Specifies the nature of the relationship to the related Product - Order Item. A string that is one of the relationship types specified in - the Product Specification. - required: - - id - - relationshipType - Price: - type: object - description: - "Provides all amounts (tax included, duty free, tax rate), used\ - \ currency and percentage to apply for Price Alteration." - properties: - dutyFreeAmount: - $ref: "#/components/schemas/Money" - taxIncludedAmount: - $ref: "#/components/schemas/Money" - taxRate: - type: number - format: float - description: "Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax." - required: - - dutyFreeAmount - ProductOfferingQualificationItemRef: - type: object - description: - It's a productOfferingQualification item that has been executed - previously. - properties: - alternateProductOfferingProposalId: - type: string - description: - A unique identifier for this Alternate Product Proposal assigned - by the Seller. - id: - type: string - description: Id of an item of a product offering qualification - productOfferingQualificationHref: - type: string - description: Reference to a related Product Offering Qualification resource. - productOfferingQualificationId: - type: string - description: - Unique identifier of related Product Offering Qualification - resource. - required: - - id - - productOfferingQualificationId - ProductOfferingRef: - type: object - description: - "A reference to a Product Offering offered by the Seller to the\ - \ Buyer. A Product Offering contains the commercial and technical details\ - \ of a Product sold by a particular Seller. A Product Offering defines all\ - \ of the commercial terms and, through association with a particular Product\ - \ Specification, defines all the technical attributes and behaviors of the\ - \ Product. A Product Offering may constrain the allowable set of configurable\ - \ technical attributes and/or behaviors specified in the associated Product\ - \ Specification." - properties: - href: - type: string - description: | - Hyperlink to a Product Offering in Sellers catalog. In case Seller is not providing a catalog capabilities this field is not used. The catalog API definition is provided by the Seller to the Buyer during onboarding Hyperlink MAY be used by the Seller in responses Hyperlink MUST be ignored by the Seller in case it is provided by the Buyer in a request - id: - type: string - description: - id of a Product Offering. It is assigned by the Seller. The - Buyer and the Seller exchange information about offerings' ids during - the onboarding process. - required: - - id - ProductOrder: - allOf: - - $ref: "#/components/schemas/ProductOrder_Common" - - type: object - description: - A Product Order is a type of order which can be used to place - an order between a customer and a service provider or between a service - provider and a partner and vice versa - properties: - cancellationCharge: - type: array - description: Charges associated with cancelling the Product Order - items: - $ref: "#/components/schemas/MEFProductOrderChargeRef" - cancellationDate: - type: string - format: date-time - description: - Identifies the date the Seller cancelled the Order. Set by - Seller when the Order is moved to the cancelled state. - cancellationReason: - type: string - description: - "An optional free-form text field for the Seller to provide\ - \ additional information regarding the reason for the cancellation.\ - \ If the Seller cancels the Product Order, the Seller provides the reason.\ - \ If the Buyer requests the cancellation, the Seller copies the reason\ - \ provided by the Buyer from the Cancel Product Order request." - completionDate: - type: string - format: date-time - description: - Identifies the date that all Product Order Items within the - Order have reached a terminal state. No further action is permitted - on the Product Order. - href: - type: string - description: Hyperlink to access the order - id: - type: string - description: - Unique identifier for the Product Order that is generated - by the Seller when the Product Order is initially accepted via an API. - orderDate: - type: string - format: date-time - description: - Date when the Product Order was created in the Seller's system - and a Product Order Identifier was assigned - productOrderItem: - type: array - description: | - Items contained in the Product Order. - items: - $ref: "#/components/schemas/ProductOrderItem" - minItems: 1 - state: - $ref: "#/components/schemas/MEFProductOrderStateType" - stateChange: - type: array - description: State change for the Product Order - items: - $ref: "#/components/schemas/MEFProductOrderStateChange" - required: - - id - - orderDate - - productOrderItem - - state - ProductOrderItem: - allOf: - - $ref: "#/components/schemas/MEFProductOrderItem_Common" - - type: object - description: | - An identified part of the order. A product order is decomposed into one or more order items. - properties: - charge: - type: array - description: - The Charges associated to this Product Order Item. This list - contains all completed Charges containing accepted Charge Items initiated - by the Seller. Any Charge that is withdrawn or containing all declined - Charge Items must not be included in this list. - items: - $ref: "#/components/schemas/MEFProductOrderChargeRef" - completionDate: - type: string - format: date-time - description: - Identifies the date the Seller completed the Product Order - Item. Set by Seller when all Product Order Items have reached a terminal - state. No further action is permitted on the Product Order after this - state is reached. - expectedCompletionDate: - type: string - format: date-time - description: | - Identifies the date the Seller expects to complete the Product Order Item. - expediteAcceptedIndicator: - type: boolean - default: false - description: - "Indicates if the Seller has accepted the Buyer's Expedite\ - \ request. See MEF 57.2 section 7.3 for a description of the interaction\ - \ between the Buyer and Seller. If this is set to true, the Seller provides\ - \ the costs to expedite the Product Order in the charge attribute" - itemTerm: - type: array - description: Term of the Product Order Item - items: - $ref: "#/components/schemas/MEFItemTerm" - maxItems: 1 - milestone: - type: array - description: - Milestones associated to the Product Order Item. Set by the - Seller when a Milestone occurs. - items: - $ref: "#/components/schemas/MEFMilestone" - state: - $ref: "#/components/schemas/MEFProductOrderItemStateType" - stateChange: - type: array - description: State change for the Product Order Item - items: - $ref: "#/components/schemas/MEFProductOrderItemStateChange" - terminationError: - type: array - description: - "When the Seller cannot process the request, the Seller returns\ - \ a text-based list of reasons here." - items: - $ref: "#/components/schemas/TerminationError" - ProductOrder_Common: - type: object - description: - "A Product Order is a type of order which can be used to place\ - \ an order between a customer and a service provider or between a service\ - \ provider and a partner and vice versa," - properties: - externalId: - type: string - description: An identifier for this order within the Buyer's enterprise. - note: - type: array - description: | - Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. - items: - $ref: "#/components/schemas/Note" - projectId: - type: string - description: - An identifier that is used to group Product Orders that is - important to the Buyer. A projectId can be used to relate multiple Product - Orders together. - relatedContactInformation: - type: array - description: |- - Contact information of an individual or organization playing a role in this context. - (e.g. Product Order Contact: role=productOrderContact; - Seller Contact: role=sellerContact) - Providing the Product Order Contact in the request is mandatory. - items: - $ref: "#/components/schemas/RelatedContactInformation" - minItems: 1 - required: - - relatedContactInformation - ProductOrder_Create: - allOf: - - $ref: "#/components/schemas/ProductOrder_Common" - - type: object - description: | - A Product Order is a type of order which can be used to place an order between a customer and a service provider or between a service provider and a partner and vice versa, Skipped properties: id,href,completionDate,orderDate,state,stateChange,cancellationDate,cancellationReason - properties: - productOrderItem: - type: array - description: | - Items contained in the Product Order. - items: - $ref: "#/components/schemas/MEFProductOrderItem_Create" - minItems: 1 - required: - - productOrderItem - ProductOrder_Find: - type: object - description: - Structure to define GET without id response. A list of productOrder - matching request criteria. Provides Product order summary view. - properties: - cancellationDate: - type: string - format: date-time - description: - Identifies the date the Seller cancelled the Order. Set by - Seller when the Order is moved to the cancelled state. - completionDate: - type: string - format: date-time - description: - Identifies the date that all Product Order Items within the - Order have reached a terminal state. No further action is permitted on - the Product Order after this notification. - externalId: - type: string - description: - ID given by the consumer and only understandable by him (to - facilitate his searches afterward). - id: - type: string - description: - Unique identifier for the order that is generated by the Seller - when the order is initially accepted via an API. - orderDate: - type: string - format: date-time - description: Date when the Product Order was created - projectId: - type: string - description: - An identifier that is used to group Product Orders that is - important to the Buyer. A projectId can be used to relate multiple Product - Orders together. - state: - $ref: "#/components/schemas/MEFProductOrderStateType" - required: - - id - - orderDate - - state - ProductOrder_Update: - type: object - description: - A request initiated by the Buyer to update Product Order and/or - Product - properties: - externalId: - type: string - description: An identifier for this Product Order within the Buyer's enterprise. - note: - type: array - description: | - Free form text to clarify or explain the Product Order. Only new notes can be entered. The Buyer and Seller cannot modify an existing Note. The Buyer creates a Note when creating the Product Order or when updating it. The Seller may add notes at any time. - items: - $ref: "#/components/schemas/Note" - productOrderItem: - type: array - description: | - Order Item attributes that may be updated - items: - $ref: "#/components/schemas/MEFProductOrderItem_Update" - projectId: - type: string - description: - An identifier that is used to group Product Orders that is - important to the Buyer. A projectId can be used to relate multiple Product - Orders together. - relatedContactInformation: - type: array - description: | - Contact information of an individual or organization playing a role in this context. Buyer can modify, add, or delete only Buyer-related contacts. - items: - $ref: "#/components/schemas/RelatedContactInformation" - minItems: 1 - ProductRelationship: - type: object - description: - A relationship to an existing Product. The requirements for usage - for given Product are described in the Product Specification. - properties: - href: - type: string - description: - Hyperlink to the product in Seller's inventory that is referenced - Hyperlink MAY be used when providing a response by the Seller Hyperlink - MUST be ignored by the Seller in case it is provided by the Buyer in a - request - id: - type: string - description: unique identifier of the related Product - relationshipType: - type: string - description: | - Specifies the type (nature) of the relationship to the related Product. The nature of required relationships varies for Products of different types. For example, a UNI or ENNI Product may not have any relationships, but an Access E-Line may have two mandatory relationships (related to the UNI on one end and the ENNI on the other). More complex Products such as multipoint IP or Firewall Products may have more complex relationships. As a result, the allowed and mandatory `relationshipType` values are defined in the Product Specification. - required: - - id - - relationshipType - RelatedContactInformation: - type: object - description: - "Contact information of an individual or organization playing a\ - \ role for\nthis Order Item. The rule for mapping a represented attribute\ - \ value to a\n`role` is to use the _lowerCamelCase_ pattern e.g. \n- Buyer\ - \ Order Item Contact: `role=buyerOrderItemContact` \n- Buyer Implementation\ - \ Contact: `role=buyerImplementationContact` \n- Buyer Technical Contact:\ - \ `role=buyerTechnicalContact`\n" - properties: - emailAddress: - type: string - description: Email address - name: - type: string - description: Name of the contact - number: - type: string - description: Phone number - numberExtension: - type: string - description: Phone number extension - organization: - type: string - description: The organization or company that the contact belongs to - postalAddress: - $ref: "#/components/schemas/FieldedAddress" - role: - type: string - description: A role the party plays in a given context. - required: - - emailAddress - - name - - number - - role - RelatedPlaceRefOrValue: - type: object - description: Place defines the places where the product order must be done. - discriminator: - mapping: - FieldedAddress: "#/components/schemas/FieldedAddress" - FormattedAddress: "#/components/schemas/FormattedAddress" - GeographicAddressLabel: "#/components/schemas/GeographicAddressLabel" - GeographicAddressRef: "#/components/schemas/GeographicAddressRef" - GeographicSiteRef: "#/components/schemas/GeographicSiteRef" - MEFGeographicPoint: "#/components/schemas/MEFGeographicPoint" - propertyName: "@type" - properties: - "@schemaLocation": - type: string - format: uri - description: - A URI to a JSON-Schema file that defines additional attributes - and relationships. May be used to define additional related place types. - Usage of this attribute must be agreed upon between Buyer and Seller. - "@type": - type: string - description: | - This field is used as a discriminator and is used between different place representations. This type might discriminate for additional related place as defined in '@schemaLocation'. - enum: - - FieldedAddress - - FormattedAddress - - GeographicAddressLabel - - GeographicAddressRef - - GeographicSiteRef - - MEFGeographicPoint - role: - type: string - description: Role of this place - required: - - "@type" - - role - TerminationError: - type: object - description: - This indicates an error that caused an Item to be terminated. The - code and propertyPath should be used like in Error422. - properties: - code: - $ref: "#/components/schemas/Error422Code" - propertyPath: - type: string - description: | - A pointer to a particular property of the payload that caused the validation issue. It is highly recommended that this property should be used. - Defined using JavaScript Object Notation (JSON) Pointer (https://tools.ietf.org/html/rfc6901). - value: - type: string - description: Text to describe the reason of the termination. - TimeUnit: - type: string - description: | - Represents a unit of time. - enum: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - securitySchemes: - oauth2MEFLSOAPI: - description: Default m2m client code - flows: - clientCredentials: - refreshUrl: http://mef.net/example/refresh - scopes: - default: default scope - tokenUrl: http://mef.net/example/token - type: oauth2 diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml deleted file mode 100644 index 4654336f..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.customized.yaml +++ /dev/null @@ -1,2223 +0,0 @@ -openapi: 3.0.1 -info: - description: | - **This file forms part of MEF 115** - - This API implements Business Requirements described in MEF 80 - - Quote API allows the Buyer to submit a request to find out how much the installation - of an instance of a Product Offering, an update to an existing Product, or - a disconnect of an existing Product will cost. - - List of supported Use Cases: - - Create Quote - - Retrieve Quote List - - Retrieve Quote by Quote Identifier - - Cancel Quote by Quote Identifier - - Decline Quote by Quote Identifier - - Register for Quote Notification - - Copyright 2021 MEF Forum and its contributors. - - This file includes content based on the TM Forum Quote Management API - (TMF648 v4.0.0) available at - https://github.com/tmforum-apis/TMF648_QuoteManagement, which is licensed - by the TM Forum under the Apache License version 2.0. Such content has been - modified by the MEF Forum and its contributors. - title: Quote Management - version: 8.0.1 -servers: - - url: 'https://{serverBase}/mefApi/sonata/quoteManagement/v8/' - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -tags: - - name: quote - - name: quote operations - - name: events subscription -paths: - /quote: - get: - description: >- - The Buyer requests a list of Quotes from the Seller based on a set of - filter criteria (as described in MEF 80). For each Quote returned, the - Seller also provides a Quote Identifier that uniquely identifies this - Quote within the Seller. The order of the elements returned to the - Buyer is defined by the Seller (e.g. natural order) and does not change - between the pages. - operationId: listQuote - parameters: - - description: >- - State of the Quote to be retrieved. See `MEFQuoteStateType` - definition for details - in: query - name: state - schema: - enum: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - cancelled - - unableToProvide - - declined - - expired - - inProgress - - inProgress.draft - - rejected - type: string - - description: >- - Level of the quote - could be budgetary, - firmSubjectToFeasibilityCheck, firm - in: query - name: quoteLevel - schema: - enum: - - budgetary - - firmSubjectToFeasibilityCheck - - firm - type: string - - description: >- - ID given by the consumer and only understandable by him (to - facilitate his searches afterward) - in: query - name: externalId - schema: - type: string - - description: >- - An identifier that is used to group Quotes that represent a unit of - functionality that is important to a Buyer. A Project can be used - to relate multiple Quotes together - in: query - name: projectId - schema: - type: string - - description: Date when the quote was created - greater than - in: query - name: quoteDate.gt - schema: - format: date-time - type: string - - description: Date when the quote was created - lower than - in: query - name: quoteDate.lt - schema: - format: date-time - type: string - - description: Requested Quote Completion Date - greater than - in: query - name: requestedQuoteCompletionDate.gt - schema: - format: date-time - type: string - - description: Requested Quote Completion Date - lower than - in: query - name: requestedQuoteCompletionDate.lt - schema: - format: date-time - type: string - - description: Expected Quote Completion Date - greater than - in: query - name: expectedQuoteCompletionDate.gt - schema: - format: date-time - type: string - - description: Expected Quote Completion Date - lower than - in: query - name: expectedQuoteCompletionDate.lt - schema: - format: date-time - type: string - - description: >- - Date when the Quote State was set to one of the Completion States - - greater than - in: query - name: effectiveQuoteCompletionDate.gt - schema: - format: date-time - type: string - - description: >- - Date when the Quote State was set to one of the Completion States - - lower than - in: query - name: effectiveQuoteCompletionDate.lt - schema: - format: date-time - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - - description: - Requested index for start of resources to be provided in response - in: query - name: offset - schema: - type: integer - - description: Requested number of resources to be provided in response - in: query - name: limit - schema: - format: int32 - type: integer - responses: - '200': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Quote_Find' - type: array - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - headers: - X-Pagination-Throttled: - description: > - Used to indicate that result page was throttled to maximum - possible size and there are additional results that can be - fetched - schema: - type: boolean - X-Total-Count: - description: > - The total number of matching records. E.g. if there are 50 - matching records in total, but the request has offset=10 and - limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of records included in the response - schema: - type: integer - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: List or find Quote objects - tags: - - quote - post: - description: This operation creates a Quote entity. - operationId: createQuote - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Quote_Create' - description: The Quote to be created - required: true - responses: - '201': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Quote' - description: - 'Created (https://tools.ietf.org/html/rfc7231#section-6.3.2)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: >- - Unprocessable entity due to the business validation problems in the - Quote or one of the Quote items - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Send request to perform a quotation - tags: - - quote - x-codegen-request-body-name: quote - '/quote/{id}': - get: - description: >- - This operation retrieves a Quote entity. Attribute selection is enabled - for all first level attributes. - operationId: retrieveQuote - parameters: - - description: Identifier of the Quote - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Quote' - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Retrieves a Quote by ID - tags: - - quote - /cancelQuote: - post: - description: This operation sends a cancellation request. - operationId: cancelQuote - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: The details of the Quote Operation - required: true - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: Success - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: >- - Unprocessable entity due to the business validation problems in the - Quote or one of the Quote items - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Cancels a Quote - tags: - - quote operations - x-codegen-request-body-name: cancelQuote - /rejectQuote: - post: - description: This operation sends a rejection request. - operationId: rejectQuote - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: The details of the Quote Operation - required: true - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: Success - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: >- - Unprocessable entity due to the business validation problems in the - Quote or one of the Quote items - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Rejects a Quote - tags: - - quote operations - x-codegen-request-body-name: rejectQuote - /hub: - post: - description: >- - A request initiated by the Buyer to instruct the Seller to send - notifications of Quote state changes in the event the Seller uses the - Deferred Response pattern to respond to a Create Quote request. - operationId: registerListener - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/EventSubscriptionInput' - description: - Data containing the callback endpoint to deliver the information - required: true - responses: - '201': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/EventSubscription' - description: - 'Subscribed (https://tools.ietf.org/html/rfc7231#section-6.3.2)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - '501': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error501' - description: >- - Method not implemented. Used in case Seller is not supporting - Notification mechanism - summary: Allows the Buyer to register to Quote state change notifications - tags: - - events subscription - x-codegen-request-body-name: data - '/hub/{id}': - delete: - description: >- - Resets the communication endpoint address the service instance must use - to deliver information about its health state, execution state, - failures and metrics. - operationId: unregisterListener - parameters: - - description: The id of the EventSubscription - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '204': - description: - 'Deleted (https://tools.ietf.org/html/rfc7231#section-6.3.5)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - '501': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error501' - description: >- - Method not implemented. Used in case Seller is not supporting - Notification mechanism - summary: Unregister a listener - tags: - - events subscription -components: - schemas: - Duration: - description: - 'A Duration in a given unit of time e.g. 3 hours, or 5 days.' - properties: - amount: - description: 'Duration (number of seconds, minutes, hours, etc.)' - type: integer - units: - description: Time unit type - $ref: '#/components/schemas/TimeUnit' - required: - - amount - - units - type: object - Error: - description: > - Standard Class used to describe API response error Not intended to be - used directly. The `code` in the HTTP header is used as a discriminator - for the type of error returned in runtime. - properties: - reason: - description: >- - Text that explains the reason for the error. This can be shown to a - client user. - maxLength: 255 - type: string - message: - description: >- - Text that provides mode details and corrective actions related to - the error. This can be shown to a client user. - type: string - referenceError: - description: URL pointing to documentation describing the error - format: uri - type: string - required: - - reason - type: object - Error400: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required - query-string parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - $ref: '#/components/schemas/Error400Code' - required: - - code - type: object - description: - 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' - Error400Code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required query-string - parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - type: string - Error401: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - One of the following error codes: - - - missingCredentials: No credentials provided. - - - invalidCredentials: Provided credentials are invalid or - expired - $ref: '#/components/schemas/Error401Code' - required: - - code - type: object - description: - 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' - Error401Code: - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - type: string - Error403: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - $ref: '#/components/schemas/Error403Code' - required: - - code - type: object - description: >- - Forbidden. This code indicates that the server understood the request - but refuses to authorize it. - (https://tools.ietf.org/html/rfc7231#section-6.5.3) - Error403Code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - type: string - Error404: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - notFound: A current representation for the target resource - not found - enum: - - notFound - type: string - required: - - code - type: object - description: >- - Resource for the requested path not found. - (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error422: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused - the validation issue. It is highly recommended that this - property should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - required: - - code - type: object - description: >- - Unprocessable entity due to a business validation problem. - (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - type: string - Error500: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - internalError: Internal server error - the server encountered - an unexpected condition that prevented it from fulfilling the - request. - enum: - - internalError - type: string - required: - - code - type: object - description: >- - Internal Server Error. - (https://tools.ietf.org/html/rfc7231#section-6.6.1) - Error501: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: |- - The following error code: - - notImplemented: Method not supported by the server - enum: - - notImplemented - type: string - required: - - code - type: object - description: - 'Not Implemented. (https://tools.ietf.org/html/rfc7231#section-6.6.2)' - EventSubscription: - description: | - This resource is used to manage notification subscription. - Reference: MEF 79 (Sn 8.3) - properties: - query: - description: >- - The value provided by the Buyer in `EventSubscriptionInput` during - notification registration - callback: - description: >- - The value provided by the Buyer in `EventSubscriptionInput` during - notification registration - type: string - id: - description: >- - An identifier of the event subscription assigned by the Seller when - a resource is created. - type: string - required: - - callback - - id - type: object - EventSubscriptionInput: - description: This class is used to register for Notifications. - properties: - query: - description: >- - This attribute is used to define to which type of events to - register to. Example: "query":"eventType = quoteStateChangeEvent". - To subscribe for more than one event type, put the values separated - by comma: - `eventType=quoteStateChangeEvent,quoteItemStateChangeEvent`. The - possible values are enumerated by the 'QuoteEventType' in - quoteNotification.api.yaml. An empty query is treated as specifying - no filters - ending in subscription for all event types. - type: string - callback: - description: >- - This callback value must be set to *host* property from Buyer - Notification API (quoteNotification.api.yaml). This property is - appended with the base path and notification resource path - specified in that API to construct an URL to which notification is - sent. E.g. for "callback": "http://buyer.co/listenerEndpoint", the - state change event notification will be sent to: - `http://buyer.co/listenerEndpoint/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent` - type: string - required: - - callback - type: object - FieldedAddress: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - country: - description: Country that the address is in - type: string - streetType: - description: >- - Alley, avenue, boulevard, brae, crescent, drive, highway, lane, - terrace, parade, place, tarn, way, wharf - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in an american urban property address - type: string - city: - description: The city that the address is in - type: string - streetNr: - description: >- - Number identifying a specific property on a public street. It - may be combined with streetNrLast for ranged addresses. - type: string - locality: - description: The locality that the address is in - type: string - postcode: - description: >- - Descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as zip code) - type: string - streetNrLast: - description: - Last number in a range of street numbers allocated to a - property - type: string - streetNrSuffix: - description: The first street number suffix - type: string - streetName: - description: Name of the street or other street type - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - streetNrLastSuffix: - description: Last street number suffix for a ranged address - type: string - geographicSubAddress: - description: >- - Additional fields used to specify an address, as detailed as - possible. - $ref: '#/components/schemas/GeographicSubAddress' - streetSuffix: - description: A modifier denoting a relative direction - type: string - required: - - city - - country - - streetName - type: object - description: >- - A type of Address that has a discrete field and value for each type of - boundary or identifier down to the lowest level of detail. For example - "street number" is one field, "street name" is another field, etc. - FormattedAddress: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - country: - description: Country that the address is in - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in an US urban property address - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - city: - description: The city that the address is in - type: string - addrLine2: - description: The second address line in a formatted address - type: string - addrLine1: - description: The first address line in a formatted address - type: string - locality: - description: >- - An area of defined or undefined boundaries within a local - authority or other legislatively defined area, usually rural or - semi-rural in nature - type: string - postcode: - description: >- - Descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as ZIP code) - type: string - required: - - addrLine1 - - city - - country - type: object - description: >- - A type of Address that has discrete fields for each type of boundary or - an identifier with the exception of the street and more specific - location details, which are combined into a maximum of two strings - based on local postal addressing conventions. - GeographicAddressLabel: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - externalReferenceId: - description: >- - The unique reference to an Address as provided by the - Administrative Authority. - type: string - externalReferenceType: - description: >- - The organization or standard from the organization that - administers this Geographic Address Label ensuring it is unique - within the Administrative Authority. The value(s) to be used - are to be agreed upon during the onboarding. For North American - providers this would normally be CLLI (Common Language Location - Identifier) code. - type: string - required: - - externalReferenceId - - externalReferenceType - type: object - description: >- - A unique identifier controlled by a generally accepted independent - administrative authority that specifies a fixed geographical location. - - Reference: MEF 79 (Sn 8.9.4), MEF 79.0.2 (Sn 8.9.4) - GeographicAddressRef: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - href: - description: > - Hyperlink to the referenced GeographicAddress. Hyperlink MAY be - used by the Seller in responses. Hyperlink MUST be ignored by - the Seller in case it is provided by the Buyer in a request - type: string - id: - description: >- - Identifier of the referenced Geographic Address. This - identifier is assigned during a successful address validation - request (Geographic Address Validation API) - type: string - required: - - id - type: object - description: > - A reference to a Geographic Address resource available through Address - Validation API. - GeographicSiteRef: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - href: - description: > - Hyperlink to the referenced GeographicSite. Hyperlink MAY be - used by the Seller in responses. Hyperlink MUST be ignored by - the Seller in case it is provided by the Buyer in a request - type: string - id: - description: Identifier of the referenced Geographic Site. - type: string - required: - - id - type: object - description: > - A reference to a Geographic Site resource available through Service - Site API - GeographicSubAddress: - description: - 'Additional fields used to specify an address, as detailed as possible.' - properties: - buildingName: - description: > - Allows for identification of places that require building name as - part of addressing information - type: string - subUnit: - description: >- - Representation of a MEFSubUnit It is used for describing subunit - within a subaddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - items: - $ref: '#/components/schemas/MEFSubUnit' - type: array - levelType: - description: Describes level types within a building - type: string - levelNumber: - description: - 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT - 2' - type: string - privateStreetNumber: - description: Private streets numbers internal to a private street - type: string - privateStreetName: - description: >- - Private streets internal to a property (e.g. a university) may have - internal names that are not recorded by the land title office - type: string - type: object - MEFBuyerQuoteLevel: - description: >- - An indication of whether the Buyer's Quote Request is for a Budgetary - or Firm Quote Level. Set by the Buyer. Buyer Requested Quote Level - contains the possible values and may be set by the Buyer on the - Request. All Quote Items in a Quote have the same Quote Level. - enum: - - budgetary - - firm - type: string - MEFChargePeriod: - description: Used for a recurring charge to indicate period. - enum: - - hour - - day - - week - - month - - year - type: string - MEFEndOfTermAction: - description: - The action that needs to be taken by the Seller once the term expires. - enum: - - roll - - autoDisconnect - - autoRenew - type: string - MEFGeographicPoint: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - spatialRef: - description: >- - The spatial reference system used to determine the coordinates - (e.g. `WGS84`). The system used and the value of this field are - to be agreed upon during the onboarding process. - type: string - x: - description: >- - The latitude expressed in the format specified by the - `spacialRef` - type: string - 'y': - description: >- - The longitude expressed in the format specified by the - `spacialRef` - type: string - z: - description: >- - The elevation expressed in the format specified by the - `spacialRef` - type: string - required: - - spatialRef - - x - - 'y' - type: object - description: > - A MEFGeographicPoint defines a geographic point through coordinates. - Reference: MEF 79 (Sn 8.9.5) - MEFItemTerm: - description: >- - The terms of the Quote Item. Used to describe a term (also known as - commitment) for a Quote Item. Each Quote Item in a Quote Request could - have a different Requested Quote Item Term. The Buyer specifies the - longest term that they would accept. The Buyer may be willing to accept - a shorter term. If the Seller responds with a term longer than the - Buyer's request, it is treated as an alternate response. - properties: - duration: - description: Duration of the term - $ref: '#/components/schemas/Duration' - endOfTermAction: - description: >- - The action that needs to be taken by the Seller once the term - expires - $ref: '#/components/schemas/MEFEndOfTermAction' - name: - description: Name of the term - type: string - description: - description: Description of the term - type: string - rollInterval: - description: >- - The recurring period that the Buyer is willing to pay to the end of - upon disconnecting the Product after the original term has expired. - If `endOfTermAction` is equal to `roll` then `rollInterval` MUST be - specified. If `endOfTermAction` is equal to `autoRenew` or - `autoDisconnect`, then `rollInterval` MUST NOT be specified. - $ref: '#/components/schemas/Duration' - required: - - duration - - endOfTermAction - - name - type: object - MEFPriceType: - description: - Indicates if the price is for recurring or non-recurring charges. - enum: - - recurring - - nonRecurring - - usageBased - type: string - MEFProductActionType: - description: | - Product action to be applied to the Quote Item. This corresponds to the - Order Item Action when an associated product is ordered. - - | MEFProductActionType | MEF 80 | - |--------------------- | ---------- | - | add | INSTALL | - | modify | CHANGE | - | delete | DISCONNECT | - enum: - - add - - modify - - delete - type: string - MEFProductConfiguration: - description: >- - MEFProductConfiguration is used as an extension point for MEF specific - product/service payload. The `@type` attribute is used as a - discriminator - discriminator: - propertyName: '@type' - properties: - '@type': - description: >- - The name of the type that uniquely identifies the type of the - product that is the subject of the POQ Request. In the case of the - MEF product, this is the URN provided in the Product Specification. - type: string - required: - - '@type' - type: object - MEFQuoteItemStateType: - description: > - Possible values for the status of a QuoteItem. - - Following mapping has been used between `MEFQuoteItemStateType` and MEF - 80: - - - | MEFQuoteItemStateType | MEF 80 | - - | ----------------------------| --------------------------------- | - - | answered | ANSWERED | - - | acknowledged | ACKNOWLEDGED | - - | approved.orderable | ORDERABLE | - - | approved.orderableAlternate | ORDERABLE_ALTERNATE | - - | inProgress | IN_PROGRESS | - - | inProgress.draft | IN_PROGRESS_DRAFT | - - | abandoned | ABANDONED | - - | rejected | REJECTED | - - | unableToProvide | UNABLE_TO_PROVIDE | - enum: - - answered - - acknowledged - - approved.orderable - - approved.orderableAlternate - - inProgress - - inProgress.draft - - rejected - - abandoned - - unableToProvide - type: string - MEFQuoteItem_Common: - description: >- - Quote items describe an action to be performed on a productOffering or - a product in order to get pricing elements and conditions. - properties: - requestedQuoteItemTerm: - description: >- - The terms of the Quote Item. Used to describe a term (also known as - commitment) for a Quote Item. Each Quote Item in a Quote Request - could have a different Requested Quote Item Term. The Buyer - specifies the longest term that they would accept. The Buyer may be - willing to accept a shorter term. If the Seller responds with a - term longer than the Buyer's request, it is treated as an alternate - response. - $ref: '#/components/schemas/MEFItemTerm' - note: - description: >- - Free form text associated with the quote item. Only useful in - processes involving human interaction. Not applicable for the - automated process. - items: - $ref: '#/components/schemas/Note' - type: array - product: - description: - The Buyer's existing Product for which the quote is being - requested. - $ref: '#/components/schemas/MEFProductRefOrValueQuote' - productOfferingQualificationItem: - description: A reference to a previously done POQ with item specified - $ref: '#/components/schemas/ProductOfferingQualificationItemRef' - relatedContactInformation: - description: > - Contact information of an individual or organization playing a role - for this Quote. If `instantSyncQuote` equals `false` then 'Quote - Item Technical Contact' must be specified (`role: - quoteItemTechnicalContact`). If `instantSyncQuote` equals `false` - and the Quote Item requires a location, the Buyer MUST provide the - Quote Item Location Contact Information `role: - quoteItemLocationContact`. - items: - $ref: '#/components/schemas/RelatedContactInformation' - type: array - agreementName: - description: >- - Name of the agreement. The name is unique between the Buyer and the - Seller. - type: string - action: - description: >- - Product action to be applied to this Quote Item. This corresponds - to the Order Item Action when an associated product is ordered. - $ref: '#/components/schemas/MEFProductActionType' - dealReference: - description: >- - A pre-agreed pricing modifier reference that the Seller is offering - to the Buyer which will impact the price. - type: string - id: - description: >- - Identifier of the quote item (generally it is a sequence number 01, - 02, 03, ...) - type: string - requestedQuoteItemInstallationInterval: - description: The installation interval requested by the Buyer. - $ref: '#/components/schemas/Duration' - quoteItemRelationship: - description: A relationship from item within a quote - items: - $ref: '#/components/schemas/QuoteItemRelationship' - type: array - required: - - action - - id - type: object - MEFQuoteItem_Create: - allOf: - - $ref: '#/components/schemas/MEFQuoteItem_Common' - - description: >- - A quote item describes an action to be performed on a - productOffering or a product in order to get pricing elements and - condition. The modeling pattern introduces the - `MEFQuoteItem_Common` supertype to aggregate attributes that are - common to both `QuoteItem` and `MEFQuoteItem_Create`. In this case - the create type has a subset of attributes of the response type and - does not introduce any new, thus the `MEFQuoteItem_Create` type has - an empty definition. - type: object - MEFQuoteStateChange: - description: >- - Holds the reached state, reasons, and associated date the Quote state - changed, populated by the Seller. - properties: - changeReason: - description: Additional comment related to state change - type: string - changeDate: - description: The date on when the state was reached - format: date-time - type: string - state: - description: A state reached at the change date - $ref: '#/components/schemas/MEFQuoteStateType' - required: - - changeDate - - state - type: object - MEFQuoteStateType: - description: | - Possible values for the status of a Quote. - Following mapping has been used between `MEFQuoteStateType` and MEF 80: - - | QuoteStateType | MEF 80 | - | ----------------------------------------- | --------------------------------- | - | accepted | ACCEPTED | - | acknowledged | ACKNOWLEDGED | - | answered | ANSWERED | - | approved.orderable | ORDERABLE | - | approved.orderableAlternate | ORDERABLE_ALTERNATE | - | declined | DECLINED | - | expired | EXPIRED | - | cancelled | CANCELLED | - | unableToProvide | UNABLE_TO_PROVIDE | - | inProgress | IN_PROGRESS | - | inProgress.draft | IN_PROGRESS_DRAFT | - | rejected | REJECTED | - enum: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - cancelled - - unableToProvide - - declined - - expired - - inProgress - - inProgress.draft - - rejected - type: string - MEFSellerQuoteLevel: - description: >- - An indication of whether the Seller's Quote Response is Budgetary, Firm - - Subject to Feasibility Check, or Firm. The Seller Quote Level is - provided by the Seller when responding to a Quote request. This - represents the lowest Quote Item Level of all Quote Items included in - the Quote. - enum: - - budgetary - - firmSubjectToFeasibilityCheck - - firm - type: string - MEFSubUnit: - description: Allows for subunit identification - properties: - subUnitNumber: - description: >- - The discriminator used for the subunit, often just a simple number - but may also be a range. - type: string - subUnitType: - description: >- - The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - type: string - required: - - subUnitNumber - - subUnitType - type: object - MEFProductRefOrValueQuote: - description: >- - One or more services sold to a Buyer by a Seller. A particular Product - Offering defines the technical and commercial attributes and behaviors - of a Product. - properties: - id: - description: > - The unique identifier of an in-service Product that is the - quotation's subject. This field MUST be populated if an item - `action` is either `modify` or `delete`. This field MUST NOT be - populated if an item `action` is `add`. - type: string - href: - description: > - Hyperlink to the product in Seller's inventory that is the - quotation's subject. Hyperlink MAY be used when providing a - response by the Seller. Hyperlink MUST be ignored by the Seller in - case it is provided by the Buyer in a request - type: string - place: - description: >- - A list of places that are related to the Product. For example an - installation location - items: - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - type: array - productConfiguration: - description: >- - Technical attributes for the Product that would be delivered to - fulfill the Quote Item. - $ref: '#/components/schemas/MEFProductConfiguration' - productOffering: - description: >- - A particular Product Offering defines the technical and commercial - attributes and behaviors of a Product. - $ref: '#/components/schemas/ProductOfferingRef' - productRelationship: - description: >- - A list of references to existing products that are related to the - Product that would be delivered to fulfill the Quote Item - items: - $ref: '#/components/schemas/ProductRelationshipWithGrouping' - type: array - type: object - Money: - description: A base/value business entity used to represent money - properties: - unit: - description: - Currency (ISO4217 norm uses 3 letters to define the currency) - type: string - value: - description: A positive floating point number - format: float - type: number - type: object - Note: - description: >- - Extra information about a given entity. Only useful in processes - involving human interaction. Not applicable for the automated process. - properties: - date: - description: Date of the note - format: date-time - type: string - author: - description: Author of the note - type: string - id: - description: >- - Identifier of the note within its containing entity (may or may not - be globally unique, depending on provider implementation) - type: string - source: - description: Indicates if the note is from Buyer or Seller - $ref: '#/components/schemas/MEFBuyerSellerType' - text: - description: Text of the note - type: string - required: - - author - - date - - id - - source - - text - type: object - MEFBuyerSellerType: - description: Indicates if the note is from Buyer or Seller. - enum: - - buyer - - seller - type: string - Price: - description: >- - Provides all amounts (tax included, duty-free, tax rate), used currency - and percentage to apply for Price Alteration. - properties: - taxRate: - description: - 'Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax.' - format: float - type: number - taxIncludedAmount: - description: - All taxes included amount (expressed in the given currency) - $ref: '#/components/schemas/Money' - dutyFreeAmount: - description: - All taxes excluded amount (expressed in the given currency) - $ref: '#/components/schemas/Money' - required: - - dutyFreeAmount - type: object - ProductOfferingQualificationItemRef: - description: >- - It's a productOfferingQualification item that has been executed - previously. - properties: - productOfferingQualificationId: - description: - Unique identifier of related Product Offering Qualification. - type: string - alternateProductProposalId: - description: >- - A unique identifier for the Alternate Product Proposal assigned by - the Seller, if the referenced qualification comes from an alternate - product proposal. - type: string - productOfferingQualificationHref: - description: Reference of the related Product Offering Qualification. - type: string - id: - description: Id of an item of a product offering qualification - type: string - required: - - id - - productOfferingQualificationId - type: object - ProductOfferingRef: - description: > - A reference to a Product Offering offered by the Seller to the Buyer. A - Product Offering contains the commercial and technical details of a - Product sold by a particular Seller. A Product Offering defines all of - the commercial terms and, through association with a particular Product - Specification defines all the technical attributes and behaviors of the - Product. A Product Offering may constrain the allowable set of - configurable technical attributes and/or behaviors specified in the - associated Product Specification. - - The id of the Product offering is assigned by the Seller. The Buyer and - the Seller exchange information about offerings' ids during the - onboarding process. - properties: - id: - description: unique identifier of the Product Offering. - type: string - href: - description: >- - Hyperlink to a Product Offering in Sellers catalog. In case Seller - is not providing catalog capabilities this field is not used. The - catalog API definition is provided by the Seller to Buyer during - onboarding Hyperlink MAY be used when providing response by the - Seller Hyperlink MUST be ignored by the Seller in case it is - provided by the Buyer in a requestHyperlink reference - type: string - required: - - id - type: object - ProductRelationshipWithGrouping: - description: >- - A relationship to an existing Product. The requirements for usage for - given Product are described in the Product Specification. The - "WithGrouping" flavor of the Product Relationship allows for providing - a list of related product identifiers within a single Product - Relationship. This can be later used while processing the request as - defined in the Product Specification. The `groupingKey` attribute is - used to achieve this behavior in the API by marking the list of - `ProductRelationshipWithGroupings` within a `product` with a common - key. - properties: - relationshipType: - description: > - Specifies the type (nature) of the relationship to the related - Product. The nature of required relationships varies for Products - of different types. For example, a UNI or ENNI Product may not have - any relationships, but an Access E-Line may have two mandatory - relationships (related to the UNI on one end and the ENNI on the - other). More complex Products such as multipoint IP or Firewall - Products may have more complex relationships. As a result, the - allowed and mandatory `relationshipType` values are defined in the - Product Specification. - type: string - id: - description: unique identifier of a Product that is referenced. - type: string - href: - description: >- - Hyperlink to the product in Seller's inventory that is referenced - Hyperlink MAY be used when providing a response by the Seller - Hyperlink MUST be ignored by the Seller in case it is provided by - the Buyer in a request - type: string - groupingKey: - description: > - MEF 80 Introduces a list of related ids for the - ProductRelationship. For sake of TMF compliance, a `groupingKey` is - introduced to retain id as a simple attribute. Ids from - relationships having the same `groupingKey` and `relationshipType` - MUST be treated as a list of identifiers. - - Reference: MEF 80 (Sn 8.1.8.) - type: string - required: - - id - - relationshipType - type: object - Quote: - allOf: - - $ref: '#/components/schemas/Quote_Common' - - description: >- - Quote can be used to negotiate service and product acquisition or - modification between a customer and a service provider. Quote - contains a list of quote items, a reference to a customer, a list - of productOfferings, and attached prices and conditions. - properties: - effectiveQuoteCompletionDate: - description: >- - Date when the Quote State was set to one of the Completion - States. - format: date-time - type: string - expectedQuoteCompletionDate: - description: >- - This is the date provided by the Seller to indicate the date by - which the Quote is expected to reach a Quote Completion State - format: date-time - type: string - validFor: - description: >- - Quote validity period. For use in the context of this - attribute, only the endDateTime attribute must be used. - $ref: '#/components/schemas/TimePeriod' - quoteLevel: - description: >- - An indication of whether the Seller's Quote Response is - Budgetary, Firm - Subject to Feasibility Check, or Firm. The - Seller Quote Level is provided by the Seller when responding to - a Quote request. This represents the lowest Quote Item Level - of all Quote Items included in the Quote. - $ref: '#/components/schemas/MEFSellerQuoteLevel' - quoteItem: - description: >- - An item of the quote - it is used to describe an operation on a - product to be quoted - items: - $ref: '#/components/schemas/QuoteItem' - minItems: 1 - type: array - stateChange: - description: State change for the Quote - items: - $ref: '#/components/schemas/MEFQuoteStateChange' - type: array - id: - description: Unique identifier - attributed by quoting system - type: string - href: - description: > - Hyperlink representing this Quote. Hyperlink MAY be used when - providing a response by the Seller - type: string - state: - description: The state of the Quote. - $ref: '#/components/schemas/MEFQuoteStateType' - quoteDate: - description: Date and time when the quote was created - format: date-time - type: string - required: - - id - - quoteDate - - quoteItem - type: object - QuoteItem: - allOf: - - $ref: '#/components/schemas/MEFQuoteItem_Common' - - description: >- - Quote items describe an action to be performed on a productOffering - or a product in order to get pricing elements and conditions. - properties: - terminationError: - description: >- - When the Seller cannot process the Quote Item Request, the - Seller returns a text-based list of reasons here. - items: - $ref: '#/components/schemas/TerminationError' - type: array - quoteItemInstallationInterval: - description: >- - Quote Item Installation Interval as proposed by the Seller for - the Quote. - $ref: '#/components/schemas/Duration' - subjectToFeasibilityCheck: - description: >- - For a Firm Quote Level indicates if the pricing requires a - Feasibility Check. The Seller indicates if the Quote Item - requires a Feasibility Check. This is not used for a Budgetary - Quote Level. - type: boolean - quoteItemTerm: - description: >- - Quote Item Term as defined by the Seller and part of the Quote - for the Quote Item. - items: - $ref: '#/components/schemas/MEFItemTerm' - maxItems: 1 - type: array - state: - description: The state of the Quote Item. - $ref: '#/components/schemas/MEFQuoteItemStateType' - quoteItemPrice: - description: Price for this quote item - items: - $ref: '#/components/schemas/QuotePrice' - type: array - required: - - state - type: object - QuoteItemRelationship: - description: >- - Used to describe the relationship between quote items. These - relationships could have an impact on pricing and conditions - properties: - relationshipType: - description: >- - Relationship type as relies on, bundles, etc... MEF: Specifies the - nature of the relationship to the related Quote Items. The nature - of required relationships varies for Products of different types. - For example, a UNI or ENNI Product may not have any relationships, - but an Access E-Line may have two mandatory relationships (related - to the UNI on one end and the ENNI on the other). More complex - Products such as multipoint IP or Firewall Products may have more - complex relationships. As a result, the allowed and mandatory - Relationship Nature values are defined in the Product - Specification. - type: string - id: - description: ID of the related quote item (must be in the same quote) - type: string - required: - - id - - relationshipType - type: object - QuoteOperationData: - description: - Request for operation on an existing Quote (cancel or decline) - properties: - reason: - description: >- - Allows the Buyer to specify a reason for the Cancel or Decline - Quote request. - type: string - quoteId: - description: >- - Unique (within the Seller quoting domain) identifier for the quote, - as attributed by the Seller. - type: string - required: - - quoteId - type: object - QuotePrice: - description: Description of price and discount awarded - properties: - unitOfMeasure: - description: >- - Unit of Measure if price depending on it (Gb, SMS volume, etc..) - MEF: if Quote Item Price Type equals usageBased - type: string - price: - description: The associated price - $ref: '#/components/schemas/Price' - name: - description: Name of the quote/quote item price - type: string - priceType: - description: >- - Indicates if the price is for recurring, non-recurring, or usage - based charges - $ref: '#/components/schemas/MEFPriceType' - description: - description: Description of the quote/quote item price - type: string - recurringChargePeriod: - description: Used for a recurring charge to indicate a period - $ref: '#/components/schemas/MEFChargePeriod' - type: object - Quote_Common: - description: >- - Quote can be used to negotiate service and product acquisition or - modification between a customer and a service provider. Quote contains - a list of quote items, a reference to a customer, a list of - productOfferings, and attached prices and conditions. - properties: - note: - description: >- - Free form text associated with the quote. Only useful in processes - involving human interaction. Not applicable for the automated - process. - items: - $ref: '#/components/schemas/Note' - type: array - requestedQuoteCompletionDate: - description: >- - This is requested date - from quote requester - to get a complete - response for this quote - format: date-time - type: string - relatedContactInformation: - description: >- - Party playing a role for this quote. If `instantSyncQuote` equals - `false` - - then the Buyer MUST specify Buyer Contact Information ('role: - buyerContactInformation') - - and the Seller MUST specify Seller Contact Information ('role: - sellerContactInformation') - items: - $ref: '#/components/schemas/RelatedContactInformation' - type: array - description: - description: Description of the quote - type: string - externalId: - description: >- - ID given by the consumer and only understandable by him (to - facilitate his searches afterwards) - type: string - buyerRequestedQuoteLevel: - description: >- - An indication of whether the Buyer's Quote request is for a Quote - of Budgetary or Firm level. - $ref: '#/components/schemas/MEFBuyerQuoteLevel' - projectId: - description: >- - An identifier that is used to group Quotes that represent a unit of - functionality that is important to a Buyer. A Project can be used - to relate multiple Quotes together. - type: string - instantSyncQuote: - description: >- - If this flag is set to true, the Buyer requests an immediate Quote - to be provided in the response to the creation of a Quote. - type: boolean - required: - - buyerRequestedQuoteLevel - - instantSyncQuote - type: object - Quote_Create: - allOf: - - $ref: '#/components/schemas/Quote_Common' - - description: > - Quote can be used to negotiate service and product acquisition or - modification between a customer and a service provider. Quote - contains a list of quote items, a reference to a customer, a list - of productOfferings, and attached prices and conditions. - properties: - quoteItem: - description: >- - An item of the quote - used to describe an operation on a - product to be quoted - items: - $ref: '#/components/schemas/MEFQuoteItem_Create' - minItems: 1 - type: array - required: - - quoteItem - type: object - Quote_Find: - description: > - This class represents a single list item for the response of - `listQuote` operation. - properties: - effectiveQuoteCompletionDate: - description: - Date when the Quote State was set to one of the Completion States - format: date-time - type: string - expectedQuoteCompletionDate: - description: >- - This is the date provided by the Seller to indicate expected Quote - completion date - format: date-time - type: string - requestedQuoteCompletionDate: - description: >- - This is requested date - from quote requester - to get a complete - response for this quote - format: date-time - type: string - quoteLevel: - description: >- - The level of the Quote provided by the Seller. This represents the - lowest Quote Item Level of all Quote Items included in the Quote. - $ref: '#/components/schemas/MEFSellerQuoteLevel' - externalId: - description: >- - ID given by the consumer and only understandable by him (to - facilitate his searches afterward) - type: string - id: - description: Unique identifier - attributed by quoting system - type: string - state: - description: The state of the Quote. - $ref: '#/components/schemas/MEFQuoteStateType' - projectId: - description: >- - An identifier that is used to group Quotes that represent a unit of - functionality that is important to a Buyer. A Project can be used - to relate multiple Quotes together. - type: string - quoteDate: - description: Date and time when the quote was created - format: date-time - type: string - required: - - state - type: object - RelatedContactInformation: - description: >- - Contact data for a person or organization that is involved in a given - context. It is specified by the Seller (e.g. Seller Contact - Information) or by the Buyer. - - Reference: MEF 80 (Sn 8.1.9) - properties: - number: - description: Phone number - type: string - emailAddress: - description: Email address - type: string - role: - description: The role of the particular contact in a given context. - type: string - postalAddress: - description: >- - Identifies the postal address of the person or office to be - contacted. - $ref: '#/components/schemas/FieldedAddress' - organization: - description: The organization or company that the contact belongs to - type: string - name: - description: Name of the contact - type: string - numberExtension: - description: Phone number extension - type: string - required: - - emailAddress - - name - - number - - role - type: object - RelatedPlaceRefOrValue: - description: - Place defines the places where the products' quotation must be done. - discriminator: - mapping: - FieldedAddress: '#/components/schemas/FieldedAddress' - FormattedAddress: '#/components/schemas/FormattedAddress' - GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' - GeographicAddressRef: '#/components/schemas/GeographicAddressRef' - GeographicSiteRef: '#/components/schemas/GeographicSiteRef' - MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' - propertyName: '@type' - properties: - role: - description: Role of this place - type: string - '@type': - description: > - This field is used as a discriminator and is used between different - place representations. This type might discriminate for the - additional related place as defined in '@schemaLocation'. - type: string - '@schemaLocation': - description: >- - A URI to a JSON-Schema file that defines additional attributes and - relationships. May be used to define additional related place - types. Usage of this attribute must be agreed upon between Buyer - and Seller. - format: uri - type: string - required: - - '@type' - - role - type: object - TerminationError: - description: >- - This indicates an error that caused an Item to be terminated. The code - and propertyPath should be used like in Error422. - properties: - code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused the - validation issue. It is highly recommended that this property - should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - value: - description: Text to describe the reason of the termination. - type: string - type: object - TimePeriod: - description: >- - A period of time, either as a deadline (endDateTime only) a - startDateTime only, or both. - properties: - startDateTime: - description: >- - Start of the time period, using IETC-RFC-3339 format. If you define - a start, you must also define an end - example: 1985-04-12T23:20:50.520Z - format: date-time - type: string - endDateTime: - description: 'End of the time period, using IETC-RFC-3339 format' - example: 1985-04-12T23:20:50.520Z - format: date-time - type: string - type: object - TimeUnit: - description: | - Represents a unit of time. - Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) - enum: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - type: string diff --git a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml b/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml deleted file mode 100644 index 4654336f..00000000 --- a/kraken-app/kraken-app-hub/src/main/resources/mock/openapi/quoteManagement.api.yaml +++ /dev/null @@ -1,2223 +0,0 @@ -openapi: 3.0.1 -info: - description: | - **This file forms part of MEF 115** - - This API implements Business Requirements described in MEF 80 - - Quote API allows the Buyer to submit a request to find out how much the installation - of an instance of a Product Offering, an update to an existing Product, or - a disconnect of an existing Product will cost. - - List of supported Use Cases: - - Create Quote - - Retrieve Quote List - - Retrieve Quote by Quote Identifier - - Cancel Quote by Quote Identifier - - Decline Quote by Quote Identifier - - Register for Quote Notification - - Copyright 2021 MEF Forum and its contributors. - - This file includes content based on the TM Forum Quote Management API - (TMF648 v4.0.0) available at - https://github.com/tmforum-apis/TMF648_QuoteManagement, which is licensed - by the TM Forum under the Apache License version 2.0. Such content has been - modified by the MEF Forum and its contributors. - title: Quote Management - version: 8.0.1 -servers: - - url: 'https://{serverBase}/mefApi/sonata/quoteManagement/v8/' - variables: - serverBase: - default: mef.net - description: The base of Seller's URL. -tags: - - name: quote - - name: quote operations - - name: events subscription -paths: - /quote: - get: - description: >- - The Buyer requests a list of Quotes from the Seller based on a set of - filter criteria (as described in MEF 80). For each Quote returned, the - Seller also provides a Quote Identifier that uniquely identifies this - Quote within the Seller. The order of the elements returned to the - Buyer is defined by the Seller (e.g. natural order) and does not change - between the pages. - operationId: listQuote - parameters: - - description: >- - State of the Quote to be retrieved. See `MEFQuoteStateType` - definition for details - in: query - name: state - schema: - enum: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - cancelled - - unableToProvide - - declined - - expired - - inProgress - - inProgress.draft - - rejected - type: string - - description: >- - Level of the quote - could be budgetary, - firmSubjectToFeasibilityCheck, firm - in: query - name: quoteLevel - schema: - enum: - - budgetary - - firmSubjectToFeasibilityCheck - - firm - type: string - - description: >- - ID given by the consumer and only understandable by him (to - facilitate his searches afterward) - in: query - name: externalId - schema: - type: string - - description: >- - An identifier that is used to group Quotes that represent a unit of - functionality that is important to a Buyer. A Project can be used - to relate multiple Quotes together - in: query - name: projectId - schema: - type: string - - description: Date when the quote was created - greater than - in: query - name: quoteDate.gt - schema: - format: date-time - type: string - - description: Date when the quote was created - lower than - in: query - name: quoteDate.lt - schema: - format: date-time - type: string - - description: Requested Quote Completion Date - greater than - in: query - name: requestedQuoteCompletionDate.gt - schema: - format: date-time - type: string - - description: Requested Quote Completion Date - lower than - in: query - name: requestedQuoteCompletionDate.lt - schema: - format: date-time - type: string - - description: Expected Quote Completion Date - greater than - in: query - name: expectedQuoteCompletionDate.gt - schema: - format: date-time - type: string - - description: Expected Quote Completion Date - lower than - in: query - name: expectedQuoteCompletionDate.lt - schema: - format: date-time - type: string - - description: >- - Date when the Quote State was set to one of the Completion States - - greater than - in: query - name: effectiveQuoteCompletionDate.gt - schema: - format: date-time - type: string - - description: >- - Date when the Quote State was set to one of the Completion States - - lower than - in: query - name: effectiveQuoteCompletionDate.lt - schema: - format: date-time - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - - description: - Requested index for start of resources to be provided in response - in: query - name: offset - schema: - type: integer - - description: Requested number of resources to be provided in response - in: query - name: limit - schema: - format: int32 - type: integer - responses: - '200': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Quote_Find' - type: array - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - headers: - X-Pagination-Throttled: - description: > - Used to indicate that result page was throttled to maximum - possible size and there are additional results that can be - fetched - schema: - type: boolean - X-Total-Count: - description: > - The total number of matching records. E.g. if there are 50 - matching records in total, but the request has offset=10 and - limit=10, then the X-Total-Count is 50. - schema: - type: integer - X-Result-Count: - description: The number of records included in the response - schema: - type: integer - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: List or find Quote objects - tags: - - quote - post: - description: This operation creates a Quote entity. - operationId: createQuote - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Quote_Create' - description: The Quote to be created - required: true - responses: - '201': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Quote' - description: - 'Created (https://tools.ietf.org/html/rfc7231#section-6.3.2)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: >- - Unprocessable entity due to the business validation problems in the - Quote or one of the Quote items - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Send request to perform a quotation - tags: - - quote - x-codegen-request-body-name: quote - '/quote/{id}': - get: - description: >- - This operation retrieves a Quote entity. Attribute selection is enabled - for all first level attributes. - operationId: retrieveQuote - parameters: - - description: Identifier of the Quote - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Quote' - description: - 'OK. (https://tools.ietf.org/html/rfc7231#section-6.3.1)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Retrieves a Quote by ID - tags: - - quote - /cancelQuote: - post: - description: This operation sends a cancellation request. - operationId: cancelQuote - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: The details of the Quote Operation - required: true - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: Success - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: >- - Unprocessable entity due to the business validation problems in the - Quote or one of the Quote items - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Cancels a Quote - tags: - - quote operations - x-codegen-request-body-name: cancelQuote - /rejectQuote: - post: - description: This operation sends a rejection request. - operationId: rejectQuote - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: The details of the Quote Operation - required: true - responses: - '200': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/QuoteOperationData' - description: Success - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '422': - content: - application/json;charset=utf-8: - schema: - items: - $ref: '#/components/schemas/Error422' - type: array - description: >- - Unprocessable entity due to the business validation problems in the - Quote or one of the Quote items - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - summary: Rejects a Quote - tags: - - quote operations - x-codegen-request-body-name: rejectQuote - /hub: - post: - description: >- - A request initiated by the Buyer to instruct the Seller to send - notifications of Quote state changes in the event the Seller uses the - Deferred Response pattern to respond to a Create Quote request. - operationId: registerListener - parameters: - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - requestBody: - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/EventSubscriptionInput' - description: - Data containing the callback endpoint to deliver the information - required: true - responses: - '201': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/EventSubscription' - description: - 'Subscribed (https://tools.ietf.org/html/rfc7231#section-6.3.2)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad Request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - '501': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error501' - description: >- - Method not implemented. Used in case Seller is not supporting - Notification mechanism - summary: Allows the Buyer to register to Quote state change notifications - tags: - - events subscription - x-codegen-request-body-name: data - '/hub/{id}': - delete: - description: >- - Resets the communication endpoint address the service instance must use - to deliver information about its health state, execution state, - failures and metrics. - operationId: unregisterListener - parameters: - - description: The id of the EventSubscription - in: path - name: id - required: true - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the a - Buyer. MUST be specified in the request only when the requester - represents more than one Buyer. - - Reference: MEF 79 (Sn 8.8) - in: query - name: buyerId - schema: - type: string - - description: >- - The unique identifier of the organization that is acting as the - Seller. MUST be specified in the request only when the responding - entity - represents more than one Seller. - - Reference: MEF 79 (Sn 8.8) - in: query - name: sellerId - schema: - type: string - responses: - '204': - description: - 'Deleted (https://tools.ietf.org/html/rfc7231#section-6.3.5)' - '400': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error400' - description: Bad request - '401': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error401' - description: Unauthorized - '403': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error403' - description: Forbidden - '404': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error404' - description: Not Found - '500': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error500' - description: Internal Server Error - '501': - content: - application/json;charset=utf-8: - schema: - $ref: '#/components/schemas/Error501' - description: >- - Method not implemented. Used in case Seller is not supporting - Notification mechanism - summary: Unregister a listener - tags: - - events subscription -components: - schemas: - Duration: - description: - 'A Duration in a given unit of time e.g. 3 hours, or 5 days.' - properties: - amount: - description: 'Duration (number of seconds, minutes, hours, etc.)' - type: integer - units: - description: Time unit type - $ref: '#/components/schemas/TimeUnit' - required: - - amount - - units - type: object - Error: - description: > - Standard Class used to describe API response error Not intended to be - used directly. The `code` in the HTTP header is used as a discriminator - for the type of error returned in runtime. - properties: - reason: - description: >- - Text that explains the reason for the error. This can be shown to a - client user. - maxLength: 255 - type: string - message: - description: >- - Text that provides mode details and corrective actions related to - the error. This can be shown to a client user. - type: string - referenceError: - description: URL pointing to documentation describing the error - format: uri - type: string - required: - - reason - type: object - Error400: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required - query-string parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - $ref: '#/components/schemas/Error400Code' - required: - - code - type: object - description: - 'Bad Request. (https://tools.ietf.org/html/rfc7231#section-6.5.1)' - Error400Code: - description: >- - One of the following error codes: - - - missingQueryParameter: The URI is missing a required query-string - parameter - - - missingQueryValue: The URI is missing a required query-string - parameter value - - - invalidQuery: The query section of the URI is invalid. - - - invalidBody: The request has an invalid body - enum: - - missingQueryParameter - - missingQueryValue - - invalidQuery - - invalidBody - type: string - Error401: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - One of the following error codes: - - - missingCredentials: No credentials provided. - - - invalidCredentials: Provided credentials are invalid or - expired - $ref: '#/components/schemas/Error401Code' - required: - - code - type: object - description: - 'Unauthorized. (https://tools.ietf.org/html/rfc7235#section-3.1)' - Error401Code: - description: |- - One of the following error codes: - - missingCredentials: No credentials provided. - - invalidCredentials: Provided credentials are invalid or expired - enum: - - missingCredentials - - invalidCredentials - type: string - Error403: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - $ref: '#/components/schemas/Error403Code' - required: - - code - type: object - description: >- - Forbidden. This code indicates that the server understood the request - but refuses to authorize it. - (https://tools.ietf.org/html/rfc7231#section-6.5.3) - Error403Code: - description: |- - This code indicates that the server understood - the request but refuses to authorize it because - of one of the following error codes: - - accessDenied: Access denied - - forbiddenRequester: Forbidden requester - - tooManyUsers: Too many users - enum: - - accessDenied - - forbiddenRequester - - tooManyUsers - type: string - Error404: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - notFound: A current representation for the target resource - not found - enum: - - notFound - type: string - required: - - code - type: object - description: >- - Resource for the requested path not found. - (https://tools.ietf.org/html/rfc7231#section-6.5.4) - Error422: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused - the validation issue. It is highly recommended that this - property should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - required: - - code - type: object - description: >- - Unprocessable entity due to a business validation problem. - (https://tools.ietf.org/html/rfc4918#section-11.2) - Error422Code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - enum: - - missingProperty - - invalidValue - - invalidFormat - - referenceNotFound - - unexpectedProperty - - tooManyRecords - - otherIssue - type: string - Error500: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: >- - The following error code: - - - internalError: Internal server error - the server encountered - an unexpected condition that prevented it from fulfilling the - request. - enum: - - internalError - type: string - required: - - code - type: object - description: >- - Internal Server Error. - (https://tools.ietf.org/html/rfc7231#section-6.6.1) - Error501: - allOf: - - $ref: '#/components/schemas/Error' - - properties: - code: - description: |- - The following error code: - - notImplemented: Method not supported by the server - enum: - - notImplemented - type: string - required: - - code - type: object - description: - 'Not Implemented. (https://tools.ietf.org/html/rfc7231#section-6.6.2)' - EventSubscription: - description: | - This resource is used to manage notification subscription. - Reference: MEF 79 (Sn 8.3) - properties: - query: - description: >- - The value provided by the Buyer in `EventSubscriptionInput` during - notification registration - callback: - description: >- - The value provided by the Buyer in `EventSubscriptionInput` during - notification registration - type: string - id: - description: >- - An identifier of the event subscription assigned by the Seller when - a resource is created. - type: string - required: - - callback - - id - type: object - EventSubscriptionInput: - description: This class is used to register for Notifications. - properties: - query: - description: >- - This attribute is used to define to which type of events to - register to. Example: "query":"eventType = quoteStateChangeEvent". - To subscribe for more than one event type, put the values separated - by comma: - `eventType=quoteStateChangeEvent,quoteItemStateChangeEvent`. The - possible values are enumerated by the 'QuoteEventType' in - quoteNotification.api.yaml. An empty query is treated as specifying - no filters - ending in subscription for all event types. - type: string - callback: - description: >- - This callback value must be set to *host* property from Buyer - Notification API (quoteNotification.api.yaml). This property is - appended with the base path and notification resource path - specified in that API to construct an URL to which notification is - sent. E.g. for "callback": "http://buyer.co/listenerEndpoint", the - state change event notification will be sent to: - `http://buyer.co/listenerEndpoint/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent` - type: string - required: - - callback - type: object - FieldedAddress: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - country: - description: Country that the address is in - type: string - streetType: - description: >- - Alley, avenue, boulevard, brae, crescent, drive, highway, lane, - terrace, parade, place, tarn, way, wharf - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in an american urban property address - type: string - city: - description: The city that the address is in - type: string - streetNr: - description: >- - Number identifying a specific property on a public street. It - may be combined with streetNrLast for ranged addresses. - type: string - locality: - description: The locality that the address is in - type: string - postcode: - description: >- - Descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as zip code) - type: string - streetNrLast: - description: - Last number in a range of street numbers allocated to a - property - type: string - streetNrSuffix: - description: The first street number suffix - type: string - streetName: - description: Name of the street or other street type - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - streetNrLastSuffix: - description: Last street number suffix for a ranged address - type: string - geographicSubAddress: - description: >- - Additional fields used to specify an address, as detailed as - possible. - $ref: '#/components/schemas/GeographicSubAddress' - streetSuffix: - description: A modifier denoting a relative direction - type: string - required: - - city - - country - - streetName - type: object - description: >- - A type of Address that has a discrete field and value for each type of - boundary or identifier down to the lowest level of detail. For example - "street number" is one field, "street name" is another field, etc. - FormattedAddress: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - country: - description: Country that the address is in - type: string - postcodeExtension: - description: >- - An extension of a postal code. E.g. the part following the dash - in an US urban property address - type: string - stateOrProvince: - description: The State or Province that the address is in - type: string - city: - description: The city that the address is in - type: string - addrLine2: - description: The second address line in a formatted address - type: string - addrLine1: - description: The first address line in a formatted address - type: string - locality: - description: >- - An area of defined or undefined boundaries within a local - authority or other legislatively defined area, usually rural or - semi-rural in nature - type: string - postcode: - description: >- - Descriptor for a postal delivery area used to speed and - simplify the delivery of mail (also known as ZIP code) - type: string - required: - - addrLine1 - - city - - country - type: object - description: >- - A type of Address that has discrete fields for each type of boundary or - an identifier with the exception of the street and more specific - location details, which are combined into a maximum of two strings - based on local postal addressing conventions. - GeographicAddressLabel: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - externalReferenceId: - description: >- - The unique reference to an Address as provided by the - Administrative Authority. - type: string - externalReferenceType: - description: >- - The organization or standard from the organization that - administers this Geographic Address Label ensuring it is unique - within the Administrative Authority. The value(s) to be used - are to be agreed upon during the onboarding. For North American - providers this would normally be CLLI (Common Language Location - Identifier) code. - type: string - required: - - externalReferenceId - - externalReferenceType - type: object - description: >- - A unique identifier controlled by a generally accepted independent - administrative authority that specifies a fixed geographical location. - - Reference: MEF 79 (Sn 8.9.4), MEF 79.0.2 (Sn 8.9.4) - GeographicAddressRef: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - href: - description: > - Hyperlink to the referenced GeographicAddress. Hyperlink MAY be - used by the Seller in responses. Hyperlink MUST be ignored by - the Seller in case it is provided by the Buyer in a request - type: string - id: - description: >- - Identifier of the referenced Geographic Address. This - identifier is assigned during a successful address validation - request (Geographic Address Validation API) - type: string - required: - - id - type: object - description: > - A reference to a Geographic Address resource available through Address - Validation API. - GeographicSiteRef: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - href: - description: > - Hyperlink to the referenced GeographicSite. Hyperlink MAY be - used by the Seller in responses. Hyperlink MUST be ignored by - the Seller in case it is provided by the Buyer in a request - type: string - id: - description: Identifier of the referenced Geographic Site. - type: string - required: - - id - type: object - description: > - A reference to a Geographic Site resource available through Service - Site API - GeographicSubAddress: - description: - 'Additional fields used to specify an address, as detailed as possible.' - properties: - buildingName: - description: > - Allows for identification of places that require building name as - part of addressing information - type: string - subUnit: - description: >- - Representation of a MEFSubUnit It is used for describing subunit - within a subaddress e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - items: - $ref: '#/components/schemas/MEFSubUnit' - type: array - levelType: - description: Describes level types within a building - type: string - levelNumber: - description: - 'Used where a level type may be repeated e.g. BASEMENT 1, BASEMENT - 2' - type: string - privateStreetNumber: - description: Private streets numbers internal to a private street - type: string - privateStreetName: - description: >- - Private streets internal to a property (e.g. a university) may have - internal names that are not recorded by the land title office - type: string - type: object - MEFBuyerQuoteLevel: - description: >- - An indication of whether the Buyer's Quote Request is for a Budgetary - or Firm Quote Level. Set by the Buyer. Buyer Requested Quote Level - contains the possible values and may be set by the Buyer on the - Request. All Quote Items in a Quote have the same Quote Level. - enum: - - budgetary - - firm - type: string - MEFChargePeriod: - description: Used for a recurring charge to indicate period. - enum: - - hour - - day - - week - - month - - year - type: string - MEFEndOfTermAction: - description: - The action that needs to be taken by the Seller once the term expires. - enum: - - roll - - autoDisconnect - - autoRenew - type: string - MEFGeographicPoint: - allOf: - - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - - properties: - spatialRef: - description: >- - The spatial reference system used to determine the coordinates - (e.g. `WGS84`). The system used and the value of this field are - to be agreed upon during the onboarding process. - type: string - x: - description: >- - The latitude expressed in the format specified by the - `spacialRef` - type: string - 'y': - description: >- - The longitude expressed in the format specified by the - `spacialRef` - type: string - z: - description: >- - The elevation expressed in the format specified by the - `spacialRef` - type: string - required: - - spatialRef - - x - - 'y' - type: object - description: > - A MEFGeographicPoint defines a geographic point through coordinates. - Reference: MEF 79 (Sn 8.9.5) - MEFItemTerm: - description: >- - The terms of the Quote Item. Used to describe a term (also known as - commitment) for a Quote Item. Each Quote Item in a Quote Request could - have a different Requested Quote Item Term. The Buyer specifies the - longest term that they would accept. The Buyer may be willing to accept - a shorter term. If the Seller responds with a term longer than the - Buyer's request, it is treated as an alternate response. - properties: - duration: - description: Duration of the term - $ref: '#/components/schemas/Duration' - endOfTermAction: - description: >- - The action that needs to be taken by the Seller once the term - expires - $ref: '#/components/schemas/MEFEndOfTermAction' - name: - description: Name of the term - type: string - description: - description: Description of the term - type: string - rollInterval: - description: >- - The recurring period that the Buyer is willing to pay to the end of - upon disconnecting the Product after the original term has expired. - If `endOfTermAction` is equal to `roll` then `rollInterval` MUST be - specified. If `endOfTermAction` is equal to `autoRenew` or - `autoDisconnect`, then `rollInterval` MUST NOT be specified. - $ref: '#/components/schemas/Duration' - required: - - duration - - endOfTermAction - - name - type: object - MEFPriceType: - description: - Indicates if the price is for recurring or non-recurring charges. - enum: - - recurring - - nonRecurring - - usageBased - type: string - MEFProductActionType: - description: | - Product action to be applied to the Quote Item. This corresponds to the - Order Item Action when an associated product is ordered. - - | MEFProductActionType | MEF 80 | - |--------------------- | ---------- | - | add | INSTALL | - | modify | CHANGE | - | delete | DISCONNECT | - enum: - - add - - modify - - delete - type: string - MEFProductConfiguration: - description: >- - MEFProductConfiguration is used as an extension point for MEF specific - product/service payload. The `@type` attribute is used as a - discriminator - discriminator: - propertyName: '@type' - properties: - '@type': - description: >- - The name of the type that uniquely identifies the type of the - product that is the subject of the POQ Request. In the case of the - MEF product, this is the URN provided in the Product Specification. - type: string - required: - - '@type' - type: object - MEFQuoteItemStateType: - description: > - Possible values for the status of a QuoteItem. - - Following mapping has been used between `MEFQuoteItemStateType` and MEF - 80: - - - | MEFQuoteItemStateType | MEF 80 | - - | ----------------------------| --------------------------------- | - - | answered | ANSWERED | - - | acknowledged | ACKNOWLEDGED | - - | approved.orderable | ORDERABLE | - - | approved.orderableAlternate | ORDERABLE_ALTERNATE | - - | inProgress | IN_PROGRESS | - - | inProgress.draft | IN_PROGRESS_DRAFT | - - | abandoned | ABANDONED | - - | rejected | REJECTED | - - | unableToProvide | UNABLE_TO_PROVIDE | - enum: - - answered - - acknowledged - - approved.orderable - - approved.orderableAlternate - - inProgress - - inProgress.draft - - rejected - - abandoned - - unableToProvide - type: string - MEFQuoteItem_Common: - description: >- - Quote items describe an action to be performed on a productOffering or - a product in order to get pricing elements and conditions. - properties: - requestedQuoteItemTerm: - description: >- - The terms of the Quote Item. Used to describe a term (also known as - commitment) for a Quote Item. Each Quote Item in a Quote Request - could have a different Requested Quote Item Term. The Buyer - specifies the longest term that they would accept. The Buyer may be - willing to accept a shorter term. If the Seller responds with a - term longer than the Buyer's request, it is treated as an alternate - response. - $ref: '#/components/schemas/MEFItemTerm' - note: - description: >- - Free form text associated with the quote item. Only useful in - processes involving human interaction. Not applicable for the - automated process. - items: - $ref: '#/components/schemas/Note' - type: array - product: - description: - The Buyer's existing Product for which the quote is being - requested. - $ref: '#/components/schemas/MEFProductRefOrValueQuote' - productOfferingQualificationItem: - description: A reference to a previously done POQ with item specified - $ref: '#/components/schemas/ProductOfferingQualificationItemRef' - relatedContactInformation: - description: > - Contact information of an individual or organization playing a role - for this Quote. If `instantSyncQuote` equals `false` then 'Quote - Item Technical Contact' must be specified (`role: - quoteItemTechnicalContact`). If `instantSyncQuote` equals `false` - and the Quote Item requires a location, the Buyer MUST provide the - Quote Item Location Contact Information `role: - quoteItemLocationContact`. - items: - $ref: '#/components/schemas/RelatedContactInformation' - type: array - agreementName: - description: >- - Name of the agreement. The name is unique between the Buyer and the - Seller. - type: string - action: - description: >- - Product action to be applied to this Quote Item. This corresponds - to the Order Item Action when an associated product is ordered. - $ref: '#/components/schemas/MEFProductActionType' - dealReference: - description: >- - A pre-agreed pricing modifier reference that the Seller is offering - to the Buyer which will impact the price. - type: string - id: - description: >- - Identifier of the quote item (generally it is a sequence number 01, - 02, 03, ...) - type: string - requestedQuoteItemInstallationInterval: - description: The installation interval requested by the Buyer. - $ref: '#/components/schemas/Duration' - quoteItemRelationship: - description: A relationship from item within a quote - items: - $ref: '#/components/schemas/QuoteItemRelationship' - type: array - required: - - action - - id - type: object - MEFQuoteItem_Create: - allOf: - - $ref: '#/components/schemas/MEFQuoteItem_Common' - - description: >- - A quote item describes an action to be performed on a - productOffering or a product in order to get pricing elements and - condition. The modeling pattern introduces the - `MEFQuoteItem_Common` supertype to aggregate attributes that are - common to both `QuoteItem` and `MEFQuoteItem_Create`. In this case - the create type has a subset of attributes of the response type and - does not introduce any new, thus the `MEFQuoteItem_Create` type has - an empty definition. - type: object - MEFQuoteStateChange: - description: >- - Holds the reached state, reasons, and associated date the Quote state - changed, populated by the Seller. - properties: - changeReason: - description: Additional comment related to state change - type: string - changeDate: - description: The date on when the state was reached - format: date-time - type: string - state: - description: A state reached at the change date - $ref: '#/components/schemas/MEFQuoteStateType' - required: - - changeDate - - state - type: object - MEFQuoteStateType: - description: | - Possible values for the status of a Quote. - Following mapping has been used between `MEFQuoteStateType` and MEF 80: - - | QuoteStateType | MEF 80 | - | ----------------------------------------- | --------------------------------- | - | accepted | ACCEPTED | - | acknowledged | ACKNOWLEDGED | - | answered | ANSWERED | - | approved.orderable | ORDERABLE | - | approved.orderableAlternate | ORDERABLE_ALTERNATE | - | declined | DECLINED | - | expired | EXPIRED | - | cancelled | CANCELLED | - | unableToProvide | UNABLE_TO_PROVIDE | - | inProgress | IN_PROGRESS | - | inProgress.draft | IN_PROGRESS_DRAFT | - | rejected | REJECTED | - enum: - - accepted - - acknowledged - - answered - - approved.orderable - - approved.orderableAlternate - - cancelled - - unableToProvide - - declined - - expired - - inProgress - - inProgress.draft - - rejected - type: string - MEFSellerQuoteLevel: - description: >- - An indication of whether the Seller's Quote Response is Budgetary, Firm - - Subject to Feasibility Check, or Firm. The Seller Quote Level is - provided by the Seller when responding to a Quote request. This - represents the lowest Quote Item Level of all Quote Items included in - the Quote. - enum: - - budgetary - - firmSubjectToFeasibilityCheck - - firm - type: string - MEFSubUnit: - description: Allows for subunit identification - properties: - subUnitNumber: - description: >- - The discriminator used for the subunit, often just a simple number - but may also be a range. - type: string - subUnitType: - description: >- - The type of subunit e.g.BERTH, FLAT, PIER, SUITE, SHOP, TOWER, - UNIT, WHARF. - type: string - required: - - subUnitNumber - - subUnitType - type: object - MEFProductRefOrValueQuote: - description: >- - One or more services sold to a Buyer by a Seller. A particular Product - Offering defines the technical and commercial attributes and behaviors - of a Product. - properties: - id: - description: > - The unique identifier of an in-service Product that is the - quotation's subject. This field MUST be populated if an item - `action` is either `modify` or `delete`. This field MUST NOT be - populated if an item `action` is `add`. - type: string - href: - description: > - Hyperlink to the product in Seller's inventory that is the - quotation's subject. Hyperlink MAY be used when providing a - response by the Seller. Hyperlink MUST be ignored by the Seller in - case it is provided by the Buyer in a request - type: string - place: - description: >- - A list of places that are related to the Product. For example an - installation location - items: - $ref: '#/components/schemas/RelatedPlaceRefOrValue' - type: array - productConfiguration: - description: >- - Technical attributes for the Product that would be delivered to - fulfill the Quote Item. - $ref: '#/components/schemas/MEFProductConfiguration' - productOffering: - description: >- - A particular Product Offering defines the technical and commercial - attributes and behaviors of a Product. - $ref: '#/components/schemas/ProductOfferingRef' - productRelationship: - description: >- - A list of references to existing products that are related to the - Product that would be delivered to fulfill the Quote Item - items: - $ref: '#/components/schemas/ProductRelationshipWithGrouping' - type: array - type: object - Money: - description: A base/value business entity used to represent money - properties: - unit: - description: - Currency (ISO4217 norm uses 3 letters to define the currency) - type: string - value: - description: A positive floating point number - format: float - type: number - type: object - Note: - description: >- - Extra information about a given entity. Only useful in processes - involving human interaction. Not applicable for the automated process. - properties: - date: - description: Date of the note - format: date-time - type: string - author: - description: Author of the note - type: string - id: - description: >- - Identifier of the note within its containing entity (may or may not - be globally unique, depending on provider implementation) - type: string - source: - description: Indicates if the note is from Buyer or Seller - $ref: '#/components/schemas/MEFBuyerSellerType' - text: - description: Text of the note - type: string - required: - - author - - date - - id - - source - - text - type: object - MEFBuyerSellerType: - description: Indicates if the note is from Buyer or Seller. - enum: - - buyer - - seller - type: string - Price: - description: >- - Provides all amounts (tax included, duty-free, tax rate), used currency - and percentage to apply for Price Alteration. - properties: - taxRate: - description: - 'Price Tax Rate. Unit: [%]. E.g. value 16 stand for 16% tax.' - format: float - type: number - taxIncludedAmount: - description: - All taxes included amount (expressed in the given currency) - $ref: '#/components/schemas/Money' - dutyFreeAmount: - description: - All taxes excluded amount (expressed in the given currency) - $ref: '#/components/schemas/Money' - required: - - dutyFreeAmount - type: object - ProductOfferingQualificationItemRef: - description: >- - It's a productOfferingQualification item that has been executed - previously. - properties: - productOfferingQualificationId: - description: - Unique identifier of related Product Offering Qualification. - type: string - alternateProductProposalId: - description: >- - A unique identifier for the Alternate Product Proposal assigned by - the Seller, if the referenced qualification comes from an alternate - product proposal. - type: string - productOfferingQualificationHref: - description: Reference of the related Product Offering Qualification. - type: string - id: - description: Id of an item of a product offering qualification - type: string - required: - - id - - productOfferingQualificationId - type: object - ProductOfferingRef: - description: > - A reference to a Product Offering offered by the Seller to the Buyer. A - Product Offering contains the commercial and technical details of a - Product sold by a particular Seller. A Product Offering defines all of - the commercial terms and, through association with a particular Product - Specification defines all the technical attributes and behaviors of the - Product. A Product Offering may constrain the allowable set of - configurable technical attributes and/or behaviors specified in the - associated Product Specification. - - The id of the Product offering is assigned by the Seller. The Buyer and - the Seller exchange information about offerings' ids during the - onboarding process. - properties: - id: - description: unique identifier of the Product Offering. - type: string - href: - description: >- - Hyperlink to a Product Offering in Sellers catalog. In case Seller - is not providing catalog capabilities this field is not used. The - catalog API definition is provided by the Seller to Buyer during - onboarding Hyperlink MAY be used when providing response by the - Seller Hyperlink MUST be ignored by the Seller in case it is - provided by the Buyer in a requestHyperlink reference - type: string - required: - - id - type: object - ProductRelationshipWithGrouping: - description: >- - A relationship to an existing Product. The requirements for usage for - given Product are described in the Product Specification. The - "WithGrouping" flavor of the Product Relationship allows for providing - a list of related product identifiers within a single Product - Relationship. This can be later used while processing the request as - defined in the Product Specification. The `groupingKey` attribute is - used to achieve this behavior in the API by marking the list of - `ProductRelationshipWithGroupings` within a `product` with a common - key. - properties: - relationshipType: - description: > - Specifies the type (nature) of the relationship to the related - Product. The nature of required relationships varies for Products - of different types. For example, a UNI or ENNI Product may not have - any relationships, but an Access E-Line may have two mandatory - relationships (related to the UNI on one end and the ENNI on the - other). More complex Products such as multipoint IP or Firewall - Products may have more complex relationships. As a result, the - allowed and mandatory `relationshipType` values are defined in the - Product Specification. - type: string - id: - description: unique identifier of a Product that is referenced. - type: string - href: - description: >- - Hyperlink to the product in Seller's inventory that is referenced - Hyperlink MAY be used when providing a response by the Seller - Hyperlink MUST be ignored by the Seller in case it is provided by - the Buyer in a request - type: string - groupingKey: - description: > - MEF 80 Introduces a list of related ids for the - ProductRelationship. For sake of TMF compliance, a `groupingKey` is - introduced to retain id as a simple attribute. Ids from - relationships having the same `groupingKey` and `relationshipType` - MUST be treated as a list of identifiers. - - Reference: MEF 80 (Sn 8.1.8.) - type: string - required: - - id - - relationshipType - type: object - Quote: - allOf: - - $ref: '#/components/schemas/Quote_Common' - - description: >- - Quote can be used to negotiate service and product acquisition or - modification between a customer and a service provider. Quote - contains a list of quote items, a reference to a customer, a list - of productOfferings, and attached prices and conditions. - properties: - effectiveQuoteCompletionDate: - description: >- - Date when the Quote State was set to one of the Completion - States. - format: date-time - type: string - expectedQuoteCompletionDate: - description: >- - This is the date provided by the Seller to indicate the date by - which the Quote is expected to reach a Quote Completion State - format: date-time - type: string - validFor: - description: >- - Quote validity period. For use in the context of this - attribute, only the endDateTime attribute must be used. - $ref: '#/components/schemas/TimePeriod' - quoteLevel: - description: >- - An indication of whether the Seller's Quote Response is - Budgetary, Firm - Subject to Feasibility Check, or Firm. The - Seller Quote Level is provided by the Seller when responding to - a Quote request. This represents the lowest Quote Item Level - of all Quote Items included in the Quote. - $ref: '#/components/schemas/MEFSellerQuoteLevel' - quoteItem: - description: >- - An item of the quote - it is used to describe an operation on a - product to be quoted - items: - $ref: '#/components/schemas/QuoteItem' - minItems: 1 - type: array - stateChange: - description: State change for the Quote - items: - $ref: '#/components/schemas/MEFQuoteStateChange' - type: array - id: - description: Unique identifier - attributed by quoting system - type: string - href: - description: > - Hyperlink representing this Quote. Hyperlink MAY be used when - providing a response by the Seller - type: string - state: - description: The state of the Quote. - $ref: '#/components/schemas/MEFQuoteStateType' - quoteDate: - description: Date and time when the quote was created - format: date-time - type: string - required: - - id - - quoteDate - - quoteItem - type: object - QuoteItem: - allOf: - - $ref: '#/components/schemas/MEFQuoteItem_Common' - - description: >- - Quote items describe an action to be performed on a productOffering - or a product in order to get pricing elements and conditions. - properties: - terminationError: - description: >- - When the Seller cannot process the Quote Item Request, the - Seller returns a text-based list of reasons here. - items: - $ref: '#/components/schemas/TerminationError' - type: array - quoteItemInstallationInterval: - description: >- - Quote Item Installation Interval as proposed by the Seller for - the Quote. - $ref: '#/components/schemas/Duration' - subjectToFeasibilityCheck: - description: >- - For a Firm Quote Level indicates if the pricing requires a - Feasibility Check. The Seller indicates if the Quote Item - requires a Feasibility Check. This is not used for a Budgetary - Quote Level. - type: boolean - quoteItemTerm: - description: >- - Quote Item Term as defined by the Seller and part of the Quote - for the Quote Item. - items: - $ref: '#/components/schemas/MEFItemTerm' - maxItems: 1 - type: array - state: - description: The state of the Quote Item. - $ref: '#/components/schemas/MEFQuoteItemStateType' - quoteItemPrice: - description: Price for this quote item - items: - $ref: '#/components/schemas/QuotePrice' - type: array - required: - - state - type: object - QuoteItemRelationship: - description: >- - Used to describe the relationship between quote items. These - relationships could have an impact on pricing and conditions - properties: - relationshipType: - description: >- - Relationship type as relies on, bundles, etc... MEF: Specifies the - nature of the relationship to the related Quote Items. The nature - of required relationships varies for Products of different types. - For example, a UNI or ENNI Product may not have any relationships, - but an Access E-Line may have two mandatory relationships (related - to the UNI on one end and the ENNI on the other). More complex - Products such as multipoint IP or Firewall Products may have more - complex relationships. As a result, the allowed and mandatory - Relationship Nature values are defined in the Product - Specification. - type: string - id: - description: ID of the related quote item (must be in the same quote) - type: string - required: - - id - - relationshipType - type: object - QuoteOperationData: - description: - Request for operation on an existing Quote (cancel or decline) - properties: - reason: - description: >- - Allows the Buyer to specify a reason for the Cancel or Decline - Quote request. - type: string - quoteId: - description: >- - Unique (within the Seller quoting domain) identifier for the quote, - as attributed by the Seller. - type: string - required: - - quoteId - type: object - QuotePrice: - description: Description of price and discount awarded - properties: - unitOfMeasure: - description: >- - Unit of Measure if price depending on it (Gb, SMS volume, etc..) - MEF: if Quote Item Price Type equals usageBased - type: string - price: - description: The associated price - $ref: '#/components/schemas/Price' - name: - description: Name of the quote/quote item price - type: string - priceType: - description: >- - Indicates if the price is for recurring, non-recurring, or usage - based charges - $ref: '#/components/schemas/MEFPriceType' - description: - description: Description of the quote/quote item price - type: string - recurringChargePeriod: - description: Used for a recurring charge to indicate a period - $ref: '#/components/schemas/MEFChargePeriod' - type: object - Quote_Common: - description: >- - Quote can be used to negotiate service and product acquisition or - modification between a customer and a service provider. Quote contains - a list of quote items, a reference to a customer, a list of - productOfferings, and attached prices and conditions. - properties: - note: - description: >- - Free form text associated with the quote. Only useful in processes - involving human interaction. Not applicable for the automated - process. - items: - $ref: '#/components/schemas/Note' - type: array - requestedQuoteCompletionDate: - description: >- - This is requested date - from quote requester - to get a complete - response for this quote - format: date-time - type: string - relatedContactInformation: - description: >- - Party playing a role for this quote. If `instantSyncQuote` equals - `false` - - then the Buyer MUST specify Buyer Contact Information ('role: - buyerContactInformation') - - and the Seller MUST specify Seller Contact Information ('role: - sellerContactInformation') - items: - $ref: '#/components/schemas/RelatedContactInformation' - type: array - description: - description: Description of the quote - type: string - externalId: - description: >- - ID given by the consumer and only understandable by him (to - facilitate his searches afterwards) - type: string - buyerRequestedQuoteLevel: - description: >- - An indication of whether the Buyer's Quote request is for a Quote - of Budgetary or Firm level. - $ref: '#/components/schemas/MEFBuyerQuoteLevel' - projectId: - description: >- - An identifier that is used to group Quotes that represent a unit of - functionality that is important to a Buyer. A Project can be used - to relate multiple Quotes together. - type: string - instantSyncQuote: - description: >- - If this flag is set to true, the Buyer requests an immediate Quote - to be provided in the response to the creation of a Quote. - type: boolean - required: - - buyerRequestedQuoteLevel - - instantSyncQuote - type: object - Quote_Create: - allOf: - - $ref: '#/components/schemas/Quote_Common' - - description: > - Quote can be used to negotiate service and product acquisition or - modification between a customer and a service provider. Quote - contains a list of quote items, a reference to a customer, a list - of productOfferings, and attached prices and conditions. - properties: - quoteItem: - description: >- - An item of the quote - used to describe an operation on a - product to be quoted - items: - $ref: '#/components/schemas/MEFQuoteItem_Create' - minItems: 1 - type: array - required: - - quoteItem - type: object - Quote_Find: - description: > - This class represents a single list item for the response of - `listQuote` operation. - properties: - effectiveQuoteCompletionDate: - description: - Date when the Quote State was set to one of the Completion States - format: date-time - type: string - expectedQuoteCompletionDate: - description: >- - This is the date provided by the Seller to indicate expected Quote - completion date - format: date-time - type: string - requestedQuoteCompletionDate: - description: >- - This is requested date - from quote requester - to get a complete - response for this quote - format: date-time - type: string - quoteLevel: - description: >- - The level of the Quote provided by the Seller. This represents the - lowest Quote Item Level of all Quote Items included in the Quote. - $ref: '#/components/schemas/MEFSellerQuoteLevel' - externalId: - description: >- - ID given by the consumer and only understandable by him (to - facilitate his searches afterward) - type: string - id: - description: Unique identifier - attributed by quoting system - type: string - state: - description: The state of the Quote. - $ref: '#/components/schemas/MEFQuoteStateType' - projectId: - description: >- - An identifier that is used to group Quotes that represent a unit of - functionality that is important to a Buyer. A Project can be used - to relate multiple Quotes together. - type: string - quoteDate: - description: Date and time when the quote was created - format: date-time - type: string - required: - - state - type: object - RelatedContactInformation: - description: >- - Contact data for a person or organization that is involved in a given - context. It is specified by the Seller (e.g. Seller Contact - Information) or by the Buyer. - - Reference: MEF 80 (Sn 8.1.9) - properties: - number: - description: Phone number - type: string - emailAddress: - description: Email address - type: string - role: - description: The role of the particular contact in a given context. - type: string - postalAddress: - description: >- - Identifies the postal address of the person or office to be - contacted. - $ref: '#/components/schemas/FieldedAddress' - organization: - description: The organization or company that the contact belongs to - type: string - name: - description: Name of the contact - type: string - numberExtension: - description: Phone number extension - type: string - required: - - emailAddress - - name - - number - - role - type: object - RelatedPlaceRefOrValue: - description: - Place defines the places where the products' quotation must be done. - discriminator: - mapping: - FieldedAddress: '#/components/schemas/FieldedAddress' - FormattedAddress: '#/components/schemas/FormattedAddress' - GeographicAddressLabel: '#/components/schemas/GeographicAddressLabel' - GeographicAddressRef: '#/components/schemas/GeographicAddressRef' - GeographicSiteRef: '#/components/schemas/GeographicSiteRef' - MEFGeographicPoint: '#/components/schemas/MEFGeographicPoint' - propertyName: '@type' - properties: - role: - description: Role of this place - type: string - '@type': - description: > - This field is used as a discriminator and is used between different - place representations. This type might discriminate for the - additional related place as defined in '@schemaLocation'. - type: string - '@schemaLocation': - description: >- - A URI to a JSON-Schema file that defines additional attributes and - relationships. May be used to define additional related place - types. Usage of this attribute must be agreed upon between Buyer - and Seller. - format: uri - type: string - required: - - '@type' - - role - type: object - TerminationError: - description: >- - This indicates an error that caused an Item to be terminated. The code - and propertyPath should be used like in Error422. - properties: - code: - description: | - One of the following error codes: - - missingProperty: The property the Seller has expected is not present in the payload - - invalidValue: The property has an incorrect value - - invalidFormat: The property value does not comply with the expected value format - - referenceNotFound: The object referenced by the property cannot be identified in the Seller system - - unexpectedProperty: Additional property, not expected by the Seller has been provided - - tooManyRecords: the number of records to be provided in the response exceeds the Seller's threshold. - - otherIssue: Other problem was identified (detailed information provided in a reason) - $ref: '#/components/schemas/Error422Code' - propertyPath: - description: > - A pointer to a particular property of the payload that caused the - validation issue. It is highly recommended that this property - should be used. - - Defined using JavaScript Object Notation (JSON) Pointer - (https://tools.ietf.org/html/rfc6901). - type: string - value: - description: Text to describe the reason of the termination. - type: string - type: object - TimePeriod: - description: >- - A period of time, either as a deadline (endDateTime only) a - startDateTime only, or both. - properties: - startDateTime: - description: >- - Start of the time period, using IETC-RFC-3339 format. If you define - a start, you must also define an end - example: 1985-04-12T23:20:50.520Z - format: date-time - type: string - endDateTime: - description: 'End of the time period, using IETC-RFC-3339 format' - example: 1985-04-12T23:20:50.520Z - format: date-time - type: string - type: object - TimeUnit: - description: | - Represents a unit of time. - Reference: MEF 79 (Sn 8.4.3.1/8.4.3.2) - enum: - - calendarMonths - - calendarDays - - calendarHours - - calendarMinutes - - businessDays - - businessHours - - businessMinutes - type: string From 06780c7dec5762b2e3192014c817faf890001726 Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Fri, 1 Nov 2024 17:43:10 +0800 Subject: [PATCH 7/8] added unit tests --- .../gateway/MappingTransformerTest.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/MappingTransformerTest.java diff --git a/kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/MappingTransformerTest.java b/kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/MappingTransformerTest.java new file mode 100644 index 00000000..7206bee3 --- /dev/null +++ b/kraken-java-sdk/kraken-java-sdk-gateway/src/test/java/com/consoleconnect/kraken/operator/gateway/MappingTransformerTest.java @@ -0,0 +1,21 @@ +package com.consoleconnect.kraken.operator.gateway; + +import com.consoleconnect.kraken.operator.gateway.runner.MappingTransformer; +import java.util.HashMap; +import java.util.Map; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +class MappingTransformerTest implements MappingTransformer { + + @Test + void givenJsonInput_whenDeleteNode_thenReturnOK() { + Map checkPathMap = new HashMap<>(); + checkPathMap.put("$.key1", "$.key1"); + checkPathMap.put("$.key2", "$.key2"); + checkPathMap.put("$.key3", "$.key3"); + String input = "{\"key1\":\"\",\"key2\":0,\"key3\":false,\"key\":\"hello kraken\"}"; + String result = deleteNodeByPath(checkPathMap, input); + Assertions.assertEquals("{\"key\":\"hello kraken\"}", result); + } +} From 7ba23f58aeb777d977736a78af361269b4455890 Mon Sep 17 00:00:00 2001 From: xuelianhan007 Date: Mon, 4 Nov 2024 16:33:53 +0800 Subject: [PATCH 8/8] delete not used files --- .../api-specs/api-spec.product.offering.yaml | 13 --- ...get-mapper.product.offering.eline.add.yaml | 62 ---------- ...et-mapper.product.offering.eline.read.yaml | 63 ----------- ...arget-mapper.product.offering.uni.add.yaml | 62 ---------- ...rget-mapper.product.offering.uni.read.yaml | 63 ----------- ...arget.order.notification.state.change.yaml | 33 ------ ...-target.poq.notification.state.change.yaml | 33 ------ ...api-target.product.offering.eline.add.yaml | 34 ------ ...pi-target.product.offering.eline.read.yaml | 33 ------ .../api-target.product.offering.uni.add.yaml | 34 ------ .../api-target.product.offering.uni.read.yaml | 33 ------ ...arget.quote.notification.state.change.yaml | 33 ------ .../resources/mock/apis/api.notification.yaml | 107 ------------------ .../src/test/resources/mock/product.yaml | 9 -- 14 files changed, 612 deletions(-) delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml delete mode 100644 kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.notification.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml deleted file mode 100644 index a9c1079b..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-specs/api-spec.product.offering.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -kind: kraken.component.api-spec -apiVersion: v1 -metadata: - key: mef.sonata.api-spec.product.offering.qualification - name: Product Offering Qualification Management - icon: https://storage.googleapis.com/console-connect-static-assets/krakenUI/product-offering-quality.png - labels: - mef-api-release: grace - poq-api-version: v7 -spec: - baseSpec: - path: classpath:/mef-sonata/openapi/productOfferingQualificationManagement.api.yaml diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml deleted file mode 100644 index 6d70bd4f..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml +++ /dev/null @@ -1,62 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.eline.add - name: Product Offering Qualification (POQ) API - description: | - A request initiated by the Buyer to determine whether the Seller is - able to deliver a product or set of products from among their product - offerings, at the Buyer's location(s); or modify a previously purchased - product. The Seller also provides estimated time intervals to complete - these deliveries. Reference: MEF 79 (Sn 8.4). -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create a product offering qualification for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.eline.add.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.eline.add.state - title: POQ State Mapping - description: POQ state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml deleted file mode 100644 index 98a1d22f..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml +++ /dev/null @@ -1,63 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.eline.read - name: Product Offering Qualification (POQ) API - description: | - The Buyer requests a list of POQs from the Seller based on a set of POQ - filter criteria (as described in MEF79). For each POQ returned, the - Seller also provides a POQ Identifier that uniquely identifies this POQ - within the Seller's system. The order of the elements returned to the - Buyer is defined by the Seller (e.g. natural order) and does not change - between the pages. If criteria for attribute X are provided, all - returned items must match it. -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: access_e_line - endpoints: - - id: Retrieves a product offering qualification by id for connection - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.eline.read.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.eline.read.state - title: POQ State Mapping - description: quote state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml deleted file mode 100644 index 7b385d12..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml +++ /dev/null @@ -1,62 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.uni.add - name: Product Offering Qualification (POQ) API - description: | - A request initiated by the Buyer to determine whether the Seller is - able to deliver a product or set of products from among their product - offerings, at the Buyer's location(s); or modify a previously purchased - product. The Seller also provides estimated time intervals to complete - these deliveries. Reference: MEF 79 (Sn 8.4). -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: uni - actionType: add - endpoints: - - id: create a product offering qualification for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.uni.add.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.uni.add.state - title: POQ State Mapping - description: POQ state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml deleted file mode 100644 index 29e028f2..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml +++ /dev/null @@ -1,63 +0,0 @@ ---- -kind: kraken.component.api-target-mapper -apiVersion: v1 -metadata: - key: mef.sonata.api-target-mapper.poq.uni.read - name: Product Offering Qualification (POQ) API - description: | - The Buyer requests a list of POQs from the Seller based on a set of POQ - filter criteria (as described in MEF79). For each POQ returned, the - Seller also provides a POQ Identifier that uniquely identifies this POQ - within the Seller's system. The order of the elements returned to the - Buyer is defined by the Seller (e.g. natural order) and does not change - between the pages. If criteria for attribute X are provided, all - returned items must match it. -spec: - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: uni - endpoints: - - id: Retrieves a product offering qualification by id for port - path: /api/pricing/calculate - method: post - serverKey: mef.sonata.api-target-spec.con1718940696857 - mappers: - request: - response: - - name: mapper.poq.uni.read.itemState - title: POQ Item State Mapping - description: POQ Item state mapping - source: "" - sourceLocation: "" - target: "@{{itemState}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.abandoned - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false - - name: mapper.poq.uni.read.state - title: POQ State Mapping - description: quote state mapping - source: "" - sourceLocation: "" - target: "@{{state}}" - targetType: enum - targetLocation: BODY - targetValues: - - acknowledged - - done.ready - - done.unableToProvide - - terminatedWithError - - approved.orderableAlternate - - inProgress - valueMapping: {} - defaultValue: "done.ready" - requiredMapping: false \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml deleted file mode 100644 index 81aa7ce9..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.order.notification.state.change.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.order.notification.state.change - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.order.notification.state.change - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - - eventEntity - trigger: - path: /mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent - method: post - endpoints: - - id: notify order state change - path: "/mefApi/sonata/productOrderingNotification/v10/listener/productOrderStateChangeEvent" - url: "${eventEntity.registerInfo.callback}" -# path: "/anything" - method: post - requestBody: | - { - "eventId": "${eventEntity.id}", - "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "eventType": "${mefQuery.eventType}", - "event": { - "id": "" - } - } - responseBody: diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml deleted file mode 100644 index 63a4b826..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.poq.notification.state.change.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.notification.state.change - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.poq.notification.state.change - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - - eventEntity - trigger: - path: /mefApi/sonata/productOfferingQualificationNotification/v7/listener/poqStateChangeEvent - method: post - endpoints: - - id: notify poq state change - path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" - url: "${eventEntity.registerInfo.callback}" -# path: "/anything" - method: post - requestBody: | - { - "eventId": "${eventEntity.id}", - "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "eventType": "${mefQuery.eventType}", - "event": { - "id": "" - } - } - responseBody: diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml deleted file mode 100644 index 3d9b4a4b..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.add.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.eline.add - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.eline.add - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: access_e_line - actionType: add - endpoints: - - id: create a product offering qualification for connection - path: "" - method: "" - requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${mefRequestBody.productOfferingQualificationItem[0].product}", - "action": "${mefRequestBody.productOfferingQualificationItem[0].action}", - "id":"${mefRequestBody.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "state": "@{{state}}" - } diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml deleted file mode 100644 index f1e94253..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.eline.read.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.eline.read - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.eline.read - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: access_e_line - endpoints: - - id: Retrieves a product offering qualification by id for connection - path: "" - method: "" - requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.access_e_line} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${entity.request.productOfferingQualificationItem[0].product}", - "action": "${entity.request.productOfferingQualificationItem[0].action}", - "id":"${entity.request.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${entity.request.relatedContactInformation}", - "state": "@{{state}}" - } diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml deleted file mode 100644 index 50b541a9..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.add.yaml +++ /dev/null @@ -1,34 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.uni.add - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.uni.add - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification - method: post - productType: uni - actionType: add - endpoints: - - id: create a product offering qualification for port - path: "" - method: "" - requestBody: ${mefRequestBody.productOfferingQualificationItem[0].product.productConfiguration.uni} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${mefRequestBody.productOfferingQualificationItem[0].product}", - "action": "${mefRequestBody.productOfferingQualificationItem[0].action}", - "id":"${mefRequestBody.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${T(com.consoleconnect.kraken.operator.gateway.func.SpelFunc).appendSellerInformation(env.seller.role, env.seller.name, env.seller.emailAddress, env.seller.number, mefRequestBody.relatedContactInformation)}", - "state": "@{{state}}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml deleted file mode 100644 index 5ef7fba3..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.product.offering.uni.read.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.poq.uni.read - name: Product Offering Qualification (POQ) API - mapperKey: mef.sonata.api-target-mapper.poq.uni.read - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - trigger: - path: /mefApi/sonata/productOfferingQualification/v7/productOfferingQualification/{id} - method: get - productType: uni - endpoints: - - id: Retrieves a product offering qualification by id for port - path: "" - method: "" - requestBody: ${entity.request.productOfferingQualificationItem[0].product.productConfiguration.uni} - responseBody: | - { - "id": "${entity.id}", - "productOfferingQualificationItem": [{ - "product": "${entity.request.productOfferingQualificationItem[0].product}", - "action": "${entity.request.productOfferingQualificationItem[0].action}", - "id":"${entity.request.productOfferingQualificationItem[0].id}", - "state":"@{{itemState}}" - }], - "relatedContactInformation": "${entity.request.relatedContactInformation}", - "state": "@{{state}}" - } \ No newline at end of file diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml deleted file mode 100644 index f80c14b8..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/api-targets/api-target.quote.notification.state.change.yaml +++ /dev/null @@ -1,33 +0,0 @@ ---- -kind: kraken.component.api-target -apiVersion: v1 -metadata: - key: mef.sonata.api-target.quote.notification.state.change - name: Order Connection API - mapperKey: mef.sonata.api-target-mapper.quote.notification.state.change - version: 1 -spec: - inputs: - - mefQuery - - mefRequestBody - - entity - - eventEntity - trigger: - path: /mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent - method: post - endpoints: - - id: notify quote state change - path: "/mefApi/sonata/quoteNotification/v8/listener/quoteStateChangeEvent" - url: "${eventEntity.registerInfo.callback}" -# path: "/anything" - method: post - requestBody: | - { - "eventId": "${eventEntity.id}", - "eventTime": "${T(com.consoleconnect.kraken.operator.core.toolkit.DateTime).nowInUTCFormatted()}", - "eventType": "${mefQuery.eventType}", - "event": { - "id": "" - } - } - responseBody: diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.notification.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.notification.yaml deleted file mode 100644 index 52091506..00000000 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/apis/api.notification.yaml +++ /dev/null @@ -1,107 +0,0 @@ ---- -kind: kraken.component.api -apiVersion: v1 -metadata: - key: mef.sonata.api.notification - name: Product notification API - labels: - mef-api-release: grace - order-api-version: v10 - version: 1 -spec: - mappings: - - uri: ${env.target.url} - trigger: - path: /mefApi/listener/notification - method: post - queryParams: - - eventType - metadata: - cacheRequestBody: true - actions: - - id: persist_http_request - actionType: buildin@db - env: - bizType: notification - with: - action: create - properties: - - headers - - queryParameters - - requestBody - preRequest: true - - - id: read-event - actionType: buildin@register-event - env: - eventType: ${query.eventType} - with: - action: read - preRequest: true - - - id: calculate_target_api_via_javascript - actionType: engine@javascript - env: - eventType: ${query.eventType} - with: - code: | - (jsonStr) => { - console.log("input: " + jsonStr); - let input = JSON.parse(jsonStr); - let targetAPIConfigKey = ''; - if(input.eventType = 'productOrderStateChangeEvent') { - targetAPIConfigKey = 'mef.sonata.api-target.order.notification.state.change'; - } else if(input.eventType = 'poqStateChangeEvent') { - targetAPIConfigKey = 'mef.sonata.api-target.poq.notification.state.change'; - } else if(input.eventType = 'quoteStateChangeEvent') { - targetAPIConfigKey = 'mef.sonata.api-target.quote.notification.state.change'; - } - let ret = { - targetAPIConfigKey: targetAPIConfigKey - }; - return JSON.stringify(ret); - } - outputKey: event - - id: load-downstream-api-config - actionType: buildin@load-target-api-config - env: - configKey: ${event.targetAPIConfigKey} - mefQuery: ${query} - mefRequestBody: ${body} - entity: ${entity} - eventEntity: ${eventEntity} - with: - render: true - outputKey: targetApiConfig - - - id: rewrite-path - actionType: buildin@rewrite-path - env: - path: ${targetApiConfig.endpoints[0].path} - method: ${targetApiConfig.endpoints[0].method} - - - id: modify-request-body - actionType: buildin@modify-request-body - env: - code: ${targetApiConfig.endpoints[0].requestBody} - - - id: modify-response-body - actionType: buildin@modify-response-body - with: - engine: spel - successStatus: 201 - env: - code: ${targetApiConfig.endpoints[0].responseBody} - inputs: ${targetApiConfig.inputs} - - - id: persist_http_response - actionType: buildin@db - with: - action: update - properties: - - responseBody - - responseStatusCode - preRequest: false - postRequest: true - order: -4 - diff --git a/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml b/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml index b325993b..c42e307b 100644 --- a/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml +++ b/kraken-app/kraken-app-hub/src/test/resources/mock/product.yaml @@ -15,7 +15,6 @@ spec: #- classpath:/mock/api-specs/api-spec.order.yaml #- classpath:/mock/api-specs/api-spec.address.yaml #- classpath:/mock/api-specs/api-spec.quote.yaml - #- classpath:/mock/api-specs/api-spec.product.offering.yaml #- classpath:/mock/api-specs/api-spec.inventory.yaml #- classpath:/mock/api-targets/api-target.order.uni.add.yaml #- classpath:/mock/api-targets/api-target.order.eline.add.yaml @@ -33,10 +32,6 @@ spec: #- classpath:/mock/api-targets/api-target.quote.uni.read.sync.yaml #- classpath:/mock/api-targets/api-target.address.validate.yaml #- classpath:/mock/api-targets/api-target.address.retrieve.yaml - #- classpath:/mock/api-targets/api-target.product.offering.uni.add.yaml - #- classpath:/mock/api-targets/api-target.product.offering.eline.add.yaml - #- classpath:/mock/api-targets/api-target.product.offering.uni.read.yaml - #- classpath:/mock/api-targets/api-target.product.offering.eline.read.yaml #- classpath:/mock/api-targets/api-target.inventory.uni.list.yaml #- classpath:/mock/api-targets/api-target.inventory.uni.read.yaml #- classpath:/mock/api-targets/api-target.inventory.eline.list.yaml @@ -57,10 +52,6 @@ spec: #- classpath:/mock/api-targets-mappers/api-target-mapper.quote.uni.read.sync.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.address.validate.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.address.retrieve.yaml - #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.uni.add.yaml - #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.eline.add.yaml - #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.uni.read.yaml - #- classpath:/mock/api-targets-mappers/api-target-mapper.product.offering.eline.read.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.eline.list.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.eline.read.yaml #- classpath:/mock/api-targets-mappers/api-target-mapper.inventory.uni.list.yaml