Compare commits

..

12 Commits

Author SHA1 Message Date
e13122a309 Merge branch 'develop' into feature/OVPAY-2018 2025-10-03 15:02:12 +02:00
fea8e01e47 Bugfix. 2025-10-01 11:34:52 +02:00
Max Martens
d1b83d19b5 Refactor layerInfo to communicate what differentiates underlying variants, instead of being defined on every variant itself 2025-09-30 18:04:04 +02:00
Max Martens
67e459d1b0 Support for layerInfo, fix some null attribute namings 2025-09-29 08:16:09 +02:00
b99e6b83c7 Merge pull request 'Add productcategory for saldo and product examples for saldo and change IBAN mandate' (#28) from feature/OVPAY-2029-saldo into develop
Reviewed-on: #28
2025-09-26 16:42:54 +00:00
Max Martens
b7801e6871 Merge branch 'develop' into feature/OVPAY-2029-saldo 2025-09-26 18:42:16 +02:00
Max Martens
5aabd3e529 Add fikoArticleNumber everywhere; set amountExlTax to null everywhere to prepare for upcoming deprecation 2025-09-26 18:41:23 +02:00
1413cbd01d OVPAY-1110 - Added endpoint to undo pending contract cancellation. 2025-09-15 12:03:11 +02:00
17d7b77541 TransactionId, transactionLineId and articleNumber are strings. 2025-09-15 10:55:54 +02:00
a7c1908d00 DateOfBirth and Birthdate are always formatted YYYY-MM-DD. 2025-09-12 12:53:42 +02:00
Max Martens
d5cbf06ec4 Add examples for saldo and change IBAN mandate (only in CRUD for now, not yet in SE/TP) 2025-09-05 18:23:03 +02:00
Max Martens
361813a734 Add productCategory 8 (saldo), with isTravelProduct=true (as it can only exist on an OV-pas) 2025-09-05 18:21:57 +02:00
11 changed files with 654 additions and 406 deletions

View File

@ -91,6 +91,26 @@ public class ABTProductsPUTGenerator {
private static void checkRewriteNullFields(Map.Entry<String, JsonNode> jsonField, JsonNode newJsonNode) {
switch (jsonField.getKey()) {
case "productOwner" -> {
LOGGER.info("Rewriting null productOwner to productOwnerId...");
((ObjectNode)newJsonNode).putRawValue("productOwnerId", null);
}
case "productCategory" -> {
LOGGER.info("Rewriting null productCategory to productCategoryId...");
((ObjectNode)newJsonNode).putRawValue("productCategoryId", null);
}
case "paymentMoment" -> {
LOGGER.info("Rewriting null paymentMoment to paymentMomentId...");
((ObjectNode)newJsonNode).putRawValue("paymentMomentId", null);
}
case "requiredCustomerLevel" -> {
LOGGER.info("Rewriting null requiredCustomerLevel to requiredCustomerLevelId...");
((ObjectNode)newJsonNode).putRawValue("requiredCustomerLevelId", null);
}
case "layerInfo" -> {
LOGGER.info("Rewriting null layerInfo to layerInfoId...");
((ObjectNode)newJsonNode).putRawValue("layerInfoId", null);
}
case "marketSegments" -> {
LOGGER.info("Rewriting null marketSegments to marketSegmentIds...");
((ObjectNode)newJsonNode).putRawValue("marketSegmentIds", null);
@ -148,6 +168,11 @@ public class ABTProductsPUTGenerator {
Long requiredCustomerLevelId = jsonField.getValue().get("requiredCustomerLevelId").asLong();
((ObjectNode)newJsonNode).put("requiredCustomerLevelId", requiredCustomerLevelId);
}
case "layerInfo" -> {
LOGGER.info("Rewriting layerInfo to layerInfoId...");
Long layerInfoId = jsonField.getValue().get("layerInfoId").asLong();
((ObjectNode)newJsonNode).put("layerInfoId", layerInfoId);
}
}
}

View File

@ -695,8 +695,7 @@ paths:
[
{
"invoiceAccountingStatusId": 1,
"createdOn",
"2024-07-02 15:01:00.000",
"createdOn": "2024-07-02 15:01:00.000",
"description": null,
},
],
@ -1242,7 +1241,7 @@ components:
data:
type: string
format: json
example: { json }
example: "{json}"
isCredit:
type: boolean
example: false

View File

@ -453,6 +453,123 @@ paths:
"refundAmount": 2489,
"refundMethod": "creditInvoice",
}
/contracts/{contractId}/undocancellation:
parameters:
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
required: true
description: The JWT of the logged in customer.
- in: path
name: contractId
schema:
type: string
format: uuid
example: 9e224750-3065-471d-af57-85b9cffa7c89
required: true
description: The id of the contract to process.
post:
summary: Undo a pending cancellation of a contract.
description: Undo a pending cancellation of a contract.
tags:
- SE Contract Cancellation v2
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Successfully undid cancellation of contract:
summary: Successfully undid pending cancellation
description: |
Successfully undid a pending cancellation of a contract. The contract
is active again.
value:
{
"contractId": "9e224750-3065-471d-af57-85b9cffa7c89",
"contractNumber": "D123456",
"customerProfileId": 42,
"orderId": "eb3d08f7-7feb-4f31-9f5b-daa634e51f48",
"orderLineId": "52efbbfc-8c28-4016-9ece-dc3ef9a70bd8",
"touchpointId": 2,
"contractStatus":
{ "contractStatusId": 2, "name": "active" },
"productId": 1,
"productName": "HTM Maand 20% korting",
"termDuration": "P0Y1M0D",
"billingDay": 15,
"highestInvoiceTerm": 1,
"ovPayTokenId": 1337,
"contractVersions":
[
{
"contractVersionId": 1,
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
"termAmountExclTax": 1200,
"taxCode": "V21",
"taxAmount": 108,
"termAmountInclTax": 1308,
"start": "2024-07-04 15:01:00.000",
"end": "2024-12-31 15:01:00.000",
},
{
"contractVersionId": 2,
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
"termAmountExclTax": 1300,
"taxCode": "V21",
"taxAmount": 117,
"termAmountInclTax": 1417,
"start": "2025-01-01 15:01:00.000",
},
],
"contractActions":
[
{
"contractActionId": "67687851-59dd-4bbc-aa74-0f7abd26c883",
"actionType":
{ "actionTypeId": 1, "name": "create" },
"user": "subid123456",
"timestamp": "2024-07-02 15:01:00.000",
"details": "Contract created",
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
},
{
"contractActionId": "ea9ad287-9cd3-4e76-bcb9-d71db551cf55",
"actionType":
{ "actionTypeId": 2, "name": "change" },
"user": "subid123456",
"timestamp": "2024-07-03 15:01:00.000",
"details": "Contract changed",
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
},
],
"contractInvoices":
[
{
"contractInvoiceId": "8699d72a-cf4d-4e6b-9e9c-549d837ca51f",
"externalReference": "F2024-0001",
"term": 1,
"invoiceDate": "2024-07-02",
"created": "2024-07-02 15:01:00.000",
"updated": "2024-07-02 15:01:00.000",
"state": "invoice_created",
"data": "{json}",
"isCredit": false,
},
],
"_links":
{
"get_token":
{
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPayTokenId=1337",
"method": "GET",
},
},
}
/contractpayments:
parameters:
- in: header

View File

@ -104,8 +104,8 @@ paths:
transactionItemId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
transactionType: sales
sourceName: HTM-website
transactionId: 1001236
transactionLineId: 1
transactionId: "1001236"
transactionLineId: "1"
name: HTM Maandkorting 20%
quantity: 1
taxCode: V21
@ -114,7 +114,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4031
articleNumber: "4031"
status: created
aggregationReference: null
accountingSystemReference: null
@ -123,8 +123,8 @@ paths:
transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
transactionType: sales
sourceName: HTM-website
transactionId: 1002001
transactionLineId: 1
transactionId: "1002001"
transactionLineId: "1"
name: Reisproduct HTM 3 dag Anoniem
quantity: 1
taxCode: V21
@ -133,7 +133,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4051
articleNumber: "4051"
status: failed
aggregationReference: null
accountingSystemReference: null
@ -142,8 +142,8 @@ paths:
transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
transactionType: sales
sourceName: HTM-website
transactionId: 1001871
transactionLineId: 1
transactionId: "1001871"
transactionLineId: "1"
name: Reisproduct HTM 3 dag Anoniem
quantity: 1
taxCode: V21
@ -152,7 +152,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4051
articleNumber: "4051"
status: returned to src
aggregationReference: FIKO-171f40609e
accountingSystemReference: null
@ -161,8 +161,8 @@ paths:
transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
transactionType: sales
sourceName: HTM-website
transactionId: 1001131
transactionLineId: 1
transactionId: "1001131"
transactionLineId: "1"
name: Reisproduct HTM 3 dag Anoniem
quantity: 1
taxCode: V21
@ -171,7 +171,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4051
articleNumber: "4051"
status: returned to trx-db
aggregationReference: null
accountingSystemReference: null
@ -180,8 +180,8 @@ paths:
transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
transactionType: sales
sourceName: HTM-website
transactionId: 1001885
transactionLineId: 1
transactionId: "1001885"
transactionLineId: "1"
name: Reisproduct HTM 3 dag Anoniem
quantity: 1
taxCode: V21
@ -190,7 +190,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4051
articleNumber: "4051"
status: re-entered
aggregationReference: null
accountingSystemReference: null
@ -199,8 +199,8 @@ paths:
transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
transactionType: sales
sourceName: HTM-website
transactionId: 1001679
transactionLineId: 1
transactionId: "1001679"
transactionLineId: "1"
name: Reisproduct HTM 1 dag Anoniem
quantity: 1
taxCode: V21
@ -209,7 +209,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 1737
articleNumber: "1737"
status: succeeded
aggregationReference: FIKO-6a4fca8cd6
accountingSystemReference: U4F-123456
@ -237,8 +237,8 @@ paths:
transactionItems:
- transactionType: sales
sourceName: HTM-website
transactionId: 1001236
transactionLineId: 1
transactionId: "1001236"
transactionLineId: "1"
name: HTM Maandkorting 20%
quantity: 1
taxCode: V21
@ -247,7 +247,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4031
articleNumber: "4031"
Add multiple transaction items:
summary: Add multiple transaction items
description: Add multiple transaction items of type sales.
@ -255,8 +255,8 @@ paths:
transactionItems:
- transactionType: sales
sourceName: HTM-website
transactionId: 1001236
transactionLineId: 1
transactionId: "1001236"
transactionLineId: "1"
name: HTM Maandkorting 20%
quantity: 1
taxCode: V21
@ -265,11 +265,11 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4031
articleNumber: "4031"
- transactionType: sales
sourceName: HTM-website
transactionId: 1001237
transactionLineId: 1
transactionId: "1001237"
transactionLineId: "1"
name: HTM Maandkorting 20%
quantity: 1
taxCode: V21
@ -278,7 +278,7 @@ paths:
amountTax: 21
occurredOn: 2024-10-04T00:00:00Z
type: debit
articleNumber: 4031
articleNumber: "4031"
responses:
"202":
description: Accepted
@ -3022,11 +3022,11 @@ components:
example: HTM-website
transactionId:
type: string
example: 1001236
example: "1001236"
transactionLineId:
type: string
nullable: true
example: 1
example: "1"
name:
type: string
example: HTM Maandkorting 20%
@ -3058,7 +3058,7 @@ components:
articleNumber:
type: string
nullable: true
example: 4031
example: "4031"
status:
type: string
enum:
@ -3109,11 +3109,11 @@ components:
example: HTM-website
transactionId:
type: string
example: 1001236
example: "1001236"
transactionLineId:
type: string
nullable: true
example: 1
example: "1"
name:
type: string
example: HTM Maandkorting 20%
@ -3145,7 +3145,7 @@ components:
articleNumber:
type: string
nullable: true
example: 4031
example: "4031"
required:
- sourceName
- transactionType

View File

@ -192,7 +192,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeType":
{
@ -373,7 +373,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "DSC_0502.JPG",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -555,7 +555,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeType":
{ "challengeTypeId": 1, "name": "email" },
@ -779,7 +779,7 @@ paths:
"verificationCode": "A7H6",
"personalAccountData":
{
"birthdate": "01-01-1970"
"birthdate": "1970-01-01"
},
},
],
@ -1136,7 +1136,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeType":
{ "challengeTypeId": 1, "name": "email" },
@ -1275,7 +1275,7 @@ paths:
"verificationCode": "A7H6",
"personalAccountData":
{
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
}
}
responses:
@ -1377,7 +1377,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeType":
{ "challengeTypeId": 1, "name": "email" },
@ -1457,7 +1457,7 @@ paths:
description: Only record birthdate PersonalAccountData
value:
{
"birthdate": "01-01-1970"
"birthdate": "1970-01-01"
}
name PersonalAccountData:
summary: PersonalAccountData name
@ -1479,7 +1479,7 @@ paths:
value:
{
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -1490,7 +1490,7 @@ paths:
value:
{
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -1558,7 +1558,7 @@ paths:
format: date
example: 1970-01-01
required: false
description: The date of birth of the customer.
description: "The date of birth of the customer (formatted: YYYY-MM-DD)."
- in: query
name: photo
schema:
@ -1598,7 +1598,7 @@ paths:
"orderLineId": "858e31b9-67f0-46ca-bf88-91a382b9c079",
"orderId": "858e31b9-67f0-46ca-bf88-91a382b9c079",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeType": { "challengeTypeId": 1, "name": "email" },
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -2164,7 +2164,7 @@ paths:
format: date
example: 1970-01-01
required: false
description: The date of birth of the customer.
description: "The date of birth of the customer (formatted: YYYY-MM-DD)."
responses:
"200":
description: OK

View File

@ -64,7 +64,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -205,7 +205,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -355,7 +355,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -462,7 +462,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -529,8 +529,8 @@ paths:
value:
{
"customerProfileID": 123415,
"customerProfileData": { "dateOfBirth": "09-03-1989" },
"personalAccountData": { "birthdate": "09-03-1989" },
"customerProfileData": { "dateOfBirth": "1989-03-09" },
"personalAccountData": { "birthdate": "1989-03-09" },
"directDebitMandate":
{
"consumerName": "J. de Tèster",
@ -624,7 +624,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -998,7 +998,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -1084,7 +1084,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -1134,7 +1134,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -1255,7 +1255,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -1414,7 +1414,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -1598,7 +1598,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -1825,7 +1825,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -1999,7 +1999,7 @@ paths:
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"dateOfBirth": "1970-01-01",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
@ -2104,7 +2104,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -2438,7 +2438,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -2973,7 +2973,7 @@ paths:
value:
{
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -3066,7 +3066,7 @@ paths:
"personalAccountData":{
"personalAccountDataId": "d9021fdd-6e83-45c0-9aef-71680f0b4e74",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -3115,7 +3115,7 @@ paths:
description: Update personal account data v2.2
value:
{
"birthdate": "01-01-2010",
"birthdate": "2010-01-01",
}
responses:
"201":
@ -3205,7 +3205,7 @@ paths:
"personalAccountData":{
"personalAccountDataId": "d9021fdd-6e83-45c0-9aef-71680f0b4e74",
"name": "Jan de Vries",
"birthdate": "01-01-2010",
"birthdate": "2010-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" ,
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
@ -3497,7 +3497,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -3766,7 +3766,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -3955,7 +3955,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -4245,7 +4245,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -4431,7 +4431,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -4621,7 +4621,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{
@ -4799,7 +4799,7 @@ paths:
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"birthdate": "01-01-1970",
"birthdate": "1970-01-01",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC",
"challengeType":
{

View File

@ -401,7 +401,7 @@ paths:
[
{
"sellingPriceId": 78,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2028-11-17T23:00:00.000+00:00",
@ -421,12 +421,20 @@ paths:
All details (that the calling touchpoint is allowed to see) for the 20% Discount product.\
Even though this product has sellingPeriods for multiple touchpoints (3 and 4), only the currently active sellingPeriod and price for touchpointId 4 are returned.
This product has two `productVariants`: a single month variant and a subscription variant.
This product has two `productVariants`: a single month variant and a subscription variant.\
The top-level parent contains `LayerInfo` to communicate what differentiates
the underlying product-variants.\
When no `LayerInfo` is present, the touchpoint can conclude that the product is a final fulfillable product.
value:
{
"productId": 126,
"parentProductId": null,
"layerInfo": null,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "30001",
"tapConnectProductCode": null,
@ -529,12 +537,7 @@ paths:
{
"productId": 119,
"parentProductId": 126,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "30001",
"tapConnectProductCode": null,
@ -632,7 +635,7 @@ paths:
[
{
"sellingPriceId": 149,
"amountExclTax": 276,
"amountExclTax": null,
"amountInclTax": 300,
"fromInclusive": "2025-01-19T23:00:00.000+00:00",
"toInclusive": "2028-11-17T23:00:00.000+00:00",
@ -649,12 +652,7 @@ paths:
{
"productId": 120,
"parentProductId": 126,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "30001",
"tapConnectProductCode": null,
@ -752,7 +750,7 @@ paths:
[
{
"sellingPriceId": 148,
"amountExclTax": 276,
"amountExclTax": null,
"amountInclTax": 300,
"fromInclusive": "2025-01-19T23:00:00.000+00:00",
"toInclusive": "2028-11-17T23:00:00.000+00:00",
@ -774,12 +772,19 @@ paths:
All details (that the calling touchpoint is allowed to see) for the parent Regio Vrij product
and (7 out of 84 of) its productVariants; the full tree would be too huge to be useful as an example.
The full depth of the tree is included in the example for the HL62 Reduced Fare Variant.
The full depth of the tree is included in the example for the HL62 Reduced Fare Variant.\
Each non-leaf-node product contains `LayerInfo` to communicate what differentiates the underlying product-variants.\
When no `LayerInfo` is present, the touchpoint can conclude that the product is a final fulfillable product.
value:
{
"productId": 49,
"parentProductId": null,
"layerInfo": null,
"layerInfo": {
"layerInfoId": 2,
"choiceKey": "regio",
"choiceLabel": "Kies de gewenste regio",
"isCustomChoice": true,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": null,
"tapConnectProductCode": null,
@ -922,10 +927,10 @@ paths:
"productId": 109,
"parentProductId": 49,
"layerInfo": {
"layerInfoId": 2,
"choiceKey": "regio",
"choiceLabel": "Kies de gewenste regio",
"isCustomChoice": true,
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33615",
@ -1072,9 +1077,9 @@ paths:
"productId": 114,
"parentProductId": 109,
"layerInfo": {
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
@ -1205,7 +1210,7 @@ paths:
[
{
"sellingPriceId": 139,
"amountExclTax": 5412,
"amountExclTax": null,
"amountInclTax": 5900,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1222,9 +1227,9 @@ paths:
"productId": 115,
"parentProductId": 109,
"layerInfo": {
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
@ -1355,7 +1360,7 @@ paths:
[
{
"sellingPriceId": 140,
"amountExclTax": 8899,
"amountExclTax": null,
"amountInclTax": 9700,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1372,12 +1377,7 @@ paths:
{
"productId": 116,
"parentProductId": 115,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33615",
"tapConnectProductCode": null,
@ -1509,7 +1509,7 @@ paths:
[
{
"sellingPriceId": 141,
"amountExclTax": 8899,
"amountExclTax": null,
"amountInclTax": 9700,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1526,12 +1526,7 @@ paths:
{
"productId": 117,
"parentProductId": 115,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33615",
"tapConnectProductCode": null,
@ -1663,7 +1658,7 @@ paths:
[
{
"sellingPriceId": 142,
"amountExclTax": 8899,
"amountExclTax": null,
"amountInclTax": 9700,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1685,10 +1680,10 @@ paths:
"productId": 112,
"parentProductId": 49,
"layerInfo": {
"layerInfoId": 2,
"choiceKey": "regio",
"choiceLabel": "Kies de gewenste regio",
"isCustomChoice": true,
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33618",
@ -1858,10 +1853,11 @@ components:
description: >-
Gives information on the choice that the customer has to make, to enable the touchpoint
to proceed further "down the product-tree" by selecting (PATCH-ing) the correct product-variant.
LayerInfo is not a mandatory product-attribute, but it should always be present on all product for which
`parentProductId != null`. (LayerInfo makes no sense for top-level parents as there is always a single starting point). \
LayerInfo is not a mandatory product-attribute, but it should always be present on all products for which
there are underlying products, i.e. for which `GET /products?parentProductId=...` returns a non-empty list.
When no LayerInfo is present, the touchpoint can conclude that the product is a final fulfillable product. \
**PMT should ensure that all products in the same "product-branch" (same `parentProductId`) have the same `layerInfoId`
**PMT should ensure that all non-leaf-node products (i.e. products that have underlying products) have a `layerInfoId`
referenced. If a product is found to be in violation of this rule, its attribtue `isValid` should be set to `false`.**
required:
- layerInfoId
@ -1877,12 +1873,12 @@ components:
type: string
description: >-
Contains the JSON Key of the product-attribute that the customer has to make some
choice on (determined by PMT), so that te correct product-variant can be selected by the touchpoint. For some
decisions (like region), there is no product attribute, and thus `isCustomChoice` will be set
to `true`, and `choiceKey` can then be set to any string on which touchpoints can also trigger
behaviour if desired (think "region picker tool"). Therefore, reuse of choiceKeys should be
choice on (determined by PMT), so that te correct product-variant (one of the direct child-products) can be
selected by the touchpoint. For some decisions (like region), there is no product attribute, and thus
`isCustomChoice` will be set to `true`, and `choiceKey` can then be set to any string on which touchpoints
can also trigger behaviour if desired (think "region picker tool"). Therefore, reuse of `choiceKeys` should be
the goal, so touchoints can keep their triggers simple and prevent duplication of
similar choiceKeys to trigger the same behaviour.
similar `choiceKeys` to trigger the same behaviour.
choiceLabel:
example: Kies voor een doorlopend abonnement of een enkele termijn
type: string
@ -1894,12 +1890,10 @@ components:
example: false
type: boolean
description: >-
Indicates if the choice is a custom choice. If `false`, the PMT should fill `choiceKey` with the
"differing attribute for this product-layer" and the user should not be able to override this. When
no single attribute can be pinpointed by PMT, the product will become invalid (`isValid == false`) until either
a situation with a single differing attribute is created, or if `isCustomChoice` is set to `true` - this would,
however, also mean that touchpoints should be notified of this, especially if the configured LayerInfo contains
a new, not previously used, `choiceKey`.
Indicates if the choice is a custom choice. If `false`, the PMT should validate that the `choiceKey` is a
differentiating attribute for the underlying product-variants. When the attribute denoted by the `choiceKey` is
the same for all underlying variants, PMT validation will fail and the product will become invalid (`isValid == false`)
until either the underlying products are updated, or a `LayerInfo` with `isCustomChoice == true` is configured.
GboAgeProfileResponse:
type: object
required:

View File

@ -401,7 +401,7 @@ paths:
[
{
"sellingPriceId": 78,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2028-11-17T23:00:00.000+00:00",
@ -421,12 +421,20 @@ paths:
All details (that the calling touchpoint is allowed to see) for the 20% Discount product.\
Even though this product has sellingPeriods for multiple touchpoints (3 and 4), only the currently active sellingPeriod and price for touchpointId 4 are returned.
This product has two `productVariants`: a single month variant and a subscription variant.
This product has two `productVariants`: a single month variant and a subscription variant.\
The top-level parent contains `LayerInfo` to communicate what differentiates
the underlying product-variants.\
When no `LayerInfo` is present, the touchpoint can conclude that the product is a final fulfillable product.
value:
{
"productId": 126,
"parentProductId": null,
"layerInfo": null,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "30001",
"tapConnectProductCode": null,
@ -529,12 +537,7 @@ paths:
{
"productId": 119,
"parentProductId": 126,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "30001",
"tapConnectProductCode": null,
@ -632,7 +635,7 @@ paths:
[
{
"sellingPriceId": 149,
"amountExclTax": 276,
"amountExclTax": null,
"amountInclTax": 300,
"fromInclusive": "2025-01-19T23:00:00.000+00:00",
"toInclusive": "2028-11-17T23:00:00.000+00:00",
@ -649,12 +652,7 @@ paths:
{
"productId": 120,
"parentProductId": 126,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "30001",
"tapConnectProductCode": null,
@ -752,7 +750,7 @@ paths:
[
{
"sellingPriceId": 148,
"amountExclTax": 276,
"amountExclTax": null,
"amountInclTax": 300,
"fromInclusive": "2025-01-19T23:00:00.000+00:00",
"toInclusive": "2028-11-17T23:00:00.000+00:00",
@ -774,12 +772,19 @@ paths:
All details (that the calling touchpoint is allowed to see) for the parent Regio Vrij product
and (7 out of 84 of) its productVariants; the full tree would be too huge to be useful as an example.
The full depth of the tree is included in the example for the HL62 Reduced Fare Variant.
The full depth of the tree is included in the example for the HL62 Reduced Fare Variant.\
Each non-leaf-node product contains `LayerInfo` to communicate what differentiates the underlying product-variants.\
When no `LayerInfo` is present, the touchpoint can conclude that the product is a final fulfillable product.
value:
{
"productId": 49,
"parentProductId": null,
"layerInfo": null,
"layerInfo": {
"layerInfoId": 2,
"choiceKey": "regio",
"choiceLabel": "Kies de gewenste regio",
"isCustomChoice": true,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": null,
"tapConnectProductCode": null,
@ -922,10 +927,10 @@ paths:
"productId": 109,
"parentProductId": 49,
"layerInfo": {
"layerInfoId": 2,
"choiceKey": "regio",
"choiceLabel": "Kies de gewenste regio",
"isCustomChoice": true,
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33615",
@ -1072,9 +1077,9 @@ paths:
"productId": 114,
"parentProductId": 109,
"layerInfo": {
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
@ -1205,7 +1210,7 @@ paths:
[
{
"sellingPriceId": 139,
"amountExclTax": 5412,
"amountExclTax": null,
"amountInclTax": 5900,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1222,9 +1227,9 @@ paths:
"productId": 115,
"parentProductId": 109,
"layerInfo": {
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
@ -1355,7 +1360,7 @@ paths:
[
{
"sellingPriceId": 140,
"amountExclTax": 8899,
"amountExclTax": null,
"amountInclTax": 9700,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1372,12 +1377,7 @@ paths:
{
"productId": 116,
"parentProductId": 115,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33615",
"tapConnectProductCode": null,
@ -1509,7 +1509,7 @@ paths:
[
{
"sellingPriceId": 141,
"amountExclTax": 8899,
"amountExclTax": null,
"amountInclTax": 9700,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1526,12 +1526,7 @@ paths:
{
"productId": 117,
"parentProductId": 115,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "isRenewable",
"choiceLabel": "Kies voor een doorlopend abonnement of een enkele termijn",
"isCustomChoice": false,
},
"layerInfo": null,
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33615",
"tapConnectProductCode": null,
@ -1663,7 +1658,7 @@ paths:
[
{
"sellingPriceId": 142,
"amountExclTax": 8899,
"amountExclTax": null,
"amountInclTax": 9700,
"fromInclusive": "2024-12-31T23:00:00.000+00:00",
"toInclusive": "2025-12-31T23:00:00.000+00:00",
@ -1685,10 +1680,10 @@ paths:
"productId": 112,
"parentProductId": 49,
"layerInfo": {
"layerInfoId": 2,
"choiceKey": "regio",
"choiceLabel": "Kies de gewenste regio",
"isCustomChoice": true,
"layerInfoId": 3,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"isCustomChoice": false,
},
"fikoArticleNumber": "1234",
"gboPackageTemplateId": "33618",
@ -1858,10 +1853,11 @@ components:
description: >-
Gives information on the choice that the customer has to make, to enable the touchpoint
to proceed further "down the product-tree" by selecting (PATCH-ing) the correct product-variant.
LayerInfo is not a mandatory product-attribute, but it should always be present on all product for which
`parentProductId != null`. (LayerInfo makes no sense for top-level parents as there is always a single starting point). \
LayerInfo is not a mandatory product-attribute, but it should always be present on all products for which
there are underlying products, i.e. for which `GET /products?parentProductId=...` returns a non-empty list.
When no LayerInfo is present, the touchpoint can conclude that the product is a final fulfillable product. \
**PMT should ensure that all products in the same "product-branch" (same `parentProductId`) have the same `layerInfoId`
**PMT should ensure that all non-leaf-node products (i.e. products that have underlying products) have a `layerInfoId`
referenced. If a product is found to be in violation of this rule, its attribtue `isValid` should be set to `false`.**
required:
- layerInfoId
@ -1877,12 +1873,12 @@ components:
type: string
description: >-
Contains the JSON Key of the product-attribute that the customer has to make some
choice on (determined by PMT), so that te correct product-variant can be selected by the touchpoint. For some
decisions (like region), there is no product attribute, and thus `isCustomChoice` will be set
to `true`, and `choiceKey` can then be set to any string on which touchpoints can also trigger
behaviour if desired (think "region picker tool"). Therefore, reuse of choiceKeys should be
choice on (determined by PMT), so that te correct product-variant (one of the direct child-products) can be
selected by the touchpoint. For some decisions (like region), there is no product attribute, and thus
`isCustomChoice` will be set to `true`, and `choiceKey` can then be set to any string on which touchpoints
can also trigger behaviour if desired (think "region picker tool"). Therefore, reuse of `choiceKeys` should be
the goal, so touchoints can keep their triggers simple and prevent duplication of
similar choiceKeys to trigger the same behaviour.
similar `choiceKeys` to trigger the same behaviour.
choiceLabel:
example: Kies voor een doorlopend abonnement of een enkele termijn
type: string
@ -1894,12 +1890,10 @@ components:
example: false
type: boolean
description: >-
Indicates if the choice is a custom choice. If `false`, the PMT should fill `choiceKey` with the
"differing attribute for this product-layer" and the user should not be able to override this. When
no single attribute can be pinpointed by PMT, the product will become invalid (`isValid == false`) until either
a situation with a single differing attribute is created, or if `isCustomChoice` is set to `true` - this would,
however, also mean that touchpoints should be notified of this, especially if the configured LayerInfo contains
a new, not previously used, `choiceKey`.
Indicates if the choice is a custom choice. If `false`, the PMT should validate that the `choiceKey` is a
differentiating attribute for the underlying product-variants. When the attribute denoted by the `choiceKey` is
the same for all underlying variants, PMT validation will fail and the product will become invalid (`isValid == false`)
until either the underlying products are updated, or a `LayerInfo` with `isCustomChoice == true` is configured.
GboAgeProfileResponse:
type: object
required:

View File

@ -1550,6 +1550,9 @@ components:
- productCategoryId: 7
name: Functioneel product
isTravelProduct: false
- productCategoryId: 8
name: Saldo
isTravelProduct: true
type: array
items:
$ref: '#/components/schemas/productCategoryGetEntity'

View File

@ -435,7 +435,7 @@ paths:
"salesTouchpointId": 3,
"sellingPrices": [
{
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -448,7 +448,7 @@ paths:
],
"purchasePrices": [
{
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -522,7 +522,7 @@ paths:
"salesTouchpointId": 3,
"sellingPrices": [
{
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -535,7 +535,7 @@ paths:
],
"purchasePrices": [
{
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -608,7 +608,7 @@ paths:
"salesTouchpointId": 3,
"sellingPrices": [
{
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -617,7 +617,7 @@ paths:
"internalPrice": 92.0000
},
{
"amountExclTax": 101,
"amountExclTax": null,
"amountInclTax": 110,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -633,7 +633,7 @@ paths:
"salesTouchpointId": 2,
"sellingPrices": [
{
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -642,7 +642,7 @@ paths:
"internalPrice": 92.0000
},
{
"amountExclTax": 101,
"amountExclTax": null,
"amountInclTax": 110,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -655,7 +655,7 @@ paths:
],
"purchasePrices": [
{
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -750,7 +750,7 @@ paths:
],
"sellingPrices": [
{
"amountExclTax": 5413,
"amountExclTax": null,
"amountInclTax": 5900,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -763,7 +763,7 @@ paths:
],
"purchasePrices": [
{
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -973,7 +973,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 1,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -987,7 +987,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"taxCode": "V09",
"taxPercentage": 9.0000,
"amountInclTax": 0,
@ -1148,7 +1148,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 1,
"amountExclTax": 92,
"amountExclTax": null,
"taxCode": "V09",
"taxPercentage": 9.0000,
"amountInclTax": 100,
@ -1158,7 +1158,7 @@ paths:
},
{
"sellingPriceId": 2,
"amountExclTax": 101,
"amountExclTax": null,
"taxCode": "V09",
"taxPercentage": 9.0000,
"amountInclTax": 110,
@ -1195,7 +1195,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 3,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1205,7 +1205,7 @@ paths:
},
{
"sellingPriceId": 4,
"amountExclTax": 101,
"amountExclTax": null,
"amountInclTax": 110,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1219,7 +1219,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1243,12 +1243,22 @@ paths:
]
}
getDetailsGboPadProduct:
summary: GBO product (PAD required, renewable, allowedGboAgeProfiles, padBirthDate)
summary: GBO product (PAD required, layerInfo, allowedGboAgeProfiles, padBirthDate)
description: >-
This product has `layerInfo` defined, which means that this product is not a final fulfillable product, but that there are underlying variants
that the customer has to choose between. The `layerInfo` defines what distinguishes the underlying variants - in this case the
`allowedGboAgeProfiles` array contains different values for the underlying variants. Based on age information provided by the customer,
the correct underlying variant can be selected.
value:
{
"productId": 3,
"parentProductId": null,
"layerInfo": null,
"layerInfo": {
"layerInfoId": 1,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"isCustomChoice": false
},
"fikoArticleNumber": "1234",
"isValid": true,
"isArchived": false,
@ -1279,16 +1289,7 @@ paths:
"name": "B2C"
}
],
"customerSegments": [
{
"customerSegmentId": 5,
"name": "Student"
},
{
"customerSegmentId": 6,
"name": "Ooievaarspas-gerechtigde"
}
],
"customerSegments": null,
"allowedGboAgeProfiles": [
{
"gboAgeProfileId": 2,
@ -1377,8 +1378,8 @@ paths:
"serviceOptions": [],
"validityDuration": "P1M",
"maxStartInFutureDuration": "P6W",
"isRenewable": true,
"sendInvoice": true,
"isRenewable": null,
"sendInvoice": null,
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg",
"productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina",
"termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina",
@ -1419,7 +1420,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 5,
"amountExclTax": 5413,
"amountExclTax": null,
"amountInclTax": 5900,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1433,7 +1434,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"taxCode": "V09",
"taxPercentage": 9.0000,
"amountInclTax": 0,
@ -1456,45 +1457,34 @@ paths:
}
]
}
getDetailsProductVariantWithParent:
summary: GBO product-variant, meaning that parentProductId and layerInfo are present
description: >-
This product is not a top-level parent, but a product-variant that refers to another product (via `parentProductId`).
This means that the `layerInfo` should be present for this product-variant. The parent product references is `productId 3`,
so the product in this example is an extension of that product-definition. MOre specifically: in this product-variant, we
removed some `allowedGboAgeProfiles` from the definition - this means that the customer has to provide the birthdate of
the token-owner (padBirthdate) in order to be able to buy this product-variant.
getDetailsFunctionalProductChangeIbanMandate:
summary: Functional product (change IBAN mandate)
value:
{
"productId": 4,
"parentProductId": 3,
"layerInfoId": {
"layerInfoId": 1,
"choiceKey": "allowedGboAgeProfiles",
"choiceLabel": "Wat is uw geboortedatum?",
"isCustomChoice": false
},
"productId": 143,
"parentProductId": null,
"layerInfo": null,
"fikoArticleNumber": "1234",
"isValid": true,
"isArchived": false,
"gboPackageTemplateId": "33610",
"gboPackageTemplateId": null,
"tapConnectProductCode": null,
"productName": "HTM Regio Vrij DH73 Reductietarief",
"productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in het gekozen gebied in de regio Rotterdam Den Haag.",
"productName": "IBAN wijzigen functioneel product",
"productDescription": "IBAN wijzigen functioneel product",
"validityPeriod": {
"validityPeriodId": 3,
"fromInclusive": "2024-09-01T00:00:00.000+00:00",
"toInclusive": "2024-12-31T23:59:59.999+00:00"
"validityPeriodId": 254,
"fromInclusive": "2023-12-31T23:00:00.000+00:00",
"toInclusive": "2100-12-08T04:00:00.000+00:00"
},
"productTranslations": [
{
"language": "en",
"name": "HTM Regio Free DH73",
"description": "For a fixed amount unlimited travel with EBS, HTM and RET in the chosen area in the Rotterdam The Hague region."
"name": "Change IBAN functional product",
"description": "Change IBAN functional product"
}
],
"productOwner": {
"productOwnerId": 1,
"productOwnerId": 17,
"name": "Corneel Verstoep",
"organization": "HTM"
},
@ -1504,105 +1494,53 @@ paths:
"name": "B2C"
}
],
"customerSegments": [
{
"customerSegmentId": 5,
"name": "Student"
},
{
"customerSegmentId": 6,
"name": "Ooievaarspas-gerechtigde"
}
],
"allowedGboAgeProfiles": [
{
"gboAgeProfileId": 2,
"name": "Kind (4 t/m 11 jaar)",
"ageFromInclusive": 4,
"ageUntilInclusive": 11
},
{
"gboAgeProfileId": 3,
"name": "Jongere (12 t/m 18 jaar)",
"ageFromInclusive": 12,
"ageUntilInclusive": 18
}
],
"customerSegments": null,
"allowedGboAgeProfiles": null,
"productCategory": {
"productCategoryId": 2,
"isTravelProduct": true,
"name": "Afgekocht reisrecht"
"productCategoryId": 7,
"isTravelProduct": false,
"name": "Functioneel product"
},
"requiredCustomerLevel": {
"requiredCustomerLevelId": 3,
"name": "profile"
},
"requiredProducts": null,
"incompatibleProducts": [
{
"incompatibleProductId": 4,
"productName": "HTM Regio Vrij DH73 Reductietarief",
"description": "Kan niet combineren met zichzelf"
}
],
"mandatoryCustomerDataItems": [
{
"mandatoryCustomerDataItemId": 4,
"customerDataItem": "emailAddress"
},
{
"mandatoryCustomerDataItemId": 8,
"customerDataItem": "padBirthDate"
},
],
"requiredGboPersonalAttributes": [
{
"requiredGboPersonalAttributeId": 1,
"name": "NAME"
},
{
"requiredGboPersonalAttributeId": 2,
"name": "BIRTHDATE"
},
{
"requiredGboPersonalAttributeId": 3,
"name": "PHOTO"
}
],
"tokenTypes": [
{
"tokenTypeId": 1,
"name": "EMV"
},
{
"tokenTypeId": 2,
"name": "OVpas physical"
},
{
"tokenTypeId": 3,
"name": "OVpas digital"
}
],
"incompatibleProducts": null,
"mandatoryCustomerDataItems": null,
"requiredGboPersonalAttributes": null,
"tokenTypes": null,
"paymentMoment": {
"paymentMomentId": 1,
"name": "prepaid"
},
"serviceOptions": null,
"validityDuration": "P1M",
"maxStartInFutureDuration": "P6W",
"isRenewable": true,
"sendInvoice": true,
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg",
"productPageUrl": "https://www.htm.nl/nog-onbekende-product-pagina",
"termsUrl": "https://www.htm.nl/nog-onbekende-productvoorwaarden-pagina",
"serviceOptions": [
{
"serviceOptionId": 4,
"action": "cancel_notAllowed",
"description": "Stopzetting is niet toegestaan (doorgaans in combinatie met refund_notAllowed)"
},
{
"serviceOptionId": 10,
"action": "refund_notAllowed",
"description": "Terugbetaling niet toegestaan (doorgaans in combinatie met cancel_notAllowed)"
}
],
"validityDuration": null,
"maxStartInFutureDuration": null,
"isRenewable": null,
"sendInvoice": null,
"imageReference": "https://web.acc.cloud.htm.nl/media/leif2leu/htm-logo-mobile.svg",
"productPageUrl": "https://web.acc.cloud.htm.nl/webshop/onbekend/",
"termsUrl": "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/onbekend/",
"isSellableAtHtm": true,
"needsSolvencyCheckConsumer": false,
"needsSolvencyCheckBusiness": false,
"sellingPeriods": [
{
"sellingPeriodId": 5,
"fromInclusive": "2024-09-01T00:00:00.000+00:00",
"toInclusive": "2024-12-31T23:59:59.999+00:00",
"sellingPeriodId": 204,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2099-12-30T23:00:00.000+00:00",
"salesTouchpoint": {
"salesTouchpointId": 3,
"name": "Website (Perplex)",
@ -1611,18 +1549,28 @@ paths:
"retailerId": 1001,
"name": "HTM externe touchpoints",
"street": "Koningin Julianaplein",
"number": "10",
"number": 10,
"numberAddition": null,
"postalCode": "2595 AA",
"city": "Den Haag",
"country": "Nederland",
"emailAddress": "info@htm.nl",
"phoneNumber": "070 374 9002",
"taxId": "572309345923",
"taxId": 572309345923,
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg"
}
},
"forbiddenPaymentMethods": [
{
"forbiddenPaymentMethodId": 1,
"name": "creditcard",
"issuer": "Mastercard"
},
{
"forbiddenPaymentMethodId": 2,
"name": "creditcard",
"issuer": "Visa"
},
{
"forbiddenPaymentMethodId": 3,
"name": "creditcard",
@ -1631,41 +1579,215 @@ paths:
],
"sellingPrices": [
{
"sellingPriceId": 5,
"amountExclTax": 5413,
"amountInclTax": 5900,
"taxCode": "V09",
"taxPercentage": 9.0000,
"fromInclusive": "2024-09-01T00:00:00.000+00:00",
"toInclusive": "2024-12-31T23:59:59.999+00:00",
"internalPrice": 5413.0000
"sellingPriceId": 187,
"taxCode": "V0",
"taxPercentage": 0.0000,
"amountExclTax": null,
"amountInclTax": 1,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2099-12-30T23:00:00.000+00:00",
"internalPrice": 0.0000
}
]
},
{
"sellingPeriodId": 448,
"fromInclusive": "2023-12-31T23:00:00.000+00:00",
"toInclusive": "2099-12-08T04:00:00.000+00:00",
"salesTouchpoint": {
"salesTouchpointId": 6,
"name": "SMP (Service Medewerker Portaal)",
"isActive": true,
"retailer": {
"retailerId": 1000,
"name": "HTM interne touchpoints",
"street": "Koningin Julianaplein",
"number": 10,
"numberAddition": null,
"postalCode": "2595 AA",
"city": "Den Haag",
"country": "Nederland",
"emailAddress": "info@htm.nl",
"phoneNumber": "070 374 9002",
"taxId": 572309345923,
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg"
}
},
"forbiddenPaymentMethods": [
{
"forbiddenPaymentMethodId": 1,
"name": "creditcard",
"issuer": "Mastercard"
},
{
"forbiddenPaymentMethodId": 2,
"name": "creditcard",
"issuer": "Visa"
},
{
"forbiddenPaymentMethodId": 3,
"name": "creditcard",
"issuer": "American Express"
}
],
"sellingPrices": [
{
"sellingPriceId": 383,
"taxCode": "V00",
"taxPercentage": 0.0000,
"amountExclTax": null,
"amountInclTax": 1,
"fromInclusive": "2025-01-31T23:00:00.000+00:00",
"toInclusive": "2030-12-08T04:00:00.000+00:00",
"internalPrice": 1.0000
}
]
}
],
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
"amountInclTax": 0,
"fromInclusive": "2024-09-01T00:00:00.000+00:00",
"toInclusive": "2024-12-31T23:59:59.999+00:00"
}
],
"purchasePrices": null,
"auditTrail": [
{
"auditTrailId": 2,
"auditTrailId": 5124,
"action": "update",
"user": "api",
"timestamp": "2024-09-03T08:39:38.000+00:00"
"timestamp": "2025-09-05T16:06:25.823+00:00"
}
]
}
getDetailsSaldoProduct:
summary: Saldo product
value:
{
"productId": 123,
"parentProductId": null,
"layerInfo": null,
"fikoArticleNumber": "1234",
"isValid": true,
"isArchived": false,
"gboPackageTemplateId": null,
"tapConnectProductCode": null,
"productName": "OV-pas saldo (1 euro)",
"productDescription": "1 euro saldo voor de OV-pas ",
"validityPeriod": {
"validityPeriodId": 123,
"fromInclusive": "2023-12-31T23:00:00.000+00:00",
"toInclusive": "2100-12-08T04:00:00.000+00:00"
},
"productTranslations": [
{
"language": "en",
"name": "OV-pas credit (1 euro)",
"description": "1 euro credit for the OV-pas"
}
],
"productOwner": {
"productOwnerId": 17,
"name": "Corneel Verstoep",
"organization": "HTM"
},
"marketSegments": [
{
"marketSegmentId": 1,
"name": "B2C"
}
],
"customerSegments": null,
"allowedGboAgeProfiles": null,
"productCategory": {
"productCategoryId": 8,
"isTravelProduct": true,
"name": "Saldo"
},
"requiredCustomerLevel": {
"requiredCustomerLevelId": 1,
"name": "guest"
},
"requiredProducts": null,
"incompatibleProducts": null,
"mandatoryCustomerDataItems": null,
"requiredGboPersonalAttributes": null,
"tokenTypes": [
{
"tokenTypeId": 2,
"name": "OVPas physical"
},
{
"auditTrailId": 1,
"action": "insert",
"tokenTypeId": 3,
"name": "OVPas digital"
}
],
"paymentMoment": {
"paymentMomentId": 1,
"name": "prepaid"
},
"serviceOptions": [
{
"serviceOptionId": 4,
"action": "cancel_notAllowed",
"description": "Stopzetting is niet toegestaan (doorgaans in combinatie met refund_notAllowed)"
},
{
"serviceOptionId": 10,
"action": "refund_notAllowed",
"description": "Terugbetaling niet toegestaan (doorgaans in combinatie met cancel_notAllowed)"
}
],
"validityDuration": null,
"maxStartInFutureDuration": null,
"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/onbekend/",
"termsUrl": "https://web.acc.cloud.htm.nl/reisproducten/productvoorwaarden/onbekend/",
"isSellableAtHtm": true,
"needsSolvencyCheckConsumer": false,
"needsSolvencyCheckBusiness": false,
"sellingPeriods": [
{
"sellingPeriodId": 123,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2099-12-30T23:00:00.000+00:00",
"salesTouchpoint": {
"salesTouchpointId": 3,
"name": "Website (Perplex)",
"isActive": true,
"retailer": {
"retailerId": 1001,
"name": "HTM externe touchpoints",
"street": "Koningin Julianaplein",
"number": 10,
"numberAddition": null,
"postalCode": "2595 AA",
"city": "Den Haag",
"country": "Nederland",
"emailAddress": "info@htm.nl",
"phoneNumber": "070 374 9002",
"taxId": 572309345923,
"imageReference": "https://www.htm.nl/media/leif2leu/htm-logo-mobile.svg"
}
},
"forbiddenPaymentMethods": null,
"sellingPrices": [
{
"sellingPriceId": 123,
"taxCode": null,
"taxPercentage": null,
"amountExclTax": null,
"amountInclTax": 100,
"fromInclusive": "2024-09-30T23:00:00.000+00:00",
"toInclusive": "2099-12-30T23:00:00.000+00:00",
"internalPrice": 0.0000
}
]
}
],
"purchasePrices": null,
"auditTrail": [
{
"auditTrailId": 5124,
"action": "update",
"user": "api",
"timestamp": "2024-09-03T08:38:24.000+00:00"
"timestamp": "2025-09-05T16:06:25.823+00:00"
}
]
}
@ -1681,12 +1803,7 @@ paths:
{
"productName": "TODO"
}
getDetailsIbanMandate:
summary: TODO - IBAN mandate (functional product)
value:
{
"productName": "TODO"
}
'400':
description: '400'
content:
@ -1812,7 +1929,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 1,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1826,7 +1943,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1903,7 +2020,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 1,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1917,7 +2034,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -1990,7 +2107,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 1,
"amountExclTax": 92,
"amountExclTax": null,
"taxCode": "V09",
"taxPercentage": 9.0000,
"amountInclTax": 100,
@ -2006,7 +2123,7 @@ paths:
"salesTouchpointId": 2,
"sellingPrices": [
{
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2015,7 +2132,7 @@ paths:
"internalPrice": 92.0000
},
{
"amountExclTax": 101,
"amountExclTax": null,
"amountInclTax": 110,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2029,7 +2146,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2105,7 +2222,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 1,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2115,7 +2232,7 @@ paths:
},
{
"sellingPriceId": 2,
"amountExclTax": 101,
"amountExclTax": null,
"amountInclTax": 110,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2133,7 +2250,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 3,
"amountExclTax": 92,
"amountExclTax": null,
"amountInclTax": 100,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2143,7 +2260,7 @@ paths:
},
{
"sellingPriceId": 4,
"amountExclTax": 101,
"amountExclTax": null,
"amountInclTax": 110,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2157,7 +2274,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2255,7 +2372,7 @@ paths:
"sellingPrices": [
{
"sellingPriceId": 1,
"amountExclTax": 5413,
"amountExclTax": null,
"amountInclTax": 5900,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2269,7 +2386,7 @@ paths:
"purchasePrices": [
{
"purchasePriceId": 1,
"amountExclTax": 0,
"amountExclTax": null,
"amountInclTax": 0,
"taxCode": "V09",
"taxPercentage": 9.0000,
@ -2334,10 +2451,11 @@ components:
description: >-
Gives information on the choice that the customer has to make, to enable the touchpoint
to proceed further "down the product-tree" by selecting (PATCH-ing) the correct product-variant.
LayerInfo is not a mandatory product-attribute, but it should always be present on all product for which
`parentProductId != null`. (LayerInfo makes no sense for top-level parents as there is always a single starting point). \
LayerInfo is not a mandatory product-attribute, but it should always be present on all products for which
there are underlying products, i.e. for which `GET /products?parentProductId=...` returns a non-empty list.
When no LayerInfo is present, the touchpoint can conclude that the product is a final fulfillable product. \
**PMT should ensure that all products in the same "product-branch" (same `parentProductId`) have the same `layerInfoId`
**PMT should ensure that all non-leaf-node products (i.e. products that have underlying products) have a `layerInfoId`
referenced. If a product is found to be in violation of this rule, its attribtue `isValid` should be set to `false`.**
required:
- layerInfoId
@ -2353,12 +2471,12 @@ components:
type: string
description: >-
Contains the JSON Key of the product-attribute that the customer has to make some
choice on (determined by PMT), so that te correct product-variant can be selected by the touchpoint. For some
decisions (like region), there is no product attribute, and thus `isCustomChoice` will be set
to `true`, and `choiceKey` can then be set to any string on which touchpoints can also trigger
behaviour if desired (think "region picker tool"). Therefore, reuse of choiceKeys should be
choice on (determined by PMT), so that te correct product-variant (one of the direct child-products) can be
selected by the touchpoint. For some decisions (like region), there is no product attribute, and thus
`isCustomChoice` will be set to `true`, and `choiceKey` can then be set to any string on which touchpoints
can also trigger behaviour if desired (think "region picker tool"). Therefore, reuse of `choiceKeys` should be
the goal, so touchoints can keep their triggers simple and prevent duplication of
similar choiceKeys to trigger the same behaviour.
similar `choiceKeys` to trigger the same behaviour.
choiceLabel:
example: Kies voor een doorlopend abonnement of een enkele termijn
type: string
@ -2370,12 +2488,10 @@ components:
example: false
type: boolean
description: >-
Indicates if the choice is a custom choice. If `false`, the PMT should fill `choiceKey` with the
"differing attribute for this product-layer" and the user should not be able to override this. When
no single attribute can be pinpointed by PMT, the product will become invalid (`isValid == false`) until either
a situation with a single differing attribute is created, or if `isCustomChoice` is set to `true` - this would,
however, also mean that touchpoints should be notified of this, especially if the configured LayerInfo contains
a new, not previously used, `choiceKey`.
Indicates if the choice is a custom choice. If `false`, the PMT should validate that the `choiceKey` is a
differentiating attribute for the underlying product-variants. When the attribute denoted by the `choiceKey` is
the same for all underlying variants, PMT validation will fail and the product will become invalid (`isValid == false`)
until either the underlying products are updated, or a `LayerInfo` with `isCustomChoice == true` is configured.
GboAgeProfileResponse:
type: object
required: