Compare commits

..

No commits in common. "b8ad7c4ebf96099a0ab5ae5c0e4e527fd8b96624" and "62ab18b8e8bfa888c3bdfbd528a1d969bfe860b4" have entirely different histories.

4 changed files with 440 additions and 452 deletions

View File

@ -2403,7 +2403,7 @@ paths:
}, },
"_links": "_links":
{ {
"transfer_token": "transfer":
{ {
"href": "https://services.dev.api.htm.nl/abt/touchpoint/1.0/customers/tokens/1/transfer", "href": "https://services.dev.api.htm.nl/abt/touchpoint/1.0/customers/tokens/1/transfer",
"method": "POST", "method": "POST",

View File

@ -228,7 +228,7 @@ paths:
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/TransactionItemsBulkRequestBody" $ref: "#/components/schemas/TransactionItemsPostRequestBody"
examples: examples:
Add single transaction item: Add single transaction item:
summary: Add single transaction item summary: Add single transaction item
@ -285,7 +285,7 @@ paths:
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/BulkResponseBody" $ref: "#/components/schemas/TransactionItemsPostResponseBody"
examples: examples:
Array of transaction items accepted: Array of transaction items accepted:
summary: Array of transaction items accepted summary: Array of transaction items accepted
@ -381,7 +381,7 @@ paths:
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/GetResponseStatus" $ref: "#/components/schemas/TransactionItemsResponseStatusGetResponseBody"
examples: examples:
Batch successfully processed: Batch successfully processed:
summary: Batch successfully processed summary: Batch successfully processed
@ -2979,10 +2979,10 @@ paths:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User
x-throttling-tier: Unlimited x-throttling-tier: Unlimited
/transactionitems/bulk: /transactionitems/reject:
patch: post:
summary: Patch transaction items in bulk. summary: Reject transaction items to source in bulk.
description: Patch transaction items in bulk. description: Reject transaction items to source in bulk.
tags: tags:
- Bulk processing v2.2 - Bulk processing v2.2
requestBody: requestBody:
@ -2992,87 +2992,76 @@ paths:
schema: schema:
$ref: "#/components/schemas/TransactionItemsBulkRequestBody" $ref: "#/components/schemas/TransactionItemsBulkRequestBody"
examples: examples:
List of transactions items to reject: List of transaction item ids to reject:
summary: List of transaction items to reject to source summary: List of transaction item ids to reject to source
description: List of transaction items to reject to source in bulk. description: List of transaction item ids to reject to source.
value: value:
transactionItems: transactionItemIds:
- transactionItemId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 - afce35b2-1dff-4ace-98d0-4b9ac405c87d
status: returned to src - b1c4f8e7-3f4e-4d2a-9c6e-2f5e6d7c8b9a
- transactionItemId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3 - c2d5e6f7-4g5h-5i6j-0k1l-3m4n5o6p7q8r
status: returned to src
List of transactions items to return:
summary: List of transaction items to return to transaction database
description: List of transaction items to return to transaction database in bulk.
value:
transactionItems:
- transactionItemId: eacb9bdc-c6b5-4277-942b-cebb102944f5
status: returned to trx-db
- transactionItemId: 2f361bfb-9df0-4e0f-af7c-7b9be3e7bc61
status: returned to trx-db
responses: responses:
"202": "202":
description: Accepted description: Accepted
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/BulkResponseBody" $ref: "#/components/schemas/TransactionItemsPostResponseBody"
examples: examples:
Array of transaction items accepted: Array of transaction items accepted:
summary: Array of transaction items accepted summary: Array of transaction item ids accepted
description: | description: |
The array of transaction items was accepted successfully. The array of transaction item ids was accepted successfully.
The transaction items will be processed asynchronously. The transaction items will be processed asynchronously.
In the response body the consumer will find information on how to retrieve the processing status. In the response body the consumer will find information on how to retrieve the processing status.
value: value:
startTime: 2025-02-14T05:32:47.0672237Z startTime: 2025-02-14T05:32:47.0672237Z
status: Running status: Running
clientTrackingId: 08584620957189579629541919368CU00 clientTrackingId: 08584620957189579629541919368CU00
callbackurl: https://api.integratielaag.nl/transactionitems/bulk/responsestatus/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c callbackurl: https://api.integratielaag.nl/transactionitems/reject/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
retryAfter: 10 retryAfter: 10
security: security:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User
x-throttling-tier: Unlimited x-throttling-tier: Unlimited
/transactionitems/bulk/responsestatus/{clientTrackingId}: /transactionitems/responsestatus/reject/{clientTrackingId}:
get: get:
tags: tags:
- Bulk processing v2.2 - Bulk processing v2.2
summary: Get the status of the transaction item bulk patch. summary: Get the status of the transaction item bulk reject.
description: Get the status of the asynchronous transaction item bulk patch. description: Get the status of the asynchronous transaction item bulk reject.
parameters: parameters:
- in: path - in: path
name: clientTrackingId name: clientTrackingId
schema: schema:
type: string type: string
required: true required: true
description: The clientTrackingId of the transaction item bulk patch. description: The clientTrackingId of the transaction item bulk reject.
responses: responses:
"200": "200":
description: OK description: OK
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/GetResponseStatus" $ref: "#/components/schemas/TransactionItemsRejectResponseStatusGetResponseBody"
examples: examples:
Batch successfully processed: Batch successfully processed:
summary: Batch successfully processed summary: Batch successfully processed
description: | description: |
Body of a batch of transaction items that was successfully patched. Body of a batch of transaction items that was successfully rejected.
A number of transaction items were patched. A number of transaction items were rejected.
value: value:
summary: summary:
created: 0 rejected: 15
updated: 15
total: 15 total: 15
security: security:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User
x-throttling-tier: Unlimited x-throttling-tier: Unlimited
/processingfailures/bulk: /transactionitems/return:
patch: post:
summary: Patch processing failures in bulk. summary: Return transaction items to trx db in bulk.
description: Patch processing failures in bulk. description: Return transaction items to trx db in bulk.
tags: tags:
- Bulk processing v2.2 - Bulk processing v2.2
requestBody: requestBody:
@ -3080,71 +3069,69 @@ paths:
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/ProcessingFailuresBulkRequestBody" $ref: "#/components/schemas/TransactionItemsBulkRequestBody"
examples: examples:
List of processing failures to resolve: List of transaction item ids to reject:
summary: List of processing failures to resolve summary: List of transaction item ids to return to trx db
description: List of processing failures to resolve in bulk. description: List of transaction item ids to return to trx db.
value: value:
processingFailures: transactionItemIds:
- processingFailureId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 - afce35b2-1dff-4ace-98d0-4b9ac405c87d
resolved: true - b1c4f8e7-3f4e-4d2a-9c6e-2f5e6d7c8b9a
- processingFailureId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3 - c2d5e6f7-4g5h-5i6j-0k1l-3m4n5o6p7q8r
resolved: true
responses: responses:
"202": "202":
description: Accepted description: Accepted
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/BulkResponseBody" $ref: "#/components/schemas/TransactionItemsPostResponseBody"
examples: examples:
Array of processing failures accepted: Array of transaction items accepted:
summary: Array of processing failures accepted summary: Array of transaction item ids accepted
description: | description: |
The array of processing failures was accepted successfully. The array of transaction item ids was accepted successfully.
The processing failures will be processed asynchronously. The transaction items will be processed asynchronously.
In the response body the consumer will find information on how to retrieve the processing status. In the response body the consumer will find information on how to retrieve the processing status.
value: value:
startTime: 2025-02-14T05:32:47.0672237Z startTime: 2025-02-14T05:32:47.0672237Z
status: Running status: Running
clientTrackingId: 08584620957189579629541919368CU00 clientTrackingId: 08584620957189579629541919368CU00
callbackurl: https://api.integratielaag.nl/processingfailures/bulk/responsestatus/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c callbackurl: https://api.integratielaag.nl/transactionitems/return/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
retryAfter: 10 retryAfter: 10
security: security:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User
x-throttling-tier: Unlimited x-throttling-tier: Unlimited
/processingfailures/bulk/responsestatus/{clientTrackingId}: /transactionitems/responsestatus/return/{clientTrackingId}:
get: get:
tags: tags:
- Bulk processing v2.2 - Bulk processing v2.2
summary: Get the status of the processing failures bulk patch. summary: Get the status of the transaction item bulk return.
description: Get the status of the asynchronous processing failures bulk patch. description: Get the status of the asynchronous transaction item bulk return.
parameters: parameters:
- in: path - in: path
name: clientTrackingId name: clientTrackingId
schema: schema:
type: string type: string
required: true required: true
description: The clientTrackingId of the processing failures bulk patch. description: The clientTrackingId of the transaction item bulk return.
responses: responses:
"200": "200":
description: OK description: OK
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/GetResponseStatus" $ref: "#/components/schemas/TransactionItemsReturnResponseStatusGetResponseBody"
examples: examples:
Batch successfully processed: Batch successfully processed:
summary: Batch successfully processed summary: Batch successfully processed
description: | description: |
Body of a batch of processing failures that was successfully patched. Body of a batch of transaction items that was successfully returned to trx db.
A number of processing failures were patched. A number of transaction items were returned to trx db.
value: value:
summary: summary:
created: 0 returned: 15
updated: 15
total: 15 total: 15
security: security:
- default: [] - default: []
@ -3262,7 +3249,7 @@ components:
- occurredOn - occurredOn
- type - type
- status - status
TransactionItemsBulkRequestBody: TransactionItemsPostRequestBody:
type: object type: object
properties: properties:
transactionItems: transactionItems:
@ -3270,10 +3257,6 @@ components:
items: items:
type: object type: object
properties: properties:
transactionItemId:
type: string
format: uuid
example: afce35b2-1dff-4ace-98d0-4b9ac405c87d
transactionType: transactionType:
type: string type: string
enum: enum:
@ -3333,7 +3316,7 @@ components:
- amountTax - amountTax
- occurredOn - occurredOn
- type - type
BulkResponseBody: TransactionItemsPostResponseBody:
type: object type: object
properties: properties:
startTime: startTime:
@ -4919,7 +4902,7 @@ components:
required: required:
- concessionId - concessionId
- name - name
GetResponseStatus: TransactionItemsResponseStatusGetResponseBody:
type: object type: object
properties: properties:
summary: summary:
@ -4976,24 +4959,51 @@ components:
transactionLineId: transactionLineId:
type: string type: string
example: fee907dd-e59d-44f5-a63b-bbdec38f79b7 example: fee907dd-e59d-44f5-a63b-bbdec38f79b7
ProcessingFailuresBulkRequestBody: TransactionItemsBulkRequestBody:
type: object type: object
properties: properties:
processingFailures: transactionItemIds:
type: array type: array
items: items:
type: object
properties:
processingFailureId::
type: string type: string
format: uuid format: uuid
example: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 example: 1ad109d3-fd7d-4b6f-872b-220d492f385f
resolved:
type: boolean
example: true
required: required:
- transactionItemId - transactionItemIds
- resolved TransactionItemsRejectResponseStatusGetResponseBody:
type: object
properties:
summary:
type: object
properties:
rejected:
type: integer
example: 3
total:
type: integer
example: 3
required:
- rejected
- total
required:
- summary
TransactionItemsReturnResponseStatusGetResponseBody:
type: object
properties:
summary:
type: object
properties:
returned:
type: integer
example: 3
total:
type: integer
example: 3
required:
- returned
- total
required:
- summary
rfc9457: rfc9457:
type: object type: object
properties: properties:

View File

@ -0,0 +1,180 @@
openapi: 3.0.1
info:
title: ABT Service Engine Order APIs
version: "1.0"
description: Order APIs available in the Service Engine for order validation and fulfillment.
servers:
- url: https://services.acc.api.htm.nl/abt/touchpoint/2.0
paths:
/orders/validation/gboAgeProfile:
get:
tags:
- ServiceEngine Order validation
summary: Get GBO age profile that is valid for the given input
description: |-
Only one age profile can be valid at any one time, so only one profile is returned.
parameters:
- name: productStartDate
in: query
required: true
description: Start date of product validity
schema:
type: string
format: date
example: 2025-03-20
- name: birthDate
in: query
required: false
description: Birthdate of the OVpay-token holder
schema:
type: string
format: date
example: 2000-01-01
- name: ovPayTokenId
in: query
required: false
description: ovPayTokenId of the customer's selected token
schema:
type: integer
example: 1
- name: customerTokenId
in: query
required: false
description: customerTokenId of the customer's selected token
schema:
type: string
format: uuid
example: "4a2d2c9c-1e5d-4d8a-9c0a-6c0a6c0a6c0a"
- name: serviceReferenceId
in: query
required: false
description: serviceReferenceId of the customer's selected token
schema:
type: string
example: "NLOV1234567ABCDEFG"
- name: amount
in: query
required: false
description: amount belonging to the serviceReferenceId
schema:
type: integer
example: 100
- name: ovpasNumber
in: query
required: false
description: OVpas number of the customer's selected token
schema:
type: string
example: "63AW974"
- name: verificationCode
in: query
required: false
description: verification code belonging to the OVpas number
schema:
type: string
example: 1A3C7D
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/GboAgeProfileResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/rfc9457Response"
examples:
Missing parameter(s):
summary: Missing parameter(s)
value:
{
"type": "https://www.htm.nl/api/v1/400Error",
"title": "Missing parameter(s)",
"detail": "At least one of the following parameters must be present: birthDate, ovPayTokenId, customerTokenId, (serviceReferenceId and amount), (ovpasNumber and verificationCode)",
"instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
"apiErrorCode": "htm.api.err.400.2",
}
Invalid date format:
summary: Invalid date format
value:
{
"type": "https://www.htm.nl/api/v1/400Error",
"title": "Invalid input",
"detail": "The given birthDate is not a valid Date format",
"instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
"apiErrorCode": "htm.api.err.400.3",
}
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/rfc9457Response"
examples:
No birthdate present in PAD of OVpay token:
summary: No birthdate present in PAD of OVpay token
value:
{
"type": "https://www.htm.nl/api/v1/404Error",
"title": "Missing birthdate in PAD",
"detail": "There is no birthdate present in the PAD of the OVpay token, or there is no PAD present at all",
"instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
"apiErrorCode": "htm.api.err.404.1",
}
components:
schemas:
GboAgeProfileResponse:
type: object
required:
- gboAgeProfileId
- name
- ageFromInclusive
- ageToInclusive
properties:
gboAgeProfileId:
type: integer
example: 1
name:
type: string
example: Kind (4 t/m 11 jaar)
ageFromInclusive:
type: integer
example: 4
ageToInclusive:
type: integer
example: 11
rfc9457Response:
type: object
properties:
type:
type: string
format: url
example: "https://www.htm.nl/api/v1/rfc9457Error"
title:
type: string
description: "Short summary of the error."
example: "The request is not valid."
detail:
type: string
description: "More detailed descriptionof the error."
example: "Some required parameters are missing."
instance:
type: string
description: "Unique identifier to correlate this specific error with logging in other applications."
example: "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c"
additionalProperty1:
type: string
description: "Example of an additional property value to be used for error reporting."
example: "additionalValue1"
additionalProperty2:
type: array
description: "Example of an additional property array to be used for error reporting."
items:
type: string
example:
- "additionalValue2-1"
- "additionalValue2-2"

View File

@ -89,9 +89,9 @@ paths:
example: 7208e73e-87a6-46d9-bb6d-867ffc460c9b example: 7208e73e-87a6-46d9-bb6d-867ffc460c9b
description: xTat used in order fulfillment. Note that this is a joined parameter via PurchasedProduct. description: xTat used in order fulfillment. Note that this is a joined parameter via PurchasedProduct.
tags: tags:
- Order Retrieval - Order Retrieval v2
summary: Find orders summary: Find orders
description: Find orders description: Find orders.
responses: responses:
"200": "200":
description: OK description: OK
@ -425,7 +425,7 @@ paths:
} }
post: post:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Create a new order summary: Create a new order
description: | description: |
Create a new order. This order can only contain the order itself, Create a new order. This order can only contain the order itself,
@ -1279,7 +1279,7 @@ paths:
} }
patch: patch:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Update an existing order. summary: Update an existing order.
description: Update an existing order. description: Update an existing order.
requestBody: requestBody:
@ -1517,7 +1517,7 @@ paths:
} }
delete: delete:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Delete an existing order. summary: Delete an existing order.
description: Delete an existing order. description: Delete an existing order.
responses: responses:
@ -1563,9 +1563,9 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
post: post:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Add a new order line to an existing order summary: Add a new order line to an existing order.
description: Add a new order line to an existing order description: Add a new order line to an existing order.
requestBody: requestBody:
content: content:
application/json: application/json:
@ -1573,8 +1573,8 @@ paths:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
examples: examples:
Add order line to concept order: Add order line to concept order:
summary: Add order line to concept order product with children summary: Add order line to concept order
description: Add order line to concept order product with children description: Add order line to concept order
value: value:
{ {
"externalOrderLineId": null, "externalOrderLineId": null,
@ -1596,15 +1596,6 @@ paths:
}, },
], ],
} }
Order line with minimum requirements:
summary: Create order line with minimum requirements
description: Create order line with minimum requirements
value:
{
"productId": 2,
"quantity": 1,
"createdOn": "2024-03-22T09:00:00"
}
responses: responses:
"200": "200":
description: OK description: OK
@ -1613,9 +1604,7 @@ paths:
schema: schema:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
examples: examples:
AddRemark chosen product is not a leaf node product: Order with two order lines:
summary: AddRemark chosen product is not a leaf node product
description: AddRemark for case where chosen product is not a leaf node product
value: value:
{ {
"validContents": false, "validContents": false,
@ -1685,13 +1674,25 @@ paths:
[ [
{ {
"customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
"tokenType": { "tokenTypeId": 1, "name": "EMV" }, "tokenTypeId": 1,
"ovPayTokenId": 12, "ovPayTokenId": 1,
"serviceReferenceId": null, "serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": null, "amount": 34,
"ovpasNumber": null, "ovpasNumber": "OV34567",
"verificationCode": null, "verificationCode": "A7H6",
"personalAccountData": null, "personalAccountData":
{
"personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47",
"name": "Jan de Vries",
"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",
},
"ovPayToken": "ovPayToken":
{ {
"customerProfileId": 1, "customerProfileId": 1,
@ -1770,69 +1771,27 @@ paths:
], ],
"orderAccountingStatuses": [], "orderAccountingStatuses": [],
"validationResult": "preliminary", "validationResult": "preliminary",
"additionalRemarks": [ "additionalRemarks":
[
{ {
"code": "PRODUCT_CHOICE_REQUIRED", "code": "MANDATE_REQUIRED",
"parameter": "orderline.productId", "parameter": "directDebitMandateId",
} },
], ],
"validationErrors": [], "validationErrors": [],
}, },
],
"payments": [],
"orderCustomers": null
}
v2.2.1:
summary: Create order line v2.2.1 with minimum requirements
description: AddRemark for case where chosen product requires personal account data birthdate
value:
{ {
"validContents": false, "orderLineId": "2cb04b38-e9a8-465a-a273-261c55a21b71",
"orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df",
"externalOrderId": null,
"orderNumber": "ORD-123456",
"customerProfileId": 1337,
"totalAmount": 121,
"touchPoint":
{
"salesTouchpointId": 3,
"name": "Website (Perplex)",
"isActive": true,
"retailerId": 1001,
},
"language":
{
"languageId": 1,
"name": "Nederlands",
"iso639Code": "nl-NL",
"ietfCode": "nl",
},
"createdOn": "2024-03-22T09:00:00",
"lastUpdatedOn": "2024-03-22T09:00:00",
"order_OrderStatuses":
[
{
"order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f",
"orderStatus":
{ "orderStatusId": 1, "name": "concept" },
"createdOn": "2024-03-22T09:00:00",
"description": "Order is aangemaakt",
},
],
"orderLines":
[
{
"orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468",
"externalOrderLineId": null, "externalOrderLineId": null,
"productId": 1, "productId": 2,
"productName": "HTM Maandkorting 20%", "productName": "HTM Maandkorting 40%",
"fikoArticleNumber": "6609", "fikoArticleNumber": "6610",
"productDescription": "HTM Maandkorting 20%", "productDescription": "HTM Maandkorting 40%",
"taxCode": "V21", "taxCode": "V21",
"taxPercentage": 21.0000, "taxPercentage": 21.0000,
"taxAmount": 21, "taxAmount": 42,
"amountExclTax": 100, "amountExclTax": 200,
"amountInclTax": 121, "amountInclTax": 242,
"quantity": 1, "quantity": 1,
"orderLineTerms": "orderLineTerms":
[ [
@ -1854,9 +1813,8 @@ paths:
[ [
{ {
"customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
"tokenType": "tokenTypeId": 1,
{ "tokenTypeId": 1, "name": "EMV" }, "ovPayTokenId": 4,
"ovPayTokenId": 12,
"serviceReferenceId": null, "serviceReferenceId": null,
"amount": null, "amount": null,
"ovpasNumber": null, "ovpasNumber": null,
@ -1939,21 +1897,8 @@ paths:
}, },
], ],
"orderAccountingStatuses": [], "orderAccountingStatuses": [],
"validationResult": "preliminary", "validationResult": "valid",
"additionalRemarks": [ "additionalRemarks": [],
{
"code": "PERSONALACCOUNTDATA_BIRTHDATE_REQUIRED",
"parameter": "personalaccountdata.birthdate",
},
{
"code": "TOKEN_REQUIRED",
"parameter": "customerToken",
},
{
"code": "VALIDFROM_REQUIRED",
"parameter": "orderline.validFrom",
}
],
"validationErrors": [], "validationErrors": [],
}, },
], ],
@ -2007,7 +1952,7 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
patch: patch:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Update an existing order line. summary: Update an existing order line.
description: Update an existing order line. description: Update an existing order line.
requestBody: requestBody:
@ -2016,19 +1961,9 @@ paths:
schema: schema:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
examples: examples:
Update order line: Update quantity and validity:
summary: Update order line summary: Update quantity and validity
description: Update order line description: Update quantity and validity
value:
{
"productId": 21,
"quantity": 1,
"validFrom": "2024-03-25T09:00:00",
"validUntil": null,
}
v2.2:
summary: Update order line v2.2
description: Update order line v2.2
value: value:
{ {
"quantity": 1, "quantity": 1,
@ -2083,7 +2018,7 @@ paths:
{ {
"orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468",
"externalOrderLineId": null, "externalOrderLineId": null,
"productId": 21, "productId": 112,
"productName": "HTM Regio Vrij - HL65 - Voltarief", "productName": "HTM Regio Vrij - HL65 - Voltarief",
"fikoArticleNumber": "6609", "fikoArticleNumber": "6609",
"productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL65", "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL65",
@ -2157,7 +2092,7 @@ paths:
} }
delete: delete:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Delete an existing order line. summary: Delete an existing order line.
description: Delete an existing order line. description: Delete an existing order line.
responses: responses:
@ -2248,7 +2183,7 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
post: post:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Add a customer token to an orderLine summary: Add a customer token to an orderLine
description: Add a customer token to an orderLine description: Add a customer token to an orderLine
requestBody: requestBody:
@ -2475,7 +2410,7 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
patch: patch:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Update a customer token summary: Update a customer token
description: Update a customer token description: Update a customer token
requestBody: requestBody:
@ -2661,7 +2596,7 @@ paths:
} }
delete: delete:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Delete a customer token from an orderline summary: Delete a customer token from an orderline
description: Delete a customer token from an orderline description: Delete a customer token from an orderline
responses: responses:
@ -2773,7 +2708,7 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
post: post:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Add personal account data to a customer token summary: Add personal account data to a customer token
description: Add personal account data to a customer token description: Add personal account data to a customer token
requestBody: requestBody:
@ -2991,7 +2926,7 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
patch: patch:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Update personal account data summary: Update personal account data
description: Update personal account data description: Update personal account data
requestBody: requestBody:
@ -3187,11 +3122,11 @@ paths:
}, },
], ],
"payments": [], "payments": [],
"orderCustomer": null "orderCustomers": null,
} }
delete: delete:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Delete personal account data summary: Delete personal account data
description: Delete personal account data description: Delete personal account data
responses: responses:
@ -3384,9 +3319,9 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
post: post:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Add a payment to an existing order summary: Add a payment to an existing order.
description: Add a payment to an existing order description: Add a payment to an existing order.
requestBody: requestBody:
content: content:
application/json: application/json:
@ -3648,9 +3583,10 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
patch: patch:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Update a payment on an existing order summary: Update a payment on an existing order.
description: Update a payment on an existing order description: |
Update a payment on an existing order. Depending on the payment status, the order status also changes accordingly.
requestBody: requestBody:
content: content:
application/json: application/json:
@ -3674,8 +3610,8 @@ paths:
"createdOn": "2024-03-22T09:00:00", "createdOn": "2024-03-22T09:00:00",
"statusCode": "190", "statusCode": "190",
"statusDescription": "Success", "statusDescription": "Success",
"statusSubCode": null, "statusSubCode": "S001",
"statusSubDescription": null, "statusSubDescription": "PaymentSuccessful",
}, },
], ],
"mandateInput": "mandateInput":
@ -4142,9 +4078,9 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
post: post:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Add a customer to an existing order summary: Add a customer to an existing order.
description: Add a customer to an existing order description: Add a customer to an existing order.
requestBody: requestBody:
content: content:
application/json: application/json:
@ -4398,9 +4334,9 @@ paths:
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Update a customer on an existing order summary: Update a customer on an existing order.
description: Update a customer on an existing order description: Update a customer on an existing order.
requestBody: requestBody:
content: content:
application/json: application/json:
@ -4642,9 +4578,9 @@ paths:
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Create a customer address for an existing order summary: Create a customer address for an existing order.
description: Create a customer address for an existing order description: Create a customer address for an existing order.
requestBody: requestBody:
content: content:
application/json: application/json:
@ -4894,9 +4830,9 @@ paths:
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Update a customer address for an existing order summary: Update a customer address for an existing order.
description: Update a customer address for an existing order description: Update a customer address for an existing order.
requestBody: requestBody:
content: content:
application/json: application/json:
@ -5129,7 +5065,7 @@ paths:
} }
delete: delete:
tags: tags:
- Order Creation Flow - Order Creation Flow v2
summary: Delete an existing order address. summary: Delete an existing order address.
description: Delete an existing order address. description: Delete an existing order address.
parameters: parameters:
@ -5245,130 +5181,12 @@ paths:
description: The JWT of the logged in customer (in case of a web shop). description: The JWT of the logged in customer (in case of a web shop).
post: post:
tags: tags:
- Order Fulfillment - Order Fulfillment v2
summary: Fulfill an order without creating or updating the order as a resource. summary: Fulfill an order without creating or updating the order as a resource.
description: Fulfill an order without creating or updating the order as a resource. description: Fulfill an order without creating or updating the order as a resource.
responses: responses:
"200": "200":
description: OK description: OK
/orders/validation/gboAgeProfile:
get:
tags:
- Order validation
summary: Get GBO age profile that is valid for the given input. P2
description: |-
Only one age profile can be valid at any one time, so only one profile is returned.
parameters:
- name: productStartDate
in: query
required: true
description: Start date of product validity
schema:
type: string
format: date
example: 2025-03-20
- name: birthDate
in: query
required: false
description: Birthdate of the OVpay-token holder
schema:
type: string
format: date
example: 2000-01-01
- name: ovPayTokenId
in: query
required: false
description: ovPayTokenId of the customer's selected token
schema:
type: integer
example: 1
- name: customerTokenId
in: query
required: false
description: customerTokenId of the customer's selected token
schema:
type: string
format: uuid
example: "4a2d2c9c-1e5d-4d8a-9c0a-6c0a6c0a6c0a"
- name: serviceReferenceId
in: query
required: false
description: serviceReferenceId of the customer's selected token
schema:
type: string
example: "NLOV1234567ABCDEFG"
- name: amount
in: query
required: false
description: amount belonging to the serviceReferenceId
schema:
type: integer
example: 100
- name: ovpasNumber
in: query
required: false
description: OVpas number of the customer's selected token
schema:
type: string
example: "63AW974"
- name: verificationCode
in: query
required: false
description: verification code belonging to the OVpas number
schema:
type: string
example: 1A3C7D
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/GboAgeProfileResponse"
"400":
description: Bad request
content:
application/json:
schema:
$ref: "#/components/schemas/rfc9457"
examples:
Missing parameter(s):
summary: Missing parameter(s)
value:
{
"type": "https://www.htm.nl/api/v1/400Error",
"title": "Missing parameter(s)",
"detail": "At least one of the following parameters must be present: birthDate, ovPayTokenId, customerTokenId, (serviceReferenceId and amount), (ovpasNumber and verificationCode)",
"instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
"apiErrorCode": "htm.api.err.400.2",
}
Invalid date format:
summary: Invalid date format
value:
{
"type": "https://www.htm.nl/api/v1/400Error",
"title": "Invalid input",
"detail": "The given birthDate is not a valid Date format",
"instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
"apiErrorCode": "htm.api.err.400.3",
}
"404":
description: Not found
content:
application/json:
schema:
$ref: "#/components/schemas/rfc9457"
examples:
No birthdate present in PAD of OVpay token:
summary: No birthdate present in PAD of OVpay token
value:
{
"type": "https://www.htm.nl/api/v1/404Error",
"title": "Missing birthdate in PAD",
"detail": "There is no birthdate present in the PAD of the OVpay token, or there is no PAD present at all",
"instance": "urn:uuid:13c8416f-7632-4c8b-8a16-2132197be60c",
"apiErrorCode": "htm.api.err.404.1",
}
components: components:
securitySchemes: securitySchemes:
bearerToken: bearerToken:
@ -5404,23 +5222,3 @@ components:
example: example:
- "/account/12345" - "/account/12345"
- "/account/67890" - "/account/67890"
GboAgeProfileResponse:
type: object
required:
- gboAgeProfileId
- name
- ageFromInclusive
- ageToInclusive
properties:
gboAgeProfileId:
type: integer
example: 1
name:
type: string
example: Kind (4 t/m 11 jaar)
ageFromInclusive:
type: integer
example: 4
ageToInclusive:
type: integer
example: 11