Compare commits
59 Commits
feature/OV
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| b6a490c979 | |||
|
|
1ac734de96 | ||
|
|
c692cd45ea | ||
|
|
0f2eaed9dd | ||
| 11ea8f5fea | |||
| e52fde1bb3 | |||
| 1761c662e7 | |||
|
|
6a0e5a5fba | ||
|
|
7953e035bb | ||
|
|
3c4ca6e00c | ||
|
|
f87baaca06 | ||
| 257f8f939b | |||
| c1bb52277e | |||
| e79ac51966 | |||
| c6b395a05b | |||
| 1d4fbf5004 | |||
|
|
8eed2a9dd6 | ||
|
|
5e255b7bac | ||
|
|
e2f70a78af | ||
|
|
ee0147b963 | ||
| 0a8a706675 | |||
| d42236dafc | |||
| 1aae9729b2 | |||
| f7975ed5a1 | |||
| f0c216be9b | |||
| 3db0d113a0 | |||
| f4e7bd9385 | |||
| c2a6b1c9c2 | |||
|
|
17f52cd914 | ||
| a493694021 | |||
| 96fd6341b0 | |||
| f1022c0d8d | |||
| 5b3264d9cd | |||
|
|
3d387e451b | ||
|
|
851f60d665 | ||
|
|
0987cedb4f | ||
| 23dd83fac9 | |||
| a637cfb4f2 | |||
| 42ff41baea | |||
| 699c633a4e | |||
| 95bc19d7ff | |||
| 8e77863480 | |||
| 07e1dc91e3 | |||
| 75531b4fdc | |||
| 00a98a6178 | |||
| 937a0323ed | |||
| ebee1178ef | |||
| 6e37b7c4fe | |||
| a0ebde6ae2 | |||
| 1f8e8f1381 | |||
| 1f0481119c | |||
| 3d2885f2b8 | |||
| 280d3b1fcd | |||
| f28a797b6b | |||
| 87d8f7df58 | |||
| 30e8860a39 | |||
| d18afcae8c | |||
| eb03aa04e6 | |||
| aca160f65c |
0
src/AGO_Examples_20260904.curl
Normal file
0
src/AGO_Examples_20260904.curl
Normal file
Binary file not shown.
@ -215,8 +215,13 @@ public class ABTProductsPUTGenerator {
|
|||||||
}
|
}
|
||||||
case "paymentMoment" -> {
|
case "paymentMoment" -> {
|
||||||
LOGGER.info("Rewriting paymentMoment to paymentMomentId...");
|
LOGGER.info("Rewriting paymentMoment to paymentMomentId...");
|
||||||
Long paymentMomentId = jsonField.getValue().get("paymentMomentId").asLong();
|
if (jsonField.getValue().get("paymentMomentId").isNull()) {
|
||||||
((ObjectNode)newJsonNode).put("paymentMomentId", paymentMomentId);
|
LOGGER.info("Rewriting null paymentMomentId...");
|
||||||
|
((ObjectNode)newJsonNode).putRawValue("paymentMomentId", null);
|
||||||
|
} else {
|
||||||
|
Long paymentMomentId = jsonField.getValue().get("paymentMomentId").asLong();
|
||||||
|
((ObjectNode)newJsonNode).put("paymentMomentId", paymentMomentId);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
case "requiredCustomerLevel" -> {
|
case "requiredCustomerLevel" -> {
|
||||||
LOGGER.info("Rewriting requiredCustomerLevel to requiredCustomerLevelId...");
|
LOGGER.info("Rewriting requiredCustomerLevel to requiredCustomerLevelId...");
|
||||||
|
|||||||
1845
src/openapi/container/abt-container-notifications.yaml
Normal file
1845
src/openapi/container/abt-container-notifications.yaml
Normal file
File diff suppressed because it is too large
Load Diff
417
src/openapi/container/abt-container-tokens.yaml
Normal file
417
src/openapi/container/abt-container-tokens.yaml
Normal file
@ -0,0 +1,417 @@
|
|||||||
|
openapi: 3.0.3
|
||||||
|
info:
|
||||||
|
title: Integration layer APIs for token storage for ABT
|
||||||
|
description: >-
|
||||||
|
APIs that give business processes access to the security and authorization state of a token within the scope of HTM. In the backend this is connected to a container which handles the accessToken en refreshToken management for an OVpas as given by GBO.
|
||||||
|
version: "1.0"
|
||||||
|
servers:
|
||||||
|
- url: https://services.acc.api.htm.nl/abt/containertokens/1.0
|
||||||
|
security:
|
||||||
|
- oAuthSample: [profile]
|
||||||
|
tags:
|
||||||
|
- name: securitytokens
|
||||||
|
paths:
|
||||||
|
/securitytokens:
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Create a new security token entry in the vault
|
||||||
|
description: Create a new security token entry in the vault, if the customerProfileId has been supplied create in the customerToken DB otherwise in the AnonymousToken DB
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/CreateSecurityTokenBody"
|
||||||
|
examples:
|
||||||
|
token details:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"xTat": "cf694905-7f76-4799-b0bc-490716921323",
|
||||||
|
"otpKey": "123456789123456789123456789abcde",
|
||||||
|
"customerProfileId": 12314
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"409":
|
||||||
|
description: Conflict
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT already exists:
|
||||||
|
value:
|
||||||
|
status: 409
|
||||||
|
title: Conflict
|
||||||
|
detail: Security Token already exists
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Internal Server Error:
|
||||||
|
value:
|
||||||
|
status: 500
|
||||||
|
title: Internal Server Error
|
||||||
|
detail: An unknown error has occurred
|
||||||
|
/securitytokens/{xTat}/status:
|
||||||
|
parameters:
|
||||||
|
- name: xTat
|
||||||
|
in: path
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 85dbeacc-b9aa-4d5b-bdec-9319010c597f
|
||||||
|
required: true
|
||||||
|
description: The xTat of the OVpastoken for which the status needs to be checked
|
||||||
|
- name: customerProfileId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile for which the request is being done, if customer has identified themselves
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Request the security and authorization status of an OV pas token
|
||||||
|
description: Request the security and authorization status of an OV pas token, if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityTokenStatusResponse"
|
||||||
|
examples:
|
||||||
|
Not secured and not authorized :
|
||||||
|
summary: Not secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": false
|
||||||
|
}
|
||||||
|
Secured and not authorized :
|
||||||
|
summary: Secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
Secured and authorized :
|
||||||
|
summary: Secured and authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": true,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Internal Server Error:
|
||||||
|
value:
|
||||||
|
status: 500
|
||||||
|
title: Internal Server Error
|
||||||
|
detail: An unknown error has occurred
|
||||||
|
/securitytokens/{xTat}:
|
||||||
|
parameters:
|
||||||
|
- name: xTat
|
||||||
|
in: path
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: uuid
|
||||||
|
required: true
|
||||||
|
description: The xTat of the ovPastoken for which the status needs to be checked
|
||||||
|
- name: customerProfileId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile for which the request is being done, if customer has identified themselves
|
||||||
|
patch:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Validate the supplied OTP and secure and/or authorize the token
|
||||||
|
description: Validate the supplied OTP and secure and/or authorize the token if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityValidateTokenBody"
|
||||||
|
examples:
|
||||||
|
token:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"otp": "123456"
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityTokenStatusResponse"
|
||||||
|
examples:
|
||||||
|
Not secured and not authorized :
|
||||||
|
summary: Not secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": false
|
||||||
|
}
|
||||||
|
Secured and not authorized :
|
||||||
|
summary: Secured, not authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": false,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
Secured and authorized :
|
||||||
|
summary: Secured and authorized
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"isAuthorized": true,
|
||||||
|
"isSecured": true
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"422":
|
||||||
|
description: Unprocessable Entity
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Validation failed:
|
||||||
|
value:
|
||||||
|
status: 422
|
||||||
|
title: OTP validation failed
|
||||||
|
detail: The supplied OTP could not be validated
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Internal Server Error:
|
||||||
|
value:
|
||||||
|
status: 500
|
||||||
|
title: Internal Server Error
|
||||||
|
detail: An unknown error has occurred
|
||||||
|
delete:
|
||||||
|
tags:
|
||||||
|
- securitytokens
|
||||||
|
summary: Delete the authorization for HTM for an ovpaytoken
|
||||||
|
description: Delete the authorization for HTM for an ovpaytoken if the customerProfileId has been supplied look in the customerToken DB otherwise check the AnonymousToken DB.
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecurityTokenStatusResponse"
|
||||||
|
example:
|
||||||
|
{}
|
||||||
|
components:
|
||||||
|
securitySchemes:
|
||||||
|
oAuthSample:
|
||||||
|
type: oauth2
|
||||||
|
description: This API uses OAuth 2 with the clientCredentials flow. [More info](https://api.example.com/docs/auth)
|
||||||
|
flows:
|
||||||
|
clientCredentials: # <---- OAuth flow( clientCredentials)
|
||||||
|
tokenUrl: https://identity.{env}.api.htm.nl/oauth2/token
|
||||||
|
scopes:
|
||||||
|
profile: "Access user profile"
|
||||||
|
schemas:
|
||||||
|
ErrorResponse:
|
||||||
|
description: Default response when an invalid request has been sent
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: integer
|
||||||
|
description: >-
|
||||||
|
A status IS An integer that represents the HTTP status code of the
|
||||||
|
response.
|
||||||
|
example: 400
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
description: A title IS A string that provides a brief summary of the error.
|
||||||
|
detail:
|
||||||
|
type: string
|
||||||
|
description: A detail IS A string that provides more details about the error.
|
||||||
|
CreateSecurityTokenBody:
|
||||||
|
description: Body for when the a new security token entry is created
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- xTat
|
||||||
|
- otpKey
|
||||||
|
properties:
|
||||||
|
xTat:
|
||||||
|
type : string
|
||||||
|
description: >-
|
||||||
|
Unique identifier for the GBO transit account
|
||||||
|
example: 03071794-482a-4168-b60f-84669a9e6a76
|
||||||
|
otpKey:
|
||||||
|
type : string
|
||||||
|
description: >-
|
||||||
|
Key used to validate the OTP at GBO
|
||||||
|
example: 123456789123456789123456789abcde
|
||||||
|
customerProfileId:
|
||||||
|
type : integer
|
||||||
|
description: >-
|
||||||
|
CustomerProfileId of the account requesting security or giving authorization
|
||||||
|
example: 123456
|
||||||
|
SecurityTokenStatusResponse:
|
||||||
|
description: Response for when the status of a token is requested
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
isSecured:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Is the OVpas secured according to the GBO
|
||||||
|
example: false
|
||||||
|
isAuthorized:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Does HTM have the authorization to access the secured the data of the OVpas
|
||||||
|
example: false
|
||||||
|
SecurityValidateTokenBody:
|
||||||
|
description: Body for when the a token entry is validated
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- otp
|
||||||
|
properties:
|
||||||
|
otp:
|
||||||
|
type : string
|
||||||
|
description: >-
|
||||||
|
OTP to be used to secure the token and retrieve the JWT at GBO
|
||||||
|
example: 123456
|
||||||
@ -45,12 +45,36 @@ paths:
|
|||||||
"contractStatus":
|
"contractStatus":
|
||||||
{ "contractStatusId": 2, "name": "active" },
|
{ "contractStatusId": 2, "name": "active" },
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM Maand 20% korting doorlopend",
|
||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P1M",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"created": "2024-08-01 15:01:00.000",
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
"ovPayTokenId": 1337,
|
"ovPayTokenId": 1337,
|
||||||
|
"contractVersions": [
|
||||||
|
{
|
||||||
|
"contractVersionId": 1,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM Maand 20% korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 400,
|
||||||
|
"start": "2024-08-01T15:01:00.000Z",
|
||||||
|
"end": "2025-01-01T03:00:00.000Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"contractVersionId": 2,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM Maand 20% korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 500,
|
||||||
|
"start": "2025-01-01T03:00:00.000Z",
|
||||||
|
"end": null
|
||||||
|
}
|
||||||
|
],
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"get_token":
|
"get_token":
|
||||||
@ -68,14 +92,38 @@ paths:
|
|||||||
"orderLineId": "42f68042-908f-41f4-9d9b-4cab843ff0e8",
|
"orderLineId": "42f68042-908f-41f4-9d9b-4cab843ff0e8",
|
||||||
"touchpointId": 2,
|
"touchpointId": 2,
|
||||||
"contractStatus":
|
"contractStatus":
|
||||||
{ "contractStatusId": 1, "name": "new" },
|
{ "contractStatusId": 6, "name": "pending cancellation" },
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P1M",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"created": "2024-08-01 15:01:00.000",
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
"ovPayTokenId": 1338,
|
"ovPayTokenId": 1338,
|
||||||
|
"contractVersions": [
|
||||||
|
{
|
||||||
|
"contractVersionId": 1,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 400,
|
||||||
|
"start": "2024-08-01T15:01:00.000Z",
|
||||||
|
"end": "2025-01-01T03:00:00.000Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"contractVersionId": 2,
|
||||||
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
|
"productId": 1,
|
||||||
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
|
"taxCode": "V9",
|
||||||
|
"taxPercentage": 9,
|
||||||
|
"termAmountInclTax": 500,
|
||||||
|
"start": "2025-01-01T03:00:00.000Z",
|
||||||
|
"end": "2025-02-01T03:00:00.000Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"get_token":
|
"get_token":
|
||||||
@ -154,8 +202,8 @@ paths:
|
|||||||
"contractStatus":
|
"contractStatus":
|
||||||
{ "contractStatusId": 2, "name": "active" },
|
{ "contractStatusId": 2, "name": "active" },
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P1M",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"ovPayTokenId": 1337,
|
"ovPayTokenId": 1337,
|
||||||
@ -165,22 +213,22 @@ paths:
|
|||||||
"contractVersionId": 1,
|
"contractVersionId": 1,
|
||||||
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2024-07-04 15:01:00.000",
|
"start": "2024-08-01T15:01:00.000Z",
|
||||||
"end": "2024-12-31 15:01:00.000",
|
"end": "2025-01-01T03:00:00.000Z",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"contractVersionId": 2,
|
"contractVersionId": 2,
|
||||||
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
"termsAndConditions": "https://www.htm.nl/reisproducten/productvoorwaarden/htm-maandkorting/",
|
||||||
"productId": 1,
|
"productId": 1,
|
||||||
"productName": "HTM Maand 20% korting",
|
"productName": "HTM 20% Korting doorlopend",
|
||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2025-01-01 15:01:00.000",
|
"start": "2025-01-01T03:00:00.000Z",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"contractActions":
|
"contractActions":
|
||||||
@ -190,7 +238,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 1, "name": "create" },
|
{ "actionTypeId": 1, "name": "create" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-02 15:01:00.000",
|
"timestamp": "2024-07-02T15:01:00.000Z",
|
||||||
"details": "Contract created",
|
"details": "Contract created",
|
||||||
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
||||||
},
|
},
|
||||||
@ -199,7 +247,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 2, "name": "change" },
|
{ "actionTypeId": 2, "name": "change" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-03 15:01:00.000",
|
"timestamp": "2024-07-03T15:01:00.000Z",
|
||||||
"details": "Contract changed",
|
"details": "Contract changed",
|
||||||
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
||||||
},
|
},
|
||||||
@ -211,8 +259,8 @@ paths:
|
|||||||
"externalReference": "F2024-0001",
|
"externalReference": "F2024-0001",
|
||||||
"term": 1,
|
"term": 1,
|
||||||
"invoiceDate": "2024-07-02",
|
"invoiceDate": "2024-07-02",
|
||||||
"created": "2024-07-02 15:01:00.000",
|
"created": "2024-07-02T15:01:00.000Z",
|
||||||
"updated": "2024-07-02 15:01:00.000",
|
"updated": "2024-07-02T15:01:00.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"data": "{json}",
|
"data": "{json}",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -270,8 +318,8 @@ paths:
|
|||||||
"externalReference": "F2024-0001",
|
"externalReference": "F2024-0001",
|
||||||
"term": 1,
|
"term": 1,
|
||||||
"invoiceDate": "2024-07-02",
|
"invoiceDate": "2024-07-02",
|
||||||
"created": "2024-07-02 15:01:34.000",
|
"created": "2024-07-02T15:01:34.000Z",
|
||||||
"updated": "2024-07-04 00:04:56.000",
|
"updated": "2024-07-04T00:04:56.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"public_link": "http://mijnfactuurinzien.nl/F2024-0001",
|
"public_link": "http://mijnfactuurinzien.nl/F2024-0001",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -282,8 +330,8 @@ paths:
|
|||||||
"externalReference": "F2024-0002",
|
"externalReference": "F2024-0002",
|
||||||
"term": 2,
|
"term": 2,
|
||||||
"invoiceDate": "2024-08-02",
|
"invoiceDate": "2024-08-02",
|
||||||
"created": "2024-08-02 15:01:34.000",
|
"created": "2024-08-02T15:01:34.000Z",
|
||||||
"updated": "2024-08-04 00:04:56.000",
|
"updated": "2024-08-04T00:04:56.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"public_link": "http://mijnfactuurinzien.nl/F2024-0002",
|
"public_link": "http://mijnfactuurinzien.nl/F2024-0002",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -328,8 +376,8 @@ paths:
|
|||||||
"cancellationMoment": "termBound",
|
"cancellationMoment": "termBound",
|
||||||
"termDuration": "P1M",
|
"termDuration": "P1M",
|
||||||
"billingDay": 18,
|
"billingDay": 18,
|
||||||
"cancellationFrom": "2024-08-10T00:00:00",
|
"cancellationFrom": "2024-08-10T00:00:00Z",
|
||||||
"cancellationUntil": "2026-08-10T00:00:00",
|
"cancellationUntil": "2026-08-10T00:00:00Z",
|
||||||
}
|
}
|
||||||
/contracts/{contractId}/cancellationvalidation:
|
/contracts/{contractId}/cancellationvalidation:
|
||||||
parameters:
|
parameters:
|
||||||
@ -382,7 +430,7 @@ paths:
|
|||||||
{
|
{
|
||||||
"validationResult": true,
|
"validationResult": true,
|
||||||
"validationMessage": "",
|
"validationMessage": "",
|
||||||
"end": "2024-08-10T03:59:59",
|
"end": "2024-08-10T03:59:59Z",
|
||||||
"refundAmount": 2489,
|
"refundAmount": 2489,
|
||||||
"refundMethods": ["creditInvoice", "iDeal"],
|
"refundMethods": ["creditInvoice", "iDeal"],
|
||||||
}
|
}
|
||||||
@ -451,7 +499,7 @@ paths:
|
|||||||
the refund amount and refund method.
|
the refund amount and refund method.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"end": "2024-08-10T03:59:59",
|
"end": "2024-08-10T03:59:59Z",
|
||||||
"refundAmount": 2489,
|
"refundAmount": 2489,
|
||||||
"refundMethod": "creditInvoice",
|
"refundMethod": "creditInvoice",
|
||||||
}
|
}
|
||||||
@ -516,8 +564,8 @@ paths:
|
|||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2024-07-04 15:01:00.000",
|
"start": "2024-07-04T15:01:00.000Z",
|
||||||
"end": "2024-12-31 15:01:00.000",
|
"end": "2024-12-31T15:01:00.000Z",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"contractVersionId": 2,
|
"contractVersionId": 2,
|
||||||
@ -527,7 +575,8 @@ paths:
|
|||||||
"taxCode": "V9",
|
"taxCode": "V9",
|
||||||
"taxPercentage": 9.0,
|
"taxPercentage": 9.0,
|
||||||
"termAmountInclTax": 400,
|
"termAmountInclTax": 400,
|
||||||
"start": "2025-01-01 15:01:00.000",
|
"start": "2025-01-01T15:01:00.000Z",
|
||||||
|
"end": null
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"contractActions":
|
"contractActions":
|
||||||
@ -537,7 +586,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 1, "name": "create" },
|
{ "actionTypeId": 1, "name": "create" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-02 15:01:00.000",
|
"timestamp": "2024-07-02T15:01:00.000Z",
|
||||||
"details": "Contract created",
|
"details": "Contract created",
|
||||||
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
"correlationId": "976e7a4c-bf24-43d2-b444-55817556e7ee",
|
||||||
},
|
},
|
||||||
@ -546,7 +595,7 @@ paths:
|
|||||||
"actionType":
|
"actionType":
|
||||||
{ "actionTypeId": 2, "name": "change" },
|
{ "actionTypeId": 2, "name": "change" },
|
||||||
"user": "subid123456",
|
"user": "subid123456",
|
||||||
"timestamp": "2024-07-03 15:01:00.000",
|
"timestamp": "2024-07-03T15:01:00.000Z",
|
||||||
"details": "Contract changed",
|
"details": "Contract changed",
|
||||||
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
"correlationId": "e2462347-6749-4841-b42a-cf8de19ec727",
|
||||||
},
|
},
|
||||||
@ -558,8 +607,8 @@ paths:
|
|||||||
"externalReference": "F2024-0001",
|
"externalReference": "F2024-0001",
|
||||||
"term": 1,
|
"term": 1,
|
||||||
"invoiceDate": "2024-07-02",
|
"invoiceDate": "2024-07-02",
|
||||||
"created": "2024-07-02 15:01:00.000",
|
"created": "2024-07-02T15:01:00.000Z",
|
||||||
"updated": "2024-07-02 15:01:00.000",
|
"updated": "2024-07-02T15:01:00.000Z",
|
||||||
"state": "invoice_created",
|
"state": "invoice_created",
|
||||||
"data": "{json}",
|
"data": "{json}",
|
||||||
"isCredit": false,
|
"isCredit": false,
|
||||||
@ -682,7 +731,7 @@ paths:
|
|||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P0Y1M0D",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"created": "2024-08-01 15:01:00.000",
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
"ovPayTokenId": 1337,
|
"ovPayTokenId": 1337,
|
||||||
"contractVersions":
|
"contractVersions":
|
||||||
[
|
[
|
||||||
@ -781,7 +830,7 @@ paths:
|
|||||||
"termDuration": "P0Y1M0D",
|
"termDuration": "P0Y1M0D",
|
||||||
"billingDay": 15,
|
"billingDay": 15,
|
||||||
"highestInvoiceTerm": 1,
|
"highestInvoiceTerm": 1,
|
||||||
"created": "2024-08-01 15:01:00.000",
|
"created": "2024-08-01T15:01:00.000Z",
|
||||||
"ovPayTokenId": 1337,
|
"ovPayTokenId": 1337,
|
||||||
"contractVersions":
|
"contractVersions":
|
||||||
[
|
[
|
||||||
|
|||||||
@ -380,7 +380,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@ -415,7 +415,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -429,7 +429,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@ -464,7 +464,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -478,7 +478,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
- name: customerPreferenceId
|
- name: customerPreferenceId
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
@ -519,7 +519,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -533,8 +533,8 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@ -575,7 +575,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -589,7 +589,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
- name: addressId
|
- name: addressId
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
@ -634,7 +634,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -648,7 +648,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
- name: addressId
|
- name: addressId
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
@ -669,14 +669,14 @@ paths:
|
|||||||
summary: Add a customer phone
|
summary: Add a customer phone
|
||||||
description: >-
|
description: >-
|
||||||
|
|
||||||
parameters:
|
parameters:
|
||||||
- name: X-HTM-JWT-AUTH-HEADER
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -690,7 +690,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
requestBody:
|
requestBody:
|
||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
@ -728,7 +728,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -742,7 +742,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
- name: phoneId
|
- name: phoneId
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
@ -754,7 +754,7 @@ paths:
|
|||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/phoneEntity"
|
$ref: "#/components/schemas/phoneEntity"
|
||||||
examples:
|
examples:
|
||||||
updateFullPhoneEntity:
|
updateFullPhoneEntity:
|
||||||
value:
|
value:
|
||||||
phone:
|
phone:
|
||||||
@ -789,7 +789,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -803,7 +803,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
- name: phoneId
|
- name: phoneId
|
||||||
in: path
|
in: path
|
||||||
required: true
|
required: true
|
||||||
@ -816,7 +816,7 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json: {}
|
application/json: {}
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
x-throttling-tier: Unlimited
|
x-throttling-tier: Unlimited
|
||||||
/customers/billinginformations:
|
/customers/billinginformations:
|
||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
@ -831,7 +831,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -845,7 +845,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
description: OK
|
description: OK
|
||||||
@ -866,7 +866,7 @@ paths:
|
|||||||
"billingInformationId": 1,
|
"billingInformationId": 1,
|
||||||
"iban": "NL••••••••••••1234",
|
"iban": "NL••••••••••••1234",
|
||||||
"ascription": "J. Doe",
|
"ascription": "J. Doe",
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"created": "2024-10-20T17:05:52.000",
|
"created": "2024-10-20T17:05:52.000",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -875,7 +875,7 @@ paths:
|
|||||||
get:
|
get:
|
||||||
tags:
|
tags:
|
||||||
- Customers
|
- Customers
|
||||||
summary: Find direct debit mandates for a customer.
|
summary: Find direct debit mandates for a customer.
|
||||||
description: Find direct debit mandates for a customer.
|
description: Find direct debit mandates for a customer.
|
||||||
parameters:
|
parameters:
|
||||||
- name: X-HTM-JWT-AUTH-HEADER
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
@ -884,7 +884,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
required: false
|
required: false
|
||||||
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
in: header
|
in: header
|
||||||
schema:
|
schema:
|
||||||
@ -898,7 +898,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
example: Customer
|
example: Customer
|
||||||
required: false
|
required: false
|
||||||
description: The role of the HTM employee in the case of the SMP
|
description: The role of the HTM employee in the case of the SMP
|
||||||
responses:
|
responses:
|
||||||
200:
|
200:
|
||||||
description: OK
|
description: OK
|
||||||
@ -914,12 +914,12 @@ paths:
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"directDebitMandateId": 71,
|
"directDebitMandateId": 71,
|
||||||
"billingInformationId":
|
"billingInformationId":
|
||||||
{
|
{
|
||||||
"billingInformationId": 15,
|
"billingInformationId": 15,
|
||||||
"iban": "NL••••••••••••1234",
|
"iban": "NL••••••••••••1234",
|
||||||
"ascription": "J. Doe",
|
"ascription": "J. Doe",
|
||||||
"alias": null,
|
"alias": null,
|
||||||
"created": "2024-10-20T17:05:52.000",
|
"created": "2024-10-20T17:05:52.000",
|
||||||
},
|
},
|
||||||
"directDebitMandateType":
|
"directDebitMandateType":
|
||||||
@ -1081,6 +1081,10 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -1130,9 +1134,9 @@ paths:
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
OV pas without PAD:
|
OV pas without PAD, without AGO:
|
||||||
summary: OV pas without PAD
|
summary: OV pas without PAD, without AGO
|
||||||
description: OV pas without PAD
|
description: OV pas without PAD, without AGO
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"ovPayTokens":
|
"ovPayTokens":
|
||||||
@ -1142,7 +1146,7 @@ paths:
|
|||||||
"ovPayTokenId": 1,
|
"ovPayTokenId": 1,
|
||||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34567",
|
"ovpasNumber": "OV34567",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1164,6 +1168,10 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": false,
|
||||||
|
"isAuthorized": false,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -1201,6 +1209,10 @@ paths:
|
|||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/51compare",
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/51compare",
|
||||||
"method": "POST",
|
"method": "POST",
|
||||||
},
|
},
|
||||||
|
"secure": {
|
||||||
|
"href": "/tokens/securetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
@ -1213,9 +1225,9 @@ paths:
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
OV pas with PAD and autoReload:
|
OV pas with PAD, with autoReload, with AGO:
|
||||||
summary: OV pas with PAD and autoReload
|
summary: OV pas with PAD, with autoReload, with AGO
|
||||||
description: OV pas with PAD and autoReload
|
description: OV pas with PAD, with autoReload, with AGO
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"ovPayTokens":
|
"ovPayTokens":
|
||||||
@ -1225,7 +1237,7 @@ paths:
|
|||||||
"ovPayTokenId": 1,
|
"ovPayTokenId": 1,
|
||||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34567",
|
"ovpasNumber": "OV34567",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1287,6 +1299,10 @@ paths:
|
|||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11,
|
||||||
},
|
},
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -1348,8 +1364,8 @@ paths:
|
|||||||
"ovPayTokenId": 1,
|
"ovPayTokenId": 1,
|
||||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34567",
|
"ovpasNumber": "OV34567",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
{ "tokenStatusId": 2, "name": "Active" },
|
{ "tokenStatusId": 2, "name": "Active" },
|
||||||
@ -1385,6 +1401,10 @@ paths:
|
|||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11,
|
||||||
},
|
},
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -1446,7 +1466,7 @@ paths:
|
|||||||
"ovPayTokenId": 1,
|
"ovPayTokenId": 1,
|
||||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34567",
|
"ovpasNumber": "OV34567",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1501,6 +1521,10 @@ paths:
|
|||||||
"ageFromInclusive": 4,
|
"ageFromInclusive": 4,
|
||||||
"ageToInclusive": 11,
|
"ageToInclusive": 11,
|
||||||
},
|
},
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -1562,7 +1586,7 @@ paths:
|
|||||||
"ovPayTokenId": 1,
|
"ovPayTokenId": 1,
|
||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34567",
|
"ovpasNumber": "OV34567",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1577,13 +1601,29 @@ paths:
|
|||||||
"birthdate": null,
|
"birthdate": null,
|
||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": false,
|
||||||
|
},
|
||||||
|
"_links":{
|
||||||
|
"self":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPaytokenId=1",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
"authorize":
|
||||||
|
{
|
||||||
|
"href": "/tokens/authorizetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 1,
|
"customerProfileId": 1,
|
||||||
"ovPayTokenId": 6,
|
"ovPayTokenId": 6,
|
||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV54567",
|
"ovpasNumber": "OV54567",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1599,13 +1639,24 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
|
"_links":{
|
||||||
|
"self":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPaytokenId=1",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 18,
|
"customerProfileId": 18,
|
||||||
"ovPayTokenId": 13,
|
"ovPayTokenId": 13,
|
||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34547",
|
"ovpasNumber": "OV34547",
|
||||||
"alias": "MyToken",
|
"alias": "MyToken",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1621,13 +1672,24 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
|
"_links":{
|
||||||
|
"self":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPaytokenId=1",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 132,
|
"customerProfileId": 132,
|
||||||
"ovPayTokenId": 21,
|
"ovPayTokenId": 21,
|
||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34831",
|
"ovpasNumber": "OV34831",
|
||||||
"alias": "Mijn OV Pas",
|
"alias": "Mijn OV Pas",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1643,13 +1705,24 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
|
"_links":{
|
||||||
|
"self":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPaytokenId=1",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 166,
|
"customerProfileId": 166,
|
||||||
"ovPayTokenId": 28,
|
"ovPayTokenId": 28,
|
||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV34984",
|
"ovpasNumber": "OV34984",
|
||||||
"alias": "Mijn OV Pas",
|
"alias": "Mijn OV Pas",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1668,13 +1741,29 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": false,
|
||||||
|
"isAuthorized": false,
|
||||||
|
},
|
||||||
|
"_links":{
|
||||||
|
"self":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPaytokenId=1",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
"secure":
|
||||||
|
{
|
||||||
|
"href": "/tokens/securetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 166,
|
"customerProfileId": 166,
|
||||||
"ovPayTokenId": 115,
|
"ovPayTokenId": 115,
|
||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV54368",
|
"ovpasNumber": "OV54368",
|
||||||
"alias": "My retired token",
|
"alias": "My retired token",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1690,13 +1779,24 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
|
"_links":{
|
||||||
|
"self":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPaytokenId=1",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"customerProfileId": 1,
|
"customerProfileId": 1,
|
||||||
"ovPayTokenId": 118,
|
"ovPayTokenId": 118,
|
||||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||||
"tokenType":
|
"tokenType":
|
||||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||||
"ovpasNumber": "OV98263",
|
"ovpasNumber": "OV98263",
|
||||||
"alias": "My found token",
|
"alias": "My found token",
|
||||||
"tokenStatus":
|
"tokenStatus":
|
||||||
@ -1712,6 +1812,17 @@ paths:
|
|||||||
"photo": null,
|
"photo": null,
|
||||||
},
|
},
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
|
"_links":{
|
||||||
|
"self":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovPaytokenId=1",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
}
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
_links:
|
_links:
|
||||||
@ -1812,6 +1923,10 @@ paths:
|
|||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -1890,6 +2005,10 @@ paths:
|
|||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": false,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -1927,6 +2046,12 @@ paths:
|
|||||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
||||||
"method": "POST",
|
"method": "POST",
|
||||||
},
|
},
|
||||||
|
"authorize":{
|
||||||
|
{
|
||||||
|
"href": "/tokens/authorizetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
"_links":
|
"_links":
|
||||||
@ -2086,6 +2211,10 @@ paths:
|
|||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -2149,6 +2278,10 @@ paths:
|
|||||||
"personalAccountData":
|
"personalAccountData":
|
||||||
{ "name": null, "birthdate": null, "photo": null },
|
{ "name": null, "birthdate": null, "photo": null },
|
||||||
"gboAgeProfile": null,
|
"gboAgeProfile": null,
|
||||||
|
"tatSecurity": {
|
||||||
|
"isSecured": true,
|
||||||
|
"isAuthorized": true,
|
||||||
|
},
|
||||||
"_links":
|
"_links":
|
||||||
{
|
{
|
||||||
"self":
|
"self":
|
||||||
@ -2905,9 +3038,9 @@ paths:
|
|||||||
summary: "**INTEGRATIELAAG** Transfer old OVpay token to new OVpay token."
|
summary: "**INTEGRATIELAAG** Transfer old OVpay token to new OVpay token."
|
||||||
description: |-
|
description: |-
|
||||||
**Note that this directly calls the integratielaag and not the Service Engine!**
|
**Note that this directly calls the integratielaag and not the Service Engine!**
|
||||||
First transfers all personal account data (if present), then all products, of an existing OVpay token
|
First transfers all personal account data (if present), then all products, of an existing OVpay token
|
||||||
to a new OVpay token. The new token will also be persisted in the profile as a replacement
|
to a new OVpay token. The new token will also be persisted in the profile as a replacement
|
||||||
of the old token. This call is asynchronous, and progress can be monitored using the
|
of the old token. This call is asynchronous, and progress can be monitored using the
|
||||||
`/customers/tokens/transfer/responsestatus/*` endpoint.
|
`/customers/tokens/transfer/responsestatus/*` endpoint.
|
||||||
tags:
|
tags:
|
||||||
- Token Replace v2
|
- Token Replace v2
|
||||||
@ -2920,9 +3053,9 @@ paths:
|
|||||||
Transfer from a token without PAD to a new token:
|
Transfer from a token without PAD to a new token:
|
||||||
summary: Transfer from a token without PAD to a new token
|
summary: Transfer from a token without PAD to a new token
|
||||||
description: |
|
description: |
|
||||||
Transfer of a token without PAD to a new OVpay token. Note the new token in the request is always
|
Transfer of a token without PAD to a new OVpay token. Note the new token in the request is always
|
||||||
identified by xTAT, regardless if the new token already exists in the customer profile. If the new
|
identified by xTAT, regardless if the new token already exists in the customer profile. If the new
|
||||||
token does not exist in the customer profile, the user needs to provide an alias for the new token,
|
token does not exist in the customer profile, the user needs to provide an alias for the new token,
|
||||||
and it will be created in the customer profile.
|
and it will be created in the customer profile.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
@ -2936,11 +3069,11 @@ paths:
|
|||||||
Transfer from a token with PAD to a new token without existing PAD:
|
Transfer from a token with PAD to a new token without existing PAD:
|
||||||
summary: Transfer from a token with PAD to a new token without existing PAD
|
summary: Transfer from a token with PAD to a new token without existing PAD
|
||||||
description: |
|
description: |
|
||||||
Transfer of a token with PAD to a new token by xTAT without existing PAD. Note how this request is
|
Transfer of a token with PAD to a new token by xTAT without existing PAD. Note how this request is
|
||||||
different, since it has an e-mail address on which the new PAD should be created. This request may
|
different, since it has an e-mail address on which the new PAD should be created. This request may
|
||||||
optionally provide an OTP for verification of th provided email address.
|
optionally provide an OTP for verification of th provided email address.
|
||||||
Also note the new token in the request is always identified by xTAT, regardless if the new token
|
Also note the new token in the request is always identified by xTAT, regardless if the new token
|
||||||
already exists in the customer profile. If the new token does not exist in the customer profile, the
|
already exists in the customer profile. If the new token does not exist in the customer profile, the
|
||||||
user needs to provide an alias for the new token, and it will be created in the customer profile.
|
user needs to provide an alias for the new token, and it will be created in the customer profile.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
@ -2957,8 +3090,8 @@ paths:
|
|||||||
summary: Transfer from a token with PAD to a new token with existing PAD
|
summary: Transfer from a token with PAD to a new token with existing PAD
|
||||||
description: |
|
description: |
|
||||||
Transfer of a token with PAD to a new token by xTAT with existing PAD.
|
Transfer of a token with PAD to a new token by xTAT with existing PAD.
|
||||||
Note that the new token in the request is always identified by xTAT, regardless if the new token
|
Note that the new token in the request is always identified by xTAT, regardless if the new token
|
||||||
already exists in the customer profile. If the new token does not exist in the customer profile, the
|
already exists in the customer profile. If the new token does not exist in the customer profile, the
|
||||||
user needs to provide an alias for the new token, and it will be created in the customer profile.
|
user needs to provide an alias for the new token, and it will be created in the customer profile.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
@ -2996,7 +3129,7 @@ paths:
|
|||||||
Transfer of token started:
|
Transfer of token started:
|
||||||
description: |
|
description: |
|
||||||
The transfer of the token was started successfully. The data of the token will be transferred
|
The transfer of the token was started successfully. The data of the token will be transferred
|
||||||
asynchronously. In the response body the consumer will find information on how to retrieve the
|
asynchronously. In the response body the consumer will find information on how to retrieve the
|
||||||
processing status.
|
processing status.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
@ -3038,7 +3171,7 @@ paths:
|
|||||||
- Token Replace v2
|
- Token Replace v2
|
||||||
summary: "**INTEGRATIELAAG** Get the status of the initiated token transfer process."
|
summary: "**INTEGRATIELAAG** Get the status of the initiated token transfer process."
|
||||||
description: |
|
description: |
|
||||||
**Note that this directly calls the integratielaag and not the Service Engine!** Get the status of the
|
**Note that this directly calls the integratielaag and not the Service Engine!** Get the status of the
|
||||||
asynchronous token transfer processing.
|
asynchronous token transfer processing.
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
@ -3166,7 +3299,7 @@ paths:
|
|||||||
examples:
|
examples:
|
||||||
Token transfer in progress:
|
Token transfer in progress:
|
||||||
description: |
|
description: |
|
||||||
The transfer of the token is still in progress. The response body shows the details of the
|
The transfer of the token is still in progress. The response body shows the details of the
|
||||||
processing status.
|
processing status.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
@ -3347,7 +3480,7 @@ paths:
|
|||||||
in: query
|
in: query
|
||||||
description: External id of the device you want to get the purchased HTM products for.
|
description: External id of the device you want to get the purchased HTM products for.
|
||||||
schema:
|
schema:
|
||||||
type: string
|
type: string
|
||||||
- name: ovpayTokenId
|
- name: ovpayTokenId
|
||||||
in: query
|
in: query
|
||||||
description: Id of the OVpay-token you want to get the purchased HTM products for.
|
description: Id of the OVpay-token you want to get the purchased HTM products for.
|
||||||
@ -3380,9 +3513,9 @@ paths:
|
|||||||
}
|
}
|
||||||
getTwoBarcodePurchasedProductsForDevice:
|
getTwoBarcodePurchasedProductsForDevice:
|
||||||
summary: Two BarcodeTicket purchased products, one PendingActivation and one Active
|
summary: Two BarcodeTicket purchased products, one PendingActivation and one Active
|
||||||
description: |-
|
description: |-
|
||||||
The first ticket (PendingActivation) shows the 30-day range in which the ticket can be activated
|
The first ticket (PendingActivation) shows the 30-day range in which the ticket can be activated
|
||||||
(using the PATCH endpoint) in the validityStart and validityEnd fields. The second ticket (Active)
|
(using the PATCH endpoint) in the validityStart and validityEnd fields. The second ticket (Active)
|
||||||
shows the actual validity period of the ticket after activation.
|
shows the actual validity period of the ticket after activation.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
@ -3401,14 +3534,14 @@ paths:
|
|||||||
"name": "Barcode",
|
"name": "Barcode",
|
||||||
},
|
},
|
||||||
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
|
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
|
||||||
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
|
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
|
||||||
"ticketReference": "KJj43nejhbTxhrfef287",
|
"ticketReference": "KJj43nejhbTxhrfef287",
|
||||||
"serviceId": "HTM-4321-7654-7659",
|
"serviceId": "HTM-4321-7654-7659",
|
||||||
"issuedAt": "2026-03-21T09:01:35+01:00",
|
"issuedAt": "2026-03-21T09:01:35+01:00",
|
||||||
"activatedAt": null,
|
"activatedAt": null,
|
||||||
"blocked": false,
|
"blocked": false,
|
||||||
"cancelledAt": null,
|
"cancelledAt": null,
|
||||||
"activateBefore": "2026-03-30",
|
"activateBefore": "2026-03-30",
|
||||||
"validityStart": null,
|
"validityStart": null,
|
||||||
"validityEnd": null,
|
"validityEnd": null,
|
||||||
"barcode": null,
|
"barcode": null,
|
||||||
@ -3436,14 +3569,14 @@ paths:
|
|||||||
"name": "Barcode",
|
"name": "Barcode",
|
||||||
},
|
},
|
||||||
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
|
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
|
||||||
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
|
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
|
||||||
"ticketReference": "KJj43nejhbTxhr897287",
|
"ticketReference": "KJj43nejhbTxhr897287",
|
||||||
"serviceId": "HTM-1234-7654-8945",
|
"serviceId": "HTM-1234-7654-8945",
|
||||||
"issuedAt": "2026-03-21T10:01:12+01:00",
|
"issuedAt": "2026-03-21T10:01:12+01:00",
|
||||||
"activatedAt": "2026-03-21T12:45:01+01:00",
|
"activatedAt": "2026-03-21T12:45:01+01:00",
|
||||||
"blocked": false,
|
"blocked": false,
|
||||||
"cancelledAt": null,
|
"cancelledAt": null,
|
||||||
"activateBefore": null,
|
"activateBefore": null,
|
||||||
"validityStart": "2026-03-21T12:45:01+01:00",
|
"validityStart": "2026-03-21T12:45:01+01:00",
|
||||||
"validityEnd": "2026-03-21T14:45:01+01:00",
|
"validityEnd": "2026-03-21T14:45:01+01:00",
|
||||||
"barcode": "iVBORw0KGgoAAAANSUhEUgAAAVwAAAFcAQAAAACsbTuBAAAFDElEQVR4Xu2bQa6rOhBEGzHwMEtgKewMyM5YCkvIkAGif50yyc/Tl770piZW9HSNywzqVlW3nXcjc83cusxnvsbMjBieuelf/bzGYz1jWCKmeGS+4g5grSwlz/IaI+JgEfzcvzQZo2yhxQgW7wDutLJrvVLzEInbVHLpM/tK5T7kHmNdbxssgqSipQj/0KLA24yqNvEWWRclpJKpefNgE7YZr/lj1eZ55wMYIWkUbZb7Xj/wH+BezvPkFJhQetmD+7AI2VuSEQMevANYESzqZh49VlEXIKOT7SDtseqnpz0Iyc2DJZezkEB5aaVKSvuF5FMwaIdB7wCGOgb5fFgus2wlKhPDpUiTlogr1tsHG7lfzcqYLlVnDHq6ylYn1OE54qd5cNC6aQxL0UQRy2YJJxCS8N4m273Gm4BJFAhzlytb5T4A0QrCYmUTrxd1bYNVgGqqPndH7vHwYqHLHf9cpO1pHJxU3Nq6vUbAVhXaocnTKO5cpK+4AViLitRwf8IQdYFwBkkKW7FzZxNh/AN/g5NHqXyed5MOz45kjkvKofpLYNwBrNBR/Dz9SKpTDkGd8CApZYonT24B7un56XKnoMeXkOBNHqTDk/NOmrrwyfIWYHe51O4kn4FBnfYbnHjqKuw3AGMreKOvC07DCAebHS5lAXWq5eKVA0HjYA2xM0MYCSMnqTqpx48ZVSmPTd15tT03AF+LVBuOgJoMqc2HL6Gy8nr1/K2DU+YpmKerd45fQ2ypzSFyq8coUM2D1yBksNWqOTWnjqvLpVYPvrt17f6BP+AaQk85zR4MarfHbAlSu/XhgGCJNg6mQNmASXnGhpZY+tKp93lywaY+SjcPhroCWx1BHFAnVemR81mdjEikWlllzYNrCM27bKVt7nInLplEnef6SfPFhb19MDmCbewcjtL/d7FwAzCqmShYzMd/qaPnp0AxV+SOpq5xMCnLZJOhZCNCZuIR4BWwL6un4luF5sE9N7CKXIJ2Zecncnt3vZ0it+hN7wNC6+DU/Ene1gj+lOOr4BDGilyT3D74NZ4OlYm2Xmx9t2rJN+kb7P3A/wUzV6lSQaonIoR3DUdy7vR1WQt782CrzrbbvTOdxwu2ZKy4MZXXflPzYJoVLg6GpbIVtLSb2JxduzEg+6Mm+R3AXECaHYRjG4nH2UIak7jSm9zXNQ9OLha2yhbUCT/vOA1VHUAGXpVuhpsHE7H7O0d6d2+i7rxeI2EVVMTm4wZg5vZUV2/nBUmoG5befZ0XERKkNg9O8zR9Rexls+WgldPRmTYHp90BrAIkqqYYnkmNGfvEY1E2Ijeu/3SQLKar1Q/8AX88eDqCRe3wZKJ89sVCRdaTZfvg/u8uFhoH14J0apHvil2rFwrUNtuDcXLOruNdvRoGB9ezgJXP2OrwN+mz8jl9lPab3Ob0NwDbVteFpEuX+7ylbHGdo5Oeny8y4vJgy2DniHhzQQp3c4yCkLwZvPbXk+INwKeqj6grVB/ha+dC88LVfec3zR/q2gYnlyO5GD+Kvfp03unruKCUygJb1e8HmwdbPp2pg8fgr3XYnE6YQGUWUp20Dz6hSgReznmXY3hLJ5A2ozJT9wN/gfVIEbzBsxvdYSneL571OV279S+/jubBiuCzAL5qt5xHPNHMcHgciSuD15rXbYMtJFbE1piEkEi0fPp6AoLX5Lvjt+paBvOIRQjSEEHaCX5BSP4DBSalHh4bB/8DVeIFt2RfPhQAAAAASUVORK5CYII=",
|
"barcode": "iVBORw0KGgoAAAANSUhEUgAAAVwAAAFcAQAAAACsbTuBAAAFDElEQVR4Xu2bQa6rOhBEGzHwMEtgKewMyM5YCkvIkAGif50yyc/Tl770piZW9HSNywzqVlW3nXcjc83cusxnvsbMjBieuelf/bzGYz1jWCKmeGS+4g5grSwlz/IaI+JgEfzcvzQZo2yhxQgW7wDutLJrvVLzEInbVHLpM/tK5T7kHmNdbxssgqSipQj/0KLA24yqNvEWWRclpJKpefNgE7YZr/lj1eZ55wMYIWkUbZb7Xj/wH+BezvPkFJhQetmD+7AI2VuSEQMevANYESzqZh49VlEXIKOT7SDtseqnpz0Iyc2DJZezkEB5aaVKSvuF5FMwaIdB7wCGOgb5fFgus2wlKhPDpUiTlogr1tsHG7lfzcqYLlVnDHq6ylYn1OE54qd5cNC6aQxL0UQRy2YJJxCS8N4m273Gm4BJFAhzlytb5T4A0QrCYmUTrxd1bYNVgGqqPndH7vHwYqHLHf9cpO1pHJxU3Nq6vUbAVhXaocnTKO5cpK+4AViLitRwf8IQdYFwBkkKW7FzZxNh/AN/g5NHqXyed5MOz45kjkvKofpLYNwBrNBR/Dz9SKpTDkGd8CApZYonT24B7un56XKnoMeXkOBNHqTDk/NOmrrwyfIWYHe51O4kn4FBnfYbnHjqKuw3AGMreKOvC07DCAebHS5lAXWq5eKVA0HjYA2xM0MYCSMnqTqpx48ZVSmPTd15tT03AF+LVBuOgJoMqc2HL6Gy8nr1/K2DU+YpmKerd45fQ2ypzSFyq8coUM2D1yBksNWqOTWnjqvLpVYPvrt17f6BP+AaQk85zR4MarfHbAlSu/XhgGCJNg6mQNmASXnGhpZY+tKp93lywaY+SjcPhroCWx1BHFAnVemR81mdjEikWlllzYNrCM27bKVt7nInLplEnef6SfPFhb19MDmCbewcjtL/d7FwAzCqmShYzMd/qaPnp0AxV+SOpq5xMCnLZJOhZCNCZuIR4BWwL6un4luF5sE9N7CKXIJ2Zecncnt3vZ0it+hN7wNC6+DU/Ene1gj+lOOr4BDGilyT3D74NZ4OlYm2Xmx9t2rJN+kb7P3A/wUzV6lSQaonIoR3DUdy7vR1WQt782CrzrbbvTOdxwu2ZKy4MZXXflPzYJoVLg6GpbIVtLSb2JxduzEg+6Mm+R3AXECaHYRjG4nH2UIak7jSm9zXNQ9OLha2yhbUCT/vOA1VHUAGXpVuhpsHE7H7O0d6d2+i7rxeI2EVVMTm4wZg5vZUV2/nBUmoG5befZ0XERKkNg9O8zR9Rexls+WgldPRmTYHp90BrAIkqqYYnkmNGfvEY1E2Ijeu/3SQLKar1Q/8AX88eDqCRe3wZKJ89sVCRdaTZfvg/u8uFhoH14J0apHvil2rFwrUNtuDcXLOruNdvRoGB9ezgJXP2OrwN+mz8jl9lPab3Ob0NwDbVteFpEuX+7ylbHGdo5Oeny8y4vJgy2DniHhzQQp3c4yCkLwZvPbXk+INwKeqj6grVB/ha+dC88LVfec3zR/q2gYnlyO5GD+Kvfp03unruKCUygJb1e8HmwdbPp2pg8fgr3XYnE6YQGUWUp20Dz6hSgReznmXY3hLJ5A2ozJT9wN/gfVIEbzBsxvdYSneL571OV279S+/jubBiuCzAL5qt5xHPNHMcHgciSuD15rXbYMtJFbE1piEkEi0fPp6AoLX5Lvjt+paBvOIRQjSEEHaCX5BSP4DBSalHh4bB/8DVeIFt2RfPhQAAAAASUVORK5CYII=",
|
||||||
@ -3499,7 +3632,7 @@ paths:
|
|||||||
"barcodeTickets":[],
|
"barcodeTickets":[],
|
||||||
"vouchers":[]
|
"vouchers":[]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
getSingleVoucherPurchasedProductForCustomer:
|
getSingleVoucherPurchasedProductForCustomer:
|
||||||
summary: One voucher purchased product
|
summary: One voucher purchased product
|
||||||
value:
|
value:
|
||||||
@ -3523,7 +3656,7 @@ paths:
|
|||||||
"voucherStatus": {
|
"voucherStatus": {
|
||||||
"voucherStatusId": 2,
|
"voucherStatusId": 2,
|
||||||
"name": "issued"
|
"name": "issued"
|
||||||
},
|
},
|
||||||
"mandatoryCustomerDataItems":
|
"mandatoryCustomerDataItems":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -3538,7 +3671,7 @@ paths:
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/purchasedproducts/{purchasedProductId}:
|
/purchasedproducts/{purchasedProductId}:
|
||||||
parameters:
|
parameters:
|
||||||
- name: X-HTM-JWT-AUTH-HEADER
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
@ -3586,7 +3719,7 @@ paths:
|
|||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"status": "Active"
|
"status": "Active"
|
||||||
}
|
}
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -3636,7 +3769,6 @@ paths:
|
|||||||
"vouchers": []
|
"vouchers": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/customers/devices:
|
/customers/devices:
|
||||||
post:
|
post:
|
||||||
summary: Add a new device to a customer profile.
|
summary: Add a new device to a customer profile.
|
||||||
@ -3813,7 +3945,7 @@ components:
|
|||||||
customerProfileId:
|
customerProfileId:
|
||||||
type: integer
|
type: integer
|
||||||
example: 1
|
example: 1
|
||||||
customerPreference:
|
customerPreference:
|
||||||
$ref: "#/components/schemas/getCustomerPreference"
|
$ref: "#/components/schemas/getCustomerPreference"
|
||||||
customerNumber:
|
customerNumber:
|
||||||
type: integer
|
type: integer
|
||||||
@ -4014,12 +4146,12 @@ components:
|
|||||||
customerPreferenceId:
|
customerPreferenceId:
|
||||||
type: integer
|
type: integer
|
||||||
languageId:
|
languageId:
|
||||||
type: integer
|
type: integer
|
||||||
customerStatusEntity:
|
customerStatusEntity:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
customerStatusId:
|
customerStatusId:
|
||||||
type: integer
|
type: integer
|
||||||
OvPayTokensResponse:
|
OvPayTokensResponse:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
@ -4298,7 +4430,7 @@ components:
|
|||||||
items:
|
items:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
- purchasedProductId
|
- purchasedProductId
|
||||||
- productId
|
- productId
|
||||||
- name
|
- name
|
||||||
- status
|
- status
|
||||||
@ -4421,13 +4553,13 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
example: HTM 2 uurskaart
|
example: HTM 2 uurskaart
|
||||||
description: |-
|
description: |-
|
||||||
The name of the originating HTM product definition.
|
The name of the originating HTM product definition.
|
||||||
Will be returned in the language as specified in the Accept-Language header or the customer profile. Otherwise defaults to NL.
|
Will be returned in the language as specified in the Accept-Language header or the customer profile. Otherwise defaults to NL.
|
||||||
description:
|
description:
|
||||||
type: string
|
type: string
|
||||||
example: "Met deze kaart reis je 2 uur lang onbeperkt met de bussen en trams van HTM. Overstappen is natuurlijk toegestaan!"
|
example: "Met deze kaart reis je 2 uur lang onbeperkt met de bussen en trams van HTM. Overstappen is natuurlijk toegestaan!"
|
||||||
description: |-
|
description: |-
|
||||||
The description of the originating HTM product definition.
|
The description of the originating HTM product definition.
|
||||||
Will be returned in the language as specified in the Accept-Language header or the customer profile. Otherwise defaults to NL.
|
Will be returned in the language as specified in the Accept-Language header or the customer profile. Otherwise defaults to NL.
|
||||||
status:
|
status:
|
||||||
type: string
|
type: string
|
||||||
@ -4486,15 +4618,15 @@ components:
|
|||||||
example: "2024-11-30"
|
example: "2024-11-30"
|
||||||
description: Only present for barcode tickets that are not yet activated. Tickets can only be activated BEFORE this date.
|
description: Only present for barcode tickets that are not yet activated. Tickets can only be activated BEFORE this date.
|
||||||
validityStart:
|
validityStart:
|
||||||
description: |-
|
description: |-
|
||||||
Only present for barcode tickets that have been activated. The date-time at which the ticket will become valid for traveling.
|
Only present for barcode tickets that have been activated. The date-time at which the ticket will become valid for traveling.
|
||||||
The ticket will not be valid before this date/time.
|
The ticket will not be valid before this date/time.
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
example: "2024-11-25T13:25:00+01:00"
|
example: "2024-11-25T13:25:00+01:00"
|
||||||
validityEnd:
|
validityEnd:
|
||||||
description: |-
|
description: |-
|
||||||
Only present for barcode tickets that have been activated. The date-time at which the ticket will become invalid for traveling.
|
Only present for barcode tickets that have been activated. The date-time at which the ticket will become invalid for traveling.
|
||||||
The ticket will not be valid after this date/time.
|
The ticket will not be valid after this date/time.
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
@ -4603,4 +4735,3 @@ components:
|
|||||||
customerDataItem:
|
customerDataItem:
|
||||||
type: string
|
type: string
|
||||||
example: emailAddress
|
example: emailAddress
|
||||||
|
|
||||||
617
src/openapi/customers/SE-tat-security.yaml
Normal file
617
src/openapi/customers/SE-tat-security.yaml
Normal file
@ -0,0 +1,617 @@
|
|||||||
|
openapi: 3.0.1
|
||||||
|
info:
|
||||||
|
title: Service Engine APIs for TAT security
|
||||||
|
description: >-
|
||||||
|
Service Engine APIs for TAT security. These are NOT the raw GBO APIs to access TAT security at GBO directly.
|
||||||
|
To be used by touch points to get secure a TAT.
|
||||||
|
version: "2.0"
|
||||||
|
servers:
|
||||||
|
- url: https://services.acc.api.htm.nl/abt/touchpoint/2.0
|
||||||
|
tags:
|
||||||
|
- name: TAT Security
|
||||||
|
paths:
|
||||||
|
/tokens/status:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
- name: xTat
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format : uuid
|
||||||
|
example: 5c4cba83-1ecd-46a4-b712-a8de0dcb7bbf
|
||||||
|
required: false
|
||||||
|
description: The xtat of the customerToken
|
||||||
|
- name: ovPayTokenId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 1
|
||||||
|
required: false
|
||||||
|
description: The ovpay token id of a specific customer token
|
||||||
|
- name: serviceReferenceId
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: NLOV1234567ABCDEFG
|
||||||
|
required: false
|
||||||
|
description: The serviceReferencId found on the bankstatement for a given trip with a bankcard, required for an unknown EMV card
|
||||||
|
- name: amount
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 0
|
||||||
|
required: false
|
||||||
|
description: The amount of the value of the bankstatement in cents, required for an unknown EMV card
|
||||||
|
- name: ovpasNumber
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: OV34567
|
||||||
|
required: false
|
||||||
|
description: The number of the ovpas, required for an unknown Ovpas card
|
||||||
|
- name: verificationCode
|
||||||
|
in: query
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: HL78
|
||||||
|
required: false
|
||||||
|
description: The 4 digit verificationCode found on the backside of the Ovpas, required for an unknown Ovpas card
|
||||||
|
get:
|
||||||
|
tags:
|
||||||
|
- TAT Security
|
||||||
|
summary: Check the status of the security and authorization status of the given token
|
||||||
|
description: Check the status of the security and authorization status of the given token, check anonymous tokenDB if no customer headers are supplied otherwise check customer tokenDB
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/TokenStatusResponse"
|
||||||
|
examples:
|
||||||
|
isSecuredandnotAuthorized:
|
||||||
|
summary: Token is secured but HTM is not authorized
|
||||||
|
description: Token is secured but HTM is not authorized
|
||||||
|
value:
|
||||||
|
isSecured: true
|
||||||
|
isAuthorized: false
|
||||||
|
xTat: 12da8f2a-6390-408a-94eb-a6701b5daf27
|
||||||
|
_links: {
|
||||||
|
"authorize": {
|
||||||
|
"href": "/tokens/authorizetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
notSecuredandnotAuthorized:
|
||||||
|
summary: Token is not secured but HTM is not authorized
|
||||||
|
description: Token is not secured but HTM is not authorized
|
||||||
|
value:
|
||||||
|
isSecured: false
|
||||||
|
isAuthorized: false
|
||||||
|
xTat: 12da8f2a-6390-408a-94eb-a6701b5daf27
|
||||||
|
_links: {
|
||||||
|
"secure": {
|
||||||
|
"href": "/tokens/securetoken",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: XTAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
/tokens/securetoken:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- TAT Security
|
||||||
|
summary: Request additional OV-pas security for a token either in profile or anonymous.
|
||||||
|
description: Request additional OV-pas security for a token either in profile or anonymous
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/SecureTokenRequest"
|
||||||
|
examples:
|
||||||
|
With customer account:
|
||||||
|
value:
|
||||||
|
ovPayTokenId: 42
|
||||||
|
emailAddress: stasjo@htm.nl
|
||||||
|
Without customer account:
|
||||||
|
value:
|
||||||
|
xTat: 62914b49-2c7f-437f-b4b0-2ad61a9f902d
|
||||||
|
emailAddress: stasjo@htm.nl
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/EmailNotPreApprovedResponse"
|
||||||
|
example:
|
||||||
|
recipient: xxxxxx.user@gmail.com
|
||||||
|
description: OTP Sent
|
||||||
|
_links: {
|
||||||
|
"verifyotp": {
|
||||||
|
"href": "/tokens/verifyotp",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"409":
|
||||||
|
description: Conflict
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/ErrorResponse'
|
||||||
|
examples:
|
||||||
|
TAT Already Secured:
|
||||||
|
value:
|
||||||
|
status: 409
|
||||||
|
title: Conflict
|
||||||
|
detail: TAT Already Secured
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
/tokens/authorizetoken:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- TAT Authorization
|
||||||
|
summary: Request authorization for HTM to access the data secured by additional OV-pas security for a token either in profile or anonymous.
|
||||||
|
description: Request authorization for HTM to access the data secured by additional OV-pas security for a token either in profile or anonymous.
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/AuthorizeTokenRequest"
|
||||||
|
examples:
|
||||||
|
With customer account:
|
||||||
|
value:
|
||||||
|
ovPayTokenId: 42
|
||||||
|
Without customer account:
|
||||||
|
value:
|
||||||
|
xTat: 62914b49-2c7f-437f-b4b0-2ad61a9f902d
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/EmailNotPreApprovedResponse"
|
||||||
|
example:
|
||||||
|
recipient: xxxxxx.user@gmail.com
|
||||||
|
description: OTP Sent
|
||||||
|
_links: {
|
||||||
|
"verifyotp": {
|
||||||
|
"href": "/tokens/verifyotp",
|
||||||
|
"method": "POST"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad Request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"404":
|
||||||
|
description: Not found
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
TAT not found:
|
||||||
|
value:
|
||||||
|
status: 404
|
||||||
|
title: Not Found
|
||||||
|
detail: TAT Account Not Found
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
/tokens/verifyotp:
|
||||||
|
parameters:
|
||||||
|
- name: X-HTM-JWT-AUTH-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
|
||||||
|
required: false
|
||||||
|
description: The JWT of a customer in case of touchpoint were customer logs in themselves
|
||||||
|
- name: X-HTM-CUSTOMER-PROFILE-ID-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 323
|
||||||
|
required: false
|
||||||
|
description: The id of the customer Profile
|
||||||
|
- name: X-HTM-ROLE-HEADER
|
||||||
|
in: header
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: Customer
|
||||||
|
required: false
|
||||||
|
description: The role of the HTM employee in the case of the SMP
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- TAT Verification
|
||||||
|
summary: Submit an OTP for a triggered OTP flow.
|
||||||
|
description: |
|
||||||
|
Submit an OTP for a triggered OTP flow. This can either be result of an AGO activation, or
|
||||||
|
result of an AGO authorization flow. Since the backoffice behaves slightly different depending
|
||||||
|
on which use case is executed, the calling TP needs to provide an `action` in the request body.
|
||||||
|
requestBody:
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/VerifyOtpRequest"
|
||||||
|
examples:
|
||||||
|
OTP verification for TAT security activation for token in customer account:
|
||||||
|
value:
|
||||||
|
ovPayTokenId: 42
|
||||||
|
otp: 123456
|
||||||
|
action: secure
|
||||||
|
OTP verification for TAT security authorization for anonymous token:
|
||||||
|
value:
|
||||||
|
xTat: 0f0defe8-828c-48e5-97e5-26d1d0179ef0
|
||||||
|
otp: 123456
|
||||||
|
action: authorize
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: '#/components/schemas/VerifyOtpResponse'
|
||||||
|
examples:
|
||||||
|
Tat Secured:
|
||||||
|
value:
|
||||||
|
status: Success
|
||||||
|
description: TAT Secured
|
||||||
|
Tat Unsecured:
|
||||||
|
value:
|
||||||
|
status: Success
|
||||||
|
description: TAT Unsecured
|
||||||
|
Tat Authorized:
|
||||||
|
value:
|
||||||
|
status: Success
|
||||||
|
description: TAT Authorized
|
||||||
|
"400":
|
||||||
|
description: Bad request
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Missing Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Missing Mandatory Parameter
|
||||||
|
detail: Required parameter {0} is missing.
|
||||||
|
Invalid Parameters:
|
||||||
|
value:
|
||||||
|
status: 400
|
||||||
|
title: Invalid Parameter
|
||||||
|
detail: Required parameter {0} is invalid.
|
||||||
|
"401":
|
||||||
|
description: Unauthorized
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
examples:
|
||||||
|
Unauthorized:
|
||||||
|
value:
|
||||||
|
status: 401
|
||||||
|
title: Unauthorized
|
||||||
|
detail: Invalid Access Token
|
||||||
|
"500":
|
||||||
|
description: Internal server error
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/ErrorResponse"
|
||||||
|
example:
|
||||||
|
error: An unknown error has occurred
|
||||||
|
components:
|
||||||
|
schemas:
|
||||||
|
unavailable:
|
||||||
|
type: object
|
||||||
|
GenerateTatOutput:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
uid:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
An uid IS A unique identifier THAT is associated with the
|
||||||
|
user.
|
||||||
|
recipient:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A recipient IS A unique identifier THAT is associated with the
|
||||||
|
TAT owner.
|
||||||
|
key:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A key IS a 32 character string THAT uniquely identifies the
|
||||||
|
OTP session.
|
||||||
|
EmailNotPreApprovedResponse:
|
||||||
|
type: object
|
||||||
|
description: >-
|
||||||
|
EmailNotPreApprovedResponse IS AN object THAT represents the response of
|
||||||
|
email pre-approval check.
|
||||||
|
properties:
|
||||||
|
recipient:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A recipient IS A unique identifier THAT is associated with the TAT
|
||||||
|
owner.
|
||||||
|
example: xxxxxx.user@gmail.com
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
description: >-
|
||||||
|
A description IS A string THAT describes the reason why the email is
|
||||||
|
not pre-approved.
|
||||||
|
example: OTP Sent
|
||||||
|
SecureTokenRequest:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ovPayTokenId:
|
||||||
|
type: integer
|
||||||
|
example: 42
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 6134db53-9ae5-41d1-a343-36656b60b510
|
||||||
|
emailAddress:
|
||||||
|
type: string
|
||||||
|
format: email
|
||||||
|
example: stasjo@htm.nl
|
||||||
|
required:
|
||||||
|
- emailAddress
|
||||||
|
AuthorizeTokenRequest:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ovPayTokenId:
|
||||||
|
type: integer
|
||||||
|
example: 42
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 6134db53-9ae5-41d1-a343-36656b60b510
|
||||||
|
VerifyOtpRequest:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
ovPayTokenId:
|
||||||
|
type: integer
|
||||||
|
example: 42
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: f3474452-e1d4-428c-b366-e5ad5965eb8c
|
||||||
|
otp:
|
||||||
|
type: string
|
||||||
|
example: 123456
|
||||||
|
action:
|
||||||
|
type: string
|
||||||
|
example: secure
|
||||||
|
required:
|
||||||
|
- otp
|
||||||
|
- action
|
||||||
|
VerifyOtpResponse:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: string
|
||||||
|
example: Success
|
||||||
|
description:
|
||||||
|
type: string
|
||||||
|
example: TAT Secured
|
||||||
|
ErrorResponse:
|
||||||
|
description: Default response when an invalid request has been sent
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
status:
|
||||||
|
type: integer
|
||||||
|
description: >-
|
||||||
|
A status IS An integer that represents the HTTP status code of the
|
||||||
|
response.
|
||||||
|
example: 400
|
||||||
|
title:
|
||||||
|
type: string
|
||||||
|
description: A title IS A string that provides a brief summary of the error.
|
||||||
|
detail:
|
||||||
|
type: string
|
||||||
|
description: A detail IS A string that provides more details about the error.
|
||||||
|
TokenStatusResponse:
|
||||||
|
type: object
|
||||||
|
description: >-
|
||||||
|
TokenStatusResponse IS AN object THAT represents the current state of the token in relation to the AGO security and authorization status of HTM.
|
||||||
|
required:
|
||||||
|
- isSecured
|
||||||
|
- isAuthorized
|
||||||
|
properties:
|
||||||
|
isSecured:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Is the token secured in the national database (GBO)
|
||||||
|
example: false
|
||||||
|
isAuthorized:
|
||||||
|
type: boolean
|
||||||
|
description: >-
|
||||||
|
Does HTM have the authorization to access the secured data for this token, only applicable when isSecured equals True.
|
||||||
|
example: false
|
||||||
|
xTat:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
description: >-
|
||||||
|
The xtat of the customerToken given when token is unknown for the customer
|
||||||
|
example: 883674e5-54c7-47d6-a3e3-8781f0d3ffea
|
||||||
|
|
||||||
@ -49,6 +49,8 @@ paths:
|
|||||||
- status
|
- status
|
||||||
- aggregationReference
|
- aggregationReference
|
||||||
- accountingSystemReference
|
- accountingSystemReference
|
||||||
|
- createdOn
|
||||||
|
- lastUpdatedOn
|
||||||
- name: $select
|
- name: $select
|
||||||
in: query
|
in: query
|
||||||
description: Select properties to be returned
|
description: Select properties to be returned
|
||||||
@ -79,6 +81,8 @@ paths:
|
|||||||
- status
|
- status
|
||||||
- aggregationReference
|
- aggregationReference
|
||||||
- accountingSystemReference
|
- accountingSystemReference
|
||||||
|
- createdOn
|
||||||
|
- lastUpdatedOn
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -117,7 +121,9 @@ paths:
|
|||||||
articleNumber: "4031"
|
articleNumber: "4031"
|
||||||
status: created
|
status: created
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": e671c8a1-b918-4867-bf12-5289822479c3
|
- "@odata.etag": e671c8a1-b918-4867-bf12-5289822479c3
|
||||||
transactionItemRowId: 3232
|
transactionItemRowId: 3232
|
||||||
transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
|
transactionItemId: 1c1fc1c8-57f4-4336-9b43-a974eae5afbf
|
||||||
@ -136,7 +142,9 @@ paths:
|
|||||||
articleNumber: "4051"
|
articleNumber: "4051"
|
||||||
status: failed
|
status: failed
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": be2715d4-4eff-4562-9bf3-5c43ad23e2c8
|
- "@odata.etag": be2715d4-4eff-4562-9bf3-5c43ad23e2c8
|
||||||
transactionItemRowId: 3233
|
transactionItemRowId: 3233
|
||||||
transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
|
transactionItemId: 3f58441e-dc8f-4956-9bc5-c952312476db
|
||||||
@ -155,7 +163,9 @@ paths:
|
|||||||
articleNumber: "4051"
|
articleNumber: "4051"
|
||||||
status: returned to src
|
status: returned to src
|
||||||
aggregationReference: FIKO-171f40609e
|
aggregationReference: FIKO-171f40609e
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": 52130c4d-e944-4454-a73e-8d55449a4bd1
|
- "@odata.etag": 52130c4d-e944-4454-a73e-8d55449a4bd1
|
||||||
transactionItemRowId: 3234
|
transactionItemRowId: 3234
|
||||||
transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
|
transactionItemId: 4418825f-3f9b-45bc-b662-dc3cd4ce6599
|
||||||
@ -174,7 +184,9 @@ paths:
|
|||||||
articleNumber: "4051"
|
articleNumber: "4051"
|
||||||
status: returned to trx-db
|
status: returned to trx-db
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": 7da305e1-85cd-4250-ad77-8b54b2649cfb
|
- "@odata.etag": 7da305e1-85cd-4250-ad77-8b54b2649cfb
|
||||||
transactionItemRowId: 3235
|
transactionItemRowId: 3235
|
||||||
transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
|
transactionItemId: 2ddc1831-cf7b-4a77-8aa1-11aaf8e98d9f
|
||||||
@ -193,7 +205,9 @@ paths:
|
|||||||
articleNumber: "4051"
|
articleNumber: "4051"
|
||||||
status: re-entered
|
status: re-entered
|
||||||
aggregationReference: null
|
aggregationReference: null
|
||||||
accountingSystemReference: null
|
accountingSystemReference: null
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
- "@odata.etag": c3b17d21-0506-474d-b3d4-7ff654f368b9
|
- "@odata.etag": c3b17d21-0506-474d-b3d4-7ff654f368b9
|
||||||
transactionItemRowId: 3236
|
transactionItemRowId: 3236
|
||||||
transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
|
transactionItemId: 5ab2513d-f334-4cf8-8895-4e7269374a4b
|
||||||
@ -212,7 +226,9 @@ paths:
|
|||||||
articleNumber: "1737"
|
articleNumber: "1737"
|
||||||
status: succeeded
|
status: succeeded
|
||||||
aggregationReference: FIKO-6a4fca8cd6
|
aggregationReference: FIKO-6a4fca8cd6
|
||||||
accountingSystemReference: U4F-123456
|
accountingSystemReference: U4F-123456
|
||||||
|
createdOn: 2024-11-04T00:00:00Z
|
||||||
|
lastUpdatedOn: 2024-11-04T04:00:00Z
|
||||||
security:
|
security:
|
||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
@ -434,7 +450,7 @@ paths:
|
|||||||
summary: Add a processing failure.
|
summary: Add a processing failure.
|
||||||
description: Add a processing failure.
|
description: Add a processing failure.
|
||||||
tags:
|
tags:
|
||||||
- Failures v2.2
|
- Failures v2.3
|
||||||
requestBody:
|
requestBody:
|
||||||
required: true
|
required: true
|
||||||
content:
|
content:
|
||||||
@ -455,6 +471,7 @@ paths:
|
|||||||
reasonCode: "012"
|
reasonCode: "012"
|
||||||
reasonDescription: Transaction date is in the future.
|
reasonDescription: Transaction date is in the future.
|
||||||
resolved: false
|
resolved: false
|
||||||
|
journalEntryId: 0e53b984-16b2-4ef7-b669-29bcdad2a3ce
|
||||||
responses:
|
responses:
|
||||||
"201":
|
"201":
|
||||||
description: Created
|
description: Created
|
||||||
@ -472,67 +489,6 @@ paths:
|
|||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
x-throttling-tier: Unlimited
|
x-throttling-tier: Unlimited
|
||||||
/transactionitems/{transactionItemId}/transactionaudittrails:
|
|
||||||
parameters:
|
|
||||||
- in: path
|
|
||||||
name: transactionItemId
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
example: 9834b346-d68c-438d-9bd5-6716422c2657
|
|
||||||
required: true
|
|
||||||
description: The id of the transaction item to process.
|
|
||||||
post:
|
|
||||||
summary: Add an audit trail entry.
|
|
||||||
description: Add an audit trail entry.
|
|
||||||
tags:
|
|
||||||
- Audit Trail v2.2
|
|
||||||
requestBody:
|
|
||||||
required: true
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/TransactionAuditTrailsPostRequestBody"
|
|
||||||
examples:
|
|
||||||
Add new transaction audit trail for created transaction item:
|
|
||||||
summary: Add new transaction audit trail for created transaction item
|
|
||||||
description: Add a new audit trail record for a newly created transaction item.
|
|
||||||
value:
|
|
||||||
user: fiko
|
|
||||||
timestamp: 2022-01-01 12:34:00
|
|
||||||
action: create
|
|
||||||
status: created
|
|
||||||
description: Transaction item created.
|
|
||||||
correlationId: null
|
|
||||||
Add new transaction audit trail for updated transaction item:
|
|
||||||
summary: Add new transaction audit trail for updated transaction item
|
|
||||||
description: Add a new audit trail record for an updated transaction item.
|
|
||||||
value:
|
|
||||||
user: ad.vogelaar
|
|
||||||
timestamp: 2022-01-02 12:34:00
|
|
||||||
action: update
|
|
||||||
status: return to src
|
|
||||||
description: Transaction item returned to source.
|
|
||||||
correlationId: 0dc216ea-58e7-4a5e-aa18-449f0304209c
|
|
||||||
responses:
|
|
||||||
"201":
|
|
||||||
description: Created
|
|
||||||
content:
|
|
||||||
application/json:
|
|
||||||
schema:
|
|
||||||
$ref: "#/components/schemas/TransactionAuditTrailsPostResponseBody"
|
|
||||||
examples:
|
|
||||||
Transaction audit trail record created:
|
|
||||||
summary: Transaction audit trail record created
|
|
||||||
description: |
|
|
||||||
A new audit trail record for this transaction item was successfully created.
|
|
||||||
The transactionAuditTrailId is returned as a reference for the consumer.
|
|
||||||
value:
|
|
||||||
transactionAuditTrailId: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
|
||||||
security:
|
|
||||||
- default: []
|
|
||||||
x-auth-type: Application & Application User
|
|
||||||
x-throttling-tier: Unlimited
|
|
||||||
/Odata/TransactionAuditTrail:
|
/Odata/TransactionAuditTrail:
|
||||||
get:
|
get:
|
||||||
summary: Find audit trail entries.
|
summary: Find audit trail entries.
|
||||||
@ -564,6 +520,7 @@ paths:
|
|||||||
- action
|
- action
|
||||||
- status
|
- status
|
||||||
- correlationId
|
- correlationId
|
||||||
|
- journalEntryId
|
||||||
- name: $select
|
- name: $select
|
||||||
in: query
|
in: query
|
||||||
description: Select properties to be returned
|
description: Select properties to be returned
|
||||||
@ -584,6 +541,7 @@ paths:
|
|||||||
- action
|
- action
|
||||||
- status
|
- status
|
||||||
- correlationId
|
- correlationId
|
||||||
|
- journalEntryId
|
||||||
- name: $expand
|
- name: $expand
|
||||||
in: query
|
in: query
|
||||||
description: Expand related entities
|
description: Expand related entities
|
||||||
@ -597,6 +555,7 @@ paths:
|
|||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- TransactionItem
|
- TransactionItem
|
||||||
|
- JournalEntry
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -627,6 +586,7 @@ paths:
|
|||||||
status: created
|
status: created
|
||||||
description: Transaction created.
|
description: Transaction created.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
||||||
transactionAuditTrailRowId: 8219
|
transactionAuditTrailRowId: 8219
|
||||||
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
||||||
@ -637,6 +597,7 @@ paths:
|
|||||||
status: created
|
status: created
|
||||||
description: Transaction created.
|
description: Transaction created.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
||||||
transactionAuditTrailRowId: 8220
|
transactionAuditTrailRowId: 8220
|
||||||
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
||||||
@ -647,6 +608,7 @@ paths:
|
|||||||
status: return to src
|
status: return to src
|
||||||
description: Transaction retunred to source.
|
description: Transaction retunred to source.
|
||||||
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
||||||
transactionAuditTrailRowId: 8221
|
transactionAuditTrailRowId: 8221
|
||||||
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
||||||
@ -657,6 +619,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: a062f64f-f39e-48e7-9793-efbfa86d2827
|
||||||
List containing multiple transaction audit trails of one transaction item:
|
List containing multiple transaction audit trails of one transaction item:
|
||||||
summary: List containing multiple audit trails of one transaction item
|
summary: List containing multiple audit trails of one transaction item
|
||||||
description: List containing multiple audit trail records of one transaction item (with id `d667d293-aa82-4c9e-9b10-77cffc9058a1`).
|
description: List containing multiple audit trail records of one transaction item (with id `d667d293-aa82-4c9e-9b10-77cffc9058a1`).
|
||||||
@ -673,6 +636,7 @@ paths:
|
|||||||
status: re-entered
|
status: re-entered
|
||||||
description: Transaction re-entered.
|
description: Transaction re-entered.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
||||||
transactionAuditTrailRowId: 8219
|
transactionAuditTrailRowId: 8219
|
||||||
transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f
|
transactionAuditTrailId: b2192e6c-ab79-4000-a04d-d8f4d574a82f
|
||||||
@ -683,6 +647,7 @@ paths:
|
|||||||
status: return to src
|
status: return to src
|
||||||
description: Transaction retunred to source.
|
description: Transaction retunred to source.
|
||||||
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
correlationId: a3891560-3084-42cb-867c-f289e7cda47d
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
||||||
transactionAuditTrailRowId: 8220
|
transactionAuditTrailRowId: 8220
|
||||||
transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423
|
transactionAuditTrailId: 1d759985-7f1a-48bd-8dd1-efa30ce26423
|
||||||
@ -693,6 +658,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: b479507a-a65d-48b5-8476-87c88ba3c560
|
||||||
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
||||||
transactionAuditTrailRowId: 8221
|
transactionAuditTrailRowId: 8221
|
||||||
transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
|
transactionAuditTrailId: afce35b2-1dff-4ace-98d0-4b9ac405c87d
|
||||||
@ -703,6 +669,7 @@ paths:
|
|||||||
status: created
|
status: created
|
||||||
description: Transaction created.
|
description: Transaction created.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
List containing multiple audit trails of different failed transactions:
|
List containing multiple audit trails of different failed transactions:
|
||||||
summary: List containing multiple audit trails of different failed transactions
|
summary: List containing multiple audit trails of different failed transactions
|
||||||
description: List containing multiple audit trails of different failed transactions (status = failed).
|
description: List containing multiple audit trails of different failed transactions (status = failed).
|
||||||
@ -719,6 +686,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
- "@odata.etag": 1ce407d3-4725-46b8-92b2-47282ccd38f5
|
||||||
transactionAuditTrailRowId: 8219
|
transactionAuditTrailRowId: 8219
|
||||||
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
transactionAuditTrailId: 1d234fc1-eb16-41d3-b2e0-e400e17b017f
|
||||||
@ -729,6 +697,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: 43a98533-bb01-4aad-8d61-005051125969
|
||||||
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
- "@odata.etag": c8dec28b-bb85-4cb2-8a56-4a95fb2ed7bb
|
||||||
transactionAuditTrailRowId: 8220
|
transactionAuditTrailRowId: 8220
|
||||||
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
transactionAuditTrailId: f4798a84-489d-4533-9dfe-42423c70f6b6
|
||||||
@ -739,6 +708,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
- "@odata.etag": 967ddfa0-835e-4954-a4af-2eb11de325dc
|
||||||
transactionAuditTrailRowId: 8221
|
transactionAuditTrailRowId: 8221
|
||||||
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
transactionAuditTrailId: cc80d58d-6ee7-409a-8c14-b1f807e67c10
|
||||||
@ -749,6 +719,7 @@ paths:
|
|||||||
status: failed
|
status: failed
|
||||||
description: Validation XYZ failed.
|
description: Validation XYZ failed.
|
||||||
correlationId: null
|
correlationId: null
|
||||||
|
journalEntryId: null
|
||||||
security:
|
security:
|
||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
@ -786,6 +757,7 @@ paths:
|
|||||||
- reasonDescription
|
- reasonDescription
|
||||||
- resolved
|
- resolved
|
||||||
- change
|
- change
|
||||||
|
- journalEntryId
|
||||||
- name: $select
|
- name: $select
|
||||||
in: query
|
in: query
|
||||||
description: Select properties to be returned
|
description: Select properties to be returned
|
||||||
@ -808,6 +780,7 @@ paths:
|
|||||||
- reasonDescription
|
- reasonDescription
|
||||||
- resolved
|
- resolved
|
||||||
- change
|
- change
|
||||||
|
- journalEntryId
|
||||||
- name: $expand
|
- name: $expand
|
||||||
in: query
|
in: query
|
||||||
description: Expand related entities
|
description: Expand related entities
|
||||||
@ -820,7 +793,8 @@ paths:
|
|||||||
items:
|
items:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
- TransactionItem
|
- TransactionItem
|
||||||
|
- JournalEntry
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -856,6 +830,7 @@ paths:
|
|||||||
reasonDescription: Cost type does not exist.
|
reasonDescription: Cost type does not exist.
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": ff49829d-a5de-4c1a-b331-15fd9c71dfe9
|
- "@odata.etag": ff49829d-a5de-4c1a-b331-15fd9c71dfe9
|
||||||
processingFailureRowId: 10
|
processingFailureRowId: 10
|
||||||
processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193
|
processingFailureId: ccc06dc9-956d-47d8-bde7-9644ddde2193
|
||||||
@ -866,7 +841,8 @@ paths:
|
|||||||
reasonCode: "002"
|
reasonCode: "002"
|
||||||
reasonDescription: Cost center does not exist.
|
reasonDescription: Cost center does not exist.
|
||||||
resolved: true
|
resolved: true
|
||||||
change: Adapt config
|
change: Adapt config
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 5d5d3351-d3f1-49b2-905f-4dbbe1cc30e3
|
- "@odata.etag": 5d5d3351-d3f1-49b2-905f-4dbbe1cc30e3
|
||||||
processingFailureRowId: 11
|
processingFailureRowId: 11
|
||||||
processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5
|
processingFailureId: 96bf8d44-0030-4509-b24e-2d62299779c5
|
||||||
@ -877,7 +853,8 @@ paths:
|
|||||||
reasonCode: "001"
|
reasonCode: "001"
|
||||||
reasonDescription: Department does not exist.
|
reasonDescription: Department does not exist.
|
||||||
resolved: true
|
resolved: true
|
||||||
change: Adapt config
|
change: Adapt config
|
||||||
|
journalEntryId: null
|
||||||
List of unfiltered processing failures:
|
List of unfiltered processing failures:
|
||||||
summary: List of unfiltered processing failures
|
summary: List of unfiltered processing failures
|
||||||
description: |
|
description: |
|
||||||
@ -896,7 +873,8 @@ paths:
|
|||||||
reasonCode: "009"
|
reasonCode: "009"
|
||||||
reasonDescription: Transaction date is in the future
|
reasonDescription: Transaction date is in the future
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": 584d3a8a-48bc-45f9-99be-8dd70399e6e4
|
- "@odata.etag": 584d3a8a-48bc-45f9-99be-8dd70399e6e4
|
||||||
processingFailureRowId: 10
|
processingFailureRowId: 10
|
||||||
processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3
|
processingFailureId: 76aa82e1-a10f-4664-a84f-1f30d60884b3
|
||||||
@ -907,7 +885,8 @@ paths:
|
|||||||
reasonCode: "002"
|
reasonCode: "002"
|
||||||
reasonDescription: Cost center does not exist.
|
reasonDescription: Cost center does not exist.
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
- "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
|
- "@odata.etag": df4ade9b-1bda-4d91-a5ba-4dbe067568a0
|
||||||
processingFailureRowId: 11
|
processingFailureRowId: 11
|
||||||
processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1
|
processingFailureId: 25d2dd6f-ae17-44a7-b7a5-43eaf6de78e1
|
||||||
@ -918,7 +897,8 @@ paths:
|
|||||||
reasonCode: "001"
|
reasonCode: "001"
|
||||||
reasonDescription: Department does not exist.
|
reasonDescription: Department does not exist.
|
||||||
resolved: false
|
resolved: false
|
||||||
change: null
|
change: null
|
||||||
|
journalEntryId: null
|
||||||
security:
|
security:
|
||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
@ -969,6 +949,415 @@ paths:
|
|||||||
- default: []
|
- default: []
|
||||||
x-auth-type: Application & Application User
|
x-auth-type: Application & Application User
|
||||||
x-throttling-tier: Unlimited
|
x-throttling-tier: Unlimited
|
||||||
|
/Odata/JournalEntries:
|
||||||
|
get:
|
||||||
|
summary: Find journalEntry.
|
||||||
|
description: Find journalEntry.
|
||||||
|
tags:
|
||||||
|
- Odata
|
||||||
|
parameters:
|
||||||
|
- $ref: "#/components/parameters/top"
|
||||||
|
- $ref: "#/components/parameters/skip"
|
||||||
|
- $ref: "#/components/parameters/filter"
|
||||||
|
- $ref: "#/components/parameters/count"
|
||||||
|
- name: $orderby
|
||||||
|
in: query
|
||||||
|
description: Order items by property values
|
||||||
|
required: false
|
||||||
|
style: form
|
||||||
|
explode: false
|
||||||
|
schema:
|
||||||
|
uniqueItems: true
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- journalEntryId
|
||||||
|
- aggregationReference
|
||||||
|
- accountingSystemReference
|
||||||
|
- name: $select
|
||||||
|
in: query
|
||||||
|
description: Select properties to be returned
|
||||||
|
required: false
|
||||||
|
style: form
|
||||||
|
explode: false
|
||||||
|
schema:
|
||||||
|
uniqueItems: true
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- journalEntryId
|
||||||
|
- aggregationReference
|
||||||
|
- accountingSystemReference
|
||||||
|
- data
|
||||||
|
- response
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryGetResponseBody"
|
||||||
|
examples:
|
||||||
|
List containing all journal entries:
|
||||||
|
summary: List containing all journal entries
|
||||||
|
description: Returns a list containing all journal entries (no filters applied).
|
||||||
|
value:
|
||||||
|
"@odata.context": "$metadata#JournalEntry"
|
||||||
|
value:
|
||||||
|
- "@odata.etag": 8f085711-eeae-44ed-bac1-06779bedb480
|
||||||
|
journalEntryId: e0af8c8f-d421-4567-a14e-48e2a1bb86fb
|
||||||
|
aggregationReference: FIKO-123456
|
||||||
|
accountingSystemReference: null
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response: {
|
||||||
|
"status": "failed",
|
||||||
|
"message": [
|
||||||
|
{
|
||||||
|
"code": "352",
|
||||||
|
"reason": "Documentregel 1 kan niet geboekt worden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "159",
|
||||||
|
"reason": "Element 99999 (niveau 2) is niet toegestaan in linkerlijst van element D150000001 (niveau 3)."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hints": [],
|
||||||
|
"paths": [
|
||||||
|
"/InputRequest/PostToBooks/Request/Transaction/Lines/Line[1]/AccountCode"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
- "@odata.etag": 66c033af-fc67-4eb2-9d17-d74a0166470f
|
||||||
|
journalEntryId: 36a34bd8-2b84-4c89-87a4-22e809f6ed4a
|
||||||
|
aggregationReference: FIKO-123457
|
||||||
|
accountingSystemReference: "OPBR-FIKO10000090"
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response: {
|
||||||
|
"key": {
|
||||||
|
"$type": "finance_transaction_txnKey",
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO",
|
||||||
|
"number": " 10000090"
|
||||||
|
},
|
||||||
|
"suppliedNumber": ""
|
||||||
|
}
|
||||||
|
- "@odata.etag": 159f526c-3c88-48a1-93a0-e16430500bef
|
||||||
|
journalEntryId: 6097121f-f300-4c0b-ab8d-0a24685bda92
|
||||||
|
aggregationReference: FIKO-123458
|
||||||
|
accountingSystemReference: null
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
response: null
|
||||||
|
security:
|
||||||
|
- default: []
|
||||||
|
x-auth-type: Application & Application User
|
||||||
|
x-throttling-tier: Unlimited
|
||||||
|
/journalEntries:
|
||||||
|
post:
|
||||||
|
summary: Add a journalEntry.
|
||||||
|
description: Add a journalEntry.
|
||||||
|
tags:
|
||||||
|
- journalEntries v1.0
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPostRequestBody"
|
||||||
|
examples:
|
||||||
|
Add a new journalEntry:
|
||||||
|
summary: Add a new journalEntry
|
||||||
|
description: In this example we add a new journalEntry.
|
||||||
|
value:
|
||||||
|
aggregationReference: FIKO-123456
|
||||||
|
data: {
|
||||||
|
"transaction": {
|
||||||
|
"header": {
|
||||||
|
"key": {
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO"
|
||||||
|
},
|
||||||
|
"timeStamp": 0,
|
||||||
|
"inputDate": "2026-07-20T00:00:00Z",
|
||||||
|
"period": "2026/6",
|
||||||
|
"curCode": "EUR",
|
||||||
|
"date": "2026-07-20T00:00:00Z",
|
||||||
|
"originalCompany": "1HTM",
|
||||||
|
"originalCode": "OPBR-FIKO",
|
||||||
|
"completionWorkflow": {
|
||||||
|
"completionStatus": "wfl_no_completion"
|
||||||
|
},
|
||||||
|
"salesInvoiceStatus": "salesinv_notyetinv"
|
||||||
|
},
|
||||||
|
"lines": {
|
||||||
|
"line": [
|
||||||
|
{
|
||||||
|
"number": 1,
|
||||||
|
"accountCode": "100.99999.D150000001",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"lineType": "summary",
|
||||||
|
"lineSense": "debit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"description": "test",
|
||||||
|
"extRef1": "99999991",
|
||||||
|
"extRef2": "99999",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"number": 2,
|
||||||
|
"accountCode": "642.41236.609311",
|
||||||
|
"docValue": 100.00,
|
||||||
|
"userStatus": "",
|
||||||
|
"lineType": "analysis",
|
||||||
|
"lineSense": "credit",
|
||||||
|
"lineOrigin": "dl_orig_defined",
|
||||||
|
"sepaPaymentCategoryPurposeCode": "none",
|
||||||
|
"sepaPaymentPurposeCode": "none"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPostResponseBody"
|
||||||
|
examples:
|
||||||
|
Journalentry created successfully:
|
||||||
|
summary: Journalentry created successfully
|
||||||
|
description: TheJournalentry was successfully added to the database.
|
||||||
|
value:
|
||||||
|
journalEntryId: 6ce10520-9a73-4cb4-b8dd-39ee46ceb617
|
||||||
|
security:
|
||||||
|
- default: []
|
||||||
|
x-auth-type: Application & Application User
|
||||||
|
x-throttling-tier: Unlimited
|
||||||
|
/journalEntries/{journalEntryId}:
|
||||||
|
parameters:
|
||||||
|
- in: path
|
||||||
|
name: journalEntryId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
||||||
|
required: true
|
||||||
|
description: The id of the journalEntry.
|
||||||
|
patch:
|
||||||
|
summary: Update journalEntry.
|
||||||
|
description: Update journalEntry.
|
||||||
|
tags:
|
||||||
|
- journalEntries v1.0
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPatchRequestBody"
|
||||||
|
examples:
|
||||||
|
Update an journalEntry after error:
|
||||||
|
summary: Update an journalEntry after error
|
||||||
|
description: Update an journalEntry after error by logging the response
|
||||||
|
value:
|
||||||
|
response: {
|
||||||
|
"status": "failed",
|
||||||
|
"message": [
|
||||||
|
{
|
||||||
|
"code": "352",
|
||||||
|
"reason": "Documentregel 1 kan niet geboekt worden."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"code": "159",
|
||||||
|
"reason": "Element 99999 (niveau 2) is niet toegestaan in linkerlijst van element D150000001 (niveau 3)."
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"hints": [],
|
||||||
|
"paths": [
|
||||||
|
"/InputRequest/PostToBooks/Request/Transaction/Lines/Line[1]/AccountCode"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
Update an journalEntry after success:
|
||||||
|
summary: Update an journalEntry after succesfull call
|
||||||
|
description: Update an journalEntry after uccesfull call bij logging the response and the accountingSystemReference.
|
||||||
|
value:
|
||||||
|
accountingSystemReference: "OPBR-FIKO10000090"
|
||||||
|
response: {
|
||||||
|
"key": {
|
||||||
|
"$type": "finance_transaction_txnKey",
|
||||||
|
"cmpCode": "1HTM",
|
||||||
|
"code": "OPBR-FIKO",
|
||||||
|
"number": " 10000090"
|
||||||
|
},
|
||||||
|
"suppliedNumber": ""
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/JournalEntryPatchResponseBody"
|
||||||
|
examples:
|
||||||
|
JournalEntry updated successfully:
|
||||||
|
summary: JournalEntry updated successfully
|
||||||
|
description: The journalEntry was successfully updated in the database.
|
||||||
|
value:
|
||||||
|
journalEntryId: 5bbf5abc-4da5-4bb4-894e-a7f553789a20
|
||||||
|
security:
|
||||||
|
- default: []
|
||||||
|
x-auth-type: Application & Application User
|
||||||
|
x-throttling-tier: Unlimited
|
||||||
/Odata/BookingProcess:
|
/Odata/BookingProcess:
|
||||||
get:
|
get:
|
||||||
summary: Find booking processes.
|
summary: Find booking processes.
|
||||||
@ -3316,6 +3705,16 @@ components:
|
|||||||
- occurredOn
|
- occurredOn
|
||||||
- type
|
- type
|
||||||
- status
|
- status
|
||||||
|
createdOn:
|
||||||
|
type: string
|
||||||
|
nullable: false
|
||||||
|
format: datetime
|
||||||
|
example: "2026-07-20T00:00:00Z"
|
||||||
|
updatedOn:
|
||||||
|
type: string
|
||||||
|
nullable: false
|
||||||
|
format: datetime
|
||||||
|
example: "2026-07-25T00:00:00Z"
|
||||||
TransactionItemsBulkRequestBody:
|
TransactionItemsBulkRequestBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -3551,6 +3950,11 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
example: Adapt config
|
example: Adapt config
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- timestamp
|
- timestamp
|
||||||
- element
|
- element
|
||||||
@ -3617,6 +4021,11 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
nullable: true
|
nullable: true
|
||||||
example: Adapt config
|
example: Adapt config
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- processingFailureId
|
- processingFailureId
|
||||||
- transactionItemId
|
- transactionItemId
|
||||||
@ -3681,6 +4090,11 @@ components:
|
|||||||
format: uuid
|
format: uuid
|
||||||
nullable: true
|
nullable: true
|
||||||
example: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
example: 37a8095b-19db-498f-9349-5f37d21c5bdf
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- user
|
- user
|
||||||
- timestamp
|
- timestamp
|
||||||
@ -3754,6 +4168,11 @@ components:
|
|||||||
format: uuid
|
format: uuid
|
||||||
nullable: true
|
nullable: true
|
||||||
example: a3891560-3084-42cb-867c-f289e7cda47d
|
example: a3891560-3084-42cb-867c-f289e7cda47d
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
nullable: true
|
||||||
|
example: b51b377d-6c82-4c4f-9ed3-1068ab6e30c9
|
||||||
required:
|
required:
|
||||||
- transactionAuditTrailId
|
- transactionAuditTrailId
|
||||||
- transactionItemId
|
- transactionItemId
|
||||||
@ -3761,6 +4180,89 @@ components:
|
|||||||
- timestamp
|
- timestamp
|
||||||
- action
|
- action
|
||||||
- status
|
- status
|
||||||
|
JournalEntryGetResponseBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
"@odata.context":
|
||||||
|
type: string
|
||||||
|
example: $metadata#JournalEntry
|
||||||
|
value:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/JournalEntry"
|
||||||
|
JournalEntry:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
"@odata.etag":
|
||||||
|
type: string
|
||||||
|
example: 333d6b7d-b709-3b89-89e0-bcb3d5fdddfc
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: 8871d779-512c-4d4d-9a8a-dee7c635179d
|
||||||
|
aggregationReference:
|
||||||
|
type: string
|
||||||
|
example: FIKO-123456
|
||||||
|
accountingSystemReference:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
example: U4F-123456
|
||||||
|
data:
|
||||||
|
type: object
|
||||||
|
example: {}
|
||||||
|
responses:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
example: {}
|
||||||
|
required:
|
||||||
|
- journalEntryId
|
||||||
|
- aggregationReference
|
||||||
|
- data
|
||||||
|
JournalEntryPostRequestBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
aggregationReference:
|
||||||
|
type: string
|
||||||
|
example: FIKO-123456
|
||||||
|
accountingSystemReference:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
example: U4F-123456
|
||||||
|
data:
|
||||||
|
type: object
|
||||||
|
example: {}
|
||||||
|
responses:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
example: {}
|
||||||
|
required:
|
||||||
|
- aggregationReference
|
||||||
|
- data
|
||||||
|
JournalEntryPostResponseBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: c97a8123-8d0e-41ea-9737-35843ebe2385
|
||||||
|
JournalEntryPatchRequestBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
accountingSystemReference:
|
||||||
|
type: string
|
||||||
|
nullable: true
|
||||||
|
example: U4F-123456
|
||||||
|
responses:
|
||||||
|
type: object
|
||||||
|
nullable: true
|
||||||
|
example: {}
|
||||||
|
JournalEntryPatchResponseBody:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
journalEntryId:
|
||||||
|
type: string
|
||||||
|
format: uuid
|
||||||
|
example: c97a8123-8d0e-41ea-9737-35843ebe2385
|
||||||
BookingProcessesGetResponseBody:
|
BookingProcessesGetResponseBody:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|||||||
@ -111,14 +111,6 @@ paths:
|
|||||||
explode: false
|
explode: false
|
||||||
required: false
|
required: false
|
||||||
description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled.
|
description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled.
|
||||||
- in: query
|
|
||||||
name: issuedVoucherId
|
|
||||||
schema:
|
|
||||||
type: string
|
|
||||||
format: uuid
|
|
||||||
example: "b0a9f3c9-9b92-4f8c-b78d-6129be7218a6"
|
|
||||||
required: false
|
|
||||||
description: Filter on applied issuedVoucherId for the order.
|
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -777,6 +769,13 @@ paths:
|
|||||||
example: 9e3363c8-e776-4675-b108-99b8c2e38eb6
|
example: 9e3363c8-e776-4675-b108-99b8c2e38eb6
|
||||||
required: false
|
required: false
|
||||||
description: The id of the orderLine
|
description: The id of the orderLine
|
||||||
|
- in: query
|
||||||
|
name: issuedVoucherId
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
example: 9e3363c8-e776-4675-b108-99b8c2e38eb6
|
||||||
|
required: false
|
||||||
|
description: The id of the issuedVoucher
|
||||||
get:
|
get:
|
||||||
summary: Find vouchers on the order
|
summary: Find vouchers on the order
|
||||||
description: Find vouchers on the order
|
description: Find vouchers on the order
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,7 @@
|
|||||||
openapi: 3.0.1
|
openapi: 3.0.1
|
||||||
info:
|
info:
|
||||||
title: Service Engine APIs for HTM voucher suppliers
|
title: Service Engine APIs for HTM voucher suppliers
|
||||||
description: Service Engine APIs for HTM voucher suppliers, this means all instances responsible for supplying vouchers. These are NOT the CRUD APIs to the data hub. These are ALSO NOT the api's for sales touchpoints.
|
description: Service Engine APIs for HTM voucher suppliers, this means all instances responsible for supplying vouchers. These are NOT the CRUD APIs to the data hub. These are ALSO NOT the APIs for sales touchpoints.
|
||||||
version: "1.0"
|
version: "1.0"
|
||||||
servers:
|
servers:
|
||||||
- url: https://services.acc.api.htm.nl/abt/abtvouchers/1.0
|
- url: https://services.acc.api.htm.nl/abt/abtvouchers/1.0
|
||||||
@ -24,15 +24,6 @@ paths:
|
|||||||
|
|
||||||
When a requiredProduct is configured, all attributes of the requiredProduct are also prerequisites for redeeming the voucher; thus they do not need to also be configured for the voucher definition. The requiredProduct itself is the single source of truth for this; and voucher definitions do not need to be updated if the requirements of the requiredProduct change. For example, if the requiredProduct requires an OVpay token, an OVpay token is automatically required to redeem issued vouchers.
|
When a requiredProduct is configured, all attributes of the requiredProduct are also prerequisites for redeeming the voucher; thus they do not need to also be configured for the voucher definition. The requiredProduct itself is the single source of truth for this; and voucher definitions do not need to be updated if the requirements of the requiredProduct change. For example, if the requiredProduct requires an OVpay token, an OVpay token is automatically required to redeem issued vouchers.
|
||||||
parameters:
|
parameters:
|
||||||
- name: touchpointId
|
|
||||||
in: query
|
|
||||||
required: false
|
|
||||||
description: |
|
|
||||||
Filter the voucher definitions on a specific touchpointId. This means that only voucher definitions with active selling periods for the specified touchpoint are returned.
|
|
||||||
This query parameter is only intended for administrative purposes, since the touchpoint associated with the access token used in the request is used to determine which voucher definitions are returned. This query parameter can be used to retrieve voucher definitions for other touchpoints within the same retailer, for example to retrieve voucher definitions for a specific sales touchpoint that is different from the calling touchpoint.
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
example: 12
|
|
||||||
- name: productId
|
- name: productId
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
@ -66,8 +57,8 @@ paths:
|
|||||||
summary: No products / Empty list
|
summary: No products / Empty list
|
||||||
description: No products
|
description: No products
|
||||||
value: { "voucherDefinitions": [] }
|
value: { "voucherDefinitions": [] }
|
||||||
List containing one voucher definition (called by touchpointId 12):
|
List containing one voucher definition (called by touchPointId 12):
|
||||||
summary: List containing one voucher definition (called by touchpointId 12)
|
summary: List containing one voucher definition (called by touchPointId 12)
|
||||||
description: |-
|
description: |-
|
||||||
List containing one voucher definition for a voucher that can be redeemed for the product "Ooievaarspas voor AOW-ers in Den Haag".\
|
List containing one voucher definition for a voucher that can be redeemed for the product "Ooievaarspas voor AOW-ers in Den Haag".\
|
||||||
In this case, the voucher definition has a sellingPrice of 0, which means that vouchers issued from this voucher definition can be redeemed to acquire the requiredProduct for free. The requiredProduct also has a sellingPrice of 0, so no "discount" is shown to the customer; just the voucher's amountInclTax.\
|
In this case, the voucher definition has a sellingPrice of 0, which means that vouchers issued from this voucher definition can be redeemed to acquire the requiredProduct for free. The requiredProduct also has a sellingPrice of 0, so no "discount" is shown to the customer; just the voucher's amountInclTax.\
|
||||||
@ -206,18 +197,20 @@ paths:
|
|||||||
/issuedvouchers:
|
/issuedvouchers:
|
||||||
get:
|
get:
|
||||||
summary: Get a list of issued vouchers that were issued for a specific touch point
|
summary: Get a list of issued vouchers that were issued for a specific touch point
|
||||||
description:
|
description: |-
|
||||||
Retrieve all issued vouchers for a specific touchpoint. This means that only vouchers that were issued by a touchpoint within the same retailer as the calling touchpoint are returned.
|
Retrieve all issued vouchers that match the given query parameters. \
|
||||||
|
Every request is automatically filtered to return only vouchers issued by the calling touch point (based on the touchPointId that is assigned to the caller's API credentials).
|
||||||
|
|
||||||
|
Further filtering can be done by providing any of the following query parameters:
|
||||||
|
- `issuedVoucherId` (internal and globally unique ID);
|
||||||
|
- `voucherCode` (code that the customer uses for redeeming the voucher, can be reissued as long as only one instance is active at the same time);
|
||||||
|
- `productId` (the `productId` of the voucher definition);
|
||||||
|
- `voucherStatusId` (return only voucher instances with the given status(es));
|
||||||
|
- `statusChangedAfter` (only return voucher instances whose status changed after this date-time);
|
||||||
|
- `includeStatusHistory` (include the status history for each voucher instance).
|
||||||
|
|
||||||
|
When a voucher code has been issued multiple times, all issuedvouchers with the same voucher code will be returned, together with their status (or optionally also the status history).
|
||||||
parameters:
|
parameters:
|
||||||
- name: touchpointId
|
|
||||||
in: query
|
|
||||||
required: false
|
|
||||||
description: |-
|
|
||||||
Filter the issued vouchers on a specific touchpointId. This means that only vouchers that were issued by the specified touchpoint are returned.
|
|
||||||
This query parameter is only intended for administrative purposes, since the touchpoint associated with the access token used in the request is used to determine which issued vouchers are returned. This query parameter can be used to retrieve issued vouchers for other touchpoints within the same retailer, for example to retrieve issued vouchers for a specific sales touchpoint that is different from the calling touchpoint.
|
|
||||||
schema:
|
|
||||||
type: integer
|
|
||||||
example: 12
|
|
||||||
- name: issuedVoucherId
|
- name: issuedVoucherId
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
@ -240,6 +233,21 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
type: integer
|
type: integer
|
||||||
example: 321
|
example: 321
|
||||||
|
- name: touchpointId
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: Return only issued vouchers that were issued by a specific touchpoint.
|
||||||
|
schema:
|
||||||
|
type: integer
|
||||||
|
example: 3
|
||||||
|
- name: statusChangedAfter
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: Return only issued vouchers that have had their status changed after the given date and time.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: date-time-offset
|
||||||
|
example: "2024-10-04T00:00:00.000Z"
|
||||||
- name: voucherStatusId
|
- name: voucherStatusId
|
||||||
in: query
|
in: query
|
||||||
required: false
|
required: false
|
||||||
@ -252,12 +260,20 @@ paths:
|
|||||||
- 3 = redeemed
|
- 3 = redeemed
|
||||||
- 4 = revoked
|
- 4 = revoked
|
||||||
- 5 = expired
|
- 5 = expired
|
||||||
- 6 = pendingRedemption
|
- 6 = pendingRedemption
|
||||||
schema:
|
schema:
|
||||||
type: array
|
type: array
|
||||||
items:
|
items:
|
||||||
type: integer
|
type: integer
|
||||||
example: [4,5]
|
example: [4,5]
|
||||||
|
- name: includeStatusHistory
|
||||||
|
in: query
|
||||||
|
required: false
|
||||||
|
description: Include the status history for each voucher instance. Is false by default (if not provided).
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
example: false
|
||||||
|
|
||||||
tags:
|
tags:
|
||||||
- Vouchers
|
- Vouchers
|
||||||
responses:
|
responses:
|
||||||
@ -281,9 +297,9 @@ paths:
|
|||||||
{
|
{
|
||||||
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
"voucherCode": "HTM-A7J-128-PYT",
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
"fromInclusive": "2024-10-04T00:00:00.000",
|
"fromInclusive": "2024-10-04T00:00:00.000Z",
|
||||||
"untilInclusive": "2024-11-04T00:00:00.000",
|
"untilInclusive": "2024-11-04T00:00:00.000Z",
|
||||||
"voucherStatus": { "voucherStatusId": 2, "name": "issued" },
|
"voucherStatus": { "voucherStatusId": 2, "name": "issued", "createdOn": "2024-10-04T00:00:00.000Z", "reason": "Test reason" },
|
||||||
"product":
|
"product":
|
||||||
{
|
{
|
||||||
"productId": 263,
|
"productId": 263,
|
||||||
@ -323,9 +339,94 @@ paths:
|
|||||||
"mandatoryCustomerDataItemId": 8,
|
"mandatoryCustomerDataItemId": 8,
|
||||||
"customerDataItem": "padBirthDate",
|
"customerDataItem": "padBirthDate",
|
||||||
},
|
},
|
||||||
"value": "1980-06-31",
|
"value": "1980-06-30",
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
List containing one issued voucher, with status history:
|
||||||
|
summary: List containing one issued voucher, with status history
|
||||||
|
description: |-
|
||||||
|
The same issued voucher is returned as was shown in the first example, but in this case
|
||||||
|
requested with query parameter `includeStatusHistory=true`.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"issuedVouchers":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
|
"fromInclusive": "2024-10-04T00:00:00.000Z",
|
||||||
|
"untilInclusive": "2024-11-04T00:00:00.000Z",
|
||||||
|
"voucherStatus": { "voucherStatusId": 2, "name": "issued", "createdOn": "2024-10-04T00:00:00.000Z", "reason": "Test reason" },
|
||||||
|
"product":
|
||||||
|
{
|
||||||
|
"productId": 263,
|
||||||
|
"productName": "Voucher Ooievaarspas-product AOW",
|
||||||
|
"productDescription": "Voucher voor AOW-ers in Den Haag met een Ooievaarspas, die ingewisseld kan worden voor het product \"Ooievaarspas voor AOW-ers in Den Haag\"",
|
||||||
|
"amountInclTax": 0,
|
||||||
|
"requiredProducts":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"productId": 982,
|
||||||
|
"productName": "Ooievaarspas voor AOW-ers in Den Haag",
|
||||||
|
"productDescription": "Vrij reizen bij HTM voor Haagse AOW-gerechtigden met een Ooievaarspas.",
|
||||||
|
"productCategory":
|
||||||
|
{
|
||||||
|
"productCategoryId": 2,
|
||||||
|
"isTravelProduct": true,
|
||||||
|
"name": "Afgekocht reisrecht",
|
||||||
|
},
|
||||||
|
"amountInclTax": 0
|
||||||
|
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"_links":
|
||||||
|
{
|
||||||
|
"get_voucher_definition_details":
|
||||||
|
{
|
||||||
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/voucherdefinitions/263",
|
||||||
|
"method": "GET",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"voucherClaims":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"mandatoryCustomerDataItem":
|
||||||
|
{
|
||||||
|
"mandatoryCustomerDataItemId": 8,
|
||||||
|
"customerDataItem": "padBirthDate",
|
||||||
|
},
|
||||||
|
"value": "1980-06-30",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"voucherStatusInstances":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"voucherStatusId": 1,
|
||||||
|
"name": "new",
|
||||||
|
"createdOn": "2024-10-04T12:34:56.000Z",
|
||||||
|
"reason": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"voucherStatusId": 2,
|
||||||
|
"name": "issued",
|
||||||
|
"createdOn": "2024-10-04T12:37:14.000Z",
|
||||||
|
"reason": "Test reason"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -343,9 +444,9 @@ paths:
|
|||||||
{
|
{
|
||||||
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
"voucherCode": "HTM-A7J-128-PYT",
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
"fromInclusive": "2024-10-04T00:00:00.000",
|
"fromInclusive": "2024-10-04T00:00:00.000Z",
|
||||||
"untilInclusive": "2024-11-04T00:00:00.000",
|
"untilInclusive": "2024-11-04T00:00:00.000Z",
|
||||||
"voucherStatus": { "voucherStatusId": 2, "name": "issued" },
|
"voucherStatus": { "voucherStatusId": 2, "name": "issued", "createdOn": "2024-10-04T00:00:00.000Z", "reason": "Test reason" },
|
||||||
"product":
|
"product":
|
||||||
{
|
{
|
||||||
"productId": 264,
|
"productId": 264,
|
||||||
@ -376,7 +477,12 @@ paths:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"voucherClaims":[]
|
"voucherClaims": [],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
@ -393,9 +499,9 @@ paths:
|
|||||||
{
|
{
|
||||||
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
"voucherCode": "HTM-A7J-128-PYT",
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
"fromInclusive": "2024-10-04T00:00:00.000",
|
"fromInclusive": "2024-10-04T00:00:00.000Z",
|
||||||
"untilInclusive": "2024-11-04T00:00:00.000",
|
"untilInclusive": "2024-11-04T00:00:00.000Z",
|
||||||
"voucherStatus": { "voucherStatusId": 2, "name": "issued" },
|
"voucherStatus": { "voucherStatusId": 2, "name": "issued", "createdOn": "2024-10-04T00:00:00.000Z", "reason": "Test reason" },
|
||||||
"product":
|
"product":
|
||||||
{
|
{
|
||||||
"productId": 265,
|
"productId": 265,
|
||||||
@ -412,10 +518,31 @@ paths:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"voucherClaims":[]
|
"voucherClaims": [],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
"400":
|
||||||
|
description: Bad request
|
||||||
|
content:
|
||||||
|
application/problem+json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/rfc9457"
|
||||||
|
examples:
|
||||||
|
Missing required query parameters:
|
||||||
|
summary: Missing required query parameters
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"type": "https://example.com/probs/bad-request",
|
||||||
|
"title": "Missing required query parameters",
|
||||||
|
"detail": "At least one of the following query parameters should be provided: issuedVoucherId, voucherCode, or productId.",
|
||||||
|
"instance": "/issuedvouchers"
|
||||||
|
}
|
||||||
"403":
|
"403":
|
||||||
description: Forbidden
|
description: Forbidden
|
||||||
content:
|
content:
|
||||||
@ -466,10 +593,20 @@ paths:
|
|||||||
}
|
}
|
||||||
post:
|
post:
|
||||||
summary: Issue a voucher for a specific voucher definition
|
summary: Issue a voucher for a specific voucher definition
|
||||||
description: |
|
description: |-
|
||||||
Issue a voucher for a specific voucher definition. Vouchers can only be issued on a one-by-one basis, so that it is always clear what voucher code has been issued for specific voucher claims (which by itself my not uniquely identify the voucher; however the voucher code is guaranteed to be unique). The voucher can only be issued if the calling touchpoint (recognized by the access token) has an active selling period for the voucher definition (recognized by the productId).\
|
Issue a voucher for a specific voucher definition. Vouchers can only be issued on a one-by-one basis, so that it is always clear what voucher code has been issued for specific voucher claims (which by itself may not uniquely identify the voucher; however the voucher code is guaranteed to be unique).\
|
||||||
The \"fromInclusive\" and \"untilInclusive\" fields specify the date-time range in which the voucher can be redeemed by the customer. This has nothing to do with the allowed start date of a requiredProduct (for this, the existing order flow logic is applied).\
|
The voucher can only be issued if the calling touchpoint (recognized by the access token) has an active selling period for the voucher definition (recognized by the productId).
|
||||||
If the voucher definition contains mandatoryCustomerDataItems, a value (to be checked against customer input when redeeming the voucher) has to be provided for each of these items.
|
|
||||||
|
When providing a voucher code, the supplier is allowed to re-use a voucher code that has already been issued, but only if the previously issued voucher is not active anymore.\
|
||||||
|
This means that a voucher code can only be re-used once the previous instance has a `voucherStatus` of "revoked" or "expired".\
|
||||||
|
Redeemed is NOT a valid end-state, as this voucher might still refer to an active travel product (which can be revoked by revoking the voucher).
|
||||||
|
|
||||||
|
The `fromInclusive` and `untilInclusive` fields specify the date-time range in which the voucher can be redeemed by the customer.\
|
||||||
|
This has nothing to do with the allowed start date of a requiredProduct (for this, the existing order flow logic is applied).
|
||||||
|
|
||||||
|
If the voucher definition contains mandatoryCustomerDataItems, a value (to be checked against customer input when redeeming the voucher) has to be provided for each of these items.
|
||||||
|
|
||||||
|
A newly issued voucher will always receive the status "new". Vouchers can only be redeemed after they have been explicitly set to the status "issued" (via `PATCH /issuedvouchers/{issuedVoucherId}`), for example when the customer receives the actual voucher code.
|
||||||
tags:
|
tags:
|
||||||
- Vouchers
|
- Vouchers
|
||||||
requestBody:
|
requestBody:
|
||||||
@ -481,7 +618,9 @@ paths:
|
|||||||
examples:
|
examples:
|
||||||
Issue a voucher and supply own voucher code:
|
Issue a voucher and supply own voucher code:
|
||||||
summary: Issue a voucher and supply own voucher code
|
summary: Issue a voucher and supply own voucher code
|
||||||
description: This allows the voucher supplier to supply its own voucher code, which can be useful if the supplier already has its own (internal or external) source for voucher codes. The supplied voucher code must be unique - if this code is already in use, the request will fail.
|
description: |-
|
||||||
|
This allows the voucher supplier to supply its own voucher code, which can be useful if the supplier already has its own (internal or external) source for voucher codes.\
|
||||||
|
The supplied voucher code must be unique (or a previous instance must be revoked/expired, see main endpoint description).
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"voucherCode": "HTM-A7J-128-PYT",
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
@ -492,18 +631,37 @@ paths:
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"mandatoryCustomerDataItemId": 8,
|
"mandatoryCustomerDataItemId": 8,
|
||||||
"value": "1980-06-31",
|
"value": "1980-06-30",
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
}
|
}
|
||||||
Issue a voucher and receive a voucher code (generated by ABT backend) in response:
|
Issue a voucher and receive a voucher code (generated by ABT backend) in response:
|
||||||
summary: Issue a voucher and receive a voucher code (generated by ABT backend) in response
|
summary: Issue a voucher and receive a voucher code (generated by ABT backend) in response
|
||||||
description: If the supplier is not able to generate its own unique voucher codes, it can issue a voucher without supplying any voucher code - the ABT backend will then receive a unique voucher code and return it in response.
|
description: |-
|
||||||
|
If the supplier is not able to generate its own unique voucher codes, it can issue a voucher without supplying any voucher code.\
|
||||||
|
The ABT backend will then generate a unique voucher code and return it in response.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"fromInclusive": "2026-01-01T00:00:00.000+00:00",
|
"fromInclusive": "2026-01-01T00:00:00.000+00:00",
|
||||||
"untilInclusive": "2030-12-31T23:59:59.000+00:00",
|
"untilInclusive": "2030-12-31T23:59:59.000+00:00",
|
||||||
"productId": 264
|
"productId": 264,
|
||||||
|
"voucherClaims":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"mandatoryCustomerDataItemId": 8,
|
||||||
|
"value": "1980-06-30",
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
}
|
}
|
||||||
responses:
|
responses:
|
||||||
"201":
|
"201":
|
||||||
@ -519,9 +677,9 @@ paths:
|
|||||||
{
|
{
|
||||||
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
"voucherCode": "HTM-A7J-128-PYT",
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
"fromInclusive": "2024-10-04T00:00:00.000",
|
"fromInclusive": "2024-10-04T00:00:00.000Z",
|
||||||
"untilInclusive": "2024-11-04T00:00:00.000",
|
"untilInclusive": "2024-11-04T00:00:00.000Z",
|
||||||
"voucherStatus": { "voucherStatusId": 2, "name": "issued" },
|
"voucherStatus": { "voucherStatusId": 1, "name": "new", "createdOn": "2024-10-04T00:00:00.000Z", "reason": null },
|
||||||
"product":
|
"product":
|
||||||
{
|
{
|
||||||
"productId": 263,
|
"productId": 263,
|
||||||
@ -561,9 +719,14 @@ paths:
|
|||||||
"mandatoryCustomerDataItemId": 8,
|
"mandatoryCustomerDataItemId": 8,
|
||||||
"customerDataItem": "padBirthDate",
|
"customerDataItem": "padBirthDate",
|
||||||
},
|
},
|
||||||
"value": "1980-06-31",
|
"value": "1980-06-30",
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
}
|
}
|
||||||
"400":
|
"400":
|
||||||
description: Bad request
|
description: Bad request
|
||||||
@ -573,12 +736,12 @@ paths:
|
|||||||
$ref: "#/components/schemas/rfc9457"
|
$ref: "#/components/schemas/rfc9457"
|
||||||
examples:
|
examples:
|
||||||
Voucher code already in use:
|
Voucher code already in use:
|
||||||
summary: Voucher code already in use
|
summary: Another active voucher instance already exists for this voucher code
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"type": "https://example.com/probs/bad-request",
|
"type": "https://example.com/probs/bad-request",
|
||||||
"title": "Invalid voucher code",
|
"title": "Invalid voucher code",
|
||||||
"detail": "This voucher code is already in use.",
|
"detail": "Another active voucher instance already exists for this voucher code.",
|
||||||
"instance": "/issuedvouchers"
|
"instance": "/issuedvouchers"
|
||||||
}
|
}
|
||||||
Missing mandatory voucher claims:
|
Missing mandatory voucher claims:
|
||||||
@ -614,6 +777,9 @@ paths:
|
|||||||
summary: Update the status of an issued voucher
|
summary: Update the status of an issued voucher
|
||||||
description: |-
|
description: |-
|
||||||
Update the status of an issued voucher. Not every state change is allowed; an error will be returned if an invalid state change is attempted.\
|
Update the status of an issued voucher. Not every state change is allowed; an error will be returned if an invalid state change is attempted.\
|
||||||
|
If a redeemed voucher is revoked using this endpoint, it may also impact any active travel products that have been acquired using this voucher.\
|
||||||
|
This depends on specific business rules that are agreed upon with HTM.
|
||||||
|
|
||||||
Possible voucher statuses are:
|
Possible voucher statuses are:
|
||||||
- 1 = new
|
- 1 = new
|
||||||
- 2 = issued
|
- 2 = issued
|
||||||
@ -630,11 +796,20 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/supplierTouchpointUpdateIssuedVoucherRequest"
|
$ref: "#/components/schemas/supplierTouchpointUpdateIssuedVoucherRequest"
|
||||||
examples:
|
examples:
|
||||||
Mark a voucher as revoked:
|
Mark a voucher as issued:
|
||||||
summary: Mark a voucher as revoked
|
summary: Mark a voucher as issued
|
||||||
|
description: Mark a voucher as issued. Only vouchers with a status of "issued" can actually be redeemed.
|
||||||
value:
|
value:
|
||||||
{
|
{
|
||||||
"voucherStatusId": 4
|
"voucherStatusId": 2
|
||||||
|
}
|
||||||
|
Mark a voucher as revoked (with reason):
|
||||||
|
summary: Mark a voucher as revoked
|
||||||
|
description: Mark a voucher as revoked. This may also impact any active travel products that have been acquired using this voucher. This depends on specific business rules that are agreed upon with HTM.
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"voucherStatusId": 4,
|
||||||
|
"reason": "Voucher was redeemed by an unauthorized person"
|
||||||
}
|
}
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
@ -650,9 +825,9 @@ paths:
|
|||||||
{
|
{
|
||||||
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
"voucherCode": "HTM-A7J-128-PYT",
|
"voucherCode": "HTM-A7J-128-PYT",
|
||||||
"fromInclusive": "2024-10-04T00:00:00.000",
|
"fromInclusive": "2024-10-04T00:00:00.000Z",
|
||||||
"untilInclusive": "2024-11-04T00:00:00.000",
|
"untilInclusive": "2024-11-04T00:00:00.000Z",
|
||||||
"voucherStatus": { "voucherStatusId": 4, "name": "revoked" },
|
"voucherStatus": { "voucherStatusId": 4, "name": "revoked", "createdOn": "2024-10-04T12:34:56.000Z", "reason": "Voucher was redeemed by an unauthorized person" },
|
||||||
"product":
|
"product":
|
||||||
{
|
{
|
||||||
"productId": 263,
|
"productId": 263,
|
||||||
@ -691,9 +866,14 @@ paths:
|
|||||||
"mandatoryCustomerDataItemId": 8,
|
"mandatoryCustomerDataItemId": 8,
|
||||||
"customerDataItem": "padBirthDate",
|
"customerDataItem": "padBirthDate",
|
||||||
},
|
},
|
||||||
"value": "1980-06-31",
|
"value": "1980-06-30",
|
||||||
}
|
}
|
||||||
]
|
],
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null
|
||||||
}
|
}
|
||||||
"400":
|
"400":
|
||||||
description: Bad request
|
description: Bad request
|
||||||
@ -733,8 +913,7 @@ components:
|
|||||||
- productDescription
|
- productDescription
|
||||||
- validityPeriod
|
- validityPeriod
|
||||||
- productCategory
|
- productCategory
|
||||||
- sellingPeriods
|
- sellingPeriods
|
||||||
|
|
||||||
properties:
|
properties:
|
||||||
productId:
|
productId:
|
||||||
type: integer
|
type: integer
|
||||||
@ -758,11 +937,11 @@ components:
|
|||||||
fromInclusive:
|
fromInclusive:
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
example: "2024-09-03T10:01:34.000+00:00"
|
example: "2024-09-03T10:01:34.000+00:00Z"
|
||||||
toInclusive:
|
toInclusive:
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
example: "2024-09-03T23:59:59.999+00:00"
|
example: "2024-09-03T23:59:59.999+00:00Z"
|
||||||
productCategory:
|
productCategory:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
@ -832,11 +1011,11 @@ components:
|
|||||||
fromInclusive:
|
fromInclusive:
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
example: "2022-03-01T00:00:00.000+00:00"
|
example: "2022-03-01T00:00:00.000+00:00Z"
|
||||||
toInclusive:
|
toInclusive:
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
example: "2022-06-01T00:00:00.000+00:00"
|
example: "2022-06-01T00:00:00.000+00:00Z"
|
||||||
salesTouchpoint:
|
salesTouchpoint:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
@ -923,11 +1102,11 @@ components:
|
|||||||
fromInclusive:
|
fromInclusive:
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
example: "2022-03-01T00:00:00.000+00:00"
|
example: "2022-03-01T00:00:00.000+00:00Z"
|
||||||
toInclusive:
|
toInclusive:
|
||||||
type: string
|
type: string
|
||||||
format: date-time-offset
|
format: date-time-offset
|
||||||
example: "2022-06-01T00:00:00.000+00:00"
|
example: "2022-06-01T00:00:00.000+00:00Z"
|
||||||
internalPrice:
|
internalPrice:
|
||||||
type: number
|
type: number
|
||||||
example: 908.1234
|
example: 908.1234
|
||||||
@ -976,6 +1155,26 @@ components:
|
|||||||
type: string
|
type: string
|
||||||
description: The value that the customer must provide for this mandatoryCustomerDataItem to be able to redeem the voucher.
|
description: The value that the customer must provide for this mandatoryCustomerDataItem to be able to redeem the voucher.
|
||||||
example: "1970-01-01"
|
example: "1970-01-01"
|
||||||
|
metadata1:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata2:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata3:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata4:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata5:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
supplierTouchpointUpdateIssuedVoucherRequest:
|
supplierTouchpointUpdateIssuedVoucherRequest:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
@ -985,6 +1184,10 @@ components:
|
|||||||
type: integer
|
type: integer
|
||||||
description: The new status of the voucher.
|
description: The new status of the voucher.
|
||||||
example: 4
|
example: 4
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
description: The reason for the change of the voucher status.
|
||||||
|
example: "Voucher was redeemed by an unauthorized person"
|
||||||
supplierTouchpointIssuedVouchersListResponse:
|
supplierTouchpointIssuedVouchersListResponse:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
@ -1026,25 +1229,17 @@ components:
|
|||||||
the maximum allowed start date of a requiredProduct (for this, the existing order flow logic is applied).
|
the maximum allowed start date of a requiredProduct (for this, the existing order flow logic is applied).
|
||||||
example: "2024-11-04T00:00:00.000+01:00"
|
example: "2024-11-04T00:00:00.000+01:00"
|
||||||
voucherStatus:
|
voucherStatus:
|
||||||
type: object
|
allOf:
|
||||||
required:
|
- $ref: "#/components/schemas/voucherStatusInstance"
|
||||||
- voucherStatusId
|
- type: object
|
||||||
- name
|
- description: |-
|
||||||
description: |-
|
The current status of the voucher. Can be any of the following:
|
||||||
The current status of the voucher. Can be any of the following:
|
- 1 = new
|
||||||
- 1 = new
|
- 2 = issued
|
||||||
- 2 = issued
|
- 3 = redeemed
|
||||||
- 3 = redeemed
|
- 4 = revoked
|
||||||
- 4 = revoked
|
- 5 = expired
|
||||||
- 5 = expired
|
- 6 = pendingRedemption
|
||||||
- 6 = pendingRedemption
|
|
||||||
properties:
|
|
||||||
voucherStatusId:
|
|
||||||
type: integer
|
|
||||||
example: 2
|
|
||||||
name:
|
|
||||||
type: string
|
|
||||||
example: "issued"
|
|
||||||
product:
|
product:
|
||||||
type: object
|
type: object
|
||||||
description: The "product" referencing the voucher definition that this voucher instance is based on
|
description: The "product" referencing the voucher definition that this voucher instance is based on
|
||||||
@ -1160,7 +1355,51 @@ components:
|
|||||||
value:
|
value:
|
||||||
type: string
|
type: string
|
||||||
example: 1970-01-01
|
example: 1970-01-01
|
||||||
|
voucherStatusInstances:
|
||||||
|
type: array
|
||||||
|
description: List of voucherStatusInstances, providing information about the status history of the voucher
|
||||||
|
items:
|
||||||
|
$ref: "#/components/schemas/voucherStatusInstance"
|
||||||
|
metadata1:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata2:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata3:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata4:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
metadata5:
|
||||||
|
type: string
|
||||||
|
description: Field for storing custom metadata.
|
||||||
|
example: "Some metadata"
|
||||||
|
voucherStatusInstance:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- voucherStatusId
|
||||||
|
- name
|
||||||
|
- createdOn
|
||||||
|
properties:
|
||||||
|
voucherStatusId:
|
||||||
|
type: integer
|
||||||
|
example: 4
|
||||||
|
name:
|
||||||
|
type: string
|
||||||
|
example: "revoked"
|
||||||
|
createdOn:
|
||||||
|
type: string
|
||||||
|
format: date-time-offset
|
||||||
|
example: "2021-05-23T12:00:00.000+02:00"
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
example: "Voucher revoked because it was redeemed by an unauthorized user."
|
||||||
unavailable:
|
unavailable:
|
||||||
type: object
|
type: object
|
||||||
rfc9457:
|
rfc9457:
|
||||||
|
|||||||
@ -209,6 +209,12 @@ paths:
|
|||||||
{
|
{
|
||||||
"issuedVoucherId": "e1f2g3h4-i5j6-k7l8-m9n0-o1p2q3r4s5t6",
|
"issuedVoucherId": "e1f2g3h4-i5j6-k7l8-m9n0-o1p2q3r4s5t6",
|
||||||
"voucherCode": "VOUCHER12345",
|
"voucherCode": "VOUCHER12345",
|
||||||
|
"touchPointId": 23,
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null,
|
||||||
"voucherStatusInstances":
|
"voucherStatusInstances":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -219,6 +225,7 @@ paths:
|
|||||||
"name": "New",
|
"name": "New",
|
||||||
},
|
},
|
||||||
"createdOn": "2024-10-04T12:34:56.000",
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"reason": null,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"voucherStatusInstanceId": "b01412e6-70fb-4c05-9bef-e65bf2747ca1",
|
"voucherStatusInstanceId": "b01412e6-70fb-4c05-9bef-e65bf2747ca1",
|
||||||
@ -228,6 +235,7 @@ paths:
|
|||||||
"name": "Issued",
|
"name": "Issued",
|
||||||
},
|
},
|
||||||
"createdOn": "2024-10-04T12:37:14.000",
|
"createdOn": "2024-10-04T12:37:14.000",
|
||||||
|
"reason": "test reason"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"voucherClaims":
|
"voucherClaims":
|
||||||
@ -248,6 +256,155 @@ paths:
|
|||||||
],
|
],
|
||||||
"href": null,
|
"href": null,
|
||||||
}
|
}
|
||||||
|
post:
|
||||||
|
tags:
|
||||||
|
- Purchased Product
|
||||||
|
summary: Create a new purchased product.
|
||||||
|
description: Create a new purchased product. Only one single instance of `purchasedGboProducts`, `purchasedTapconnectTickets` or `issuedVouchers` can be specified at once.
|
||||||
|
requestBody:
|
||||||
|
required: true
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
examples:
|
||||||
|
Create Purchased GBO Product:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"productId": 11,
|
||||||
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||||
|
"purchasedProductResources":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"resourceNameId": 1,
|
||||||
|
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceNameId": 2,
|
||||||
|
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"purchasedGboProducts":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"salesTimestamp": "2024-10-04T12:34:56.000",
|
||||||
|
"refundTimestamp": "2024-10-04T12:34:56.000",
|
||||||
|
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||||
|
"untilInclusive": "2024-10-04T12:34:56.000",
|
||||||
|
"packageTemplateId": "30003",
|
||||||
|
"xBot": "f15efe6f-7353-4968-b134-60ba6fc2da8b",
|
||||||
|
"xTat": "42efebf7-132e-4ee0-9cbb-4037a9a54ad8",
|
||||||
|
"xSpit": "d67b2f72-918a-4e6c-957d-a39ed9c9e16b",
|
||||||
|
"customerTokenId": "b6492322-c458-4857-9ac3-a109c1887b9f",
|
||||||
|
"ovPayTokenId": 13,
|
||||||
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||||
|
"createdBy": "someuser",
|
||||||
|
"lastUpdatedBy": null
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"purchasedTapconnectTickets": [],
|
||||||
|
"issuedVouchers": [],
|
||||||
|
}
|
||||||
|
Create Purchased TapConnect Ticket:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"productId": 11,
|
||||||
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||||
|
"purchasedProductResources":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"resourceNameId": 1,
|
||||||
|
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceNameId": 2,
|
||||||
|
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"purchasedGboProducts": [],
|
||||||
|
"purchasedTapconnectTickets":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"issuedAt": "2024-10-04T12:34:56.000",
|
||||||
|
"activatedAt": "2024-10-04T12:34:56.000",
|
||||||
|
"cancelledAt": "2024-10-04T12:34:56.000",
|
||||||
|
"ticketReference": "KJj43nejhbTxhr897287",
|
||||||
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||||
|
"createdBy": "John Doe",
|
||||||
|
"lastUpdatedBy": "John Doe",
|
||||||
|
"externalDeviceId": "c5545584-04af-4c60-a955-d6a70baab848",
|
||||||
|
"serviceId": "HTM-1234-7654-8945",
|
||||||
|
"activateBefore": "2024-10-08",
|
||||||
|
"validityStart": "2024-10-05T12:34:56.000",
|
||||||
|
"validityEnd": "2024-10-06T12:34:56.000"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"issuedVouchers": [],
|
||||||
|
}
|
||||||
|
Create Issued Voucher:
|
||||||
|
value:
|
||||||
|
{
|
||||||
|
"productId": 11,
|
||||||
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||||
|
"purchasedProductResources":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"resourceNameId": 1,
|
||||||
|
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"resourceNameId": 2,
|
||||||
|
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
"purchasedGboProducts": [],
|
||||||
|
"purchasedTapconnectTickets": [],
|
||||||
|
"issuedVouchers":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"voucherCode": "VOUCHER123",
|
||||||
|
"touchPointId": 23,
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null,
|
||||||
|
"voucherStatusInstances": [
|
||||||
|
{
|
||||||
|
"voucherStatusId": 1,
|
||||||
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"reason": "test reason"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"voucherClaims": [
|
||||||
|
{
|
||||||
|
"mandatoryCustomerDataItemId": 8,
|
||||||
|
"value": "1999-12-31"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"mandatoryCustomerDataItemId": 4,
|
||||||
|
"value": "john.doe@example.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||||
|
"untilInclusive": "2025-10-04T12:34:56.000"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
}
|
||||||
|
responses:
|
||||||
|
"201":
|
||||||
|
description: Created
|
||||||
|
content:
|
||||||
|
application/json:
|
||||||
|
schema:
|
||||||
|
$ref: "#/components/schemas/unavailable"
|
||||||
|
example:
|
||||||
|
{ "purchasedProductId": "a9b3dea5-fb8a-4b1e-9fe6-90cad31c0cfd" }
|
||||||
/purchasedproducts/{purchasedProductId}:
|
/purchasedproducts/{purchasedProductId}:
|
||||||
parameters:
|
parameters:
|
||||||
- in: path
|
- in: path
|
||||||
@ -382,6 +539,12 @@ paths:
|
|||||||
{
|
{
|
||||||
"issuedVoucherId": "e1f2g3h4-i5j6-k7l8-m9n0-o1p2q3r4s5t6",
|
"issuedVoucherId": "e1f2g3h4-i5j6-k7l8-m9n0-o1p2q3r4s5t6",
|
||||||
"voucherCode": "VOUCHER12345",
|
"voucherCode": "VOUCHER12345",
|
||||||
|
"touchPointId": 23,
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null,
|
||||||
"voucherStatusInstances":
|
"voucherStatusInstances":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -389,12 +552,14 @@ paths:
|
|||||||
"voucherStatus":
|
"voucherStatus":
|
||||||
{ "voucherStatusId": 1, "name": "New" },
|
{ "voucherStatusId": 1, "name": "New" },
|
||||||
"createdOn": "2024-10-04T12:34:56.000",
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"reason": null,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"voucherStatusInstanceId": "b01412e6-70fb-4c05-9bef-e65bf2747ca1",
|
"voucherStatusInstanceId": "b01412e6-70fb-4c05-9bef-e65bf2747ca1",
|
||||||
"voucherStatus":
|
"voucherStatus":
|
||||||
{ "voucherStatusId": 2, "name": "Issued" },
|
{ "voucherStatusId": 2, "name": "Issued" },
|
||||||
"createdOn": "2024-10-04T12:37:14.000",
|
"createdOn": "2024-10-04T12:37:14.000",
|
||||||
|
"reason": "test reason"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"voucherClaims":
|
"voucherClaims":
|
||||||
@ -1054,11 +1219,18 @@ paths:
|
|||||||
example:
|
example:
|
||||||
{
|
{
|
||||||
"voucherCode": "VOUCHER123",
|
"voucherCode": "VOUCHER123",
|
||||||
|
"touchPointId": 23,
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null,
|
||||||
"voucherStatusInstances":
|
"voucherStatusInstances":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
"voucherStatusId": 1,
|
"voucherStatusId": 1,
|
||||||
"createdOn": "2024-10-04T12:34:56.000",
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"reason": "test reason"
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"voucherClaims":
|
"voucherClaims":
|
||||||
@ -1066,7 +1238,7 @@ paths:
|
|||||||
{ "mandatoryCustomerDataItemId": 8, "value": "1999-12-31" },
|
{ "mandatoryCustomerDataItemId": 8, "value": "1999-12-31" },
|
||||||
{
|
{
|
||||||
"mandatoryCustomerDataItemId": 4,
|
"mandatoryCustomerDataItemId": 4,
|
||||||
"value": "vlad.harkonnen@househarkonnen.net",
|
"value": "john.doe@example.com",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"fromInclusive": "2024-10-04T12:34:56.000",
|
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||||
@ -1102,6 +1274,14 @@ paths:
|
|||||||
format: uuid
|
format: uuid
|
||||||
example: 058a1af7-897f-45d5-b691-9cc9161e387f
|
example: 058a1af7-897f-45d5-b691-9cc9161e387f
|
||||||
description: The id of the purchased product.
|
description: The id of the purchased product.
|
||||||
|
- in: query
|
||||||
|
name: statusChangedAfter
|
||||||
|
required: false
|
||||||
|
description: Return only issued vouchers that have had their status changed after the given date and time.
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
format: date-time-offset
|
||||||
|
example: "2024-10-04T00:00:00.000Z"
|
||||||
- in: query
|
- in: query
|
||||||
name: productId
|
name: productId
|
||||||
schema:
|
schema:
|
||||||
@ -1146,6 +1326,13 @@ paths:
|
|||||||
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
|
||||||
"purchasedProductId": "058a1af7-897f-45d5-b691-9cc9161e387f",
|
"purchasedProductId": "058a1af7-897f-45d5-b691-9cc9161e387f",
|
||||||
"voucherCode": "VOUCHER123",
|
"voucherCode": "VOUCHER123",
|
||||||
|
"productId": 888,
|
||||||
|
"touchPointId": 23,
|
||||||
|
"metadata1": null,
|
||||||
|
"metadata2": null,
|
||||||
|
"metadata3": null,
|
||||||
|
"metadata4": null,
|
||||||
|
"metadata5": null,
|
||||||
"voucherStatusInstances":
|
"voucherStatusInstances":
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
@ -1153,12 +1340,14 @@ paths:
|
|||||||
"voucherStatus":
|
"voucherStatus":
|
||||||
{ "voucherStatusId": 1, "name": "New" },
|
{ "voucherStatusId": 1, "name": "New" },
|
||||||
"createdOn": "2024-10-04T12:34:56.000",
|
"createdOn": "2024-10-04T12:34:56.000",
|
||||||
|
"reason": null,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"voucherStatusInstanceId": "b01412e6-70fb-4c05-9bef-e65bf2747ca1",
|
"voucherStatusInstanceId": "b01412e6-70fb-4c05-9bef-e65bf2747ca1",
|
||||||
"voucherStatus":
|
"voucherStatus":
|
||||||
{ "voucherStatusId": 2, "name": "Issued" },
|
{ "voucherStatusId": 2, "name": "Issued" },
|
||||||
"createdOn": "2024-10-04T12:37:14.000",
|
"createdOn": "2024-10-04T12:37:14.000",
|
||||||
|
"reason": "test reason",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"voucherClaims":
|
"voucherClaims":
|
||||||
@ -1177,7 +1366,7 @@ paths:
|
|||||||
"mandatoryCustomerDataItemId": 4,
|
"mandatoryCustomerDataItemId": 4,
|
||||||
"customerDataItem": "emailAddress",
|
"customerDataItem": "emailAddress",
|
||||||
},
|
},
|
||||||
"value": "vlad.harkonnen@househarkonnen.net",
|
"value": "john.doe@example.com",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
"fromInclusive": "2024-10-04T12:34:56.000",
|
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||||
@ -1205,9 +1394,16 @@ paths:
|
|||||||
content:
|
content:
|
||||||
application/json:
|
application/json:
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/unavailable"
|
$ref: "#/components/schemas/PostIssuedVoucherStatusInstanceRequest"
|
||||||
example:
|
examples:
|
||||||
{ "voucherStatusId": 2, "createdOn": "2024-10-04T12:34:56.000" }
|
newToIssued:
|
||||||
|
summary: Mark a voucher as issued
|
||||||
|
value:
|
||||||
|
{ "voucherStatusId": 2, "createdOn": "2024-10-04T12:34:56.000" }
|
||||||
|
issuedToRevokedWithReason:
|
||||||
|
summary: Mark a voucher as revoked with reason
|
||||||
|
value:
|
||||||
|
{ "voucherStatusId": 4, "createdOn": "2024-10-04T12:34:56.000", "reason": "Voucher revoked because it was redeemed by an unauthorized user." }
|
||||||
responses:
|
responses:
|
||||||
"200":
|
"200":
|
||||||
description: OK
|
description: OK
|
||||||
@ -1241,6 +1437,7 @@ paths:
|
|||||||
{ "voucherStatusId": 3, "name": "Redeemed" },
|
{ "voucherStatusId": 3, "name": "Redeemed" },
|
||||||
{ "voucherStatusId": 4, "name": "Revoked" },
|
{ "voucherStatusId": 4, "name": "Revoked" },
|
||||||
{ "voucherStatusId": 5, "name": "Expired" },
|
{ "voucherStatusId": 5, "name": "Expired" },
|
||||||
|
{ "voucherStatusId": 6, "name": "PendingRedemption" },
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
components:
|
components:
|
||||||
@ -1252,6 +1449,22 @@ components:
|
|||||||
schemas:
|
schemas:
|
||||||
unavailable:
|
unavailable:
|
||||||
type: object
|
type: object
|
||||||
|
PostIssuedVoucherStatusInstanceRequest:
|
||||||
|
type: object
|
||||||
|
required:
|
||||||
|
- voucherStatusId
|
||||||
|
- createdOn
|
||||||
|
properties:
|
||||||
|
voucherStatusId:
|
||||||
|
type: integer
|
||||||
|
example: 4
|
||||||
|
createdOn:
|
||||||
|
type: string
|
||||||
|
format: date-time
|
||||||
|
example: 2024-10-04T12:34:56.000
|
||||||
|
reason:
|
||||||
|
type: string
|
||||||
|
example: "Voucher revoked because it was redeemed by an unauthorized user."
|
||||||
PostPurchasedTapConnectTicketRequest:
|
PostPurchasedTapConnectTicketRequest:
|
||||||
type: object
|
type: object
|
||||||
required:
|
required:
|
||||||
@ -1313,56 +1526,6 @@ components:
|
|||||||
format: date-time
|
format: date-time
|
||||||
description: The date-time at which the ticket will become invalid for traveling. The ticket will not be valid after this date/time.
|
description: The date-time at which the ticket will become invalid for traveling. The ticket will not be valid after this date/time.
|
||||||
example: 2024-10-06T12:34:56.000
|
example: 2024-10-06T12:34:56.000
|
||||||
BulkResponseBody:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
startTime:
|
|
||||||
type: string
|
|
||||||
format: date-time
|
|
||||||
example: 2025-02-14T05:32:47.0672237Z
|
|
||||||
status:
|
|
||||||
type: string
|
|
||||||
example: Running
|
|
||||||
clientTrackingId:
|
|
||||||
type: string
|
|
||||||
example: 08584620957189579629541919368CU00
|
|
||||||
callbackurl:
|
|
||||||
type: string
|
|
||||||
format: uri
|
|
||||||
example: https://services.api.htm.nl/purchasedproducts/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
|
|
||||||
retryAfter:
|
|
||||||
type: integer
|
|
||||||
example: 10
|
|
||||||
summary:
|
|
||||||
$ref: "#/components/schemas/summaryBody"
|
|
||||||
required:
|
|
||||||
- startTime
|
|
||||||
- status
|
|
||||||
- clientTrackingId
|
|
||||||
- callbackurl
|
|
||||||
- retryAfter
|
|
||||||
- summary
|
|
||||||
summaryBody:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
summary:
|
|
||||||
type: object
|
|
||||||
properties:
|
|
||||||
created:
|
|
||||||
type: integer
|
|
||||||
example: 15
|
|
||||||
updated:
|
|
||||||
type: integer
|
|
||||||
example: 2
|
|
||||||
total:
|
|
||||||
type: integer
|
|
||||||
example: 17
|
|
||||||
required:
|
|
||||||
- created
|
|
||||||
- total
|
|
||||||
- updated
|
|
||||||
required:
|
|
||||||
- summary
|
|
||||||
rfc9457:
|
rfc9457:
|
||||||
type: object
|
type: object
|
||||||
properties:
|
properties:
|
||||||
|
|||||||
151
trip2.json
Normal file
151
trip2.json
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
{ "tripId": 796727186, "tripVersion": 1, "tripStatus": "COMPLETE", "organisationIcon": "/icons/organisations/3.svg", "organisationId": "3", "organisationName": "HTM", "supersededByTripIds": [], "supersedesTripIds": [], "products": [ {
|
||||||
|
"productTemplateId": "30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"productIcon": "001.jpg", "purchaseDateTime": "2026-04-02T12:38:28+02:00", "organisationName": "ProductRetailer HTM", "appliedValue": -125, "organisationId": "3", "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "N/A", "purchaseDateTime": "2025-07-09T12:39:27+02:00", "appliedValue": 139, "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "1:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 116, "appliedMetric": "FARE", "appliedValue": 116, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "2:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 23, "appliedMetric": "FARE", "appliedValue": 23, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "3:30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" },
|
||||||
|
{
|
||||||
|
"key": "nl-NL", "value": "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis een week lang met korting!" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Are you a regular traveler? Activate HTM 90% discount on your EMV card!" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2026-04-03T04:00:00+02:00", "validUntil": "2031-04-03T04:00:00+02:00", "organisationName": "Product Owner HTM", "weight": -125, "appliedMetric": "DISCOUNT", "appliedValue": -125, "organisationId": "3", "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"productCatalogVersionId": "PC-HTM:70", "xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1", "xpit": "1848597c-5ba9-4dab-8d9f-3948948706a1" }
|
||||||
|
],
|
||||||
|
"checkinTransactionTimestamp": "2026-04-20T16:59:48+02:00", "checkoutTransactionTimestamp": "2026-04-20T17:04:50+02:00", "checkinTransactionReference": "00310F92;29023;emvClt", "checkoutTransactionReference": "0030DBC1;30528;emvClt", "checkinLocation": { "stopId": 2721, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Station Hollands Spoor" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Station Hollands Spoor" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2721", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"checkoutLocation": { "stopId": 2862, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Kalvermarkt-Stadhuis" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Kalvermarkt-Stadhuis" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2862", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"tokenType": "EMV-CLT", "transportType": "TRAM", "lineId": "17", "lineName": "Tram17", "networkId": "1", "networkName": "HTM netwerk", "currency": "EUR", "transportIcon": "/icons/transportTypes/tram.svg", "legs": [ {
|
||||||
|
"legId": 1614950977, "checkinTransactionTimestamp": "2026-04-20T16:59:48+02:00", "checkoutTransactionTimestamp": "2026-04-20T17:04:50+02:00", "checkinLocation": { "stopId": 2721, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Station Hollands Spoor" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Station Hollands Spoor" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2721", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"checkoutLocation": { "stopId": 2862, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Kalvermarkt-Stadhuis" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Kalvermarkt-Stadhuis" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2862", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"baseRate": 139, "lineId": "17", "lineName": "Tram17", "networkId": "1", "networkName": "HTM netwerk", "fare": 14, "fareState": "CALCULATED", "currency": "EUR", "products": [ {
|
||||||
|
"productTemplateId": "30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"productIcon": "001.jpg", "purchaseDateTime": "2026-04-02T12:38:28+02:00", "organisationName": "ProductRetailer HTM", "appliedValue": -125, "organisationId": "3", "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "N/A", "purchaseDateTime": "2025-07-09T12:39:27+02:00", "appliedValue": 139, "category": "SALES", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "1:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 116, "appliedMetric": "FARE", "appliedValue": 116, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "2:2000", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Basis Bus Tram Metro" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "BTM full fare" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2000-01-01T01:00:00+01:00", "validUntil": "2100-01-01T00:59:59+01:00", "weight": 23, "appliedMetric": "FARE", "appliedValue": 23, "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "payg" }
|
||||||
|
],
|
||||||
|
"xspit": "7618337f-c986-4bef-990d-f5a6b47292b8", "xpit": "f4256df6-b767-460f-9880-f7597bd7f3f2" },
|
||||||
|
{
|
||||||
|
"productTemplateId": "3:30901", "productCommercialName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "HTM 90% Korting" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "HTM 90% Discount" },
|
||||||
|
{
|
||||||
|
"key": "nl-NL", "value": "Reis je regelmatig met HTM? Activeer dan HTM 90% Korting op je betaalpas of credit card en reis een week lang met korting!" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Are you a regular traveler? Activate HTM 90% discount on your EMV card!" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"validFrom": "2026-04-03T04:00:00+02:00", "validUntil": "2031-04-03T04:00:00+02:00", "organisationName": "Product Owner HTM", "weight": -125, "appliedMetric": "DISCOUNT", "appliedValue": -125, "organisationId": "3", "category": "INTERNAL", "typesOfFareProduct": [ {
|
||||||
|
"privateCode": "discount" }
|
||||||
|
],
|
||||||
|
"discountPercentage": 90, "productCatalogVersionId": "PC-HTM:70", "xspit": "821ddb0d-4ea7-4a0d-84aa-bb7facce15d1", "xpit": "1848597c-5ba9-4dab-8d9f-3948948706a1" }
|
||||||
|
],
|
||||||
|
"appliedTimePeriods": [], "tariffJourneyStart": true, "topoDistance": 1161, "concessionId": "1", "appliedZones": [] }
|
||||||
|
],
|
||||||
|
"lastUpdatedTripDateTime": "2026-04-20T17:04:50+02:00", "fare": 14, "loyaltyOrDiscount": true, "supportCode": "pWM8Km6J8aHg5n", "tripVersionReason": "STRUCTURE", "checkinTransactionId": "00310F92-29023-emvClt-1776697188000", "checkoutTransactionId": "0030DBC1-30528-emvClt-1776697490000", "tariffVersionId": "HTM-CF1:278", "correlationId": "4bc7a040-71bf-4084-a61e-b2dd72092079", "createdAt": "2026-04-20T17:05:01.473+02:00", "entryTariffLocation": { "stopId": 2721, "stopName": { "items": [ {
|
||||||
|
"key": "nl-NL", "value": "Station Hollands Spoor" },
|
||||||
|
{
|
||||||
|
"key": "en-US", "value": "Station Hollands Spoor" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"stopDesc": "Stop point2721", "stopUrl": "/icons/stops/stop.svg", "locationType": 0 },
|
||||||
|
"traveledLines": [ {
|
||||||
|
"lineId": "17", "lineName": "Tram17" }
|
||||||
|
],
|
||||||
|
"tripFareNature": "FIXED", "paymentMethodId": "229a01ff-7bd9-4740-9b19-00637146a6ca", "paymentMethodMode": "PREPAID", "paymentMethodName": "EPURSE", "paymentProviderName": "TPURSE", "paymentProviderBusinessEntityId": "600027", "registryFragmentVersionId": "REG:27", "vehicleId": 5063, "xbot": "c85e34d6-f9c1-49c2-8574-59b37e0f3b8e" }
|
||||||
|
|
||||||
Loading…
Reference in New Issue
Block a user