ovpay/src/openapi/customers/SE-customers.yaml
2025-03-31 11:31:39 +02:00

2129 lines
90 KiB
YAML

openapi: 3.0.1
info:
title: Service Engine APIs for Customers
description: >-
Service Engine APIs for HTM Customers. These are NOT the CRUD APIs to access raw data in the database.
To be used by touchpoints to get information about HTM customers.
version: '1.0'
servers:
- url: https://api.integratielaag.nl/v1/touchpoint
tags:
- name: Customers
description: >-
Service Engine APIs for HTM Customers. These are NOT the CRUD APIs to access raw data in the database.
To be used by touchpoints to get information about HTM customers.
paths:
/customers:
get:
tags:
- Customers
summary: Get a single customer profile based on search parameters
description: Get a single customer profile based on search parameters. Only returns a profile if a single result matches the parameters; when multiple results are found, additional seach parameters are required to disambiguate.
parameters:
- name: customerProfileId
in: query
schema:
type: integer
example: 1
- name: customerNumber
in: query
schema:
type: integer
example: 1000001
- name: customerStatusId
in: query
schema:
type: integer
example: 1
- name: debtorNumber
in: query
schema:
type: integer
example: 100001
- name: debtorStatusId
in: query
schema:
type: integer
example: 1
- name: birthname
in: query
schema:
type: string
example: John
- name: surname
in: query
schema:
type: string
example: Doe
- name: emailAddress
in: query
schema:
type: string
format: email
example: john.doe@mymailprovider.com
- name: dateOfBirth
in: query
schema:
type: string
format: date
example: "2000-01-01"
- name: addressStreet
in: query
schema:
type: string
example: Sesamestreet
- name: addressHouseNumber
in: query
schema:
type: integer
example: 1
- name: addressHouseNumberSuffix
in: query
schema:
type: string
example: A
- name: addressPostalCode
in: query
schema:
type: string
example: 1234 AB
- name: addressCity
in: query
schema:
type: string
example: The Hague
- name: addressCountry
in: query
schema:
type: string
example: The Netherlands
- name: phoneNumber
in: query
schema:
type: string
example: "0123456789"
- name: ovChipcardNumber
in: query
schema:
type: integer
example: 0123456789
- name: ovChipcardAlias
in: query
schema:
type: string
example: My ovchipcard
- name: ovPayTokenNumber
in: query
schema:
type: integer
example: 0123456789
- name: ovPayTokenAlias
in: query
schema:
type: string
example: My Ov Pay Token
- name: ovPayTokenXTat
in: query
schema:
type: string
example: 180d04e0-a721-447e-a1d9-b416937b43bc
- name: ovPayTokenXBot
in: query
schema:
type: string
example: e1307c73-676a-4d07-967b-6141276f7c7c
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/CustomersResponse'
'404':
description: No customer found
content:
application/json:
example:
{
"type": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers",
"apiErrorCode": "400.1",
"title": "Niet gevonden",
"detail": "Klant niet gevonden",
"instance": "555d00b5-bc3f-4591-949b-479e76d49ea7",
"errors": [
{
"subApiErrorCode": "0017"
}
]
}
'409':
description: Multiple customers found
content:
application/json:
example:
{
"type": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers",
"apiErrorCode": "409.1",
"title": "Meer dan 1 klantprofiel gevonden",
"detail": "Meer dan 1 klantprofiel gevonden. Verfijn je zoekcriteria.",
"instance": "555d00b5-bc3f-4591-949b-479e76d49ea7"
}
/customers/tokens:
get:
tags:
- Customers
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: string
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- 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: ovPayTokenId
in: query
schema:
type: integer
example: 1
required: false
description: The ovpay token id of a specific customer token
- name: tokenTypeId
in: query
schema:
type: array
items:
type: integer
explode: false
description: Filter on tokentype. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital
required: false
- name: xTat
in: query
schema:
type: string
example: 4c2d60e2-cd03-4c80-ae70-573a301f0bff
required: false
description: Filter on the xTat of a customer token
- name: xBot
in: query
schema:
type: string
example: 91641b54-056c-49ea-b598-ccde81d6c45a
required: false
description: Filter on the xBot of a customer token
- name: ovpasNumber
in: query
schema:
type: string
example: 56HYRTL
required: false
description: Filter on the OV pasNumber of a customer token of type OV Pas
- name: lastDigits
in: query
schema:
type: string
example: 1234
required: false
description: Filter on the last digits of a customer token of type EMV
- name: tokenStatusId
in: query
schema:
type: array
items:
type: integer
explode: false
description: Filter on token status. 1 = Retired, 2 = Active, 3 = Replaced (*), 4 = On Stock, 5 = Suspended, 6 = Removed by customer (*), 7 = Renewed Active
required: false
- name: expirationDate
in: query
schema:
type: string
format: date-time
example: 2027-01-01T09:00:00Z
required: false
description: Filter on the expirationDate of a customer token
- name: replacedByTokenId
in: query
schema:
type: integer
example: 2
required: false
description: Filter on the replacedByTokenId of a customer token
summary: Get a list of all OvPayTokens for a certain customer.
description: Get a list of all OvPayTokens for a certain customer, only returns the tokens for an identified customer through JWT or customerProfileId in the headers.
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Empty token list:
summary: Empty token list
description: Empty token list
value:
{
"ovPayTokens": [
],
_links: {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "GET"
}
}
}
EMV without PAD:
summary: EMV without PAD
description: EMV without PAD
value:
{
"ovPayTokens": [
{
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 2,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/tokenPersonalizations?ovpaytokenId=1",
"method": "POST"
}
}
}
],
_links: {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "GET"
}
}
}
OV pas without PAD:
summary: OV pas without PAD
description: OV pas without PAD
value:
{
"ovPayTokens": [
{
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 2,
"autoReloadRegistration": null,
"ePurse": {
"e-PurseBalance": {
"currency": "EUR",
"amount": 350
},
"status": "ACTIVE",
"originDate": "2019-07-16T11:00:00+02:00"
},
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1",
"method": "POST"
}
}
}
],
_links: {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "GET"
}
}
}
OV pas with PAD and autoReload:
summary: OV pas with PAD and autoReload
description: OV pas with PAD and autoReload
value:
{
"ovPayTokens": [
{
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 2,
"autoReloadRegistration": {
"autoReloadAmount": 500,
"retailerReferenceId": "abc",
"arrit": "425f7fc2-1103-4822-9c79-7c4aaa2fb6aa",
"autoReloadRegistrationStatus": "ACTIVE",
"autoReloadRegistrationStartDateTime": "2024-06-02T15:03:46Z"
},
"ePurse": {
"e-PurseBalance": {
"currency": "EUR",
"amount": 350
},
"status": "ACTIVE",
"originDate": "2019-07-16T11:00:00+02:00"
},
"personalAccountData":{
"name": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
},
"birthDate": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
},
"photo": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
}
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips",
"method": "GET"
},
"update_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1",
"method": "PUT"
}
}
}
],
_links: {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "GET"
}
}
}
OV pas with partial PAD:
summary: OV pas with partial PAD
description: OV pas with partial PAD
value:
{
"ovPayTokens": [
{
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 2,
"autoReloadRegistration": null,
"ePurse": {
"e-PurseBalance": {
"currency": "EUR",
"amount": 350
},
"status": "ACTIVE",
"originDate": "2019-07-16T11:00:00+02:00"
},
"personalAccountData":{
"name": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
},
"birthDate": {
"inaccuracyFlag": true,
"inaccuracyFlagReason": "Invalid birthDate",
"inaccuracyFlagSetCounter": 1,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
},
"photo": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
}
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips",
"method": "GET"
},
"update_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1",
"method": "PUT"
}
}
}
],
_links: {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "GET"
}
}
}
OV pas with invalid PAD:
summary: OV pas with invalid PAD
description: OV pas with invalid PAD
value:
{
"ovPayTokens": [
{
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 2,
"autoReloadRegistration": null,
"ePurse": {
"e-PurseBalance": {
"currency": "EUR",
"amount": 350
},
"status": "ACTIVE",
"originDate": "2019-07-16T11:00:00+02:00"
},
"personalAccountData":{
"name": {
"inaccuracyFlag": true,
"inaccuracyFlagReason": "T.B.D",
"inaccuracyFlagSetCounter": 1,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
},
"birthDate": {
"inaccuracyFlag": true,
"inaccuracyFlagReason": "T.B.D",
"inaccuracyFlagSetCounter": 1,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
},
"photo": {
"inaccuracyFlag": true,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 1,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2024-08-24T14:15:22Z"
}
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips",
"method": "GET"
},
"update_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1",
"method": "PUT"
}
}
}
],
_links: {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "GET"
}
}
}
Token list with every status for tokenTypeId = 2, role = KlantenService :
summary: Token list with every status for tokenTypeId = 2, role = KlantenService
description: Token list with every status for tokenTypeId = 2, role = KlantenService
value:
{
"ovPayTokens": [
{
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData": {
"name": null,
"birthDate": null,
"photo": null,
}
},
{
"customerProfileId": 1,
"ovPayTokenId": 6,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 3,
"name": "Replaced (*)"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 2,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData": {
"name": null,
"birthDate": null,
"photo": null
}
},
{
"customerProfileId": 18,
"ovPayTokenId": 13,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 4,
"name": "On stock"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 2,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
}
},
{
"customerProfileId": 132,
"ovPayTokenId": 21,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "Mijn OV Pas",
"tokenStatus": {
"tokenStatusId": 5,
"name": "Suspended"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData": {
"name": null,
"birthDate": null,
"photo": null,
}
},
{
"customerProfileId": 166,
"ovPayTokenId": 28,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "Mijn OV Pas",
"tokenStatus": {
"tokenStatusId": 6,
"name": "Removed by customer (*)"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData": {
"name": null,
"birthDate": null,
"photo": null,
}
},
{
"customerProfileId": 166,
"ovPayTokenId": 115,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "My retired token",
"tokenStatus": {
"tokenStatusId": 1,
"name": "Retired"
},
"expirationDate": "2025-02-01",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData": {
"name": null,
"birthDate": null,
"photo": null,
}
},
{
"customerProfileId": 1,
"ovPayTokenId": 118,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "My found token",
"tokenStatus": {
"tokenStatusId": 7,
"name": "Renewed Active"
},
"expirationDate": "2028-02-01",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData": {
"name": null,
"birthDate": null,
"photo": null,
}
}
],
_links: {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "GET"
}
}
}
post:
tags:
- Customers
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: string
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- name: X-HTM-ROLE-HEADER
in: header
schema:
type: string
example: Customer
required: false
summary: Create a new OV paytoken in the database for a given customer
description: Create a new OV paytoken for a customerProfile
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Add EMV token:
summary: Add EMV token
description: Add EMV token
value:
{
"ovPayToken": {
"tokenTypeId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 200,
"alias": "Mijn token"
}
}
Add OV pas physical token:
summary: Add OV pas physical token
description: Add OV pas physical token
value:
{
"ovPayToken": {
"tokenTypeId": 2,
"ovpasNumber": "OV34567",
"verificationCode": "211",
"alias": "Mijn token"
}
}
responses:
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Add EMV token:
summary: Add EMV token
description: Add EMV token
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"lastDigits": null,
"OV pasNumber": null,
"alias": "Mijn token",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1",
"method": "POST"
}
}
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "POST"
}
}
}
Add OV pas physical token:
summary: Add EMV token
description: Add EMV token
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"lastDigits": null,
"OV pasNumber": "OV34567",
"alias": "Mijn token",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": {
"e-PurseBalance": {
"currency": "EUR",
"amount": 00
},
"status": "INACTIVE",
"originDate": "2019-07-16T11:00:00+02:00"
},
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1",
"method": "POST"
}
}
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "POST"
}
}
}
/customers/tokens/{ovpayTokenId}:
post:
tags:
- Customers
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: string
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- name: X-HTM-ROLE-HEADER
in: header
schema:
type: string
example: Customer
required: false
- name: ovpayTokenId
in: path
schema:
type: integer
example: 1
required: true
summary: Replace an OV paytoken with another
description: Replace an OV paytoken in the database for a given customer with another token
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Replace with new EMV token:
summary: Replace with new token
description: Replace with new token
value:
{
"ovPayToken": {
"newTokenId": null,
"tokenTypeId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 230,
"alias": "Nieuw token"
}
}
Replace with existing EMV token:
summary: Replace with existing token
description: Replace with existing token
value:
{
"ovPayToken": {
"newTokenId": 10
}
}
Replace with new OV pas token:
summary: Replace with new OV pas token
description: Replace with new OV pas token
value:
{
"ovPayToken": {
"tokenTypeId": 2,
"ovpasNumber": "OV34567",
"verificationCode": "211",
"alias": "Mijn token"
}
}
responses:
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Replace with new EMV token:
summary: Replace with new EMV token
description: Replace with new EMV token
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 5,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"lastDigits": null,
"OV pasNumber": null,
"alias": "Mijn token",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5",
"method": "POST"
}
}
}
}
Replace with new OV pas token:
summary: Replace with new OV pas token
description: Replace with new OV pas token
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 5,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"lastDigits": null,
"OV pasNumber":"OV34567",
"alias": "Mijn token",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": {
"e-PurseBalance": {
"currency": "EUR",
"amount": 350
},
"status": "ACTIVE",
"originDate": "2024-07-16T11:00:00+02:00"
},
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5",
"method": "POST"
}
}
}
}
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Replace with existing EMV token:
summary: Replace with existing EMV token
description: Replace with existing EMV token
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 10,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"lastDigits": null,
"OV pasNumber": null,
"alias": "Mijn bestaandetoken",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=10",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=10",
"method": "POST"
}
}
}
}
patch:
tags:
- Customers
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: string
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- name: X-HTM-ROLE-HEADER
in: header
schema:
type: string
example: Customer
required: false
- name: ovpayTokenId
in: path
schema:
type: integer
example: 1
required: true
summary: Edit an existing OV paytoken
description: Edit an existing OV paytoken in the database for a given customer
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Update an OV pay token status:
summary: Update an OV pay token status
description: Update an OV pay token status
value:
{
"ovPayToken": {
"tokenStatusId": 5
}
}
Update an OV pay token alias:
summary: Update an OV pay token alias
description: Update an OV pay token alias
value:
{
"ovPayToken": {
"alias": "Mijn nieuwe tokennaam"
}
}
Update an OV pay token full:
summary: Update an OV pay token full
description: Update an OV pay token full
value:
{
"ovPayToken": {
"tokenStatusId": 5,
"alias": "Mijn verloren pas"
}
}
responses:
"200":
description: Ok
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Update an OV pay token status:
summary: Update an OV pay token status
description: Update an OV pay token status
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"lastDigits": null,
"OV pasNumber": null,
"alias": "Mijn token",
"tokenStatus": {
"tokenStatusId": 5,
"name": "Suspended"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5",
"method": "POST"
}
}
}
}
Update an OV pay token alias:
summary: Update an OV pay token alias
description: Update an OV pay token alias
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"lastDigits": null,
"OV pasNumber": null,
"alias": "Mijn nieuwe tokennaam",
"tokenStatus": {
"tokenStatusId": 2,
"name": "Active"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5",
"method": "POST"
}
}
}
}
Update an OV pay token full:
summary: Update an OV pay token full
description: Update an OV pay token full
value:
{
"ovPayToken": {
"customerProfileId": 1,
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"lastDigits": null,
"OV pasNumber": null,
"alias": "Mijn verloren pas",
"tokenStatus": {
"tokenStatusId": 5,
"name": "Suspended"
},
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": 0,
"autoReloadRegistration": null,
"ePurse": null,
"personalAccountData":{
"name": null,
"birthDate": null,
"photo": null
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5",
"method": "GET"
},
"partial_edit": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "PATCH"
},
"replace_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "POST"
},
"delete_token": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5",
"method": "DELETE"
},
"get_productinstances": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances",
"method": "GET"
},
"get_trips": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips",
"method": "GET"
},
"create_tokenPersonalization": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5",
"method": "POST"
}
}
}
}
delete:
tags:
- Customers
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: string
example: feaaef83-a551-4283-8419-340b1ada3b55
required: false
description: The customerProfileId of a customer in the case of the SMP
- name: X-HTM-ROLE-HEADER
in: header
schema:
type: string
example: Customer
required: false
- name: ovpayTokenId
in: path
schema:
type: integer
example: 1
required: true
summary: Delete an existing OV paytoken
description: Delete an existing OV paytoken for a given customer
responses:
"200":
description: Ok
/customers/tokens/{ovPayTokenId}/productinstances:
get:
tags:
- Customers
summary: Get a list of all HTM products instantiated on the given OvPayToken
description: |-
Get a list of all HTM products instantiated on the given OvPayToken.
Only HTM products are returned; GBO does not allow HTM to get information on non-HTM product-instances.
Where relevant, operations to be performed are returned as HATEOAS links per product-instance.
parameters:
- name: ovPayTokenId
in: path
required: true
style: simple
description: Id of the OvPayToken to get product-instances for.
schema:
type: integer
example: 1
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/OvPayTokenProductInstancesResponse'
examples:
getEmptyProductInstances:
summary: No product-instances found on token
value:
productInstances: []
getSingleProductInstance:
summary: One non-renewable product-instance
value:
{
"productInstances": [
{
"productId": 1,
"name": "HTM 90% Korting",
"status": "Active",
"isRenewable": true,
"productCategory": {
"productCategoryId": 1,
"name": "Kortingsabonnement"
},
"fromInclusive": "2024-11-25T13:25:00+01:00",
"untilInclusive": "2024-12-25T03:59:59+01:00",
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
"contractId": "56B17EF-C436-9043-B76C-481797WEB464F",
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances/1",
"method": "GET"
},
"get_order": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/orders/501B17EF-36C4-4039-B92C-6517969B464E",
"method": "GET"
},
"get_contract": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F",
"method": "GET"
}
}
}
]
}
components:
schemas:
unavailable:
type: object
CustomersResponse:
type: object
properties:
customerProfileId:
type: integer
example: 1
customerNumber:
type: integer
example: 1000001
customerStatus:
type: object
properties:
customerStatusId:
type: integer
example: 1
name:
type: string
example: Active
debtorNumber:
type: string
example: DB100001
debtorStatus:
type: object
properties:
debtorStatusId:
type: integer
example: 1
name:
type: string
example: Active
person:
type: object
properties:
prefix:
type: string
example: Mr
birthname:
type: string
example: John
surname:
type: string
example: Doe
suffix:
type: string
example: Jr.
dateOfBirth:
type: string
format: date
example: '2023-02-01'
emailAddress:
type: string
format: email
example: 4j2dD@example.com
addresses:
type: array
items:
type: object
properties:
addressId:
type: integer
example: 1
isPreferred:
type: boolean
example: true
addressType:
type: object
properties:
addressTypeId:
type: integer
example: 1
name:
type: string
example: Home
street:
type: string
example: Appelstraat
houseNumber:
type: integer
example: 1
houseNumberSuffix:
type: string
example: BS
postalCode:
type: string
example: 1234AB
city:
type: string
example: Den Haag
country:
type: string
example: Nederland
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/addresses/1
method:
type: string
example: GET
delete_address:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/addresses/1
method:
type: string
example: DELETE
phones:
type: array
items:
type: object
properties:
phoneId:
type: integer
example: 1
isPreferred:
type: boolean
example: true
phoneType:
type: object
properties:
phoneTypeId:
type: integer
example: 1
name:
type: string
example: Home
number:
type: string
example: "0123456789"
countryCode:
type: string
example: "0031"
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/phones/1
method:
type: string
example: GET
delete_phone:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/phones/1
method:
type: string
example: DELETE
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers
method:
type: string
example: GET
create_customer_status:
type: object
description: ONLY ALLOWED FOR SMP - Create a new customer status
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/statuses
method:
type: string
example: POST
partial_edit:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers
method:
type: string
example: PATCH
get_tokens:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens
method:
type: string
example: GET
create_token:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens
method:
type: string
example: POST
OvPayTokensResponse:
type: object
required:
- ovPayTokens
properties:
ovPayTokens:
type: array
items:
type: object
properties:
ovPayTokenId:
type: integer
example: 1
tokenType:
type: object
properties:
tokenTypeId:
type: integer
example: 1
name:
type: string
example: EMV
alias:
type: string
example: MyToken
tokenStatus:
type: object
properties:
tokenStatusId:
type: integer
example: 1
name:
type: string
example: Active
expirationDate:
type: string
format: date
example: '2023-02-01'
replacedByTokenId:
type: integer
example: 1
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1
method:
type: string
example: GET
partial_edit:
type: object
description: External touchpoints are only allowed to change alias - SMP can also change tokenStatus
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1
method:
type: string
example: PATCH
replace_token:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace
method:
type: string
example: POST
delete_token:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1
method:
type: string
example: DELETE
get_productinstances:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances
method:
type: string
example: GET
get_trips:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips
method:
type: string
example: GET
OvPayTokenProductInstancesResponse:
type: object
properties:
productInstances:
type: array
items:
type: object
properties:
productId:
type: integer
example: 1
name:
type: string
example: HTM 90% Korting
status:
type: string
enum: [ "Active", "Ended", "Refunded" ]
example: Active
isRenewable:
type: boolean
example: true
productCategory:
type: object
description: The category of the originating HTM product definition
properties:
productCategoryId:
type: integer
example: 1
name:
type: string
example: Kortingsabonnement
fromInclusive:
type: string
format: date-time-offset
example: "2024-11-25T13:25:00+01:00"
untilInclusive:
type: string
format: date-time-offset
description: >-
If not present, this product-instance represents a subscription/contract without a real end date. If present, it can be either the natural end date or the refund timestamp.
example: "2024-12-25T03:59:59+01:00"
orderId:
type: string
format: uuid
example: 501B17EF-36C4-4039-B92C-6517969B464E
orderLineId:
type: string
format: uuid
example: 38B17EF-36C4-4039-B92C-4817969B464E
contractId:
type: string
format: uuid
example: 56B17EF-C436-9043-B76C-481797WEB464F
description: Only present for subscriptions/contracts
_links:
type: object
properties:
self:
type: object
properties:
href:
type: string
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances
method:
type: string
example: GET
get_order:
type: object
properties:
href:
type: string
description: Always present for any HTM product-instance
example: https://api.integratielaag.nl/abt/1.0/touchpoint/orders/501B17EF-36C4-4039-B92C-6517969B464E
method:
type: string
example: GET
get_contract:
type: object
properties:
href:
type: string
description: Only present for subscriptions/contracts
example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F
method:
type: string
example: GET