develop #38

Merged
bboterm merged 451 commits from develop into main 2025-11-19 14:28:14 +00:00
Showing only changes of commit 5ebc012ceb - Show all commits

View File

@ -1,15 +1,116 @@
openapi: "3.0.3" openapi: "3.0.3"
info: info:
title: ABT Customers CRUD APIs v2 title: ABT Customers CRUD APIs v2
version: "1.0" version: "2.0"
description: CRUD APIs for ABT Customer database. These are NOT the functional APIs from Service Engine. description: CRUD APIs for ABT Customer database. These are NOT the functional APIs from Service Engine.
servers: servers:
- url: https://api.integratielaag.nl - url: https://api.integratielaag.nl/abt/abtcustomers/2.0
paths: paths:
/customers: /customers:
post:
tags:
- Customer
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: "+31"
phoneTypeId: 1
isPreferred: true
- number: "7012345678"
countryCode: "+31"
phoneTypeId: 2
isPreferred: false
required: true
responses:
"201":
description: Successful created a customer profile
content:
application/json:
schema:
$ref: "#/components/schemas/postCustomerProfileResponse"
examples:
customerProfileCreated:
summary: customerProfileCreated
description: >-
Successfully created a customer profile
value:
customerProfileId: 1
customerNumber: 1000001
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
examples:
invalidDataTypeError:
summary: invalidDataTypeError
description: >-
The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
value:
type: https://htm.nl/api/v1/probs/bad-request
title: Your request contains an invalid datatype
detail: '''2023-02-01 00:00:00'' is not a valid Datetime'
instance: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
security:
- default: []
x-auth-type: Application & Application User
x-throttling-tier: Unlimited
get: get:
tags: tags:
- ABTCustomers - Customer
summary: Search customer profiles summary: Search customer profiles
description: >- description: >-
Search for all customer profile list in the ABT database matching given query parameters Search for all customer profile list in the ABT database matching given query parameters
@ -177,13 +278,16 @@ paths:
example: Mijn ING bankrekening example: Mijn ING bankrekening
responses: responses:
200: 200:
description: Successfully retrieved customer profile(s) description: Ok
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/getCustomerProfiles" $ref: "#/components/schemas/getCustomerProfiles"
examples: examples:
fullCustomerProfile: getCustomersMultiple:
summary: getCustomersMultiple
description: >-
Found multiple customer profiles matching the search parameters, does not return the financial details
value: value:
customers: customers:
- customerProfileId: 1 - customerProfileId: 1
@ -205,11 +309,6 @@ paths:
customerStatusId: 2 customerStatusId: 2
fromInclusive: "2022-08-04 15:01:00.000" fromInclusive: "2022-08-04 15:01:00.000"
toInclusive: "2022-08-05 15:01:00.000" toInclusive: "2022-08-05 15:01:00.000"
- customerStatus:
name: Blocked
customerStatusId: 3
fromInclusive: "2022-08-05 15:01:00.000"
toInclusive: null
person: person:
birthname: Pieter birthname: Pieter
surname: De valen surname: De valen
@ -323,6 +422,11 @@ paths:
name: Blocked name: Blocked
customerStatusId: 3 customerStatusId: 3
fromInclusive: "2022-08-05 15:01:00.000" fromInclusive: "2022-08-05 15:01:00.000"
toInclusive: "2023-08-05 15:01:00.000"
- customerStatus:
name: Active
customerStatusId: 2
fromInclusive: "2023-08-05 15:01:00.000"
toInclusive: null toInclusive: null
person: person:
birthname: Pieter birthname: Pieter
@ -415,163 +519,366 @@ paths:
timestamp: "2023-10-20T17:05:52.000+02:00" timestamp: "2023-10-20T17:05:52.000+02:00"
correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95 correlationId: 01c6d8b4-1cd3-4f9b-85ea-c9adca53ce95
href: null href: null
getCustomerActive:
summary: getCustomerActive
description: >-
Found a single customerProfile with an active status
value:
customers:
- customerProfileId: 1
customerNumber: 1000001
debtorNumber: DB100001
debtorStatus:
debtorStatusId: 1
name: Inactive
vascustomerNumber: CST005
customerPreference:
language:
languageId: 1
name: Dutch
ietfCode: nl-NL
iso639Code: nl
customerStatusInstances:
- customerStatus:
name: Active
customerStatusId: 2
fromInclusive: "2022-08-04 15:01:00.000"
toInclusive: null
person:
birthname: Pieter
surname: De valen
prefix: De
suffix: PhD
dateOfBirth: "2002-10-29"
emailAddresses: TEST@HTM.NL
addresses:
- addressId: 1
street: mystreet
houseNumber: 1
houseNumberSuffix: null
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: false
addressType:
addressTypeId: 2
name: Office
- addressId: 2
street: mystreet 33
houseNumber: 1
houseNumberSuffix: null
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType:
addressTypeId: 2
name: Office
phones:
- phoneId: 1
number: "3112345678"
countryCode: "+31"
phoneType:
phoneTypeId: 1
name: Home
isPreferred: true
- phoneId: 2
number: "333225588"
countryCode: "+31"
phoneType:
phoneTypeId: 2
name: Work
isPreferred: false
ovChipcards:
- ovChipCardId: 1
chipCardNumber: 1234123412341234
validUntil: "2023-01-01"
alias: alias
- ovChipCardId: 2
chipCardNumber: 1234123412341235
validUntil: "2025-01-01"
alias: alias
ovPayTokens:
- ovPayTokenId: 126
tokenType:
tokenTypeId: 1
name: EMV
xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
xBot: 71a88843-32b8-4d52-ac25-de2458c47775
alias: alias
lastDigits: "5678"
ovpasNumber: null
tokenStatus:
tokenStatusId: 2
name: Active
expirationDate: "2025-04-20T17:05:52.000+02:00"
replacedByTokenId: 1
- ovPayTokenId: 127
tokenType:
tokenTypeId: 2
name: OV-pas physical
xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
xBot: 71a88843-32b8-4d52-ac25-de2458c47775
alias: alias
lastDigits: "5674"
ovpasNumber: OV34568
tokenStatus:
tokenStatusId: 2
name: Active
expirationDate: "2024-04-20T17:05:52.000+02:00"
replacedByTokenId: 2
auditTrails:
- 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
getCustomerBlocked:
summary: getCustomerBlocked
description: >-
Found a single customerProfile with a blocked status
value:
customers:
- customerProfileId: 1
customerNumber: 1000001
debtorNumber: DB100001
debtorStatus:
debtorStatusId: 2
name: Active
vascustomerNumber: CST005
customerPreference:
language:
languageId: 1
name: Dutch
ietfCode: nl-NL
iso639Code: nl
customerStatusInstances:
- customerStatus:
name: Active
customerStatusId: 2
fromInclusive: "2022-08-04 15:01:00.000"
toInclusive: "2022-08-05 15:01:00.000"
- customerStatus:
name: Blocked
customerStatusId: 3
fromInclusive: "2022-08-05 15:01:00.000"
toInclusive: null
person:
birthname: Pieter
surname: De valen
prefix: De
suffix: PhD
dateOfBirth: "2002-10-29"
emailAddresses: TEST@HTM.NL
addresses:
- addressId: 1
street: mystreet
houseNumber: 1
houseNumberSuffix: null
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: false
addressType:
addressTypeId: 2
name: Office
- addressId: 2
street: mystreet 33
houseNumber: 1
houseNumberSuffix: null
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType:
addressTypeId: 2
name: Office
phones:
- phoneId: 1
number: "3112345678"
countryCode: "+31"
phoneType:
phoneTypeId: 1
name: Home
isPreferred: true
- phoneId: 2
number: "333225588"
countryCode: "+31"
phoneType:
phoneTypeId: 2
name: Work
isPreferred: false
ovChipcards:
- ovChipCardId: 1
chipCardNumber: 1234123412341234
validUntil: "2023-01-01"
alias: alias
- ovChipCardId: 2
chipCardNumber: 1234123412341235
validUntil: "2025-01-01"
alias: alias
ovPayTokens:
- ovPayTokenId: 126
tokenType:
tokenTypeId: 1
name: EMV
xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
xBot: 71a88843-32b8-4d52-ac25-de2458c47775
alias: alias
lastDigits: "5678"
ovpasNumber: null
tokenStatus:
tokenStatusId: 2
name: Active
expirationDate: "2025-04-20T17:05:52.000+02:00"
replacedByTokenId: 1
- ovPayTokenId: 127
tokenType:
tokenTypeId: 2
name: OV-pas physical
xTat: 0115b0df-db38-4702-8811-6f7de00db3ac
xBot: 71a88843-32b8-4d52-ac25-de2458c47775
alias: alias
lastDigits: "5674"
ovpasNumber: OV34568
tokenStatus:
tokenStatusId: 2
name: Active
expirationDate: "2024-04-20T17:05:52.000+02:00"
replacedByTokenId: 2
auditTrails:
- 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
400: 400:
description: Bad Request description: Bad Request
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/400Response" $ref: "#/components/schemas/ErrorResponse"
401: examples:
description: Unauthorized invalidDataTypeError:
content: summary: invalidDataTypeError
application/json: description: >-
schema: The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
$ref: "#/components/schemas/401Response" value:
404: type: https://htm.nl/api/v1/probs/bad-request
description: Not Found title: Your request contains an invalid datatype
content: detail: '''2023-02-01 00:00:00'' is not a valid Datetime'
application/json: instance: urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b
schema:
$ref: "#/components/schemas/404Response"
500:
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/500Response"
security: security:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User
x-throttling-tier: Unlimited x-throttling-tier: Unlimited
post: /customers/{customerProfileId}:
patch:
tags: tags:
- ABTCustomers - Customer
summary: Create a customer profile summary: Modify a customer element
description: >- 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: parameters:
- 0000AA - name: customerProfileId
parameters: [] in: path
required: true
schema:
type: integer
example: 1
requestBody: requestBody:
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/postCustomerProfile" $ref: "#/components/schemas/customersEntity"
examples: examples:
minimumProfile: customers:
value: {}
basicCustomerProfile:
value: value:
debtorStatusId: 2 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: "+31"
phoneTypeId: 1
isPreferred: true
- number: "7012345678"
countryCode: "+31"
phoneTypeId: 2
isPreferred: false
required: true required: true
responses: responses:
"201": "201":
description: Successful created a customer profile description: Successfully modified a customer
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/postCustomerProfileCustomerNumberResponse" $ref: "#/components/schemas/patchCustomerProfileResponse"
"400": security:
description: Bad Request - default: []
x-auth-type: Application & Application User
x-throttling-tier: Unlimited
/customers/{customerProfileId}/customerPreferences:
post:
tags:
- CustomerPreferences
summary: Create a customer preference element
description: >-
parameters:
- name: customerProfileId
in: path
required: true
schema:
type: integer
example: 1
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/customerPreferencesEntity"
examples:
customerPreference:
value:
customerPreference:
languageId: 1
required: true
responses:
"201":
description: Successfully created a customer preference
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/400Response" $ref: "#/components/schemas/postCustomerPreferencesResponse"
examples: security:
InvalidPostalCodeFormatForAddressCountryNLError: - default: []
value: x-auth-type: Application & Application User
code: "400" x-throttling-tier: Unlimited
type: Bad Request - Input parameters /customerPreferences/{customerPreferenceId}:
message: Invalid input parameter for country validation (NL). patch:
description: >- tags:
ECMA 262 regex \"^(?:\\d{4}[A-Z]{2})?$\" does not match - CustomerPreferences
input string \"2500 AA\ summary: Modify a customer preference element
MissingRequiredParameterError: description: >-
value:
code: "400" parameters:
type: Bad Request - Input parameters - name: customerPreferenceId
message: Invalid input parameter. in: path
description: >- required: true
object has missing required properties schema:
([\"addressTypeId\"]) type: integer
InvalidDataTypeError: example: 1
value: requestBody:
code: "400" content:
type: Bad Request - Input parameters application/json:
message: Invalid input parameter. schema:
description: >- $ref: "#/components/schemas/customerPreferencesEntity"
Bad Request - please verify the value for the following examples:
field \"id\ customerPreference:
"401": value:
description: Unauthorized customerPreference:
languageId: 1
required: true
responses:
"200":
description: Successfully modified a customer preference
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/401Response" $ref: "#/components/schemas/patchCustomerPreferencesResponse"
"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: security:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User
@ -1179,13 +1486,21 @@ components:
type: object type: object
properties: properties:
languageId: languageId:
type: string type: integer
postCustomerProfileCustomerNumberResponse: customersEntity:
type: object
properties:
debtorStatusId:
type: integer
postCustomerProfileResponse:
type: object type: object
properties: properties:
customerNumber: customerNumber:
type: integer type: integer
example: 10000001 example: 10000001
customerProfileId:
type: integer
example: 1
postCustomerProfileAddressResponse: postCustomerProfileAddressResponse:
type: object type: object
properties: properties:
@ -1234,15 +1549,24 @@ components:
patchCustomerProfileResponse: patchCustomerProfileResponse:
type: object type: object
properties: properties:
customerNumber: customerProfileId:
type: integer type: integer
example: 10000001 example: 1
postCustomerPreferencesResponse:
type: object
properties:
customerPreferenceId:
type: integer
example: 1
patchCustomerPreferencesResponse: patchCustomerPreferencesResponse:
type: object type: object
properties: properties:
customerNumber: customerPreferenceId:
type: integer type: integer
example: 10000001 example: 1
customerLanguageId:
type: integer
example: 1
ovPayTokenGetEntity: ovPayTokenGetEntity:
type: object type: object
properties: properties:
@ -1289,93 +1613,14 @@ components:
ovPayTokenId: ovPayTokenId:
type: integer type: integer
example: 1 example: 1
400Response: ErrorResponse:
type: object type: object
properties: properties:
code:
type: string
example: "400"
type: type:
type: string type: string
message: title:
type: string type: string
example: Bad Request detail:
description:
type: string type: string
example: >- instance:
'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 type: string