feature/OVPAY-2103 #39

Merged
bboterm merged 16 commits from feature/OVPAY-2103 into develop 2025-11-28 14:33:01 +00:00
4 changed files with 452 additions and 440 deletions
Showing only changes of commit b8ad7c4ebf - Show all commits

View File

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

View File

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

View File

@ -1,180 +0,0 @@
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
description: xTat used in order fulfillment. Note that this is a joined parameter via PurchasedProduct.
tags:
- Order Retrieval v2
- Order Retrieval
summary: Find orders
description: Find orders.
description: Find orders
responses:
"200":
description: OK
@ -425,7 +425,7 @@ paths:
}
post:
tags:
- Order Creation Flow v2
- Order Creation Flow
summary: Create a new order
description: |
Create a new order. This order can only contain the order itself,
@ -1279,7 +1279,7 @@ paths:
}
patch:
tags:
- Order Creation Flow v2
- Order Creation Flow
summary: Update an existing order.
description: Update an existing order.
requestBody:
@ -1517,7 +1517,7 @@ paths:
}
delete:
tags:
- Order Creation Flow v2
- Order Creation Flow
summary: Delete an existing order.
description: Delete an existing order.
responses:
@ -1563,9 +1563,9 @@ paths:
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Creation Flow v2
summary: Add a new order line to an existing order.
description: Add a new order line to an existing order.
- Order Creation Flow
summary: Add a new order line to an existing order
description: Add a new order line to an existing order
requestBody:
content:
application/json:
@ -1573,8 +1573,8 @@ paths:
$ref: "#/components/schemas/unavailable"
examples:
Add order line to concept order:
summary: Add order line to concept order
description: Add order line to concept order
summary: Add order line to concept order product with children
description: Add order line to concept order product with children
value:
{
"externalOrderLineId": null,
@ -1596,6 +1596,15 @@ 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:
"200":
description: OK
@ -1604,9 +1613,11 @@ paths:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Order with two order lines:
AddRemark chosen product is not a leaf node product:
summary: AddRemark chosen product is not a leaf node product
description: AddRemark for case where chosen product is not a leaf node product
value:
{
{
"validContents": false,
"orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df",
"externalOrderId": null,
@ -1674,25 +1685,13 @@ paths:
[
{
"customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"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",
},
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
"ovPayTokenId": 12,
"serviceReferenceId": null,
"amount": null,
"ovpasNumber": null,
"verificationCode": null,
"personalAccountData": null,
"ovPayToken":
{
"customerProfileId": 1,
@ -1771,27 +1770,69 @@ paths:
],
"orderAccountingStatuses": [],
"validationResult": "preliminary",
"additionalRemarks":
[
"additionalRemarks": [
{
"code": "MANDATE_REQUIRED",
"parameter": "directDebitMandateId",
},
],
"code": "PRODUCT_CHOICE_REQUIRED",
"parameter": "orderline.productId",
}
],
"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,
"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":
[
{
"orderLineId": "2cb04b38-e9a8-465a-a273-261c55a21b71",
"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,
"productId": 2,
"productName": "HTM Maandkorting 40%",
"fikoArticleNumber": "6610",
"productDescription": "HTM Maandkorting 40%",
"productId": 1,
"productName": "HTM Maandkorting 20%",
"fikoArticleNumber": "6609",
"productDescription": "HTM Maandkorting 20%",
"taxCode": "V21",
"taxPercentage": 21.0000,
"taxAmount": 42,
"amountExclTax": 200,
"amountInclTax": 242,
"taxAmount": 21,
"amountExclTax": 100,
"amountInclTax": 121,
"quantity": 1,
"orderLineTerms":
[
@ -1813,8 +1854,9 @@ paths:
[
{
"customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e",
"tokenTypeId": 1,
"ovPayTokenId": 4,
"tokenType":
{ "tokenTypeId": 1, "name": "EMV" },
"ovPayTokenId": 12,
"serviceReferenceId": null,
"amount": null,
"ovpasNumber": null,
@ -1897,8 +1939,21 @@ paths:
},
],
"orderAccountingStatuses": [],
"validationResult": "valid",
"additionalRemarks": [],
"validationResult": "preliminary",
"additionalRemarks": [
{
"code": "PERSONALACCOUNTDATA_BIRTHDATE_REQUIRED",
"parameter": "personalaccountdata.birthdate",
},
{
"code": "TOKEN_REQUIRED",
"parameter": "customerToken",
},
{
"code": "VALIDFROM_REQUIRED",
"parameter": "orderline.validFrom",
}
],
"validationErrors": [],
},
],
@ -1952,7 +2007,7 @@ paths:
description: The JWT of the logged in customer (in case of a web shop).
patch:
tags:
- Order Creation Flow v2
- Order Creation Flow
summary: Update an existing order line.
description: Update an existing order line.
requestBody:
@ -1961,9 +2016,19 @@ paths:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Update quantity and validity:
summary: Update quantity and validity
description: Update quantity and validity
Update order line:
summary: Update order line
description: Update order line
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:
{
"quantity": 1,
@ -2018,7 +2083,7 @@ paths:
{
"orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468",
"externalOrderLineId": null,
"productId": 112,
"productId": 21,
"productName": "HTM Regio Vrij - HL65 - Voltarief",
"fikoArticleNumber": "6609",
"productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL65",
@ -2092,7 +2157,7 @@ paths:
}
delete:
tags:
- Order Creation Flow v2
- Order Creation Flow
summary: Delete an existing order line.
description: Delete an existing order line.
responses:
@ -2165,27 +2230,27 @@ paths:
],
}
/orderlines/{orderLineId}/customertokens:
parameters:
- in: path
name: orderLineId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Creation Flow v2
parameters:
- in: path
name: orderLineId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Creation Flow
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:
content:
application/json:
@ -2392,25 +2457,25 @@ paths:
"orderCustomers": null,
}
/customertokens/{customerTokenId}:
parameters:
- in: path
name: customerTokenId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
patch:
tags:
- Order Creation Flow v2
parameters:
- in: path
name: customerTokenId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
patch:
tags:
- Order Creation Flow
summary: Update a customer token
description: Update a customer token
requestBody:
@ -2595,10 +2660,10 @@ paths:
"orderCustomers": null,
}
delete:
tags:
- Order Creation Flow v2
tags:
- Order Creation Flow
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:
"200":
description: OK
@ -2690,25 +2755,25 @@ paths:
"orderCustomers": null,
}
/customertokens/{customerTokenId}/personalaccountdata:
parameters:
- in: path
name: customerTokenId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Creation Flow v2
parameters:
- in: path
name: customerTokenId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Creation Flow
summary: Add personal account data to a customer token
description: Add personal account data to a customer token
requestBody:
@ -2908,25 +2973,25 @@ paths:
"orderCustomers": null,
}
/personalaccountdata/{personalAccountDataId}:
parameters:
- in: path
name: personalAccountDataId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: d9021fdd-6e83-45c0-9aef-71680f0b4e74
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
patch:
tags:
- Order Creation Flow v2
parameters:
- in: path
name: personalAccountDataId
required: true
style: simple
explode: false
schema:
type: string
format: uuid
example: d9021fdd-6e83-45c0-9aef-71680f0b4e74
- in: header
name: X-HTM-JWT-AUTH-HEADER
schema:
type: string
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
patch:
tags:
- Order Creation Flow
summary: Update personal account data
description: Update personal account data
requestBody:
@ -3122,11 +3187,11 @@ paths:
},
],
"payments": [],
"orderCustomers": null,
}
delete:
tags:
- Order Creation Flow v2
"orderCustomer": null
}
delete:
tags:
- Order Creation Flow
summary: Delete personal account data
description: Delete personal account data
responses:
@ -3319,9 +3384,9 @@ paths:
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Creation Flow v2
summary: Add a payment to an existing order.
description: Add a payment to an existing order.
- Order Creation Flow
summary: Add a payment to an existing order
description: Add a payment to an existing order
requestBody:
content:
application/json:
@ -3583,10 +3648,9 @@ paths:
description: The JWT of the logged in customer (in case of a web shop).
patch:
tags:
- Order Creation Flow v2
summary: 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.
- Order Creation Flow
summary: Update a payment on an existing order
description: Update a payment on an existing order
requestBody:
content:
application/json:
@ -3610,8 +3674,8 @@ paths:
"createdOn": "2024-03-22T09:00:00",
"statusCode": "190",
"statusDescription": "Success",
"statusSubCode": "S001",
"statusSubDescription": "PaymentSuccessful",
"statusSubCode": null,
"statusSubDescription": null,
},
],
"mandateInput":
@ -4078,9 +4142,9 @@ paths:
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Creation Flow v2
summary: Add a customer to an existing order.
description: Add a customer to an existing order.
- Order Creation Flow
summary: Add a customer to an existing order
description: Add a customer to an existing order
requestBody:
content:
application/json:
@ -4334,9 +4398,9 @@ paths:
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
tags:
- Order Creation Flow v2
summary: Update a customer on an existing order.
description: Update a customer on an existing order.
- Order Creation Flow
summary: Update a customer on an existing order
description: Update a customer on an existing order
requestBody:
content:
application/json:
@ -4578,9 +4642,9 @@ paths:
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
tags:
- Order Creation Flow v2
summary: Create a customer address for an existing order.
description: Create a customer address for an existing order.
- Order Creation Flow
summary: Create a customer address for an existing order
description: Create a customer address for an existing order
requestBody:
content:
application/json:
@ -4830,9 +4894,9 @@ paths:
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
description: The JWT of the logged in customer (in case of a web shop).
tags:
- Order Creation Flow v2
summary: Update a customer address for an existing order.
description: Update a customer address for an existing order.
- Order Creation Flow
summary: Update a customer address for an existing order
description: Update a customer address for an existing order
requestBody:
content:
application/json:
@ -5065,7 +5129,7 @@ paths:
}
delete:
tags:
- Order Creation Flow v2
- Order Creation Flow
summary: Delete an existing order address.
description: Delete an existing order address.
parameters:
@ -5181,12 +5245,130 @@ paths:
description: The JWT of the logged in customer (in case of a web shop).
post:
tags:
- Order Fulfillment v2
- Order Fulfillment
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.
responses:
"200":
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:
securitySchemes:
bearerToken:
@ -5222,3 +5404,23 @@ components:
example:
- "/account/12345"
- "/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