From b020a02c826db30d8e390ba836d9dfc923ca1baa Mon Sep 17 00:00:00 2001 From: Max Martens Date: Thu, 17 Oct 2024 19:24:28 +0200 Subject: [PATCH 01/11] OVPAY-1145 - add tokenTypes array to products list respnse model schema and examples --- src/openapi/products/products-crud-v2.2.yaml | 48 ++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/src/openapi/products/products-crud-v2.2.yaml b/src/openapi/products/products-crud-v2.2.yaml index d73bc24..0f69225 100644 --- a/src/openapi/products/products-crud-v2.2.yaml +++ b/src/openapi/products/products-crud-v2.2.yaml @@ -59,6 +59,12 @@ paths: "isTravelProduct": true, "name": "Kortingsabonnement" }, + "tokenTypes": [ + { + "tokenTypeId": 1, + "name": "EMV" + } + ], "sellableTouchPointIds": null, "amountInclTax": null, "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", @@ -83,6 +89,7 @@ paths: "isTravelProduct": false, "name": "Barcode" }, + "tokenTypes": null, "sellableTouchPointIds": [ 1, 2, @@ -112,6 +119,7 @@ paths: "isTravelProduct": false, "name": "Barcode" }, + "tokenTypes": null, "sellableTouchPointIds": [ 3, 4 @@ -139,6 +147,12 @@ paths: "isTravelProduct": true, "name": "Kortingsabonnement" }, + "tokenTypes": [ + { + "tokenTypeId": 1, + "name": "EMV" + } + ], "sellableTouchPointIds": null, "amountInclTax": null, "imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg", @@ -154,6 +168,7 @@ paths: "isTravelProduct": false, "name": "Barcode" }, + "tokenTypes": null, "sellableTouchPointIds": [ 1, 2, @@ -174,6 +189,12 @@ paths: "isTravelProduct": true, "name": "Kortingsabonnement" }, + "tokenTypes": [ + { + "tokenTypeId": 1, + "name": "EMV" + } + ], "sellableTouchPointIds": [ 1, 2 @@ -192,6 +213,12 @@ paths: "isTravelProduct": true, "name": "Kortingsabonnement" }, + "tokenTypes": [ + { + "tokenTypeId": 1, + "name": "EMV" + } + ], "sellableTouchPointIds": [ 3, 4 @@ -219,6 +246,7 @@ paths: "isTravelProduct": false, "name": "Barcode" }, + "tokenTypes": null, "sellableTouchPointIds": [ 3, 4 @@ -237,6 +265,12 @@ paths: "isTravelProduct": true, "name": "Kortingsabonnement" }, + "tokenTypes": [ + { + "tokenTypeId": 1, + "name": "EMV" + } + ], "sellableTouchPointIds": [ 3, 4 @@ -2074,6 +2108,20 @@ components: name: type: string example: Kortingsabonnement + tokenTypes: + type: array + items: + type: object + required: + - tokenTypeId + - name + properties: + tokenTypeId: + type: integer + example: 1 + name: + type: string + example: EMV sellableTouchPointIds: type: array items: From e534d7161be3ff4075eb697d6fc039e5c02ccfaa Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Mon, 21 Oct 2024 09:57:47 +0200 Subject: [PATCH 02/11] OVPAY-1147 - Init. --- src/openapi/customer/customers-crud-v2.yaml | 161 ++++++++++++++++++++ 1 file changed, 161 insertions(+) create mode 100644 src/openapi/customer/customers-crud-v2.yaml diff --git a/src/openapi/customer/customers-crud-v2.yaml b/src/openapi/customer/customers-crud-v2.yaml new file mode 100644 index 0000000..1aac2d0 --- /dev/null +++ b/src/openapi/customer/customers-crud-v2.yaml @@ -0,0 +1,161 @@ +openapi: "3.0.3" +info: + title: ABT Customers CRUD APIs v2 + version: "1.0" + description: CRUD APIs for ABT Customer database. These are NOT the functional APIs from Service Engine. +servers: + - url: https://api.integratielaag.nl/v1 +paths: + /ovpaytokens: + get: + tags: + - Token + summary: Find OVpay tokens. + description: Find OVpay tokens. + parameters: + - in: query + name: ovPayTokenId + schema: + type: integer + example: 71 + required: false + description: The id of the token. + - in: query + name: customerProfileId + schema: + type: integer + example: 12 + required: false + description: The id of the customer profile. + - in: query + name: mediaTypeId + schema: + type: array + items: + type: integer + example: [1, 2] + explode: false + required: false + description: Filter on possible media types. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital. + - in: query + name: xTat + schema: + type: string + format: uuid + example: 700b0516-bf8b-4e6e-bf16-13bfeb078e23 + explode: false + required: false + description: The XTAT of the token. + - in: query + name: xBot + schema: + type: string + format: uuid + example: de1a9a7a-a777-4473-889c-44a3bb07daae + explode: false + required: false + description: The XBOT of the token. + - in: query + name: alias + schema: + type: string + example: Mijn OV-pas + required: false + description: The alias of the token. + - in: query + name: lastDigits + schema: + type: integer + example: 3301 + required: false + description: The last digits of the token. + - in: query + name: ovpasNumber + schema: + type: string + example: 63AW974 + required: false + description: Number of the OVpas. + - in: query + name: tokenStatusId + schema: + type: array + items: + type: integer + example: [1, 2] + explode: false + required: false + description: Filter on possible token statuses. 1 = expired, 2 = active, 3 = replaced, 4 = inactive, 5 = suspended, 6 = removed by customer. + - in: query + name: expirationDate + schema: + type: string + format: date-time + example: 2029-03-22T09:00:00 + required: false + description: The expiration date of the token. + - in: query + name: replacedByTokenId + schema: + type: integer + example: 12 + required: false + description: The id of the token that replaced this token. + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + [ + { + "ovPayTokenId": 71, + "customerProfileId": 12, + "mediaTypeId": 1, + "xTat": "700b0516-bf8b-4e6e-bf16-13bfeb078e23", + "xBot": "de1a9a7a-a777-4473-889c-44a3bb07daae", + "alias": "Mijn OV-pas", + "lastDigits": 3301, + "ovpasNumber": "63AW974", + "tokenStatusId": 2, + "expirationDate": "2029-03-22T09:00:00", + "replacedByTokenId": 12, + }, + ] +components: + securitySchemes: + bearerToken: + type: http + scheme: bearer + bearerFormat: JWT + schemas: + unavailable: + type: object + rfc9457: + type: object + properties: + type: + type: string + format: url + example: https://example.com/probs/out-of-credit + title: + type: string + example: You do not have enough credit. + detail: + type: string + example: Your current balance is 30, but that costs 50. + instance: + type: string + example: /account/12345/msgs/abc + balance: + type: string + example: 30 + accounts: + type: array + items: + type: string + example: + - /account/12345 + - /account/67890 From 3b1220456615ddfb44ad3b6cd64d3c09f940dbde Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Thu, 24 Oct 2024 15:23:09 +0200 Subject: [PATCH 03/11] OVPAY-1147 - MediaType should be TokenType. --- src/openapi/customer/customers-crud-v2.yaml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/openapi/customer/customers-crud-v2.yaml b/src/openapi/customer/customers-crud-v2.yaml index 1aac2d0..464b49c 100644 --- a/src/openapi/customer/customers-crud-v2.yaml +++ b/src/openapi/customer/customers-crud-v2.yaml @@ -28,7 +28,7 @@ paths: required: false description: The id of the customer profile. - in: query - name: mediaTypeId + name: tokenTypeId schema: type: array items: @@ -113,13 +113,14 @@ paths: { "ovPayTokenId": 71, "customerProfileId": 12, - "mediaTypeId": 1, + "tokenType": + { "tokenTypeId": 2, "name": "OV-pas physical" }, "xTat": "700b0516-bf8b-4e6e-bf16-13bfeb078e23", "xBot": "de1a9a7a-a777-4473-889c-44a3bb07daae", "alias": "Mijn OV-pas", "lastDigits": 3301, "ovpasNumber": "63AW974", - "tokenStatusId": 2, + "tokenStatus": { "tokenStatusId": 2, "name": "Active" }, "expirationDate": "2029-03-22T09:00:00", "replacedByTokenId": 12, }, From 330c7d1e2bda6c64b37a05b7adfa7b81322b18d6 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Thu, 24 Oct 2024 15:23:48 +0200 Subject: [PATCH 04/11] OVPAY-1147 - Typo. --- src/openapi/customer/customers-crud-v2.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openapi/customer/customers-crud-v2.yaml b/src/openapi/customer/customers-crud-v2.yaml index 464b49c..e7ea50b 100644 --- a/src/openapi/customer/customers-crud-v2.yaml +++ b/src/openapi/customer/customers-crud-v2.yaml @@ -36,7 +36,7 @@ paths: example: [1, 2] explode: false required: false - description: Filter on possible media types. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital. + description: Filter on possible token types. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital. - in: query name: xTat schema: From f7a56f3e62b4d56f732d807b0a4b7a0638d1afd4 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Fri, 25 Oct 2024 13:27:47 +0200 Subject: [PATCH 05/11] OVPAY-754 - Added find on directdebitmandate. --- src/openapi/customers/customers-crud-v2.yaml | 166 +++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 src/openapi/customers/customers-crud-v2.yaml diff --git a/src/openapi/customers/customers-crud-v2.yaml b/src/openapi/customers/customers-crud-v2.yaml new file mode 100644 index 0000000..6a2d28e --- /dev/null +++ b/src/openapi/customers/customers-crud-v2.yaml @@ -0,0 +1,166 @@ +openapi: "3.0.3" +info: + title: ABT Customers CRUD APIs v2 + version: "1.0" + description: CRUD APIs for ABT Customer database. These are NOT the functional APIs from Service Engine. +servers: + - url: https://api.integratielaag.nl/v1 +paths: + /directdebitmandates: + get: + tags: + - Mandates + summary: Find direct debit mandates. + description: Find direct debit mandates. + parameters: + - in: query + name: directDebitMandateId + schema: + type: integer + example: 71 + required: false + description: The id of the direct debit mandate. + - in: query + name: customerProfileId + schema: + type: integer + example: 12 + required: false + description: The id of the customer related to the mandate. + - in: query + name: customerNumber + schema: + type: integer + example: 14 + required: false + description: The number of the customer related to the mandate. + - in: query + name: billingInformationId + schema: + type: integer + example: 51 + required: false + description: The id of the billing information related to the mandate. + - in: query + name: directDebitMandateTypeId + schema: + type: array + items: + type: integer + example: [1, 2] + explode: false + required: false + description: The id of the direct debit mandate type. 1 = Paper contract, 2 = PIN transaction, 3 = SEPA eMandate, 4 = Digital signature, 5 = iDEAL transaction. + - in: query + name: mandateAddressId + schema: + type: integer + example: 21 + required: false + description: The id of the address related to the mandate. + - in: query + name: createdBefore + schema: + type: string + format: date-time + example: 2020-12-31T23:59:59 + required: false + description: Filter on created before. + - in: query + name: createdAfter + schema: + type: string + format: date-time + example: 2020-01-01T00:00:00 + required: false + description: Filter on created after. + - in: query + name: mandateReference + schema: + type: string + example: CORE01 + required: false + description: Filter on mandate reference. + - in: query + name: mandateState + schema: + type: array + items: + type: string + example: [SIGNED, PREPARED] + explode: false + required: false + description: Filter on possible states of the mandate. SIGNED = signed, PREPARED = prepared, CANCELLED = cancelled. + - in: query + name: updatedBefore + schema: + type: string + format: date-time + example: 2020-12-31T23:59:59 + required: false + description: Filter on updated before. + - in: query + name: updatedAfter + schema: + type: string + format: date-time + example: 2020-01-01T00:00:00 + required: false + description: Filter on updated after. + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + [ + { + "directDebitMandateId": 71, + "customerProfileId": 12, + "customerNumber": 14, + "billingInformationId": 51, + "directDebitMandateTypeId": 5, + "mandateAddressId": 21, + "created": "2024-03-22T08:55:00", + "mandateReference": "CORE01", + "mandateState": "SINGED", + "updateTimestamp": "2024-03-22T08:55:00" + }, + ] +components: + securitySchemes: + bearerToken: + type: http + scheme: bearer + bearerFormat: JWT + schemas: + unavailable: + type: object + rfc9457: + type: object + properties: + type: + type: string + format: url + example: https://example.com/probs/out-of-credit + title: + type: string + example: You do not have enough credit. + detail: + type: string + example: Your current balance is 30, but that costs 50. + instance: + type: string + example: /account/12345/msgs/abc + balance: + type: string + example: 30 + accounts: + type: array + items: + type: string + example: + - /account/12345 + - /account/67890 From 5306f34dafdc3b6f91f1d3618d661d7143e1b64b Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Wed, 13 Nov 2024 14:40:03 +0100 Subject: [PATCH 06/11] OVPAY-1201 - Minor delta on data model. --- src/openapi/contracts/contracts-crud.yaml | 21 ++++++--------------- src/openapi/contracts/contracts-se.yaml | 3 --- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/openapi/contracts/contracts-crud.yaml b/src/openapi/contracts/contracts-crud.yaml index 09e1de6..0c3e90e 100644 --- a/src/openapi/contracts/contracts-crud.yaml +++ b/src/openapi/contracts/contracts-crud.yaml @@ -27,7 +27,7 @@ paths: type: integer example: 1 required: false - description: Filter on possible contract status. 1 = new, 2 = active, 3 = suspended, 4 = cancelled, 5 = terminated. + description: Filter on possible contract status. 1 = new, 2 = active, 3 = suspended, 4 = cancelled, 5 = terminated, 6 = pending cancellation, 7 = pending termination. responses: "200": description: OK @@ -53,7 +53,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "created": "2024-08-01 15:01:00.000", }, { @@ -70,7 +69,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "created": "2024-08-01 15:01:00.000", }, ], @@ -98,7 +96,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 0, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "contractVersions": [ { @@ -152,7 +149,7 @@ paths: type: integer explode: false required: false - description: Filter on possible contract status. 1 = new, 2 = active, 3 = suspended, 4 = cancelled, 5 = terminated. + description: Filter on possible contract status. 1 = new, 2 = active, 3 = suspended, 4 = cancelled, 5 = terminated, 6 = pending cancellation, 7 = pending termination. - in: query name: billingDay schema: @@ -206,7 +203,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "contractInvoices": [ { @@ -265,7 +261,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "contractInvoices": [ { @@ -351,7 +346,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "contractVersions": [ { @@ -429,7 +423,6 @@ paths: "productName": "HTM 20% korting 2024", "billingDay": 15, "highestInvoiceTerm": 2, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", }, } responses: @@ -878,6 +871,8 @@ paths: { "contractStatusId": 3, "name": "suspended" }, { "contractStatusId": 4, "name": "cancelled" }, { "contractStatusId": 5, "name": "terminated" }, + { "contractStatusId": 6, "name": "pending cancellation" }, + { "contractStatusId": 7, "name": "pending termination" }, ], } /actiontypes: @@ -892,7 +887,7 @@ paths: content: application/json: schema: - $ref: "#/components/schemas/ContractStatus" + $ref: "#/components/schemas/ActionType" example: { "actionTypes": @@ -957,10 +952,6 @@ components: highestInvoiceTerm: type: integer example: 1 - xSpit: - type: string - format: uuid - example: 1c345237-4d84-47f0-93c2-7b94338e3355 contractVersions: type: array items: @@ -1077,7 +1068,7 @@ components: example: 2 name: type: string - enum: [new, active, suspended, cancelled, terminated] + enum: [new, active, suspended, cancelled, terminated, pending cancellation, pending termination] example: active ActionType: type: object diff --git a/src/openapi/contracts/contracts-se.yaml b/src/openapi/contracts/contracts-se.yaml index 98ac462..934903f 100644 --- a/src/openapi/contracts/contracts-se.yaml +++ b/src/openapi/contracts/contracts-se.yaml @@ -43,7 +43,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "created": "2024-08-01 15:01:00.000", }, { @@ -59,7 +58,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "created": "2024-08-01 15:01:00.000", }, ] @@ -128,7 +126,6 @@ paths: "termDuration": "P0Y1M0D", "billingDay": 15, "highestInvoiceTerm": 1, - "xSpit": "1c345237-4d84-47f0-93c2-7b94338e3355", "contractVersions": [ { From 8e2ad79b5309042aeb6cd26f28900bb820c9aed6 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Tue, 26 Nov 2024 15:34:55 +0100 Subject: [PATCH 07/11] OVPAY-1147 - Added pagination. --- src/openapi/customer/customers-crud-v2.yaml | 36 ++++++++++++--------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/src/openapi/customer/customers-crud-v2.yaml b/src/openapi/customer/customers-crud-v2.yaml index e7ea50b..c491563 100644 --- a/src/openapi/customer/customers-crud-v2.yaml +++ b/src/openapi/customer/customers-crud-v2.yaml @@ -109,22 +109,26 @@ paths: schema: $ref: "#/components/schemas/unavailable" example: - [ - { - "ovPayTokenId": 71, - "customerProfileId": 12, - "tokenType": - { "tokenTypeId": 2, "name": "OV-pas physical" }, - "xTat": "700b0516-bf8b-4e6e-bf16-13bfeb078e23", - "xBot": "de1a9a7a-a777-4473-889c-44a3bb07daae", - "alias": "Mijn OV-pas", - "lastDigits": 3301, - "ovpasNumber": "63AW974", - "tokenStatus": { "tokenStatusId": 2, "name": "Active" }, - "expirationDate": "2029-03-22T09:00:00", - "replacedByTokenId": 12, - }, - ] + { + "ovPayTokens": + [ + { + "ovPayTokenId": 71, + "customerProfileId": 12, + "tokenType": + { "tokenTypeId": 2, "name": "OV-pas physical" }, + "xTat": "700b0516-bf8b-4e6e-bf16-13bfeb078e23", + "xBot": "de1a9a7a-a777-4473-889c-44a3bb07daae", + "alias": "Mijn OV-pas", + "lastDigits": 3301, + "ovpasNumber": "63AW974", + "tokenStatus": { "tokenStatusId": 2, "name": "Active" }, + "expirationDate": "2029-03-22T09:00:00", + "replacedByTokenId": 12, + }, + ], + "href": null, + } components: securitySchemes: bearerToken: From bfea9a5967ae4e53a0642fc672e737113c2afc31 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Mon, 2 Dec 2024 10:46:08 +0100 Subject: [PATCH 08/11] OVPAY-754 - Fixed PR remarks. Thanks maks. --- src/openapi/customers/customers-crud-v2.yaml | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/src/openapi/customers/customers-crud-v2.yaml b/src/openapi/customers/customers-crud-v2.yaml index 6a2d28e..7acbffe 100644 --- a/src/openapi/customers/customers-crud-v2.yaml +++ b/src/openapi/customers/customers-crud-v2.yaml @@ -27,13 +27,6 @@ paths: example: 12 required: false description: The id of the customer related to the mandate. - - in: query - name: customerNumber - schema: - type: integer - example: 14 - required: false - description: The number of the customer related to the mandate. - in: query name: billingInformationId schema: @@ -119,9 +112,12 @@ paths: { "directDebitMandateId": 71, "customerProfileId": 12, - "customerNumber": 14, "billingInformationId": 51, - "directDebitMandateTypeId": 5, + "directDebitMandateType": { + "directDebitMandateTypeId": 1, + "name": "import", + "description": "import" + }, "mandateAddressId": 21, "created": "2024-03-22T08:55:00", "mandateReference": "CORE01", From 9cde41bfc3499a88c24f342362bef7c05e6701cc Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Mon, 2 Dec 2024 10:58:46 +0100 Subject: [PATCH 09/11] Update customer YAMLs on develop. --- src/openapi/customer/customers-crud-v2.yaml | 166 - src/openapi/customers/customers-crud-v2.yaml | 123 + src/openapi/customers/customers.yaml | 5376 +++++++++++++++++ .../customers/customers_reference-crud.yaml | 1047 ++++ 4 files changed, 6546 insertions(+), 166 deletions(-) delete mode 100644 src/openapi/customer/customers-crud-v2.yaml create mode 100644 src/openapi/customers/customers.yaml create mode 100644 src/openapi/customers/customers_reference-crud.yaml diff --git a/src/openapi/customer/customers-crud-v2.yaml b/src/openapi/customer/customers-crud-v2.yaml deleted file mode 100644 index c491563..0000000 --- a/src/openapi/customer/customers-crud-v2.yaml +++ /dev/null @@ -1,166 +0,0 @@ -openapi: "3.0.3" -info: - title: ABT Customers CRUD APIs v2 - version: "1.0" - description: CRUD APIs for ABT Customer database. These are NOT the functional APIs from Service Engine. -servers: - - url: https://api.integratielaag.nl/v1 -paths: - /ovpaytokens: - get: - tags: - - Token - summary: Find OVpay tokens. - description: Find OVpay tokens. - parameters: - - in: query - name: ovPayTokenId - schema: - type: integer - example: 71 - required: false - description: The id of the token. - - in: query - name: customerProfileId - schema: - type: integer - example: 12 - required: false - description: The id of the customer profile. - - in: query - name: tokenTypeId - schema: - type: array - items: - type: integer - example: [1, 2] - explode: false - required: false - description: Filter on possible token types. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital. - - in: query - name: xTat - schema: - type: string - format: uuid - example: 700b0516-bf8b-4e6e-bf16-13bfeb078e23 - explode: false - required: false - description: The XTAT of the token. - - in: query - name: xBot - schema: - type: string - format: uuid - example: de1a9a7a-a777-4473-889c-44a3bb07daae - explode: false - required: false - description: The XBOT of the token. - - in: query - name: alias - schema: - type: string - example: Mijn OV-pas - required: false - description: The alias of the token. - - in: query - name: lastDigits - schema: - type: integer - example: 3301 - required: false - description: The last digits of the token. - - in: query - name: ovpasNumber - schema: - type: string - example: 63AW974 - required: false - description: Number of the OVpas. - - in: query - name: tokenStatusId - schema: - type: array - items: - type: integer - example: [1, 2] - explode: false - required: false - description: Filter on possible token statuses. 1 = expired, 2 = active, 3 = replaced, 4 = inactive, 5 = suspended, 6 = removed by customer. - - in: query - name: expirationDate - schema: - type: string - format: date-time - example: 2029-03-22T09:00:00 - required: false - description: The expiration date of the token. - - in: query - name: replacedByTokenId - schema: - type: integer - example: 12 - required: false - description: The id of the token that replaced this token. - responses: - 200: - description: OK - content: - application/json: - schema: - $ref: "#/components/schemas/unavailable" - example: - { - "ovPayTokens": - [ - { - "ovPayTokenId": 71, - "customerProfileId": 12, - "tokenType": - { "tokenTypeId": 2, "name": "OV-pas physical" }, - "xTat": "700b0516-bf8b-4e6e-bf16-13bfeb078e23", - "xBot": "de1a9a7a-a777-4473-889c-44a3bb07daae", - "alias": "Mijn OV-pas", - "lastDigits": 3301, - "ovpasNumber": "63AW974", - "tokenStatus": { "tokenStatusId": 2, "name": "Active" }, - "expirationDate": "2029-03-22T09:00:00", - "replacedByTokenId": 12, - }, - ], - "href": null, - } -components: - securitySchemes: - bearerToken: - type: http - scheme: bearer - bearerFormat: JWT - schemas: - unavailable: - type: object - rfc9457: - type: object - properties: - type: - type: string - format: url - example: https://example.com/probs/out-of-credit - title: - type: string - example: You do not have enough credit. - detail: - type: string - example: Your current balance is 30, but that costs 50. - instance: - type: string - example: /account/12345/msgs/abc - balance: - type: string - example: 30 - accounts: - type: array - items: - type: string - example: - - /account/12345 - - /account/67890 diff --git a/src/openapi/customers/customers-crud-v2.yaml b/src/openapi/customers/customers-crud-v2.yaml index 7acbffe..72ef1eb 100644 --- a/src/openapi/customers/customers-crud-v2.yaml +++ b/src/openapi/customers/customers-crud-v2.yaml @@ -6,6 +6,129 @@ info: servers: - url: https://api.integratielaag.nl/v1 paths: + /ovpaytokens: + get: + tags: + - Token + summary: Find OVpay tokens. + description: Find OVpay tokens. + parameters: + - in: query + name: ovPayTokenId + schema: + type: integer + example: 71 + required: false + description: The id of the token. + - in: query + name: customerProfileId + schema: + type: integer + example: 12 + required: false + description: The id of the customer profile. + - in: query + name: tokenTypeId + schema: + type: array + items: + type: integer + example: [1, 2] + explode: false + required: false + description: Filter on possible token types. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital. + - in: query + name: xTat + schema: + type: string + format: uuid + example: 700b0516-bf8b-4e6e-bf16-13bfeb078e23 + explode: false + required: false + description: The XTAT of the token. + - in: query + name: xBot + schema: + type: string + format: uuid + example: de1a9a7a-a777-4473-889c-44a3bb07daae + explode: false + required: false + description: The XBOT of the token. + - in: query + name: alias + schema: + type: string + example: Mijn OV-pas + required: false + description: The alias of the token. + - in: query + name: lastDigits + schema: + type: integer + example: 3301 + required: false + description: The last digits of the token. + - in: query + name: ovpasNumber + schema: + type: string + example: 63AW974 + required: false + description: Number of the OVpas. + - in: query + name: tokenStatusId + schema: + type: array + items: + type: integer + example: [1, 2] + explode: false + required: false + description: Filter on possible token statuses. 1 = expired, 2 = active, 3 = replaced, 4 = inactive, 5 = suspended, 6 = removed by customer. + - in: query + name: expirationDate + schema: + type: string + format: date-time + example: 2029-03-22T09:00:00 + required: false + description: The expiration date of the token. + - in: query + name: replacedByTokenId + schema: + type: integer + example: 12 + required: false + description: The id of the token that replaced this token. + responses: + 200: + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "ovPayTokens": + [ + { + "ovPayTokenId": 71, + "customerProfileId": 12, + "tokenType": + { "tokenTypeId": 2, "name": "OV-pas physical" }, + "xTat": "700b0516-bf8b-4e6e-bf16-13bfeb078e23", + "xBot": "de1a9a7a-a777-4473-889c-44a3bb07daae", + "alias": "Mijn OV-pas", + "lastDigits": 3301, + "ovpasNumber": "63AW974", + "tokenStatus": { "tokenStatusId": 2, "name": "Active" }, + "expirationDate": "2029-03-22T09:00:00", + "replacedByTokenId": 12, + }, + ], + "href": null, + } /directdebitmandates: get: tags: diff --git a/src/openapi/customers/customers.yaml b/src/openapi/customers/customers.yaml new file mode 100644 index 0000000..65a9763 --- /dev/null +++ b/src/openapi/customers/customers.yaml @@ -0,0 +1,5376 @@ +openapi: 3.0.1 +info: + title: ABTCustomers + version: '1.0' +servers: + - url: https://services.acc.api.htm.nl/abt/abtcustomers/1.0 + - url: http://services.acc.api.htm.nl/abt/abtcustomers/1.0 +security: + - default: [] +tags: + - name: ABTCustomers + - name: ABTCustomersSelfService + - name: ABTCustomersFinancials + - name: ABTCustomersFinancialsSelfService +paths: + /customers/{customerNumber}/financials/directdebitmandates/{directDebitMandateId}: + patch: + tags: + - ABTCustomersFinancials + summary: Modify direct debit mandate information for a customer profile. + description: Modify direct debit mandate for a customer profile. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: directDebitMandateId + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/directDebitMandatePatch' + examples: + updateFullDirectDebitMandate: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + billingInformationId: 1 + mandateAddressId: 2 + mandateReference: Dit is een test Reference + mandateState: SIGNED + updateDirectDebitMandateType: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + updateBillingInformationId: + value: + directDebitMandate: + billingInformationId: 2 + updateMandateAddressId: + value: + directDebitMandate: + mandateAddressId: 3 + updateMandateReference: + value: + directDebitMandate: + mandateReference: Updated Reference + updateMandateState: + value: + directDebitMandate: + mandateState: PREPARED + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/patchCustomerProfileCustomerNumberResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/financials/billinginformation/{billingInformationId}: + patch: + tags: + - ABTCustomersFinancials + summary: Modify billing information for a customer profile. + description: Modify billing information for a customer profile. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: billingInformationId + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/billingInformationPatch' + examples: + updateFullBillingInformation: + value: + billingInformation: + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + updateIssuerCountry: + value: + billingInformation: + issuerCountry: DE + updateIban: + value: + billingInformation: + iban: '0987654321' + updateBic: + value: + billingInformation: + bic: DEUT + updateSwift: + value: + billingInformation: + swift: UpdatedSwift + updateAscription: + value: + billingInformation: + ascription: Updated Ascription + updateAlias: + value: + billingInformation: + alias: Updated Alias + updateBillingAddressId: + value: + billingInformation: + billingAddressId: 3 + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/patchCustomerProfileCustomerNumberResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/financials/billinginformation: + post: + tags: + - ABTCustomersFinancials + summary: Create billing information for a customer profile. + description: Create billing information for a customer profile. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/billingInformationPost' + examples: + fullFinancialInformation: + value: + billingInformation: + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + minimumBillingInformation: + value: + billingInformation: + issuerCountry: NL + iban: '1234567890' + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/postCustomerProfileBillingInformationResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/financials/directdebitmandates: + post: + tags: + - ABTCustomersFinancials + summary: Create direct debit mandate for a customer profile. + description: Create direct debit mandate for a customer profile. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/directDebitMandatePost' + examples: + fullFinancialInformation: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + minimumdirectDebitMandate: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/postCustomerProfileDirectDebitMandateResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/financials: + get: + tags: + - ABTCustomersFinancials + summary: Search for customer profile financial information + description: 'search for a customer profile in the ABT database with query parameters ' + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '200': + description: Successful retrieved a customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/getCustomerProfileFinancials' + examples: + fullFinancialInformation: + value: + customerNumber: 1000003 + billingInformation: + - billingInformationId: 1 + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + - billingInformationId: 2 + issuerCountry: BE + iban: '0987654321' + bic: null + swift: null + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 3 + directDebitMandate: + - directDebitMandateId: 1 + directDebitMandateTypeName: PIN Transaction + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + mandateState: SIGNED + updateTimestamp: '2024-01-01T00:00:00.00' + - directDebitMandateId: 2 + directDebitMandateTypeName: Paper Contract + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + mandateState: CANCELLED + updateTimestamp: '2024-01-01T00:00:00.00' + missingBillingInformation: + value: + customerNumber: 1000003 + billingInformation: [] + directDebitMandate: + - directDebitMandateId: 1 + directDebitMandateTypeName: PIN transaction + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + - directDebitMandateId: 2 + directDebitMandateTypeName: Paper Contract + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + missingDebitMandateInformation: + value: + customerNumber: 1000003 + billingInformation: + - billingInformationId: 1 + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + - billingInformationId: 2 + issuerCountry: BE + iban: '0987654321' + bic: null + swift: null + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 3 + directDebitMandate: [] + minimumFinancialInformation: + value: + customerNumber: 1000003 + billingInformation: [] + directDebitMandate: [] + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/financials/directdebitmandates/{directDebitMandateId}: + patch: + tags: + - ABTCustomersFinancialsSelfService + summary: Modify direct debit mandate information for a customer profile. + description: Modify direct debit mandate for a customer profile. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: directDebitMandateId + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/directDebitMandatePatch' + examples: + updateFullDirectDebitMandate: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + billingInformationId: 1 + mandateAddressId: 2 + mandateReference: Dit is een test Reference + mandateState: SIGNED + updateDirectDebitMandateType: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + updateBillingInformationId: + value: + directDebitMandate: + billingInformationId: 2 + updateMandateAddressId: + value: + directDebitMandate: + mandateAddressId: 3 + updateMandateReference: + value: + directDebitMandate: + mandateReference: Updated Reference + updateMandateState: + value: + directDebitMandate: + mandateState: PREPARED + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/patchCustomerProfileCustomerNumberResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/financials/billinginformation/{billingInformationId}: + patch: + tags: + - ABTCustomersFinancialsSelfService + summary: Modify billing information for a customer profile. + description: Modify billing information for a customer profile. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: billingInformationId + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/billingInformationPatch' + examples: + updateFullBillingInformation: + value: + billingInformation: + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + updateIssuerCountry: + value: + billingInformation: + issuerCountry: DE + updateIban: + value: + billingInformation: + iban: '0987654321' + updateBic: + value: + billingInformation: + bic: DEUT + updateSwift: + value: + billingInformation: + swift: UpdatedSwift + updateAscription: + value: + billingInformation: + ascription: Updated Ascription + updateAlias: + value: + billingInformation: + alias: Updated Alias + updateBillingAddressId: + value: + billingInformation: + billingAddressId: 3 + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/patchCustomerProfileCustomerNumberResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/financials/billinginformation: + post: + tags: + - ABTCustomersFinancialsSelfService + summary: Create billing information for a customer profile. + description: Create billing information for a customer profile. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/billingInformationPost' + examples: + fullFinancialInformation: + value: + billingInformation: + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + minimumBillingInformation: + value: + billingInformation: + issuerCountry: NL + iban: '1234567890' + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/postCustomerProfileBillingInformationResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/financials/directdebitmandates: + post: + tags: + - ABTCustomersFinancialsSelfService + summary: Create direct debit mandate for a customer profile. + description: Create direct debit mandate for a customer profile. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/directDebitMandatePost' + examples: + fullFinancialInformation: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + minimumdirectDebitMandate: + value: + directDebitMandate: + directDebitMandateTypeId: 1 + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + required: true + responses: + '201': + description: Successful created financial information for a customer profile. + content: + application/json: + schema: + $ref: >- + #/components/schemas/postCustomerProfileDirectDebitMandateResponse + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/financials: + get: + tags: + - ABTCustomersFinancialsSelfService + summary: Search for customer profile financial information + description: 'search for a customer profile in the ABT database with query parameters ' + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '200': + description: Successful retrieved a customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/getCustomerProfileFinancials' + examples: + fullFinancialInformation: + value: + customerNumber: 1000003 + billingInformation: + - billingInformationId: 1 + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + updateTimestamp: '2024-01-01T00:00:00.00' + - billingInformationId: 2 + issuerCountry: BE + iban: '0987654321' + bic: null + swift: null + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 3 + updateTimestamp: '2024-01-01T00:00:00.00' + directDebitMandate: + - directDebitMandateId: 1 + directDebitMandateTypeName: PIN transaction + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + mandateState: SIGNED + - directDebitMandateId: 2 + directDebitMandateTypeName: Paper Contract + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + mandateState: CANCELLED + missingBillingInformation: + value: + customerNumber: 1000003 + billingInformation: [] + directDebitMandate: + - directDebitMandateId: 1 + directDebitMandateTypeName: PIN transaction + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + - directDebitMandateId: 2 + directDebitMandateTypeName: Paper Contract + billingInformationId: 1 + mandateAddressId: 2 + created: '1900-01-01T00:00:00.000' + mandateReference: Dit is een test Reference + missingDebitMandateInformation: + value: + customerNumber: 1000003 + billingInformation: + - billingInformationId: 1 + issuerCountry: NL + iban: '1234567890' + bic: ING + swift: Swift + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 2 + - billingInformationId: 2 + issuerCountry: BE + iban: '0987654321' + bic: null + swift: null + ascription: Dit is een Test + alias: Alias Test + billingAddressId: 3 + directDebitMandate: [] + minimumFinancialInformation: + value: + customerNumber: 1000003 + billingInformation: [] + directDebitMandate: [] + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/list: + get: + tags: + - ABTCustomers + summary: Search for customer profile list + description: >- + search for a customer profile list in the ABT database with query + parameters + parameters: + - name: customerProfileId + in: query + required: false + style: form + explode: true + schema: + type: number + - name: customerNumber + in: query + required: false + style: form + explode: true + schema: + type: number + - name: emailAddress + in: query + required: false + style: form + explode: true + schema: + type: string + - name: chipCardNumber + in: query + required: false + style: form + explode: true + schema: + type: string + - name: ovPasNumber + in: query + required: false + style: form + explode: true + schema: + type: string + - name: phoneNumber + in: query + required: false + style: form + explode: true + schema: + type: string + - name: phoneCountryCode + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressStreet + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressHouseNumber + in: query + required: false + style: form + explode: true + schema: + type: number + - name: addressHouseNumberSuffix + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressPostalCode + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressCity + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressCountry + in: query + required: false + style: form + explode: true + schema: + type: string + - name: birthname + in: query + required: false + style: form + explode: true + schema: + type: string + - name: surname + in: query + required: false + style: form + explode: true + schema: + type: string + - name: dateOfBirth + in: query + required: false + style: form + explode: true + schema: + type: string + - name: customerStatus + in: query + required: false + style: form + explode: true + schema: + type: string + responses: + '200': + description: Successful retrieved a customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/getCustomerProfileList' + examples: + fullCustomerProfile: + value: + Entries: + - customerProfileId: 1 + customerNumber: 1000001 + debtorNumber: TEST001 + debtorStateId: 1 + vascustomerNumber: CST005 + customerPreference: + languageId: 1 + customerStatus: + - name: active + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: '2022-08-05 15:01:00.000' + - name: blocked + fromInclusive: '2022-08-05 15:01:00.000' + toInclusive: null + person: + birthname: Pieter + surname: De valen + prefix: dhr + suffix: De + dateOfBirth: '2002-10-29' + emailAddress: TEST@HTM.NL + address: + - addressId: 1 + street: mystreet + houseNumber: 1 + houseNumberSuffix: null + postalCode: 0000AA + city: Den Haag + country: NL + isPreferred: true + addressType: Office + - addressId: 2 + street: mystreet 33 + houseNumber: 1 + houseNumberSuffix: null + postalCode: 4455CA + city: Den BOSCH + country: NL + isPreferred: true + addressType: Office + phone: + - phoneId: 1 + number: '3112345678' + countryCode: NL + phoneType: TestNaam + isPreferred: true + - phoneId: 2 + number: '333225588' + countryCode: ES + phoneType: TestNaam + isPreferred: false + ovChipCard: + - ovChipCardId: 1 + chipCardNumber: 1234123412341234 + validUntil: '2023-01-01' + alias: alias + - ovChipCardId: 2 + chipCardNumber: 1234123412341235 + validUntil: '2025-01-01' + alias: alias + ovPayToken: + - ovPayTokenId: 126 + tokenTypeId: 1 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 1 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + - ovPayTokenId: 127 + tokenTypeId: 1 + xTat: hhe2830283 + xBot: jdhd828033 + alias: alias + lastDigits: '5674' + ovpasNumber: OV34568 + tokenStatusId: 1 + expirationDate: '2024-04-20T17:05:52.000+02:00' + replacedByTokenId: 2 + audit: + - auditTrailId: 1 + customerProfileId: 1 + action: insert + user: user + timestamp: '2023-10-20T17:05:52.000+02:00' + correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 + - customerNumber: 1000002 + debtorNumber: TEST001 + debtorStateId: 1 + vascustomerNumber: CST005 + customerPreference: + languageId: 1 + customerStatus: + - name: active + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: '2022-08-05 15:01:00.000' + - name: blocked + fromInclusive: '2022-08-05 15:01:00.000' + toInclusive: null + person: + birthname: Pieter + surname: De valen + prefix: dhr + suffix: De + dateOfBirth: '2002-10-29' + emailAddress: TEST@HTM.NL + address: + - addressId: 1 + street: mystreet + houseNumber: 1 + houseNumberSuffix: null + postalCode: 0000AA + city: Den Haag + country: NL + isPreferred: true + addressType: Office + - addressId: 2 + street: mystreet 33 + houseNumber: 1 + houseNumberSuffix: null + postalCode: 4455CA + city: Den BOSCH + country: NL + isPreferred: true + addressType: Office + phone: + - phoneId: 1 + number: '3112345678' + countryCode: NL + phoneType: TestNaam + isPreferred: true + - phoneId: 2 + number: '333225588' + countryCode: ES + phoneType: TestNaam + isPreferred: false + ovChipCard: + - ovChipCardId: 1 + chipCardNumber: 1234123412341234 + validUntil: '2023-01-01' + alias: alias + - ovChipCardId: 2 + chipCardNumber: 1234123412341235 + validUntil: '2025-01-01' + alias: alias + ovPayToken: + - ovPayTokenId: 126 + tokenTypeId: 1 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 1 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + - ovPayTokenId: 127 + tokenTypeId: 1 + xTat: hhe2830283 + xBot: jdhd828033 + alias: alias + lastDigits: '5674' + ovpasNumber: OV34568 + tokenStatusId: 1 + expirationDate: '2024-04-20T17:05:52.000+02:00' + replacedByTokenId: 2 + audit: + - auditTrailId: 1 + customerProfileId: 1 + action: insert + user: user + timestamp: '2023-10-20T17:05:52.000+02:00' + correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 + href: null + minimumCustomerProfile: + value: + Entries: + - customerNumber: 1000008 + debtorNumber: null + debtorStateId: null + vascustomerNumber: null + customerPreference: + languageId: null + customerStatus: + - name: active + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: null + person: + birthname: null + surname: null + prefix: null + suffix: null + dateOfBirth: null + emailAddress: TEST@TEST1.NL + address: [] + phone: [] + ovChipCard: [] + ovPayToken: [] + audit: [] + missingPersonDetailsCustomerProfile: + value: + Entries: + - emailAddress: TEST04@HTM.NL + customerNumber: 1000005 + debtorNumber: TEST004 + debtorStateId: 1 + vascustomerNumber: CST005 + customerPreference: + languageId: 1 + customerStatus: + - name: inactive + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: null + person: + birthname: Sophie + surname: Haardenburg + prefix: Mw + suffix: null + dateOfBirth: 1955-09-05+01:00 + emailAddress: TEST@TEST1.NL + address: [] + phone: [] + ovChipCard: + - ovChipCardId: 1 + chipCardNumber: 1234123412341234 + validUntil: '2023-01-01' + alias: alias + - ovChipCardId: 2 + chipCardNumber: 1234123412341235 + validUntil: '2025-01-01' + alias: alias + ovPayToken: + - ovPayTokenId: 126 + tokenTypeId: 1 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 1 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + - ovPayTokenId: 127 + tokenTypeId: 1 + xTat: hhe2830283 + xBot: jdhd828033 + alias: alias + lastDigits: '5674' + ovpasNumber: OV34568 + tokenStatusId: 1 + expirationDate: '2024-04-20T17:05:52.000+02:00' + replacedByTokenId: 2 + audit: + - auditTrailId: 1 + customerProfileId: 1 + action: insert + user: user + timestamp: '2023-10-20T17:05:52.000+02:00' + correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers: + get: + tags: + - ABTCustomers + summary: Search for customer profile + description: 'search for a customer profile in the ABT database with query parameters ' + parameters: + - name: customerProfileId + in: query + required: false + style: form + explode: true + schema: + type: number + - name: customerNumber + in: query + required: false + style: form + explode: true + schema: + type: number + - name: emailAddress + in: query + required: false + style: form + explode: true + schema: + type: string + - name: chipCardNumber + in: query + required: false + style: form + explode: true + schema: + type: string + - name: ovPasNumber + in: query + required: false + style: form + explode: true + schema: + type: string + - name: phoneNumber + in: query + required: false + style: form + explode: true + schema: + type: string + - name: phoneCountryCode + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressStreet + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressHouseNumber + in: query + required: false + style: form + explode: true + schema: + type: number + - name: addressHouseNumberSuffix + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressPostalCode + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressCity + in: query + required: false + style: form + explode: true + schema: + type: string + - name: addressCountry + in: query + required: false + style: form + explode: true + schema: + type: string + - name: birthname + in: query + required: false + style: form + explode: true + schema: + type: string + - name: surname + in: query + required: false + style: form + explode: true + schema: + type: string + - name: dateOfBirth + in: query + required: false + style: form + explode: true + schema: + type: string + - name: customerStatus + in: query + required: false + style: form + explode: true + schema: + type: string + responses: + '200': + description: Successful retrieved a customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/getCustomerProfile' + examples: + fullCustomerProfile: + value: + customerProfileId: 1 + customerNumber: 1000001 + debtorNumber: TEST001 + vascustomerNumber: CST005 + debtorStateId: 1 + customerPreference: + languageId: 1 + customerStatus: + - name: active + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: '2022-08-05 15:01:00.000' + - name: blocked + fromInclusive: '2022-08-05 15:01:00.000' + toInclusive: null + person: + birthname: Pieter + surname: De valen + prefix: dhr + suffix: De + dateOfBirth: '2002-10-29' + emailAddress: TEST@HTM.NL + address: + - addressId: 1 + street: mystreet + houseNumber: 1 + houseNumberSuffix: null + postalCode: 0000AA + city: Den Haag + country: NL + isPreferred: true + addressType: Office + - addressId: 2 + street: mystreet 33 + houseNumber: 1 + houseNumberSuffix: null + postalCode: 4455CA + city: Den BOSCH + country: NL + isPreferred: true + addressType: Office + phone: + - phoneId: 1 + number: '3112345678' + countryCode: NL + phoneType: TestNaam + isPreferred: true + - phoneId: 2 + number: '333225588' + countryCode: ES + phoneType: TestNaam + isPreferred: false + ovChipCard: + - ovChipCardId: 1 + chipCardNumber: 1234123412341234 + validUntil: '2023-01-01' + alias: alias + - ovChipCardId: 2 + chipCardNumber: 1234123412341235 + validUntil: '2025-01-01' + alias: alias + ovPayToken: + - ovPayTokenId: 126 + tokenTypeId: 1 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 1 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + - ovPayTokenId: 127 + tokenTypeId: 1 + xTat: hhe2830283 + xBot: jdhd828033 + alias: alias + lastDigits: '5674' + ovpasNumber: OV34568 + tokenStatusId: 1 + expirationDate: '2024-04-20T17:05:52.000+02:00' + replacedByTokenId: 2 + audit: + - auditTrailId: 1 + customerProfileId: 1 + action: insert + user: user + timestamp: '2023-10-20T17:05:52.000+02:00' + correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 + minimumCustomerProfile: + value: + customerNumber: 1000008 + debtorNumber: null + debtorStateId: null + vascustomerNumber: null + customerPreference: + languageId: 1 + customerStatus: + - name: active + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: null + person: + birthname: null + surname: null + prefix: null + suffix: null + dateOfBirth: null + emailAddress: TEST@TEST1.NL + address: [] + phone: [] + ovChipCard: [] + ovPayToken: [] + audit: [] + missingPersonDetailsCustomerProfile: + value: + emailAddress: TEST04@HTM.NL + customerNumber: 1000005 + debtorNumber: TEST004 + debtorStateId: 1 + vascustomerNumber: CST008 + customerPreference: + languageId: 1 + customerStatus: + - name: inactive + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: null + person: + birthname: Sophie + surname: Haardenburg + prefix: Mw + suffix: null + dateOfBirth: '1955-09-05' + emailAddress: TEST@TEST1.NL + address: [] + phone: [] + ovChipCard: + - ovChipCardId: 1 + chipCardNumber: 1234123412341234 + validUntil: '2023-01-01' + alias: alias + - ovChipCardId: 2 + chipCardNumber: 1234123412341235 + validUntil: '2025-01-01' + alias: alias + ovPayToken: + - ovPayTokenId: 126 + tokenTypeId: 1 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 1 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + - ovPayTokenId: 127 + tokenTypeId: 1 + xTat: hhe2830283 + xBot: jdhd828033 + alias: alias + lastDigits: '5674' + ovpasNumber: OV34568 + tokenStatusId: 1 + expirationDate: '2024-04-20T17:05:52.000+02:00' + replacedByTokenId: 2 + audit: + - auditTrailId: 1 + customerProfileId: 1 + action: insert + user: user + timestamp: '2023-10-20T17:05:52.000+02:00' + correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + post: + tags: + - ABTCustomers + summary: Create a customer profile + description: >- + Create a customer profile in the ABT database with status ACTIVE and + debtorStatus Inactive with a start date based on the timestamp of this + post call. + + - Requested format for postal code: + - 0000AA + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfile' + examples: + minimumProfile: + value: {} + basicCustomerProfile: + value: + debtorStatusId: 2 + person: + birthname: Jan + surname: Jansen + emailAddress: j.jansen@hatseflats.nl + fullCustomerProfile: + value: + customerPreference: + languageId: 1 + debtorStatusId: 2 + person: + birthname: Jan + surname: Jansen + prefix: dhr + suffix: jr + dateOfBirth: '1970-01-01' + emailAddress: j.jansen@hatseflats.nl + addresses: + - street: Laan van Meerdervoort + houseNumber: 5 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: true + addressTypeId: 1 + - street: Beeklaan + houseNumber: 30 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: false + addressTypeId: 2 + phones: + - number: '6123456789' + countryCode: '0031' + phoneTypeId: 1 + isPreferred: true + - number: '7012345678' + countryCode: '0031' + phoneTypeId: 2 + isPreferred: false + required: true + responses: + '201': + description: Successful created a customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileCustomerNumberResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidPostalCodeFormatForAddressCountryNLError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter for country validation (NL). + description: >- + ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match + input string \"2500 AA\ + MissingRequiredParameterError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + object has missing required properties + ([\"addressTypeId\"]) + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"id\ + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + examples: + emailAddressAlreadyPresent: + value: + code: '409' + type: Conflict + message: emailAddress already exists. + description: '' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/customerpreferences: + patch: + tags: + - ABTCustomers + summary: Modify customer preference elements + description: Modify customer preference fields + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerPreferences' + examples: + PatchCustomerPreferences: + value: + customerPreference: + languageId: 2 + responses: + '202': + description: Successful modified the customer preferences + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerPreferencesResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"languageId\ + InvalidReferenceIdError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request: Update Or Delete failed as conflicted with + foreign Key constraint 'languageId' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}: + patch: + tags: + - ABTCustomers + summary: Modify customer profile elements + description: Modify customer profile fields + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerProfile' + examples: + PatchCustomerProfile: + value: + debtorStatusId: 2 + responses: + '202': + description: Successful modified the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerProfileResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"debtorStatusId\ + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/ovchipcards: + post: + tags: + - ABTCustomers + summary: Create a new OV chipcard for a customerProfile. + description: Create a new OV chipcard in the database for a given customer. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postOvChipCard' + examples: + postNewOvChipCard: + value: + ovChipCard: + chipCardNumber: 1234123412341234 + validUntil: '2024-01-01' + alias: alias + responses: + '201': + description: Successful created an OV chipcard + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileOvChipCardResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + chipCardNumberInvalidTooSmall: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + numeric instance is lower than the required minimum + (minimum: 1000000000000000, found: 999999999999999) + chipCardNumberInvalidTooLarge: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + numeric instance is greater than the required maximum + (maximum: 9999999999999999, found: 10000000000000000) + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/ovchipcards/{ovChipCardId}: + delete: + tags: + - ABTCustomers + summary: Delete a OV chipcard for a customerProfile. + description: Delete a OV chipcard in the database for a given customer. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: ovChipCardId + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/ovpaytokens: + get: + tags: + - ABTCustomers + summary: Get a OV paytoken for a customerProfile. + description: Get a new OV paytoken in the database for a given customer. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: ovPayTokenId + in: query + required: false + style: form + explode: false + schema: + type: integer + - name: xbot + in: query + required: false + style: form + explode: false + schema: + type: string + - name: xtat + in: query + required: false + style: form + explode: false + schema: + type: string + - name: ovPasNumber + in: query + required: false + style: form + explode: false + schema: + type: string + responses: + '200': + description: Successfully retrieved an OVPay token + content: + application/json: + schema: + $ref: '#/components/schemas/getCustomerProfileOvPayTokenResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + post: + tags: + - ABTCustomers + summary: Create a new OV paytoken for a customerProfile. + description: Create a new OV paytoken in the database for a given customer. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postOvPayToken' + examples: + postNewOvPayTokenCard: + value: + ovPayToken: + tokenTypeId: 2 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 2 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + responses: + '201': + description: Successful created an OVPay token + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileOvPayTokenResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/statuses: + post: + tags: + - ABTCustomers + summary: Create a new customer status for a customerProfile. + description: >- + Create a new customer status for a customerProfile. The call will do the + following in the given order: a new status will be created with + fromInclusive equal to the time of the call. ToInclusive in the old, now + historic, status will also be set equal to the time of the call, deeming + it 'not currently active'. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerStatus' + examples: + postNewStatus: + value: + customerStatus: + name: blocked + responses: + '201': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/defaultCustomerProfileResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '422': + description: Unprocessable entity + content: + application/json: + schema: + $ref: '#/components/schemas/422Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/persons: + patch: + tags: + - ABTCustomers + summary: Partial update customer person details + description: Partial update a customer person details in the ABT database + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchPerson' + examples: + updatePerson: + value: + person: + birthname: Jan + surname: Jansen + prefix: dhr + suffix: jr + dateOfBirth: '1970-01-01' + emailAddress: TEST@TEST1.NL + updatePersonBirthname: + value: + person: + birthname: Jan + updatePersonSurname: + value: + person: + surname: Jansen + updatePersonPrefix: + value: + person: + prefix: dhr + updatePersonSuffix: + value: + person: + suffix: jr + updatePersonDateOfBirth: + value: + person: + dateOfBirth: '1970-01-01' + updatePersonEmailAddress: + value: + person: + emailAddress: TEST@TEST1.NL + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/defaultCustomerProfileResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/ovpaytokens/{ovPayTokenId}: + delete: + tags: + - ABTCustomers + summary: Delete a OV PayToken for a customerProfile. + description: Delete a OV PayToken in the database for a given customer. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: ovPayTokenId + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + patch: + tags: + - ABTCustomers + summary: Partial update customer ovpaytokens + description: Partial update of a customer ovpaytokens in the ABT database + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: ovPayTokenId + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchOvPayToken' + examples: + updateOvPayTokens: + value: + ovPayToken: + tokenTypeId: 2 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 2 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + updateOvPayTokenTypeId: + value: + ovPayToken: + tokenTypeId: 2 + updateOvPayTokenXTat: + value: + ovPayToken: + xTat: twioq73033 + updateOvPayTokenXBot: + value: + ovPayToken: + xBot: hjihwqui27 + updateOvPayTokenAlias: + value: + ovPayToken: + alias: alias + updateOvPayTokenLastDigits: + value: + ovPayToken: + lastDigits: '5678' + updateOvPayTokenOvpasNumber: + value: + ovPayToken: + ovpasNumber: OV34567 + updateOvPayTokenStatusId: + value: + ovPayToken: + tokenStatusId: 1 + updateOvPayTokenExpirationDate: + value: + ovPayToken: + expirationDate: '2025-04-20T17:05:52.000+02:00' + updateOvPayTokenReplacedByTokenId: + value: + ovPayToken: + replacedByTokenId: 1 + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/defaultCustomerProfileResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/addresses: + post: + tags: + - ABTCustomers + summary: Create a single customer address + description: Create a single customer address in the ABT database + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postAddress' + examples: + addFullAddress: + value: + address: + street: Laan van Meerdervoort + houseNumber: 5 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: true + addressTypeId: 1 + addMinimumAddress: + value: + address: + street: Laan van Meerdervoort + houseNumber: 5 + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: true + addressTypeId: 1 + responses: + '201': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileAddressResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidPostalCodeFormatForAddressCountryNLError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter for country validation (NL). + description: >- + ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match + input string \"2500 AA\ + MissingRequiredParameterError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + object has missing required properties + ([\"addressTypeId\"]) + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"id\ + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/phones: + post: + tags: + - ABTCustomers + summary: Create a single customer phonenumber + description: Create a single customer phonenumber in the ABT database + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postPhone' + examples: + addPhone: + value: + phone: + number: '06123456789' + countryCode: '0031' + phoneTypeId: 1 + isPreferred: true + responses: + '201': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfilePhoneResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/addresses/{addressId}: + delete: + tags: + - ABTCustomers + summary: Delete a customer address + description: Delete a customer address from the ABT database + parameters: + - name: addressId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + patch: + tags: + - ABTCustomers + summary: Partial update customer addresses + description: Partial update a customer address in the ABT database + parameters: + - name: addressId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchAddress' + examples: + updateAddress: + value: + address: + street: Laan van Meerdervoort + houseNumber: 5 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + addressTypeId: 2 + isPreferred: true + updateStreet: + value: + address: + street: Nieuwe Parklaan + updateHouseNumber: + value: + address: + houseNumber: 10 + updateHouseNumberSuffix: + value: + address: + houseNumberSuffix: C + updatePostalCode: + value: + address: + postalCode: 2597LG + updateCity: + value: + address: + city: Amsterdam + updateCountry: + value: + address: + country: UK + updateAddressTypeId: + value: + address: + addressTypeId: 3 + updateIsPreferred: + value: + address: + isPreferred: false + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/addressPatchOKResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidPostalCodeFormatForAddressCountryNLError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter for country validation (NL). + description: >- + ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match + input string \"2500 AA\ + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"id\ + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customers/{customerNumber}/phones/{phoneId}: + delete: + tags: + - ABTCustomers + summary: Delete a customer phone + description: Delete a customer phone from the ABT database + parameters: + - name: phoneId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + patch: + tags: + - ABTCustomers + summary: Partial update customer phones + description: Partial update a customer phone in the ABT database + parameters: + - name: phoneId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchPhone' + examples: + updatePhone: + value: + phone: + number: '06123456789' + countryCode: '0031' + phoneTypeId: 2 + isPreferred: true + updatePhoneNumber: + value: + phone: + number: '06987654321' + updateCountryCode: + value: + phone: + countryCode: '0044' + updatePhoneTypeId: + value: + phone: + phoneTypeId: 2 + updateisPreferred: + value: + phone: + isPreferred: true + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/phonePatchOKResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers: + get: + tags: + - ABTCustomersSelfService + summary: Search for customer profile + description: Search for a customer profile based on the sub element from JWT + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + responses: + '200': + description: Successful retrieved a customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/getCustomerProfile' + examples: + fullCustomerProfile: + value: + customerNumber: 1000001 + debtorNumber: TEST001 + vascustomerNumber: CST005 + debtorStateId: 1 + customerPreference: + languageId: 1 + customerStatus: + - name: active + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: '2022-08-05 15:01:00.000' + - name: blocked + fromInclusive: '2022-08-05 15:01:00.000' + toInclusive: null + person: + birthname: Pieter + surname: De valen + prefix: dhr + suffix: De + dateOfBirth: '2002-10-29' + emailAddress: TEST@HTM.NL + address: + - addressId: 1 + street: mystreet + houseNumber: 1 + houseNumberSuffix: null + postalCode: 0000AA + city: Den Haag + country: NL + isPreferred: true + addressType: Office + - addressId: 2 + street: mystreet 33 + houseNumber: 1 + houseNumberSuffix: null + postalCode: 4455CA + city: Den BOSCH + country: NL + isPreferred: true + addressType: Office + phone: + - phoneId: 1 + number: '3112345678' + countryCode: NL + phoneType: TestNaam + isPreferred: true + - phoneId: 2 + number: '333225588' + countryCode: ES + phoneType: TestNaam + isPreferred: false + ovChipCard: + - ovChipCardId: 1 + chipCardNumber: 1234123412341234 + validUntil: '2023-01-01' + alias: alias + - ovChipCardId: 2 + chipCardNumber: 1234123412341235 + validUntil: '2025-01-01' + alias: alias + ovPayToken: + - ovPayTokenId: 126 + tokenTypeId: 1 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 1 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + - ovPayTokenId: 127 + tokenTypeId: 1 + xTat: hhe2830283 + xBot: jdhd828033 + alias: alias + lastDigits: '5674' + ovpasNumber: OV34568 + tokenStatusId: 1 + expirationDate: '2024-04-20T17:05:52.000+02:00' + replacedByTokenId: 2 + audit: + - auditTrailId: 1 + customerProfileId: 1 + action: insert + user: user + timestamp: '2023-10-20T17:05:52.000+02:00' + correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 + minimumCustomerProfile: + value: + customerNumber: 1000008 + debtorNumber: null + debtorStateId: null + vascustomerNumber: null + customerPreference: + languageId: 1 + customerStatus: + - name: active + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: null + person: + birthname: null + surname: null + prefix: null + suffix: null + dateOfBirth: null + emailAddress: TEST@TEST1.NL + address: [] + phone: [] + ovChipCard: [] + ovPayToken: [] + audit: [] + missingPersonDetailsCustomerProfile: + value: + emailAddress: TEST04@HTM.NL + customerNumber: 1000005 + debtorNumber: TEST004 + debtorStateId: 1 + vascustomerNumber: CST008 + customerPreference: + languageId: 1 + customerStatus: + - name: inactive + fromInclusive: '2022-08-04 15:01:00.000' + toInclusive: null + person: + birthname: Sophie + surname: Haardenburg + prefix: Mw + suffix: null + dateOfBirth: '1955-09-05' + emailAddress: TEST@TEST1.NL + address: [] + phone: [] + ovChipCard: + - ovChipCardId: 1 + chipCardNumber: 1234123412341234 + validUntil: '2023-01-01' + alias: alias + - ovChipCardId: 2 + chipCardNumber: 1234123412341235 + validUntil: '2025-01-01' + alias: alias + ovPayToken: + - ovPayTokenId: 126 + tokenTypeId: 1 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 1 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + - ovPayTokenId: 127 + tokenTypeId: 1 + xTat: hhe2830283 + xBot: jdhd828033 + alias: alias + lastDigits: '5674' + ovpasNumber: OV34568 + tokenStatusId: 1 + expirationDate: '2024-04-20T17:05:52.000+02:00' + replacedByTokenId: 2 + audit: + - auditTrailId: 1 + customerProfileId: 1 + action: insert + user: user + timestamp: '2023-10-20T17:05:52.000+02:00' + correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + post: + tags: + - ABTCustomersSelfService + summary: Create for customer profile + description: Create a customer profile based on the sub element from JWT + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfile' + examples: + minimumProfile: + value: {} + basicCustomerProfile: + value: + debtorStatusId: 2 + person: + birthname: Jan + surname: Jansen + emailAddress: j.jansen@hatseflats.nl + fullCustomerProfile: + value: + customerPreference: + languageId: 1 + debtorStatusId: 2 + person: + birthname: Jan + surname: Jansen + prefix: dhr + suffix: jr + dateOfBirth: '1970-01-01' + emailAddress: j.jansen@hatseflats.nl + addresses: + - street: Laan van Meerdervoort + houseNumber: 5 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: true + addressTypeId: 1 + - street: Beeklaan + houseNumber: 30 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: false + addressTypeId: 2 + phones: + - number: '6123456789' + countryCode: '0031' + phoneTypeId: 1 + isPreferred: true + - number: '7012345678' + countryCode: '0031' + phoneTypeId: 2 + isPreferred: false + required: true + responses: + '201': + description: Successful created a customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileCustomerNumberResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + examples: + emailAddressAlreadyPresent: + value: + code: '409' + type: Conflict + message: emailAddress already exists. + description: '' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + /selfservice/customers/{customerNumber}: + patch: + tags: + - ABTCustomersSelfService + summary: Modify customer profile elements + description: Modify customer profile fields + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerProfile' + examples: + PatchCustomerProfile: + value: + debtorStatusId: 2 + responses: + '202': + description: Successful modified the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerProfileResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"debtorStatusId\ + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/customerpreferences: + patch: + tags: + - ABTCustomersSelfService + summary: Modify customer preference elements + description: Modify customer preference fields + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerPreferences' + examples: + PatchCustomerPreferences: + value: + customerPreference: + languageId: 2 + responses: + '202': + description: Successful modified the customer preferences + content: + application/json: + schema: + $ref: '#/components/schemas/patchCustomerPreferencesResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"languageId\ + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/ovchipcards: + post: + tags: + - ABTCustomersSelfService + summary: Create a new OV chipcard for a customerProfile. + description: Create a new OV chipcard in the database for a given customer. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postOvChipCard' + examples: + postNewOvChipCard: + value: + ovChipCard: + chipCardNumber: 1234123412341234 + validUntil: '2024-01-01' + alias: alias + responses: + '201': + description: Successful created an OV chipcard + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileOvChipCardResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + chipCardNumberInvalidTooSmall: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + numeric instance is lower than the required minimum + (minimum: 1000000000000000, found: 999999999999999) + chipCardNumberInvalidTooLarge: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + numeric instance is greater than the required maximum + (maximum: 9999999999999999, found: 10000000000000000) + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/ovchipcards/{ovChipCardId}: + delete: + tags: + - ABTCustomersSelfService + summary: Delete a OV chipcard for a customerProfile. + description: Delete a OV chipcard in the database for a given customer. + parameters: + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: ovChipCardId + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/ovpaytokens: + post: + tags: + - ABTCustomersSelfService + summary: Create a new OV paytoken for a customerProfile. + description: Create a new OV paytoken in the database for a given customer. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postOvPayToken' + examples: + postNewOvPayTokenCard: + value: + ovPayToken: + tokenTypeId: 2 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 2 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + responses: + '201': + description: Successful created an OV paytoken + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileOvPayTokenResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/statuses: + post: + tags: + - ABTCustomersSelfService + summary: Create a new customer status for a customerProfile. + description: >- + Create a new customer status for a customerProfile. The call will do the + following in the given order: a new status will be created with + fromInclusive equal to the time of the call. ToInclusive in the old, now + historic, status will also be set equal to the time of the call, deeming + it 'not currently active'. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerStatus' + examples: + postNewStatus: + value: + customerStatus: + name: blocked + responses: + '201': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileCustomerNumberResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '422': + description: Unprocessable entity + content: + application/json: + schema: + $ref: '#/components/schemas/422Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/persons: + patch: + tags: + - ABTCustomersSelfService + summary: Partial update customer person details + description: Partial update a customer person details in the ABT database + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchPerson' + examples: + updatePerson: + value: + person: + birthname: Jan + surname: Jansen + prefix: dhr + suffix: jr + dateOfBirth: '1970-01-01' + emailAddress: TEST@TEST1.NL + updatePersonBirthname: + value: + person: + birthname: Jan + updatePersonSurname: + value: + person: + surname: Jansen + updatePersonPrefix: + value: + person: + prefix: dhr + updatePersonSuffix: + value: + person: + suffix: jr + updatePersonDateOfBirth: + value: + person: + dateOfBirth: '1970-01-01' + updatePersonEmailAddress: + value: + person: + emailAddress: TEST@TEST1.NL + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/defaultCustomerProfileResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/ovpaytokens/{ovPayTokenId}: + delete: + tags: + - ABTCustomersSelfService + summary: Delete a OV PayToken for a customerProfile. + description: Delete a OV PayToken in the database for a given customer. + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: ovPayTokenId + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + patch: + tags: + - ABTCustomersSelfService + summary: Partial update customer ovpaytokens + description: Partial update of a customer ovpaytokens in the ABT database + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: ovPayTokenId + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchOvPayToken' + examples: + updateOvPayTokens: + value: + ovPayToken: + tokenTypeId: 2 + xTat: twioq73033 + xBot: hjihwqui27 + alias: alias + lastDigits: '5678' + ovpasNumber: OV34567 + tokenStatusId: 2 + expirationDate: '2025-04-20T17:05:52.000+02:00' + replacedByTokenId: 1 + updateOvPayTokenTypeId: + value: + ovPayToken: + tokenTypeId: 2 + updateOvPayTokenXTat: + value: + ovPayToken: + xTat: twioq73033 + updateOvPayTokenXBot: + value: + ovPayToken: + xBot: hjihwqui27 + updateOvPayTokenAlias: + value: + ovPayToken: + alias: alias + updateOvPayTokenLastDigits: + value: + ovPayToken: + lastDigits: '5678' + updateOvPayTokenOvpasNumber: + value: + ovPayToken: + ovpasNumber: OV34567 + updateOvPayTokenStatusId: + value: + ovPayToken: + tokenStatusId: 1 + updateOvPayTokenExpirationDate: + value: + ovPayToken: + expirationDate: '2025-04-20T17:05:52.000+02:00' + updateOvPayTokenReplacedByTokenId: + value: + ovPayToken: + replacedByTokenId: 1 + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/defaultCustomerProfileResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/addresses: + post: + tags: + - ABTCustomersSelfService + summary: Create a single customer address + description: Create a single customer address in the ABT database + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postAddress' + examples: + addFullAddress: + value: + address: + street: Laan van Meerdervoort + houseNumber: 5 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: true + addressTypeId: 1 + addMinimumAddress: + value: + address: + street: Laan van Meerdervoort + houseNumber: 5 + postalCode: 2500AA + city: Den Haag + country: NL + isPreferred: true + addressTypeId: 1 + responses: + '201': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfileAddressResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidPostalCodeFormatForAddressCountryNLError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter for country validation (NL). + description: >- + ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match + input string \"2500 AA\ + MissingRequiredParameterError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + object has missing required properties + ([\"addressTypeId\"]) + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"id\ + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/phones: + post: + tags: + - ABTCustomersSelfService + summary: Create a single customer phonenumber + description: Create a single customer phonenumber in the ABT database + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/postPhone' + examples: + addPhone: + value: + phone: + number: '06123456789' + countryCode: '0031' + phoneTypeId: 1 + isPreferred: true + responses: + '201': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/postCustomerProfilePhoneResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/addresses/{addressId}: + delete: + tags: + - ABTCustomersSelfService + summary: Delete a customer address + description: Delete a customer address from the ABT database + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: addressId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + patch: + tags: + - ABTCustomersSelfService + summary: Partial update customer addresses + description: Partial update a customer address in the ABT database + parameters: + - name: addressId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchAddress' + examples: + updateAddress: + value: + address: + street: Laan van Meerdervoort + houseNumber: 5 + houseNumberSuffix: B + postalCode: 2500AA + city: Den Haag + country: NL + addressTypeId: 2 + isPreferred: true + updateStreet: + value: + address: + street: Nieuwe Parklaan + updateHouseNumber: + value: + address: + houseNumber: 10 + updateHouseNumberSuffix: + value: + address: + houseNumberSuffix: C + updatePostalCode: + value: + address: + postalCode: 2597LG + updateCity: + value: + address: + city: Amsterdam + updateCountry: + value: + address: + country: UK + updateAddressTypeId: + value: + address: + addressTypeId: 3 + updateIsPreferred: + value: + address: + isPreferred: false + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/addressPatchOKResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + examples: + InvalidPostalCodeFormatForAddressCountryNLError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter for country validation (NL). + description: >- + ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match + input string \"2500 AA\ + InvalidDataTypeError: + value: + code: '400' + type: Bad Request - Input parameters + message: Invalid input parameter. + description: >- + Bad Request - please verify the value for the following + field \"id\ + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /selfservice/customers/{customerNumber}/phones/{phoneId}: + delete: + tags: + - ABTCustomersSelfService + summary: Delete a customer phone + description: Delete a customer phone from the ABT database + parameters: + - name: X-HTM-JWT-AUTH-HEADER + in: header + required: true + style: simple + explode: false + schema: + type: string + - name: phoneId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + responses: + '202': + description: Deleted record successfully + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + patch: + tags: + - ABTCustomersSelfService + summary: Partial update customer phones + description: Partial update a customer phone in the ABT database + parameters: + - name: phoneId + in: path + required: true + style: simple + explode: false + schema: + type: integer + - name: customerNumber + in: path + required: true + style: simple + explode: false + schema: + type: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/patchPhone' + examples: + updatePhone: + value: + phone: + number: '06123456789' + countryCode: '0031' + phoneTypeId: 2 + isPreferred: true + updatePhoneNumber: + value: + phone: + number: '06987654321' + updateCountryCode: + value: + phone: + countryCode: '0044' + updatePhoneTypeId: + value: + phone: + phoneTypeId: 2 + updateisPreferred: + value: + phone: + isPreferred: true + responses: + '202': + description: Successful updated the customer profile + content: + application/json: + schema: + $ref: '#/components/schemas/phonePatchOKResponse' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/409Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited +components: + schemas: + audit: + type: object + properties: + auditTrailId: + type: integer + customerProfileId: + type: integer + action: + type: string + user: + type: string + timestamp: + type: string + format: datetime + correlationId: + type: string + ovPayToken: + type: object + properties: + ovPayTokenId: + type: integer + tokenTypeId: + type: integer + xTat: + type: string + xBot: + type: string + alias: + type: string + lastDigits: + type: integer + ovpasNumber: + type: string + tokenStatusId: + type: integer + expirationDate: + type: string + replacedByTokenId: + type: integer + getOvChipCard: + type: object + properties: + ovChipCardId: + type: integer + chipCardNumber: + type: integer + validUntil: + type: string + format: date + alias: + type: string + getCustomerStatus: + type: object + properties: + name: + type: string + fromInclusive: + type: string + format: date + toInclusive: + type: string + format: date + getPerson: + type: object + properties: + birthname: + type: string + surname: + type: string + prefix: + type: string + suffix: + type: string + dateOfBirth: + type: string + format: date + emailAddress: + type: string + format: email + address: + type: array + items: + $ref: '#/components/schemas/getAddress' + phone: + type: array + items: + $ref: '#/components/schemas/getPhone' + getAddress: + type: object + properties: + addressId: + type: integer + street: + type: string + houseNumber: + type: integer + houseNumberSuffix: + type: string + postalCode: + type: string + city: + type: string + country: + type: string + isPreferred: + type: boolean + addressType: + type: string + getPhone: + type: object + properties: + phoneId: + type: integer + number: + type: string + countryCode: + type: string + phoneType: + type: string + isPreferred: + type: boolean + getCustomerPreference: + type: object + properties: + languageId: + type: integer + getCustomerProfileList: + type: object + properties: + Entries: + type: array + items: + $ref: '#/components/schemas/getCustomerProfile' + getCustomerProfile: + type: object + properties: + customerNumber: + type: integer + debtorNumber: + type: integer + debtorStateId: + type: integer + vascustomerNumber: + type: integer + customerPreference: + $ref: '#/components/schemas/getCustomerPreference' + customerStatus: + type: array + items: + $ref: '#/components/schemas/getCustomerStatus' + person: + $ref: '#/components/schemas/getPerson' + ovChipCard: + type: array + items: + $ref: '#/components/schemas/getOvChipCard' + ovPayToken: + type: array + items: + $ref: '#/components/schemas/ovPayToken' + audit: + type: array + items: + $ref: '#/components/schemas/audit' + directDebitMandatePostEntity: + required: + - billingInformationId + - created + - directDebitMandateTypeName + - mandateAddressId + - mandateReference + type: object + properties: + directDebitMandateTypeName: + type: string + billingInformationId: + type: integer + mandateAddressId: + type: integer + created: + type: string + mandateReference: + type: string + directDebitMandatePost: + type: object + properties: + directDebitMandate: + $ref: '#/components/schemas/directDebitMandatePostEntity' + directDebitMandatePatchEntity: + type: object + properties: + directDebitMandateTypeName: + type: string + billingInformationId: + type: integer + mandateAddressId: + type: integer + mandateReference: + type: string + mandateState: + type: string + enum: + - SIGNED + - CANCELLED + - PREPARED + directDebitMandatePatch: + type: object + properties: + directDebitMandate: + $ref: '#/components/schemas/directDebitMandatePatchEntity' + directDebitMandateGETEntity: + type: object + properties: + directDebitMandateId: + type: integer + directDebitMandateTypeId: + type: integer + billingInformationId: + type: integer + mandateAddressId: + type: integer + created: + type: string + mandateReference: + type: string + mandateState: + type: string + updateTimestamp: + type: string + billingInformationGETEntity: + required: + - alias + - ascription + - bic + - billingAddressId + - billingInformationId + - iban + - issuerCountry + - swift + type: object + properties: + billingInformationId: + type: integer + issuerCountry: + type: string + iban: + type: string + bic: + type: string + swift: + type: string + ascription: + type: string + alias: + type: string + billingAddressId: + type: integer + billingInformationPostEntity: + required: + - alias + - ascription + - billingAddressId + - iban + - issuerCountry + type: object + properties: + issuerCountry: + type: string + iban: + type: string + bic: + type: string + swift: + type: string + ascription: + type: string + alias: + type: string + billingAddressId: + type: integer + billingInformationPost: + type: object + properties: + billingInformation: + $ref: '#/components/schemas/billingInformationPostEntity' + billingInformationPatchEntity: + type: object + properties: + issuerCountry: + type: string + iban: + type: string + bic: + type: string + swift: + type: string + ascription: + type: string + alias: + type: string + billingAddressId: + type: integer + billingInformationPatch: + type: object + properties: + billingInformation: + $ref: '#/components/schemas/billingInformationPatchEntity' + getCustomerProfileFinancials: + type: object + properties: + customerNumber: + type: integer + billingInformation: + type: array + items: + $ref: '#/components/schemas/billingInformationGETEntity' + directDebitMandate: + type: array + items: + $ref: '#/components/schemas/directDebitMandateGETEntity' + customerPreferencesEntity: + type: object + properties: + languageId: + type: string + postCustomerProfile: + type: object + properties: + debtorStatusId: + type: integer + customerPreference: + $ref: '#/components/schemas/customerPreferencesEntity' + person: + $ref: '#/components/schemas/personEntity' + addresses: + type: array + items: + $ref: '#/components/schemas/addressPostEntity' + phones: + type: array + items: + $ref: '#/components/schemas/phonePostEntity' + postCustomerStatusEntity: + type: object + properties: + name: + type: string + postCustomerStatus: + type: object + properties: + customerStatus: + $ref: '#/components/schemas/postCustomerStatusEntity' + postOvChipCardEntity: + required: + - chipCardNumber + type: object + properties: + chipCardNumber: + type: integer + validUntil: + type: string + format: date + alias: + type: string + patchCustomerProfile: + type: object + properties: + debtorStatusId: + type: integer + patchCustomerPreferencesEntity: + type: object + properties: + languageId: + type: string + patchCustomerPreferences: + type: object + properties: + customerPreference: + $ref: '#/components/schemas/patchCustomerPreferencesEntity' + postOvChipCard: + type: object + properties: + ovChipCard: + $ref: '#/components/schemas/postOvChipCardEntity' + postOvPayToken: + required: + - alias + - lastDigits + - tokenTypeId + - xBot + - xTat + type: object + properties: + ovPayToken: + type: object + properties: + tokenTypeId: + type: string + xTat: + type: string + xBot: + type: string + alias: + type: string + lastDigits: + type: integer + ovpasNumber: + type: string + tokenStatusId: + type: integer + expirationDate: + type: string + replacedByTokenId: + type: integer + ovPayTokenEntity: + type: object + properties: + tokenTypeId: + type: string + xTat: + type: string + xBot: + type: string + alias: + type: string + lastDigits: + type: integer + ovpasNumber: + type: string + tokenStatusId: + type: integer + expirationDate: + type: string + replacedByTokenId: + type: integer + patchOvPayToken: + type: object + properties: + ovPayToken: + $ref: '#/components/schemas/ovPayTokenEntity' + patchPerson: + type: object + properties: + person: + $ref: '#/components/schemas/personEntity' + patchAddress: + type: object + properties: + address: + $ref: '#/components/schemas/addressPatchEntity' + patchPhone: + type: object + properties: + phone: + $ref: '#/components/schemas/phonePatchEntity' + postAddress: + type: object + properties: + address: + $ref: '#/components/schemas/addressPostEntity' + postPhone: + type: object + properties: + phone: + $ref: '#/components/schemas/phonePostEntity' + personEntity: + type: object + properties: + birthname: + type: string + surname: + type: string + prefix: + type: string + suffix: + type: string + dateOfBirth: + type: string + format: date + emailAddress: + type: string + addressPostEntity: + required: + - addressTypeId + - city + - country + - houseNumber + - postalCode + - street + type: object + properties: + street: + type: string + houseNumber: + type: integer + houseNumberSuffix: + type: string + postalCode: + type: string + city: + type: string + country: + type: string + isPreferred: + type: boolean + addressTypeId: + type: integer + addressPatchEntity: + type: object + properties: + street: + type: string + houseNumber: + type: integer + houseNumberSuffix: + type: string + postalCode: + type: string + city: + type: string + country: + type: string + addressTypeId: + type: integer + isPreferred: + type: boolean + phonePostEntity: + required: + - countryCode + - number + - phoneTypeId + type: object + properties: + number: + type: string + countryCode: + type: string + phoneTypeId: + type: integer + isPreferred: + type: boolean + phonePatchEntity: + type: object + properties: + number: + type: string + countryCode: + type: string + phoneTypeId: + type: integer + isPreferred: + type: boolean + defaultCustomerProfileResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + phonePatchOKResponse: + type: object + properties: + id: + type: integer + example: 1 + addressPatchOKResponse: + type: object + properties: + id: + type: integer + example: 1 + postCustomerProfileCustomerNumberResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + postCustomerProfileAddressResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + addressId: + type: integer + example: 1 + postCustomerProfilePhoneResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + phoneId: + type: integer + example: 1 + postCustomerProfileBillingInformationResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + billingInformationId: + type: integer + example: 1 + postCustomerProfileDirectDebitMandateResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + directDebitMandateId: + type: integer + example: 1 + postCustomerProfileOvChipCardResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + ovChipCardId: + type: integer + example: 1 + patchCustomerProfileResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + patchCustomerPreferencesResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + ovPayTokenGetEntity: + type: object + properties: + ovPayTokenId: + type: integer + example: 1 + tokenTypeId: + type: integer + example: 1 + xTat: + type: string + example: 0044831b-8e80c-4f82-r989a-8d85ee1996 + xBot: + type: string + example: 0044831b-8e80c-4f82-r989a-8d85ee1996 + lastDigits: + type: string + example: '0001' + ovpasNumber: + type: integer + example: 1 + alias: + type: string + example: alias + tokenStatusId: + type: integer + expirationDate: + type: string + replacedByTokenId: + type: integer + getCustomerProfileOvPayTokenResponse: + type: object + properties: + ovPayToken: + type: array + items: + $ref: '#/components/schemas/ovPayTokenGetEntity' + postCustomerProfileOvPayTokenResponse: + type: object + properties: + ovPaytoken: + type: object + example: 10000001 + ovPayTokenId: + type: integer + example: 1 + patchCustomerProfileCustomerNumberResponse: + type: object + properties: + customerNumber: + type: integer + example: 10000001 + 400Response: + type: object + properties: + code: + type: string + example: '400' + type: + type: string + message: + type: string + example: Bad Request + description: + type: string + example: >- + 'Bad Request: Input parameters missing! Please fill in at least 1 + valid input parameter. + 401Response: + type: object + properties: + code: + type: string + example: '900901' + type: + type: string + message: + type: string + example: Invalid Credentials + description: + type: string + example: >- + Invalid Credentials. Make sure you have provided the correct + security credentials + 404Response: + type: object + properties: + code: + type: string + example: '404' + type: + type: string + example: Status report + message: + type: string + example: Not Found + description: + type: string + example: The requested resource is not available. + 409Response: + type: object + properties: + code: + type: string + example: '409' + type: + type: string + example: Conflict + message: + type: string + example: Entry already exists + description: + type: string + 422Response: + type: object + properties: + code: + type: string + example: '422' + type: + type: string + example: Unprocessable entity + message: + type: string + example: >- + Forbidden state transition requested! From Active to Cleared not + allowed. + description: + type: string + 500Response: + type: object + properties: + code: + type: string + example: '500' + type: + type: string + message: + type: string + example: Internal Server Error + description: + type: string + securitySchemes: + default: + type: oauth2 + flows: + implicit: + authorizationUrl: https://services.acc.api.htm.nl/authorize + scopes: {} diff --git a/src/openapi/customers/customers_reference-crud.yaml b/src/openapi/customers/customers_reference-crud.yaml new file mode 100644 index 0000000..ffb2500 --- /dev/null +++ b/src/openapi/customers/customers_reference-crud.yaml @@ -0,0 +1,1047 @@ +openapi: 3.0.1 +info: + title: ABTCustomerReference + version: '1.0' +servers: + - url: https://services.dev.api.htm.nl/abt/customerreference/1.0 + - url: http://services.dev.api.htm.nl/abt/customerreference/1.0 +security: + - default: [] +tags: + - name: ABTCustomerReference +paths: + /directdebitmandatetype: + get: + tags: + - ABTCustomerReference + summary: List of direct debit mandate types + description: gives list of direct debit mandate types + parameters: [] + responses: + '200': + description: Successful retrieved list of direct debit mandate types + content: + application/json: + schema: + $ref: '#/components/schemas/directDebitMandateTypes' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /phonetype: + get: + tags: + - ABTCustomerReference + summary: List of phone types + description: gives list of phone types + parameters: [] + responses: + '200': + description: Successful retrieved list of phoneTypes + content: + application/json: + schema: + $ref: '#/components/schemas/phoneTypes' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + post: + tags: + - ABTCustomerReference + summary: Create a phone type + description: Create a phone type with a specific value + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/phoneType' + required: true + responses: + '201': + description: Successful created a new phone type + content: + application/json: + schema: + type: object + properties: + id: + type: integer + example: 1 + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /phonetype/{phoneTypeId}: + put: + tags: + - ABTCustomerReference + summary: Update a phone type + description: Update an existing phone type with a specific value + parameters: + - name: phoneTypeId + in: path + required: true + style: simple + explode: false + schema: + type: integer + format: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/phoneType' + required: true + responses: + '202': + description: Successful updated an existing a phone type + content: + application/json: + schema: + type: object + properties: + id: + type: integer + example: 1 + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + delete: + tags: + - ABTCustomerReference + summary: Remove a phone type + description: Remove an existing phone type with a specific value + parameters: + - name: phoneTypeId + in: path + required: true + style: simple + explode: false + schema: + type: integer + format: integer + responses: + '202': + description: Successful removed a phone type + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/404ResponseId' + - $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /addresstype: + get: + tags: + - ABTCustomerReference + summary: List of address types + description: gives list of address types + parameters: [] + responses: + '200': + description: Successful retrieved list of addressTypes + content: + application/json: + schema: + $ref: '#/components/schemas/addressTypes' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + post: + tags: + - ABTCustomerReference + summary: Create a address type + description: Create a address type with a specific value + parameters: [] + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/addressType' + required: true + responses: + '201': + description: Successful created a new address type + content: + application/json: + schema: + type: object + properties: + id: + type: integer + example: 1 + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /addresstype/{addressTypeId}: + put: + tags: + - ABTCustomerReference + summary: Update a address type + description: Update an existing address type with a specific value + parameters: + - name: addressTypeId + in: path + required: true + style: simple + explode: false + schema: + type: integer + format: integer + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/addressType' + required: true + responses: + '202': + description: Successful updated an existing a address type + content: + application/json: + schema: + type: object + properties: + id: + type: integer + example: 1 + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + delete: + tags: + - ABTCustomerReference + summary: Remove a address type + description: Remove an existing address type with a specific value + parameters: + - name: addressTypeId + in: path + required: true + style: simple + explode: false + schema: + type: integer + format: integer + responses: + '202': + description: Successful removed a address type + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/404ResponseId' + - $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customerstatus: + get: + tags: + - ABTCustomerReference + summary: List of customer status + description: gives list of customer status + parameters: [] + responses: + '200': + description: Successful retrieved list of customer status + content: + application/json: + schema: + $ref: '#/components/schemas/customerStatus' + example: + Entries: + - customerStatusId: 1 + name: Inactive + - customerStatusId: 2 + name: Active + - customerStatusId: 3 + name: Blocked + - customerStatusId: 4 + name: Frozen + - customerStatusId: 5 + name: Cleared + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /tokentype: + get: + tags: + - ABTCustomerReference + summary: List of token types + description: gives list of token types + parameters: [] + responses: + '200': + description: Successful retrieved list of customer status + content: + application/json: + schema: + $ref: '#/components/schemas/tokenType' + example: + Entries: + - tokenTypeId: 1 + name: Debit card + - tokenTypeId: 2 + name: Credit card + - tokenTypeId: 3 + name: OVPas physical + - tokenTypeId: 4 + name: OVPas digital + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /customerreferences: + get: + tags: + - ABTCustomerReference + summary: List of all possible customer reference values + description: gives list of all possible customer reference values availbale + parameters: [] + responses: + '200': + description: Successful retrieved list of all possible customer reference values + content: + application/json: + schema: + allOf: + - $ref: '#/components/schemas/customerReferences' + example: + Entries: + phoneTypes: + - name: mobile + id: 1 + - name: fixed line + id: 2 + addressTypes: + - name: home + id: 1 + - name: office + id: 2 + customerStatuses: + - name: active + id: 1 + - name: blocked + id: 2 + - name: inactive + id: 3 + - name: new + id: 4 + tokenTypes: + - name: Debit card + id: 1 + - name: Credit card + id: 2 + - name: OVPas physical + id: 3 + - name: OVPas digital + id: 4 + directDebitMandateTypes: + - name: Paper Contract + id: 1 + - name: PIN transaction + id: 2 + tokenStatuses: + - name: Expired + id: 1 + - name: Active + id: 2 + - name: Replaced + id: 3 + - name: Inactive + id: 4 + - name: Suspended + id: 5 + - name: Removed by customer + id: 6 + debtorStatuses: + - name: Inactive + id: 1 + - name: Active + id: 2 + languages: + - id: 1 + name: Nederlands + ietfCode: nl-Nl + iso639Code: nl + - id: 2 + name: English + ietfCode: en-US + iso639Code: en + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /tokenstatus: + get: + tags: + - ABTCustomerReference + summary: List of all token status + description: gives list of all token statuses + parameters: [] + responses: + '200': + description: Successful retrieved list of customer status + content: + application/json: + schema: + $ref: '#/components/schemas/language' + example: + Entries: + - tokenStatusId: 1 + name: Expired + - tokenStatusId: 2 + name: Active + - tokenStatusId: 3 + name: Replaced + - tokenStatusId: 4 + name: Inactive + - tokenStatusId: 5 + name: Suspended + - tokenStatusId: 6 + name: Removed by customer + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /language: + get: + tags: + - ABTCustomerReference + summary: List of all languages + description: gives list of all languages + parameters: [] + responses: + '200': + description: Successful retrieved list of languages + content: + application/json: + schema: + $ref: '#/components/schemas/language' + example: + Entries: + - languageId: 1 + name: Expired + ietfCode: nl-NL + iso639Code: nl + - languageId: 2 + name: Expired + ietfCode: en-US + iso639Code: en + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited + /debtorstatus: + get: + tags: + - ABTCustomerReference + summary: List of all debtorstatuses + description: gives list of all debtorstatuses + parameters: [] + responses: + '200': + description: Successful retrieved list of debtorstatuses + content: + application/json: + schema: + $ref: '#/components/schemas/tokenStatus' + example: + Entries: + - debtorStatusId: 1 + name: Inactive + - debtorStatusId: 2 + name: Active + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/400Response' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/401Response' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/404Response' + '500': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/500Response' + security: + - default: [] + x-auth-type: Application & Application User + x-throttling-tier: Unlimited +components: + schemas: + directDebitMandateTypeList: + type: array + items: + properties: + directDebitMandateTypeId: + type: integer + example: 1 + name: + type: string + example: name + directDebitMandateType: + properties: + name: + type: string + example: name + id: + type: integer + example: 1 + directDebitMandateTypes: + type: object + properties: + Entries: + $ref: '#/components/schemas/directDebitMandateTypeList' + phoneType: + properties: + name: + type: string + example: name + phoneTypeIdList: + type: array + items: + properties: + phoneTypeId: + type: integer + example: 123 + name: + type: string + example: name + phoneTypes: + type: object + properties: + Entries: + $ref: '#/components/schemas/phoneTypeIdList' + addressType: + properties: + name: + type: string + example: name + addressTypeIdList: + type: array + items: + properties: + addressTypeId: + type: integer + example: 123 + name: + type: string + example: name + addressTypes: + type: object + properties: + Entries: + $ref: '#/components/schemas/addressTypeIdList' + customerStatuses: + type: object + properties: + Entries: + $ref: '#/components/schemas/customerStatusIdList' + customerStatusIdList: + type: array + items: + properties: + customerStatusId: + type: integer + name: + type: string + customerStatus: + properties: + name: + type: string + example: name + tokenTypes: + type: object + properties: + Entries: + $ref: '#/components/schemas/customerStatusIdList' + tokenTypeIdList: + type: array + items: + properties: + tokenTypeId: + type: integer + name: + type: string + tokenType: + properties: + name: + type: string + example: name + tokenStatuses: + type: object + properties: + Entries: + $ref: '#/components/schemas/customerStatusIdList' + tokenStatusIdList: + type: array + items: + properties: + tokenStatusId: + type: integer + name: + type: string + tokenStatus: + properties: + tokenStatusId: + type: integer + example: 1 + name: + type: string + example: name + debtorStatus: + properties: + debtorStatusId: + type: integer + example: 1 + name: + type: string + example: name + language: + properties: + languageId: + type: integer + example: 1 + name: + type: string + example: name + ietfCode: + type: string + example: nl-NL + iso639Code: + type: string + example: nl + customerReferences: + type: object + properties: + Entries: + oneOf: + - $ref: '#/components/schemas/addressType' + - $ref: '#/components/schemas/phoneType' + - $ref: '#/components/schemas/customerStatus' + - $ref: '#/components/schemas/tokenType' + - $ref: '#/components/schemas/directDebitMandateType' + - $ref: '#/components/schemas/tokenStatus' + 400Response: + type: object + properties: + code: + type: string + example: '400' + type: + type: string + message: + type: string + example: Bad Request + description: + type: string + example: '''2023-02-01 00:00:00'' is not a valid Datetime' + 401Response: + type: object + properties: + code: + type: string + example: '900901' + type: + type: string + message: + type: string + example: Invalid Credentials + description: + type: string + example: >- + Invalid Credentials. Make sure you have provided the correct + security credentials + 404Response: + type: object + properties: + code: + type: string + example: '404' + type: + type: string + example: Status report + message: + type: string + example: Not Found + description: + type: string + example: The requested resource is not available. + 404ResponseId: + type: object + properties: + error: + type: string + example: 'No record found for id: 5' + 500Response: + type: object + properties: + code: + type: string + example: '500' + type: + type: string + message: + type: string + example: Internal Server Error + description: + type: string + securitySchemes: + default: + type: oauth2 + flows: + implicit: + authorizationUrl: https://services.dev.api.htm.nl/authorize + scopes: {} From 107d5fac84550306126102fa19889b636b18c6e7 Mon Sep 17 00:00:00 2001 From: "b.boterman@htm.nl" Date: Tue, 3 Dec 2024 16:48:54 +0100 Subject: [PATCH 10/11] OVPAY-108 Added /orders endpoint for SE. --- src/openapi/orders/service_engine_orders.yaml | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) diff --git a/src/openapi/orders/service_engine_orders.yaml b/src/openapi/orders/service_engine_orders.yaml index 31c4e6b..dbee45f 100644 --- a/src/openapi/orders/service_engine_orders.yaml +++ b/src/openapi/orders/service_engine_orders.yaml @@ -715,6 +715,139 @@ paths: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). + get: + parameters: + - in: query + name: orderId + schema: + type: string + format: uuid + example: afce35b2-1dff-4ace-98d0-4b9ac405c87d + description: The order id. + - in: query + name: orderNumber + schema: + type: string + example: "ORD123456" + description: The order number. + - in: query + name: externalOrderId + schema: + type: string + example: 7bef22f6-70a3-4655-bc2a-c40c61581b32 + description: The external order id. + - in: query + name: customerProfileId + schema: + type: integer + example: 42 + description: The customer profile id. + - in: query + name: xTat + schema: + type: string + example: 7208e73e-87a6-46d9-bb6d-867ffc460c9b + description: xTat used in order fulfillment. Note that this is a joined parameter via PurchasedProduct. + tags: + - Order Retrieval v2.1 + summary: Find orders. + description: Find orders. + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + example: + { + "orders": + [ + { + "orderId": "afce35b2-1dff-4ace-98d0-4b9ac405c87d", + "externalOrderId": "bac3958b-804a-43e3-b5f7-0b0fffaae5b7", + "orderNumber": "123456", + "customerProfileId": 42, + "totalAmount": 121, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "language": + { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl", + }, + "billingAddressId": 1, + "shippingAddressId": 1, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatus": + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": + { "orderStatusId": 4, "name": "paid" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order succesvol betaald", + }, + "payments": + [ + { + "createdOn": "2024-03-22T09:00:00", + "amountDebit": 121, + "paymentMethodId": 1, + "touchPointId": 1, + "isRefund": false, + "htmPaymentReference": "HTM-1234", + "pspPaymentReference": "Buckaroo-1234", + "paymentStatuses": + [ + { + "createdOn": "2024-03-22T09:00:00", + "statusCode": "190", + "statusDescription": "Success", + "statusSubCode": "S001", + "statusSubDescription": "PaymentSuccessFul", + }, + ], + "mandateInput": + { + "directDebitMandateTypeId": 1, + "createdOn": "2024-03-22T09:00:00", + "bic": "RABONL2U", + "iban": "NL44RABO0123456789", + "ascription": "J. de Vries", + "place": "Den Haag", + }, + }, + ], + "_links": + { + "self": + { + "href": "https://api.example.com/items/1", + "method": "GET", + "templated": true, + }, + }, + }, + ], + "_links": + { + "self": + { + "href": "https://api.example.com/items", + "method": "GET", + "templated": true, + }, + }, + "href": "string", + } post: tags: - Order Creation v2.1 From 5c83fff7bf08ebd7f58f08116786151a4c5893d1 Mon Sep 17 00:00:00 2001 From: Max Martens Date: Wed, 4 Dec 2024 16:32:34 +0100 Subject: [PATCH 11/11] Java RabbitMQ POC project Ugly and hardcoded, as a POC should be --- src/java/rabbitmq-poc/.gitignore | 39 ++++++++ src/java/rabbitmq-poc/pom.xml | 49 ++++++++++ .../nl/ovpay/queue/DummyX509TrustManager.java | 40 +++++++++ .../src/main/java/nl/ovpay/queue/Helpers.java | 90 +++++++++++++++++++ .../java/nl/ovpay/queue/RabbitConnector.java | 68 ++++++++++++++ .../src/main/resources/log4j2.xml | 17 ++++ 6 files changed, 303 insertions(+) create mode 100644 src/java/rabbitmq-poc/.gitignore create mode 100644 src/java/rabbitmq-poc/pom.xml create mode 100644 src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/DummyX509TrustManager.java create mode 100644 src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/Helpers.java create mode 100644 src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/RabbitConnector.java create mode 100644 src/java/rabbitmq-poc/src/main/resources/log4j2.xml diff --git a/src/java/rabbitmq-poc/.gitignore b/src/java/rabbitmq-poc/.gitignore new file mode 100644 index 0000000..fc3f89c --- /dev/null +++ b/src/java/rabbitmq-poc/.gitignore @@ -0,0 +1,39 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/**/target/ +!**/src/test/**/target/ + +### IntelliJ IDEA ### +.idea +.idea/modules.xml +.idea/jarRepositories.xml +.idea/compiler.xml +.idea/libraries/ +*.iws +*.iml +*.ipr + +### Eclipse ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ +!**/src/main/**/build/ +!**/src/test/**/build/ + +### VS Code ### +.vscode/ + +### Mac OS ### +.DS_Store \ No newline at end of file diff --git a/src/java/rabbitmq-poc/pom.xml b/src/java/rabbitmq-poc/pom.xml new file mode 100644 index 0000000..ef24740 --- /dev/null +++ b/src/java/rabbitmq-poc/pom.xml @@ -0,0 +1,49 @@ + + 4.0.0 + nl.ovpay + rabbitmq + 1.0-SNAPSHOT + OVpay - RabbitMQ POC + + + com.rabbitmq + amqp-client + 5.23.0 + + + + + org.apache.logging.log4j + log4j-api + 2.23.1 + + + org.apache.logging.log4j + log4j-core + 2.23.1 + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.23.1 + + + org.json + json + 20240303 + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + 11 + 11 + + + + + diff --git a/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/DummyX509TrustManager.java b/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/DummyX509TrustManager.java new file mode 100644 index 0000000..aa92afc --- /dev/null +++ b/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/DummyX509TrustManager.java @@ -0,0 +1,40 @@ +package nl.ovpay.queue; + +import java.security.cert.X509Certificate; +import javax.net.ssl.TrustManager; +import javax.net.ssl.X509TrustManager; + +public final class DummyX509TrustManager implements X509TrustManager { + + private static DummyX509TrustManager INSTANCE; + + private DummyX509TrustManager() { + // prevent instantiation + } + + public static DummyX509TrustManager getInstance() { + if (INSTANCE == null) { + INSTANCE = new DummyX509TrustManager(); + } + return INSTANCE; + } + + public static TrustManager[] getDummyArray() { + if (INSTANCE == null) { + INSTANCE = new DummyX509TrustManager(); + } + return new TrustManager[] { INSTANCE }; + } + + public X509Certificate[] getAcceptedIssuers() { + return null; + } + + public void checkClientTrusted(X509Certificate[] certs, String authType) { + } + + public void checkServerTrusted(X509Certificate[] certs, String authType) { + } +} + + diff --git a/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/Helpers.java b/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/Helpers.java new file mode 100644 index 0000000..fce38e7 --- /dev/null +++ b/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/Helpers.java @@ -0,0 +1,90 @@ +package nl.ovpay.queue; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.net.HttpURLConnection; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.util.HashMap; +import java.util.Map; +import java.util.StringJoiner; +import javax.net.ssl.HttpsURLConnection; +import javax.net.ssl.SSLContext; + +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public final class Helpers { + + private static Logger LOGGER = LoggerFactory.getLogger(Helpers.class); + + public static String getAlertId(String string) throws IOException { + return new JSONObject(string).get("alertId").toString(); + } + + public static String getXbot(String string) throws IOException { + return new JSONObject(string).get("xbot").toString(); + } + + public static void getAlertDetails(String alertId, String xBot, String gboBearerToken) throws Exception { + SSLContext sc = SSLContext.getInstance("SSL"); + sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom()); + HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); + + + URL url = new URL("https://api.sbx.idbt.translink.nl/api/v3/id-media/tokens/xbot/" + xBot + "/alerts/" + alertId + "/details"); + URLConnection con = url.openConnection(); + HttpURLConnection http = (HttpURLConnection)con; + http.setRequestMethod("GET"); + http.setDoOutput(true); + http.setRequestProperty("Authorization", "Bearer " + gboBearerToken); + http.connect(); + + try(InputStream is = http.getInputStream()) { + String response = new String(is.readAllBytes(), StandardCharsets.UTF_8); + LOGGER.info("GBO API 8851 alert details response for xBOT " + xBot + ": \n" + new JSONObject(response).toString(2)); + } + } + + public static String getGboBearerToken() throws IOException, NoSuchAlgorithmException, KeyManagementException { + SSLContext sc = SSLContext.getInstance("SSL"); + sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom()); + HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory()); + + URL url = new URL("https://api.sbx.idbt.translink.nl/api/v3/auth/oauth2/token"); + URLConnection con = url.openConnection(); + HttpURLConnection http = (HttpURLConnection)con; + http.setRequestMethod("POST"); + http.setDoOutput(true); + + Map arguments = new HashMap<>(); + arguments.put("client_id", "HTM-auth-client"); + arguments.put("client_secret", "HTM-auth-827kJJ"); + arguments.put("grant_type", "client_credentials"); + StringJoiner sj = new StringJoiner("&"); + for(Map.Entry entry : arguments.entrySet()) + sj.add(URLEncoder.encode(entry.getKey(), "UTF-8") + "=" + + URLEncoder.encode(entry.getValue(), "UTF-8")); + byte[] out = sj.toString().getBytes(StandardCharsets.UTF_8); + int length = out.length; + + http.setFixedLengthStreamingMode(length); + http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8"); + http.connect(); + try(OutputStream os = http.getOutputStream()) { + os.write(out); + } + try(InputStream is = http.getInputStream()) { + String response = new String(is.readAllBytes(), StandardCharsets.UTF_8); + JSONObject json = new JSONObject(response); + LOGGER.info("Got GBO bearer token: " + json.get("access_token")); + return json.get("access_token").toString(); + } + } +} diff --git a/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/RabbitConnector.java b/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/RabbitConnector.java new file mode 100644 index 0000000..a408dc0 --- /dev/null +++ b/src/java/rabbitmq-poc/src/main/java/nl/ovpay/queue/RabbitConnector.java @@ -0,0 +1,68 @@ +package nl.ovpay.queue; + +import java.util.Map; + +import com.rabbitmq.client.AMQP; +import com.rabbitmq.client.Channel; +import com.rabbitmq.client.Connection; +import com.rabbitmq.client.ConnectionFactory; +import com.rabbitmq.client.DeliverCallback; +import com.rabbitmq.client.impl.ForgivingExceptionHandler; +import org.json.JSONObject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RabbitConnector { + + private static final Logger LOGGER = LoggerFactory.getLogger(RabbitConnector.class); + + public static void main(String[] args) throws Exception { + ConnectionFactory factory = new ConnectionFactory(); + factory.setVirtualHost("/"); + factory.setAutomaticRecoveryEnabled(true); + factory.setPort(443); + factory.setHost("not.sbx.idbt.translink.nl"); + factory.setUsername("BEID_3_ALERTS_nZs3"); + factory.setPassword("VyubhPnczKgTB2zJ"); + factory.useSslProtocol("TLSv1.2"); + factory.setExceptionHandler(new ForgivingExceptionHandler()); + Map configs = factory.getClientProperties(); + LOGGER.info("Client properties: \n" + new JSONObject(configs).toString(2)); + + Connection connection = factory.newConnection(); + Channel channel = connection.createChannel(); + DeliverCallback deliverCallback = initDeliverCallback(channel); + + AMQP.Queue.DeclareOk queue = channel.queueDeclarePassive("BEID_3.ALERTS"); + LOGGER.info( + "Declared queue: " + queue.getQueue() + ", consumer count: " + queue.getConsumerCount() + ", message count: " + + queue.getMessageCount()); + + // Second parameter controls autoAck - false = no autoAck = messages are only deleted from queue after consumer acknowledges them + channel.basicConsume(queue.getQueue(), false, deliverCallback, consumerTag -> {}); + LOGGER.info("Waiting for messages from the queue. To exit press CTRL+C"); + } + + private static DeliverCallback initDeliverCallback(Channel channel) { + return (consumerTag, delivery) -> { + final String message = new String(delivery.getBody(), "UTF-8"); + LOGGER.info("Received from message from the queue: \n " + new JSONObject(message).toString(2)); + + LOGGER.info("Acknowledging message with delivery tag: " + delivery.getEnvelope().getDeliveryTag()); + channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); + LOGGER.info("Successfully acknowledged message with delivery tag: " + delivery.getEnvelope().getDeliveryTag()); + + LOGGER.info("Getting alert details via GBO API 8851..."); + try { + String alertId = Helpers.getAlertId(message); + String xBot = Helpers.getXbot(message); + String gboBearerToken = Helpers.getGboBearerToken(); + + Helpers.getAlertDetails(alertId, xBot, gboBearerToken); + + } catch (Exception e) { + throw new RuntimeException(e); + } + }; + } +} diff --git a/src/java/rabbitmq-poc/src/main/resources/log4j2.xml b/src/java/rabbitmq-poc/src/main/resources/log4j2.xml new file mode 100644 index 0000000..47eb2d8 --- /dev/null +++ b/src/java/rabbitmq-poc/src/main/resources/log4j2.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + +