merged develop

This commit is contained in:
Mirjam Herald 2025-05-21 13:04:51 +02:00
commit a09058d151
14 changed files with 3655 additions and 1788 deletions

View File

@ -1,57 +1,54 @@
{
"productId": 38,
"parentProductId": null,
"productCode": "30901-WA",
"gboPackageTemplateId": "30901",
"productId": 151,
"fikoArticleNumber": null,
"parentProductId": 114,
"gboPackageTemplateId": "33629",
"tapConnectProductCode": null,
"productGroupMetadata": null,
"productName": "HTM P1W Prolongatie-Test 90% Korting",
"productDescription": "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis met korting!",
"productName": "HTM Regio Vrij - Voltarief - Losse Maand - HL62",
"productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62",
"validityPeriod": {
"validityPeriodId": 148,
"fromInclusive": "2023-12-31T23:00:00.000+00:00",
"toInclusive": "2029-12-08T04:00:00.000+00:00"
"validityPeriodId": 262,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2099-12-30T23:00:00.000+00:00"
},
"productTranslations": [
{
"language": "en",
"name": "HTM Prolongation-Test 90% Discount",
"description": "Are you a regular traveler? Activate HTM 90% discount on your EMV card!"
"name": "HTM Regio Free - Full Fare - 1 Month - HL62",
"description": "For a fixed amount unlimited travel with EBS, HTM and RET in region HL62"
}
],
"productOwner": {
"productOwnerId": 17,
"name": "Corneel Verstoep",
"organization": "HTM"
"productOwnerId": 19,
"name": "MRDH",
"organization": "MRDH"
},
"marketSegments": [
"marketSegments": null,
"customerSegments": null,
"allowedGboAgeProfiles": [
{
"marketSegmentId": 1,
"name": "B2C"
}
],
"customerSegments": [
{
"customerSegmentId": 2,
"name": "Kind (4-11)"
"gboAgeProfileId": 1,
"name": "Baby/peuter (0 t/m 3 jaar)",
"ageFromInclusive": 0,
"ageToInclusive": 3
},
{
"customerSegmentId": 3,
"name": "Jongere (12-18)"
"gboAgeProfileId": 4,
"name": "Volwassene (19 t/m 64 jaar)",
"ageFromInclusive": 19,
"ageToInclusive": 64
},
{
"customerSegmentId": 4,
"name": "Volwassene (19-64)"
},
{
"customerSegmentId": 5,
"name": "Oudere (65+)"
"gboAgeProfileId": 5,
"name": "Oudere (65 jaar of ouder)",
"ageFromInclusive": 65,
"ageToInclusive": 999
}
],
"productCategory": {
"productCategoryId": 1,
"productCategoryId": 3,
"isTravelProduct": true,
"name": "Kortingsabonnement"
"name": "Afgekocht reisrecht"
},
"requiredCustomerLevel": {
"requiredCustomerLevelId": 3,
@ -73,11 +70,24 @@
"customerDataItem": "emailAddress"
},
{
"mandatoryCustomerDataItemId": 5,
"customerDataItem": "address"
"mandatoryCustomerDataItemId": 8,
"customerDataItem": "padBirthDate"
}
],
"requiredGboPersonalAttributes": [
{
"requiredGboPersonalAttributeId": 1,
"name": "NAME"
},
{
"requiredGboPersonalAttributeId": 2,
"name": "BIRTHDATE"
},
{
"requiredGboPersonalAttributeId": 3,
"name": "PHOTO"
}
],
"requiredGboPersonalAttributes": null,
"tokenTypes": [
{
"tokenTypeId": 1,
@ -89,21 +99,21 @@
"name": "prepaid"
},
"serviceOptions": null,
"validityDuration": "P1W",
"validityDuration": "P1M",
"maxStartInFutureDuration": "P6W",
"isRenewable": true,
"sendInvoice": true,
"isRenewable": false,
"sendInvoice": false,
"imageReference": "https://web.acc.cloud.htm.nl/media/leif2leu/htm-logo-mobile.svg",
"productPageUrl": "https://web.acc.cloud.htm.nl/webshop/htm-90-korting/",
"termsUrl": "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-90-korting/",
"productPageUrl": "https://web.acc.cloud.htm.nl/webshop/htm-regio-vrij",
"termsUrl": "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-regio-vrij/",
"isSellableAtHtm": true,
"needsSolvencyCheckConsumer": false,
"needsSolvencyCheckBusiness": false,
"sellingPeriods": [
{
"sellingPeriodId": 89,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2029-12-01T23:00:00.000+00:00",
"sellingPeriodId": 214,
"fromInclusive": "2024-10-30T23:00:00.000+00:00",
"toInclusive": "2029-12-30T23:00:00.000+00:00",
"salesTouchpoint": {
"salesTouchpointId": 3,
"name": "Website (Perplex)",
@ -126,18 +136,14 @@
"forbiddenPaymentMethods": null,
"sellingPrices": [
{
"sellingPriceId": 82,
"amountExclTax": 92,
"amountInclTax": 100,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"sellingPriceId": 195,
"taxCode": "V09",
"taxPercentage": 9.0000,
"amountExclTax": 13486,
"amountInclTax": 14700,
"fromInclusive": "2024-10-30T23:00:00.000+00:00",
"toInclusive": "2029-12-01T23:00:00.000+00:00",
"internalPrice": 0.0000,
"taxMetadata": {
"taxMetadataId": "47C8972E-A730-4032-9BDA-AF0A5BCB2C85",
"taxCode": "V09",
"taxPercentageAmount": 9,
"description": "BTW VERKOOP LAAG 9%"
}
"internalPrice": 0.0000
}
]
}
@ -145,10 +151,10 @@
"purchasePrices": null,
"auditTrail": [
{
"auditTrailId": 162,
"auditTrailId": 475,
"action": "insert",
"user": "api",
"timestamp": "2024-11-25T08:39:36.793+00:00"
"timestamp": "2025-05-07T14:05:43.213+00:00"
}
]
}

View File

@ -1,57 +1,58 @@
{
"parentProductId" : null,
"productCode" : "30901-WA",
"gboPackageTemplateId" : "30901",
"fikoArticleNumber" : null,
"parentProductId" : 114,
"gboPackageTemplateId" : "33629",
"tapConnectProductCode" : null,
"productGroupMetadata" : null,
"productName" : "HTM P1W Prolongatie-Test 90% Korting",
"productDescription" : "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis met korting!",
"productName" : "HTM Regio Vrij - Voltarief - Losse Maand - HL62",
"productDescription" : "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL62",
"validityPeriod" : {
"validityPeriodId" : 148,
"fromInclusive" : "2023-12-31T23:00:00.000+00:00",
"toInclusive" : "2029-12-08T04:00:00.000+00:00"
"validityPeriodId" : 262,
"fromInclusive" : "2024-09-30T23:00:00.000+00:00",
"toInclusive" : "2099-12-30T23:00:00.000+00:00"
},
"productTranslations" : [ {
"language" : "en",
"name" : "HTM Prolongation-Test 90% Discount",
"description" : "Are you a regular traveler? Activate HTM 90% discount on your EMV card!"
"name" : "HTM Regio Free - Full Fare - 1 Month - HL62",
"description" : "For a fixed amount unlimited travel with EBS, HTM and RET in region HL62"
} ],
"productOwnerId" : 17,
"marketSegmentIds" : [ 1 ],
"customerSegmentIds" : [ 2, 3, 4, 5 ],
"productCategoryId" : 1,
"productOwnerId" : 19,
"marketSegmentIds" : null,
"customerSegmentIds" : null,
"allowedGboAgeProfileIds" : [ 1, 4, 5 ],
"productCategoryId" : 3,
"requiredCustomerLevelId" : 3,
"requiredProducts" : null,
"incompatibleProducts" : null,
"mandatoryCustomerDataItemIds" : [ 1, 2, 4, 5 ],
"requiredGboPersonalAttributes" : null,
"mandatoryCustomerDataItemIds" : [ 1, 2, 4, 8 ],
"requiredGboPersonalAttributeIds" : [ 1, 2, 3 ],
"tokenTypeIds" : [ 1 ],
"paymentMomentId" : 1,
"serviceOptions" : null,
"validityDuration" : "P1W",
"serviceOptionIds" : null,
"validityDuration" : "P1M",
"maxStartInFutureDuration" : "P6W",
"isRenewable" : true,
"sendInvoice" : true,
"isRenewable" : false,
"sendInvoice" : false,
"imageReference" : "https://web.acc.cloud.htm.nl/media/leif2leu/htm-logo-mobile.svg",
"productPageUrl" : "https://web.acc.cloud.htm.nl/webshop/htm-90-korting/",
"termsUrl" : "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-90-korting/",
"productPageUrl" : "https://web.acc.cloud.htm.nl/webshop/htm-regio-vrij",
"termsUrl" : "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/htm-regio-vrij/",
"isSellableAtHtm" : true,
"needsSolvencyCheckConsumer" : false,
"needsSolvencyCheckBusiness" : false,
"sellingPeriods" : [ {
"sellingPeriodId" : 89,
"fromInclusive" : "2024-09-30T23:00:00.000+00:00",
"toInclusive" : "2029-12-01T23:00:00.000+00:00",
"sellingPeriodId" : 214,
"fromInclusive" : "2024-10-30T23:00:00.000+00:00",
"toInclusive" : "2029-12-30T23:00:00.000+00:00",
"salesTouchpointId" : 3,
"forbiddenPaymentMethodIds" : null,
"sellingPrices" : [ {
"sellingPriceId" : 82,
"amountExclTax" : 92,
"amountInclTax" : 100,
"fromInclusive" : "2024-09-30T23:00:00.000+00:00",
"sellingPriceId" : 195,
"taxCode" : "V09",
"taxPercentage" : 9.0,
"amountExclTax" : 13486,
"amountInclTax" : 14700,
"fromInclusive" : "2024-10-30T23:00:00.000+00:00",
"toInclusive" : "2029-12-01T23:00:00.000+00:00",
"internalPrice" : 0.0,
"taxMetadataId" : "47C8972E-A730-4032-9BDA-AF0A5BCB2C85"
"internalPrice" : 0.0
} ]
} ],
"purchasePrices" : null

View File

@ -100,8 +100,8 @@ public class ABTProductsPUTGenerator {
((ObjectNode)newJsonNode).putRawValue("customerSegmentIds", null);
}
case "allowedGboAgeProfiles" -> {
LOGGER.info("Rewriting null allowedGboAgeProfiles to allowedGboAgeProfilesIds...");
((ObjectNode)newJsonNode).putRawValue("allowedGboAgeProfilesIds", null);
LOGGER.info("Rewriting null allowedGboAgeProfiles to allowedGboAgeProfileIds...");
((ObjectNode)newJsonNode).putRawValue("allowedGboAgeProfileIds", null);
}
case "mandatoryCustomerDataItems" -> {
LOGGER.info("Rewriting null mandatoryCustomerDataItems to mandatoryCustomerDataItemIds...");
@ -283,7 +283,8 @@ public class ABTProductsPUTGenerator {
((ObjectNode)sellingPeriod).putRawValue("forbiddenPaymentMethodIds", null);
}
}
if (sellingPeriod.get("sellingPrices") != null) {
if (!sellingPeriod.get("sellingPrices").isNull()) {
LOGGER.info("Deep-copying sellingPrices...");
ArrayNode sellingPrices = ((ArrayNode)sellingPeriod.get("sellingPrices")).deepCopy();
((ObjectNode)sellingPeriod).remove("sellingPrices");
if (!sellingPrices.isEmpty()) {
@ -299,8 +300,8 @@ public class ABTProductsPUTGenerator {
}
}
case "purchasePrices" -> {
LOGGER.info("Rewriting taxMetadata in purchasePrices to taxMetadataId...");
if (jsonField.getValue() != null) {
LOGGER.info("Deep-copying purchasePrices...");
if (!jsonField.getValue().isNull()) {
ArrayNode purchasePrices = ((ArrayNode)jsonField.getValue()).deepCopy();
((ObjectNode)newJsonNode).putArray("purchasePrices").addAll(purchasePrices);
} else {

View File

@ -0,0 +1,482 @@
openapi: 3.0.1
info:
title: Personal Account Data (PAD) APIs for touchpoints and Service Engine
description: |-
APIs for touchpoints and Service Engine to manage Personal Account Data (PAD) on OVpay tokens (xTATs).\
These APIs connect directly to the PADP APIs in GBO APIM and are implemented in Logic Apps
in the Integration Layer.
version: '1.0'
servers:
- url: https://api.integratielaag.nl/abt/touchpoint/1.0
tags:
- name: Personal Data APIs for touchpoints
description: Personal Data APIs for touchpoints, no Service Engine in between!
- name: Personal Data APIs for Service Engine
description: Personal Data APIs for Service Engine, not to be exposed to touchpoints!
paths:
/personal-data/{xtat}:
post:
tags:
- Personal Data APIs for touchpoints
summary: Add the supplied Personal Data to the given xTAT (that should not contain any Personal Data yet).
description: |-
- The given xTAT should not contain any Personal Data yet (the PATCH endpoint should be used in that case) - if the given xTAT already contains Personal Data, an error is thrown;
- The given e-mail address will be used for future OTP challenges to manage the Personal Data in the future - this e-mail adress should therefore be validated;
- If the e-mail address is not yet validated by other means (e.g. the e-mail address is used for login, or is entered twice to prevent typos), an OTP challenge for the e-mail address should be triggered and supplied to this endpoint;
- xTAT and e-mail address are always required, for the Personal Data it is allowed to supply any subset, or all three data attributes;
- Each of the three data attributes is validated - for the requirements per attribute, see the descriptions in the request details below;
- If any attribute fails validation, none of the attributes will be added to the xTAT.
operationId: CreatePersonalData
parameters:
- name: xtat
in: path
required: true
example: 'c3a6c0f2-3b6a-4b9a-9c5d-5d9c6b3a4c5d'
schema:
type: string
format: uuid
requestBody:
content:
multipart/form-data:
schema:
type: object
required:
- email
properties:
email:
type: string
format: email
description: Email address to be used for OTP challenges to prove ownership and manage the Personal Data in the future
example: 8Z9dG@example.com
otp:
type: string
pattern: ^[0-9]{6}$
description: OTP is optional, should be supplied if the e-mail address is not yet validated by other means (e.g. the e-mail address is used for login, or is entered twice to prevent typo's)
example: "053395"
name:
type: string
description: Should consist of at least two words (first name and last name)
example: John Doe
birthDate:
type: string
format: date
description: Should be a date between 1900-01-01 and today, in the format `YYYY-MM-DD`
example: 2000-01-01
photo:
type: string
description: Should be a JPG image, with a filesize of max. 512KB and resolution between 520x520 and 720x720 pixels
format: binary
encoding:
photo:
contentType: image/jpeg
responses:
'201':
description: Created
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
get:
tags:
- Personal Data APIs for touchpoints
summary: Retrieve the decrypted Personal Data for the given xTAT, using the OTP for verification of ownership.
description: OTP challenge is required to retrieve the Personal Data.
operationId: GetDecryptedPersonalData
parameters:
- name: xtat
in: path
required: true
schema:
type: string
format: uuid
example: 'c3a6c0f2-3b6a-4b9a-9c5d-5d9c6b3a4c5d'
- name: otp
in: query
required: true
description: OTP challenge code that the token owner received in their e-mail inbox. OTP is always required for managing existing Personal Data.
schema:
type: string
pattern: ^[0-9]{6}$
example: "053395"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/DecryptedPersonalData'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
patch:
tags:
- Personal Data APIs for touchpoints
summary: Update the supplied personal data for the given xTAT, using the OTP for verification of ownership.
description: This is a PATCH call, so only the personal data that the user desires to change need to be supplied. Integration layer supplements with any other existing personal data to be able to call GBO (PUT call).
operationId: UpdatePersonalData
parameters:
- name: xtat
in: path
required: true
schema:
type: string
format: uuid
example: 'c3a6c0f2-3b6a-4b9a-9c5d-5d9c6b3a4c5d'
requestBody:
content:
multipart/form-data:
schema:
type: object
required:
- otp
properties:
otp:
type: string
pattern: ^[0-9]{6}$
description: OTP challenge code that the token owner received in their e-mail inbox. OTP is always required for managing existing Personal Data.
example: "053395"
name:
type: string
description: Should consist of at least two words (first name and last name)
example: John Doe
birthDate:
type: string
format: date
description: Should be a date between 1900-01-01 and today, in the format `YYYY-MM-DD`
example: 2000-01-01
photo:
type: string
description: Should be a JPG image, with a filesize of max. 512KB and resolution between 520x520 and 720x720 pixels
format: binary
encoding:
photo:
contentType: image/jpeg
responses:
'200':
description: OK
/personal-data/generate-otp:
get:
tags:
- Personal Data APIs for touchpoints
summary: Trigger OTP email for the given xTAT or e-mail address, to prove ownership
operationId: GenerateOtp
description: |-
Generate an OTP challenge e-mail to prove ownership of the given e-mail address or xTAT.\
Only one type of parameter can be supplied, either xtat or email. When both are supplied, an error is thrown.
parameters:
- name: xtat
in: query
required: false
schema:
type: string
format: uuid
example: 'c3a6c0f2-3b6a-4b9a-9c5d-5d9c6b3a4c5d'
- name: email
in: query
required: false
schema:
type: string
format: email
example: 'sV4yj@example.com'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OtpResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
/personal-data/{xtat}/administrative-data:
get:
tags:
- Personal Data APIs for Service Engine
summary: API 1211 - Get Administrative Data
description: Integration Layer utilizes PAD management V2 in GBO APIM (`/pad-management/v2/..`)
operationId: GetAdministrativeData
parameters:
- name: xtat
description: xTAT to get administrative data for
in: path
required: true
schema:
type: string
format: uuid
example: 'c3a6c0f2-3b6a-4b9a-9c5d-5d9c6b3a4c5d'
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AdministrativeData"
examples:
Valid and complete PAD:
summary: Valid and complete PAD
value:
name:
inaccuracyFlag: false
inaccuracyFlagReason: null
inaccuracyFlagCounter: 0
changeCounter: 0
maxUpdatesVerificationCount: 1
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
photo:
inaccuracyFlag: false
inaccuracyFlagReason: null
inaccuracyFlagCounter: 0
changeCounter: 0
maxUpdatesVerificationCount: 5
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
birthdate:
inaccuracyFlag: false
inaccuracyFlagReason: null
inaccuracyFlagCounter: 0
changeCounter: 0
maxUpdatesVerificationCount: 3
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
Partially filled PAD (no photo):
summary: Partially filled PAD (no photo)
value:
name:
inaccuracyFlag: false
inaccuracyFlagReason: null
inaccuracyFlagCounter: 0
changeCounter: 0
maxUpdatesVerificationCount: 1
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
photo: null
birthdate:
inaccuracyFlag: false
inaccuracyFlagReason: null
inaccuracyFlagCounter: 0
changeCounter: 0
maxUpdatesVerificationCount: 3
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
Flagged PAD:
summary: Flagged PAD
value:
name:
inaccuracyFlag: true
inaccuracyFlagReason: "Invalid name"
inaccuracyFlagCounter: 1
changeCounter: 1
maxUpdatesVerificationCount: 1
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
photo:
inaccuracyFlag: true
inaccuracyFlagReason: "Invalid photo"
inaccuracyFlagCounter: 1
changeCounter: 0
maxUpdatesVerificationCount: 5
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
birthdate:
inaccuracyFlag: true
inaccuracyFlagReason: "Invalid birthdate"
inaccuracyFlagCounter: 1
changeCounter: 2
maxUpdatesVerificationCount: 3
lastChangeDate: "2025-03-26T10:18:42.947"
isValidated: false
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
examples:
Invalid UUID:
summary: Invalid UUID
value:
errors:
code: "0x03000103"
data: [
"geen-uuid"
]
message: "The provided scTat is not a valid UUID"
exceptionClassName: "PadpConstraintViolationException"
exceptionStackTrace: "not available because debug mode is turned off"
"404":
description: Not Found
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
examples:
No PAD found for xTAT:
summary: No PAD found for xTAT
value:
errors:
code: "0x03000105"
data: []
message: "Transit account not found"
exceptionClassName: "PadpEntityNotFoundException"
exceptionStackTrace: "not available because debug mode is turned off"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/ErrorResponse"
examples:
Unknown xTAT:
summary: Unknown xTAT
value:
errors:
code: "0x00000001"
data: null
message: "400 : \"{\"errorMessage\":{\"referenceId\":\"076f0de4-df33-42a3-add0-def971ab6679\",\"message\":\"Unknown external transit account token.\"},\"businessExceptions\":[{\"code\":\"TM0207\",\"message\":\"Unknown external transit account token.\"}]}\""
exceptionClassName: "BadRequest"
exceptionStackTrace: "not available because debug mode is turned off"
components:
schemas:
AdministrativeData:
type: object
properties:
name:
$ref: '#/components/schemas/AdministrativeDataElement'
photo:
$ref: '#/components/schemas/AdministrativeDataElement'
birthdate:
$ref: '#/components/schemas/AdministrativeDataElement'
additionalProperties: false
AdministrativeDataElement:
type: object
properties:
inaccuracyFlag:
type: boolean
inaccuracyFlagReason:
type: string
nullable: true
inaccuracyFlagCounter:
type: integer
format: int32
changeCounter:
type: integer
format: int32
maxUpdatesVerificationCount:
type: integer
format: int32
lastChangeDate:
type: string
format: date-time
isValidated:
type: boolean
additionalProperties: false
DecryptedData:
type: object
properties:
name:
type: string
nullable: true
birthdate:
type: string
nullable: true
photo:
type: string
description: Base64 encoded photo
format: byte
nullable: true
additionalProperties: false
DecryptedPersonalData:
type: object
properties:
decryptedData:
$ref: '#/components/schemas/DecryptedData'
additionalProperties: false
Error:
type: object
properties:
code:
type: string
nullable: true
data:
type: array
items:
type: string
nullable: true
message:
type: string
nullable: true
additionalProperties: false
ErrorResponse:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/Error'
nullable: true
exceptionClassName:
type: string
nullable: true
exceptionStackTrace:
type: string
nullable: true
additionalProperties: false
Metadata:
type: object
properties:
encryptedEphemeralKey:
type: string
nullable: true
additionalProperties: false
OtpResponse:
type: object
properties:
maskedEmailAddress:
type: string
nullable: true
additionalProperties: false

File diff suppressed because it is too large Load Diff

View File

@ -248,10 +248,9 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: false
addressType:
addressTypeId: 2
name: Office
name: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -259,10 +258,9 @@ paths:
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType:
addressTypeId: 2
name: Office
addressTypeId: 1
name: Shipping
phones:
- phoneId: 1
number: "3112345678"
@ -375,10 +373,9 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: false
addressType:
addressTypeId: 2
name: Office
name: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -388,8 +385,8 @@ paths:
country: NL
isPreferred: true
addressType:
addressTypeId: 2
name: Office
addressTypeId: 1
name: Shipping
phones:
- phoneId: 1
number: "3112345678"
@ -516,10 +513,9 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: false
addressType:
addressTypeId: 2
name: Office
name: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -527,10 +523,9 @@ paths:
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType:
addressTypeId: 2
name: Office
addressTypeId: 1
name: Shipping
phones:
- phoneId: 1
number: "3112345678"
@ -652,10 +647,9 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: false
addressType:
addressTypeId: 2
name: Office
name: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -663,10 +657,9 @@ paths:
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType:
addressTypeId: 2
name: Office
addressTypeId: 1
name: Shipping
phones:
- phoneId: 1
number: "3112345678"
@ -811,7 +804,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: true
addressTypeId: 1
- street: Beeklaan
houseNumber: 30
@ -819,7 +811,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: false
addressTypeId: 2
phones:
- number: "6123456789"
@ -948,10 +939,10 @@ paths:
parameters:
- name: customerProfileId
in: path
required: true
schema:
type: integer
example: 1
required: true
requestBody:
content:
application/json:
@ -1040,7 +1031,6 @@ paths:
postalCode: 1234 AB
city: Den Haag
country: NL
isPreferred: true
required: true
responses:
201:
@ -1588,11 +1578,6 @@ paths:
schema:
type: integer
example: 1
- name: issuerCountry
in: query
schema:
type: string
example: "NL"
- name: iban
in: query
schema:
@ -1613,11 +1598,22 @@ paths:
schema:
type: string
example: "John's billing details"
- name: billingAddressID
in: query
- in: query
name: createdBefore
schema:
type: integer
example: 1
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-12-31T23:59:59
required: false
description: Filter on created after.
- name: sort
in: query
schema:
@ -1650,21 +1646,19 @@ paths:
{
"billingInformationId": 1,
"customerProfileId": 1,
"issuerCountry": "NL",
"iban": "NL06RABO8902022560",
"ascription": "J. Doe",
"alias": null,
"billingAddressId": 3,
"created": "2023-10-20T17:05:52.000",
},
{
"billingInformationId": 2,
"customerProfileId": 1,
"issuerCountry": "NL",
"iban": "NL27ABNA4458972219",
"bic": "GHJZIEJSKVM",
"ascription": "J. Doe",
"alias": "John's billing details",
"billingAddressId": 4,
"created": "2024-10-20T17:05:52.000",
},
],
}
@ -1679,50 +1673,10 @@ paths:
{
"billingInformationId": 1,
"customerProfileId": 1,
"issuerCountry": "NL",
"iban": "NL06RABO8902022560",
"ascription": "J. Doe",
"alias": null,
"billingAddressId": 3,
},
],
}
getBillingInformationIssuerCountry:
summary: Get multiple billing information entities for a specific issuer country
description: >-
Found multiple billing informations matching the search parameters
value:
{
"billingInformations":
[
{
"billingInformationId": 1,
"customerProfileId": 1,
"issuerCountry": "NL",
"iban": "NL06RABO8902022560",
"ascription": "J. Doe",
"alias": null,
"billingAddressId": 3,
},
{
"billingInformationId": 2,
"customerProfileId": 5,
"issuerCountry": "NL",
"iban": "NL27ABNA4458972219",
"bic": "GHJZIEJSKVM",
"ascription": "J. Doe",
"alias": null,
"billingAddressId": 42,
},
{
"billingInformationId": 11,
"customerProfileId": 9,
"issuerCountry": "NL",
"iban": "NL27ABNA4458972219",
"bic": "GHJZIEJSKVM",
"ascription": "J. Doe",
"alias": null,
"billingAddressId": 84,
"created": "2024-10-20T17:05:52.000",
},
],
}
@ -1749,19 +1703,15 @@ paths:
customerBillinginformationMandatoryFields:
value:
billingInformation:
issuerCountry: "NL"
iban: "NL73RABO2677424363"
ascription: "J. Doe"
billingAddressId: 1
customerBillinginformationMandatoryFull:
value:
billingInformation:
issuerCountry: "NL"
iban: "NL73RABO2677424363"
bic: "GHJZIEJSKVM"
ascription: "J. Doe"
alias: "John's billing details"
billingAddressId: 1
required: true
responses:
201:
@ -1798,15 +1748,11 @@ paths:
value:
billingInformation:
alias: "Mijn rekening details"
updateBillingInformationAdressId:
value:
billingInformation:
billingAddressId: 4
updateBillingInformation:
value:
billingInformation:
alias: "Mijn rekening details"
billingAddressId: 4
iban: "NL06RABO8902022560"
required: true
responses:
200:
@ -1817,11 +1763,10 @@ paths:
{
"billingInformationId": 1,
"customerProfileId": 1,
"issuerCountry": "NL",
"iban": "NL06RABO8902022560",
"ascription": "J. Doe",
"alias": "Mijn rekening details",
"billingAddressId": 4,
"created": "2024-03-22T08:55:00",
}
security:
- default: []
@ -1865,13 +1810,6 @@ paths:
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:
@ -1957,7 +1895,6 @@ paths:
"name": "import",
"description": "import",
},
"mandateAddressId": 21,
"created": "2024-03-22T08:55:00",
"mandateReference": "CORE01",
"mandateState": "SINGED",
@ -1993,7 +1930,6 @@ paths:
"name": "import",
"description": "import",
},
"mandateAddressId": 21,
"created": "2024-03-22T08:55:00",
"mandateReference": "CORE01",
"mandateState": "SINGED",
@ -2043,7 +1979,6 @@ paths:
value:
directDebitMandate:
directDebitMandateTypeId: 1
mandateAddressId: 1
mandateReference: HTM-mandate-001
mandateState: PREPARED
required: true
@ -2099,7 +2034,6 @@ paths:
"name": "import",
"description": "import",
},
"mandateAddressId": 21,
"created": "2024-03-22T08:55:00",
"mandateReference": "CORE01",
"mandateState": "CANCELLED",
@ -2268,8 +2202,6 @@ components:
type: string
country:
type: string
isPreferred:
type: boolean
addressType:
$ref: "#/components/schemas/getAddressType"
getAddressType:
@ -2375,8 +2307,6 @@ components:
type: string
country:
type: string
isPreferred:
type: boolean
addressTypeId:
type: integer
postPhoneEntity:
@ -2443,8 +2373,6 @@ components:
type: string
country:
type: string
isPreferred:
type: boolean
addressType:
type: integer
patchCustomerAddress:
@ -2462,8 +2390,6 @@ components:
type: string
country:
type: string
isPreferred:
type: boolean
addressType:
type: integer
postCustomerProfileResponse:
@ -2564,8 +2490,6 @@ components:
properties:
billingInformationId:
type: integer
issuerCountry:
type: string
iban:
type: string
bic:
@ -2574,8 +2498,8 @@ components:
type: string
alias:
type: string
billingAddressId:
type: integer
created:
type: string
mandateEntity:
type: object
properties:
@ -2583,8 +2507,6 @@ components:
type: integer
directDebitMandateTypeId:
type: integer
mandateAddressId:
type: integer
mandateReference:
type: string
mandateState:

View File

@ -45,7 +45,6 @@ paths:
directDebitMandate:
directDebitMandateTypeId: 1
billingInformationId: 1
mandateAddressId: 2
mandateReference: Dit is een test Reference
mandateState: SIGNED
updateDirectDebitMandateType:
@ -56,10 +55,6 @@ paths:
value:
directDebitMandate:
billingInformationId: 2
updateMandateAddressId:
value:
directDebitMandate:
mandateAddressId: 3
updateMandateReference:
value:
directDebitMandate:
@ -129,17 +124,10 @@ paths:
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:
@ -148,10 +136,6 @@ paths:
value:
billingInformation:
bic: DEUT
updateSwift:
value:
billingInformation:
swift: UpdatedSwift
updateAscription:
value:
billingInformation:
@ -160,10 +144,6 @@ paths:
value:
billingInformation:
alias: Updated Alias
updateBillingAddressId:
value:
billingInformation:
billingAddressId: 3
required: true
responses:
'201':
@ -218,21 +198,16 @@ paths:
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':
@ -289,16 +264,12 @@ paths:
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:
@ -358,38 +329,32 @@ paths:
customerNumber: 1000003
billingInformation:
- billingInformationId: 1
issuerCountry: NL
iban: '1234567890'
bic: ING
swift: Swift
ascription: Dit is een Test
alias: Alias Test
billingAddressId: 2
created: "2024-06-02T15:03:460"
- billingInformationId: 2
issuerCountry: BE
iban: '0987654321'
bic: null
swift: null
ascription: Dit is een Test
alias: Alias Test
billingAddressId: 3
created: "2024-06-02T15:03:460"
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'
updateTimestamp: '2024-01-01T00:00:00.000'
- 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'
updateTimestamp: '2024-01-01T00:00:00.000'
missingBillingInformation:
value:
customerNumber: 1000003
@ -398,35 +363,31 @@ paths:
- directDebitMandateId: 1
directDebitMandateTypeName: PIN transaction
billingInformationId: 1
mandateAddressId: 2
created: '1900-01-01T00:00:00.000'
mandateReference: Dit is een test Reference
updateTimestamp: '1900-01-01T00:00:00.000'
- directDebitMandateId: 2
directDebitMandateTypeName: Paper Contract
billingInformationId: 1
mandateAddressId: 2
created: '1900-01-01T00:00:00.000'
mandateReference: Dit is een test Reference
updateTimestamp: '1900-01-01T00:00:00.000'
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
created: "2024-06-02T15:03:460"
- billingInformationId: 2
issuerCountry: BE
iban: '0987654321'
bic: null
swift: null
ascription: Dit is een Test
alias: Alias Test
billingAddressId: 3
created: "2024-06-02T15:03:460"
directDebitMandate: []
minimumFinancialInformation:
value:
@ -500,7 +461,6 @@ paths:
directDebitMandate:
directDebitMandateTypeId: 1
billingInformationId: 1
mandateAddressId: 2
mandateReference: Dit is een test Reference
mandateState: SIGNED
updateDirectDebitMandateType:
@ -511,10 +471,6 @@ paths:
value:
directDebitMandate:
billingInformationId: 2
updateMandateAddressId:
value:
directDebitMandate:
mandateAddressId: 3
updateMandateReference:
value:
directDebitMandate:
@ -591,17 +547,10 @@ paths:
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:
@ -610,10 +559,6 @@ paths:
value:
billingInformation:
bic: DEUT
updateSwift:
value:
billingInformation:
swift: UpdatedSwift
updateAscription:
value:
billingInformation:
@ -687,17 +632,14 @@ paths:
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
@ -765,16 +707,12 @@ paths:
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:
@ -841,38 +779,34 @@ paths:
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'
created: '2024-01-01T00:00:00.000'
- 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'
created: '2024-01-01T00:00:00.000'
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.000'
- 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.000'
missingBillingInformation:
value:
customerNumber: 1000003
@ -881,35 +815,31 @@ paths:
- directDebitMandateId: 1
directDebitMandateTypeName: PIN transaction
billingInformationId: 1
mandateAddressId: 2
created: '1900-01-01T00:00:00.000'
mandateReference: Dit is een test Reference
updateTimestamp: '1900-01-01T00:00:00.000'
- directDebitMandateId: 2
directDebitMandateTypeName: Paper Contract
billingInformationId: 1
mandateAddressId: 2
created: '1900-01-01T00:00:00.000'
mandateReference: Dit is een test Reference
updateTimestamp: '1900-01-01T00:00:00.000'
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
created: "2024-06-02T15:03:460"
- billingInformationId: 2
issuerCountry: BE
iban: '0987654321'
bic: null
swift: null
ascription: Dit is een Test
alias: Alias Test
billingAddressId: 3
created: "2024-06-02T15:03:460"
directDebitMandate: []
minimumFinancialInformation:
value:
@ -1112,8 +1042,7 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: true
addressType: Office
addressType: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -1121,8 +1050,7 @@ paths:
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType: Office
addressType: Shipping
phone:
- phoneId: 1
number: '3112345678'
@ -1199,8 +1127,7 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: true
addressType: Office
addressType: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -1208,8 +1135,7 @@ paths:
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType: Office
addressType: Shipping
phone:
- phoneId: 1
number: '3112345678'
@ -1537,8 +1463,7 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: true
addressType: Office
addressType: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -1546,8 +1471,7 @@ paths:
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType: Office
addressType: Shipping
phone:
- phoneId: 1
number: '3112345678'
@ -1753,7 +1677,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: true
addressTypeId: 1
- street: Beeklaan
houseNumber: 30
@ -1761,7 +1684,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: false
addressTypeId: 2
phones:
- number: '6123456789'
@ -2604,7 +2526,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: true
addressTypeId: 1
addMinimumAddress:
value:
@ -2614,7 +2535,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: true
addressTypeId: 1
responses:
'201':
@ -2826,7 +2746,6 @@ paths:
city: Den Haag
country: NL
addressTypeId: 2
isPreferred: true
updateStreet:
value:
address:
@ -2854,11 +2773,7 @@ paths:
updateAddressTypeId:
value:
address:
addressTypeId: 3
updateIsPreferred:
value:
address:
isPreferred: false
addressTypeId: 1
responses:
'202':
description: Successful updated the customer profile
@ -3111,8 +3026,7 @@ paths:
postalCode: 0000AA
city: Den Haag
country: NL
isPreferred: true
addressType: Office
addressType: Billing
- addressId: 2
street: mystreet 33
houseNumber: 1
@ -3120,8 +3034,7 @@ paths:
postalCode: 4455CA
city: Den BOSCH
country: NL
isPreferred: true
addressType: Office
addressType: Shipping
phone:
- phoneId: 1
number: '3112345678'
@ -3328,7 +3241,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: true
addressTypeId: 1
- street: Beeklaan
houseNumber: 30
@ -3336,7 +3248,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: false
addressTypeId: 2
phones:
- number: '6123456789'
@ -4114,7 +4025,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: true
addressTypeId: 1
addMinimumAddress:
value:
@ -4124,7 +4034,6 @@ paths:
postalCode: 2500AA
city: Den Haag
country: NL
isPreferred: true
addressTypeId: 1
responses:
'201':
@ -4350,7 +4259,6 @@ paths:
city: Den Haag
country: NL
addressTypeId: 2
isPreferred: true
updateStreet:
value:
address:
@ -4378,7 +4286,7 @@ paths:
updateAddressTypeId:
value:
address:
addressTypeId: 3
addressTypeId: 1
updateIsPreferred:
value:
address:
@ -4696,8 +4604,6 @@ components:
type: string
country:
type: string
isPreferred:
type: boolean
addressType:
type: string
getPhone:
@ -4761,7 +4667,6 @@ components:
- billingInformationId
- created
- directDebitMandateTypeName
- mandateAddressId
- mandateReference
type: object
properties:
@ -4769,10 +4674,6 @@ components:
type: string
billingInformationId:
type: integer
mandateAddressId:
type: integer
created:
type: string
mandateReference:
type: string
directDebitMandatePost:
@ -4787,8 +4688,6 @@ components:
type: string
billingInformationId:
type: integer
mandateAddressId:
type: integer
mandateReference:
type: string
mandateState:
@ -4811,8 +4710,6 @@ components:
type: integer
billingInformationId:
type: integer
mandateAddressId:
type: integer
created:
type: string
mandateReference:
@ -4826,52 +4723,41 @@ components:
- alias
- ascription
- bic
- billingAddressId
- billingInformationId
- iban
- issuerCountry
- swift
- created
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
created:
type: string
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
created:
type: string
billingInformationPost:
type: object
properties:
@ -4880,20 +4766,14 @@ components:
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:
@ -5095,8 +4975,6 @@ components:
type: string
country:
type: string
isPreferred:
type: boolean
addressTypeId:
type: integer
addressPatchEntity:
@ -5116,8 +4994,6 @@ components:
type: string
addressTypeId:
type: integer
isPreferred:
type: boolean
phonePostEntity:
required:
- countryCode

View File

@ -294,164 +294,6 @@ paths:
- 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:

View File

@ -0,0 +1,206 @@
openapi: 3.0.3
info:
title: Service Desk Card Reader API
version: 0.9.0
description: |-
This API enables that external systems (such as SOS) can operate on information from service desk card readers.
### 0.9.0
- First draft version
servers:
- url: /v1
paths:
/card-reader/token:
post:
tags:
- CardReader
summary: Register a token from the card
operationId: registerToken
description: |
Register a token from the card to the external system.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TokenRegisterRequest"
responses:
"202":
description: Accepted
"400":
description: |-
Bad Request. Occurs when the readerId is unknown to the external system. A call to `/card-reader/registrations`,
followed by a `/card-reader/register` is needed in order to restore reader registrations.
/card-reader/register:
post:
tags:
- CardReader
summary: Register a reader that is connected to the Card Reader Interface
operationId: registerReader
description: |
Register a reader to the external system to receive a newly generated readerID.
**N.B.**: After the last reader has been registered, an initial `/card-reader/registrations` call must be sent.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReaderRegisterRequest"
responses:
"200":
description: Registration was successful
content:
application/json:
schema:
$ref: "#/components/schemas/ReaderRegisterResponse"
"400":
description: Bad Request
/card-reader/unregister:
post:
tags:
- CardReader
summary: Unregister a reader from the external system
operationId: unregisterReader
description: |
Unregister a reader from the external system.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/ReaderUnregisterRequest"
responses:
"204":
description: Unregistration was successful
"400":
description: Bad Request
/card-reader/registrations:
post:
tags:
- CardReader
summary: Send a list of readers that should currently be registered
operationId: sendReaderRegistrations
description: |
Send a list of readers of which the Card Reader Interface believes are registered. This must be done periodically.
The period is determined by the timeout duration in the response.
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/RegistrationsRequest"
responses:
"200":
description: Reader registrations successfully received
content:
application/json:
schema:
$ref: "#/components/schemas/RegistrationsResponse"
components:
schemas:
TokenRegisterRequest:
description: Request containing token information read using the card reader
type: object
properties:
readerId:
$ref: "#/components/schemas/ReaderId"
xBot:
type: string
format: uuid
description: The unique identifier of the token.
required:
- readerId
- xBot
ReaderRegisterRequest:
description: Request containing card reader information for one or more readers to be be registered
type: object
properties:
readerIdQuantity:
type: integer
default: 1
minimum: 1
cardReaderInterfaceId:
$ref: "#/components/schemas/cardReaderInterfaceId"
locationName:
$ref: "#/components/schemas/LocationName"
required:
- cardReaderInterfaceId
- locationName
- readerIdQuantity
ReaderRegisterResponse:
description: Response containing one or more readerIds for the registered reader(s)
type: object
properties:
readerIds:
type: array
items:
$ref: "#/components/schemas/ReaderId"
required:
- readerIds
ReaderUnregisterRequest:
description: Request containing the readerId to unregister
type: object
properties:
cardReaderInterfaceId:
$ref: "#/components/schemas/cardReaderInterfaceId"
locationName:
$ref: "#/components/schemas/LocationName"
readerId:
$ref: "#/components/schemas/ReaderId"
required:
- readerId
RegistrationsRequest:
description: Request containing a list of readerId of which the Card Reader Interface believes are registered.
type: object
properties:
cardReaderInterfaceId:
$ref: "#/components/schemas/cardReaderInterfaceId"
locationName:
$ref: "#/components/schemas/LocationName"
readerIds:
type: array
items:
$ref: "#/components/schemas/ReaderId"
required:
- cardReaderInterfaceId
- locationName
- readerIds
RegistrationsResponse:
description: Response with actionable information for the Card Reader Interface.
type: object
properties:
nextCallTimeout:
type: integer
description: |
Timeout duration in seconds BEFORE which the next `/card-reader/registrations` call should happen.
Failure to send a call before this timeout will result in automatic unregistration of all readers associated to this Card Read Interface.
The external systems must maintain a grace period on reception of the next call.
The Card Read Interface must start sending the next call on or before the timeout (grace period not needed).
readerIds:
type: array
items:
$ref: "#/components/schemas/ReaderId"
description: |
A list of readerIds that are registered to the external system. This mean all readerIds that readers with
readerIds missing from this list must be reregistered using `/card-reader/register`.
required:
- nextCallTimeout
- readerIds
cardReaderInterfaceId:
type: string
description: Each Card Reader Interface has a unique cardReaderInterfaceId. Identifier for the Card Reader Interface to which one or more readers are connected.
LocationName:
type: string
description: Name of the location of the reader. A location can have one ore more Card Reader Interfaces (cardReaderInterfaceIds)
ReaderId:
type: string
description: Unique identifier generated by the external system. Should be displayed on the screen of the reader.

View File

@ -3358,7 +3358,9 @@ paths:
examples:
v2.2:
summary: Add a payment v2.2
description: Add a payment v2.2
description: |
Add a payment for a concept order. Note how it is not allowed to add a payment status or an external
payment reference when adding a payment to a concept order.
value:
{
"createdOn": "2024-03-22T09:00:00",
@ -3366,9 +3368,6 @@ paths:
"paymentMethodId": 1,
"isRefund": false,
"htmPaymentReference": "HTM-1234",
"pspPaymentReference": null,
"paymentStatuses": [],
"mandateInput": null,
}
v1.2:
summary: Order creation v1.2
@ -3585,17 +3584,7 @@ paths:
"isRefund": false,
"htmPaymentReference": "HTM-1234",
"pspPaymentReference": null,
"paymentStatuses":
[
{
"paymentStatusId": "42eee610-1a17-4f02-be14-7e25d69d35f3",
"createdOn": "2024-03-22T09:00:00",
"statusCode": "?",
"statusDescription": "Initiated",
"statusSubCode": "?",
"statusSubDescription": "PaymentInitiated",
},
],
"paymentStatuses": [],
"mandateInput": null,
},
],

View File

@ -0,0 +1,159 @@
openapi: "3.0.3"
info:
title: ABT Service CRUD APIs
version: "1.0"
description: CRUD APIs for ABT Service processes.
servers:
- url: https://api.integratielaag.nl/v1/service
paths:
/tokenregisterrequests:
get:
summary: Get all token register requests.
description: Get all token register requests.
tags:
- NFC Reader
parameters:
- in: query
name: readerId
schema:
type: string
example: b14b0320-2b72-48bb-990b-b97a2d67f9df
explode: false
required: false
description: Filter on possible NFC reader ids.
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TokenRegisterRequestsGetResponse"
examples:
Single TokenRegisterRequest:
summary: Single TokenRegisterRequest
value:
{
"tokenRegisterRequests":
[
{
"readerId": "b14b0320-2b72-48bb-990b-b97a2d67f9df",
"xBot": "4bfaede2-a6c9-45dd-8a80-1f83a075a115",
"updated": "2025-07-02T15:01:00.000+00:00",
},
],
}
Multiple TokenRegisterRequests:
summary: Multiple TokenRegisterRequests
value:
{
"tokenRegisterRequests":
[
{
"readerId": "b14b0320-2b72-48bb-990b-b97a2d67f9df",
"xBot": "4bfaede2-a6c9-45dd-8a80-1f83a075a115",
"updated": "22025-07-02T15:01:00.000+00:00",
},
{
"readerId": "b4d8e43c-be21-472c-955b-a0c7c11b4bfb",
"xBot": "625bc66b-a5de-42fc-ba9e-fb02ada4a4ee",
"updated": "2025-07-02T13:37:07.000+00:00",
},
],
}
/tokenregisterrequests/{readerId}:
parameters:
- in: path
name: readerId
required: true
description: The NFC reader id.
schema:
type: string
example: b14b0320-2b72-48bb-990b-b97a2d67f9df
put:
summary: Insert or update token register request.
description: Insert or update token register request.
tags:
- NFC Reader
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TokenRegisterRequestPutRequest"
example: { "xBot": "4bfaede2-a6c9-45dd-8a80-1f83a075a115" }
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TokenRegisterRequestPutResponse"
example:
{
"readerId": "b14b0320-2b72-48bb-990b-b97a2d67f9df",
"xBot": "4bfaede2-a6c9-45dd-8a80-1f83a075a115",
"updated": "2025-07-02T15:01:00.000+00:00",
}
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/TokenRegisterRequestPutResponse"
example:
{
"readerId": "b14b0320-2b72-48bb-990b-b97a2d67f9df",
"xBot": "4bfaede2-a6c9-45dd-8a80-1f83a075a115",
"updated": "2025-07-02T15:01:00.000+00:00",
}
components:
securitySchemes:
bearerToken:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
TokenRegisterRequestsGetResponse:
type: object
properties:
tokenRegisterRequests:
type: array
items:
$ref: "#/components/schemas/TokenRegisterRequest"
TokenRegisterRequestPutRequest:
type: object
properties:
xBot:
type: string
format: uuid
example: 4bfaede2-a6c9-45dd-8a80-1f83a075a115
nullable: false
description: The xBOT id.
required:
- xBot
TokenRegisterRequestPutResponse:
$ref: "#/components/schemas/TokenRegisterRequest"
TokenRegisterRequest:
type: object
properties:
readerId:
type: string
example: b14b0320-2b72-48bb-990b-b97a2d67f9df
nullable: false
description: The NFC reader id.
xBot:
type: string
format: uuid
example: 4bfaede2-a6c9-45dd-8a80-1f83a075a115
nullable: false
description: The xBOT id.
updated:
type: string
format: date-time
example: "2025-07-02T15:01:00+00:00"
nullable: false
description: The date and time when the token register request was updated.
required:
- readerId
- xBot
- updated

View File

@ -0,0 +1,65 @@
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="http://www.coda.com/efinance/schemas/inputext/input-14.0/webservice"
xmlns:tran="http://www.coda.com/efinance/schemas/transaction"
xmlns:flex="http://www.coda.com/common/schemas/flexifield"
xmlns:att="http://www.coda.com/common/schemas/attachment"
xmlns:inp="http://www.coda.com/efinance/schemas/inputext"
xmlns:mat="http://www.coda.com/efinance/schemas/matching"
xmlns:ass="http://www.coda.com/efinance/schemas/association">
<soapenv:Body>
<web:PostToBooksRequest>
<web:Transaction>
<tran:Header
xmlns:tran="http://www.coda.com/efinance/schemas/transaction">
<tran:Key>
<tran:CmpCode>1HTM</tran:CmpCode>
<tran:Code>OPBR-FIKO</tran:Code>
</tran:Key>
<tran:TimeStamp>0</tran:TimeStamp>
<tran:InputDate>2024-11-25T00:00:00.000Z</tran:InputDate>
<tran:Period>2024/7</tran:Period>
<tran:CurCode>EUR</tran:CurCode>
<tran:Date>2024-07-25T00:00:00.000Z</tran:Date>
<tran:OriginalCompany>1HTM</tran:OriginalCompany>
<tran:OriginalCode>OPBR-FIKO</tran:OriginalCode>
<tran:CompletionWorkflow>
<tran:CompletionStatus>wfl_no_completion</tran:CompletionStatus>
</tran:CompletionWorkflow>
<tran:SalesInvoiceStatus>salesinv_notyetinv</tran:SalesInvoiceStatus>
</tran:Header>
<tran:Lines
xmlns:tran="http://www.coda.com/efinance/schemas/transaction">
<tran:Line>
<tran:Number>1</tran:Number>
<tran:AccountCode>100.12400.D150000001</tran:AccountCode>
<tran:DocValue>100.00</tran:DocValue>
<tran:LineType>summary</tran:LineType>
<tran:LineSense>debit</tran:LineSense>
<tran:LineOrigin>dl_orig_defined</tran:LineOrigin>
<tran:Description>test</tran:Description>
<tran:ExtRef1>987654</tran:ExtRef1>
<tran:ExtRef2>test987654</tran:ExtRef2>
<tran:SEPAPaymentCategoryPurposeCode>none</tran:SEPAPaymentCategoryPurposeCode>
<tran:SEPAPaymentPurposeCode>none</tran:SEPAPaymentPurposeCode>
</tran:Line>
<tran:Line>
<tran:Number>2</tran:Number>
<tran:AccountCode>642.41236.609311</tran:AccountCode>
<tran:DocValue>100.00</tran:DocValue>
<tran:UserStatus/>
<tran:LineType>analysis</tran:LineType>
<tran:LineSense>credit</tran:LineSense>
<tran:LineOrigin>dl_orig_defined</tran:LineOrigin>
<tran:SEPAPaymentCategoryPurposeCode>none</tran:SEPAPaymentCategoryPurposeCode>
<tran:SEPAPaymentPurposeCode>none</tran:SEPAPaymentPurposeCode>
</tran:Line>
</tran:Lines>
</web:Transaction>
<web:PostData>
<web:Template>OPBR-FIKO</web:Template>
<web:DocumentWideData/>
</web:PostData>
</web:PostToBooksRequest>
</soapenv:Body>
</soapenv:Envelope>

View File

@ -0,0 +1,77 @@
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.coda.com/efinance/schemas/inputext/input-14.0/webservice" xmlns:tran="http://www.coda.com/efinance/schemas/transaction" xmlns:flex="http://www.coda.com/common/schemas/flexifield" xmlns:att="http://www.coda.com/common/schemas/attachment" xmlns:inp="http://www.coda.com/efinance/schemas/inputext" xmlns:mat="http://www.coda.com/efinance/schemas/matching" xmlns:ass="http://www.coda.com/efinance/schemas/association">
<soapenv:Header>
<web:Options/>
</soapenv:Header>
<soapenv:Body>
<web:PostRequest>
<web:PostOptions postto="intray" reportallerrors="1"/> <!-- postto staat nu naar het register (intray). Dit zou ik een live situatie moeten/kunnen worden aangepast naar de boeken (books) -->
<web:Transaction>
<tran:Header>
<tran:Key>
<tran:CmpCode>1HTM</tran:CmpCode> <!-- Unit4 Financials bedrijf -->
<tran:Code>VERK_FACTUUR</tran:Code> <!-- Documentcode -->
</tran:Key>
<tran:TimeStamp>0</tran:TimeStamp> <!-- Timestamp bij nieuwe transacties altijd 0 -->
<tran:Period>2024/5</tran:Period> <!-- Jaar en periode van boeken -->
<tran:CurCode>EUR</tran:CurCode> <!-- Valutacode -->
<tran:Date>2024-06-05T00:00:00.000Z</tran:Date> <!-- Documentdatum> -->
<tran:Description>DW12345</tran:Description> <!-- Omschrijving document -->
</tran:Header>
<tran:Lines>
<tran:Line>
<tran:Number>1</tran:Number> <!-- Regelnummer - 1 Debiteurenregel -->
<tran:AccountCode>1200.D001</tran:AccountCode> <!-- Boeken op elementcode, in dit geval alleen elementen op niveau 1 en 2 (gescheiden door een punt) -->
<tran:DocValue>121.00</tran:DocValue> <!-- Totaalbedrag debiteurenregel -->
<tran:LineType>summary</tran:LineType> <!-- Type regel, in het geval van een debiteurenregel is dit summary -->
<tran:LineSense>credit</tran:LineSense> <!-- Debet of Credit -->
<tran:LineOrigin>dl_orig_defined</tran:LineOrigin> <!-- Aangezien hier gebruik wordt gemaakt van het invoersjabloon FACTUUR_VER (zie regel 72) is dit een vooraf gedefinieerde regel ( dl_orig_defined) -->
<tran:Description>Nov 2020 Huur</tran:Description> <!-- Regelomschrijving -->
<tran:ExtRef1>DW12345</tran:ExtRef1> <!-- Externe referentie 1 -->
<tran:ExtRef2/> <!-- Externe referentie 2, nu niet gevuld -->
<tran:ExtRef3/> <!-- Externe referentie 3, nu niet gevuld, hieronder kunnen ook nog andere referenties worden opgenomen -->
<tran:DocSumTax>21.00</tran:DocSumTax> <!-- BTW-bedrag behorende bij debiteurenregel -->
<tran:TaxInclusive>false</tran:TaxInclusive> <!-- Inclusief of exclusief BTW -->
</tran:Line>
<tran:Line>
<tran:Number>2</tran:Number> <!-- Regelnummer - 1 Omzetregel -->
<tran:AccountCode>4300</tran:AccountCode> <!-- Boeken op elementcode, in dit geval alleen element op niveau 1 -->
<tran:DocValue>100.00</tran:DocValue> <!-- Totaalbedrag omzetregel -->
<tran:LineType>analysis</tran:LineType> <!-- Type regel, in het geval van een omzetregel is dit analyses (analyse) -->
<tran:LineSense>debit</tran:LineSense> <!-- Debet of Credit -->
<tran:LineOrigin>dl_orig_defined</tran:LineOrigin> <!-- Aangezien hier gebruik wordt gemaakt van het invoersjabloon FACTUUR_VER (zie regel 72) is dit een vooraf gedefinieerde regel ( dl_orig_defined) -->
<tran:Description>Voorschot Q1.</tran:Description> <!-- Regelomschrijving -->
<tran:ExtRef1>Ref. DW12345</tran:ExtRef1> <!-- Externe referentie 1 -->
<tran:ExtRef2/> <!-- Externe referentie 2, nu niet gevuld -->
<tran:ExtRef3/> <!-- Externe referentie 3, nu niet gevuld, hieronder kunnen ook nog andere referenties worden opgenomen -->
<tran:TaxInclusive>false</tran:TaxInclusive> <!-- Inclusief of exclusief BTW -->
<tran:Taxes>
<tran:Tax>
<tran:Code>21%</tran:Code> <!-- BTW-code -->
<tran:ShortName>21% BTW</tran:ShortName> <!-- Verkorte omschrijving BTW -->
<tran:Value>21.00</tran:Value> <!-- BTW-bedrag analyse regel -->
</tran:Tax>
</tran:Taxes>
</tran:Line>
<tran:Line>
<tran:Number>3</tran:Number> <!-- Regelnummer - 3 BTW-regel -->
<tran:AccountCode>1400</tran:AccountCode> <!-- Boeken op elementcode, in dit geval alleen element op niveau 1 -->
<tran:DocValue>21.00</tran:DocValue> <!-- BTW-bedrag -->
<tran:LineType>tax</tran:LineType> <!-- Type regel, in het geval van een BTW-regel is dit tax (BTW) -->
<tran:LineSense>debit</tran:LineSense> <!-- Debet of Credit -->
<tran:LineOrigin>dl_orig_gentax</tran:LineOrigin> <!-- Aangezien hier gebruik wordt gemaakt van het invoersjabloon FACTUUR_VER (zie regel 72) is dit een vooraf gedefinieerde regel ( dl_orig_gentax) -->
<tran:Description>Test DW</tran:Description> <!-- Regelomschrijving -->
<tran:ExtRef1/>
<tran:ExtRef2/>
<tran:ExtRef3/>
<tran:TaxLineCode>21%</tran:TaxLineCode> <!-- BTW-code -->
<tran:DocTaxTurnover>100.00</tran:DocTaxTurnover> <!-- Bedrag waar BTW over berekend -->
</tran:Line>
</tran:Lines>
</web:Transaction>
<web:PostData>
<inp:Template>FACTUUR_VER</inp:Template> <!-- Te gebruiken invoersjabloon -->
<inp:DocumentWideData/>
</web:PostData>
</web:PostRequest>
</soapenv:Body>
</soapenv:Envelope>