ovpay/src/openapi/customers/SE-customers.yaml
2025-03-27 16:14:55 +01:00

1455 lines
59 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 ovpaytoken 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 ovPasNumber 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 = Expired, 2 = Active, 3 = Replaced, 4 = Inactive, 5 = Suspended, 6 = Removed by customer
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: replaceByTokenId
in: query
schema:
type: integer
example: 2
required: false
description: Filter on the replaceByTokenId 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:
EMV without PAD:
summary: EMV without PAD
description: EMV without PAD
value:
{
"ovPayTokens": [
{
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 1,
"name": "EMV"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 1,
"name": "Active"
},
"expirationDate": "2023-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"
}
}
}
]
}
OVPAS without PAD:
summary: OVPAS without PAD
description: OVPAS without PAD
value:
{
"ovPayTokens": [
{
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 1,
"name": "Active"
},
"expirationDate": "2023-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"
}
}
}
]
}
OVPAS with PAD:
summary: OVPAS with PAD
description: OVPAS with PAD
value:
{
"ovPayTokens": [
{
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 1,
"name": "Active"
},
"expirationDate": "2023-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": "2019-08-24T14:15:22Z"
},
"birthDate": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2019-08-24T14:15:22Z"
},
"photo": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2019-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"
}
}
}
]
}
OVPAS with partial PAD:
summary: OVPAS with partial PAD
description: OVPAS with partial PAD
value:
{
"ovPayTokens": [
{
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 1,
"name": "Active"
},
"expirationDate": "2023-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": "2019-08-24T14:15:22Z"
},
"birthDate": {
"inaccuracyFlag": true,
"inaccuracyFlagReason": "Invalid birthDate",
"inaccuracyFlagSetCounter": 1,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2019-08-24T14:15:22Z"
},
"photo": {
"inaccuracyFlag": false,
"inaccuracyFlagReason": null,
"inaccuracyFlagSetCounter": 0,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2019-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"
}
}
}
]
}
OVPAS with invalid PAD:
summary: OVPAS with invalid PAD
description: OVPAS with invalid PAD
value:
{
"ovPayTokens": [
{
"ovPayTokenId": 1,
"tokenType": {
"tokenTypeId": 2,
"name": "OV-pas physical"
},
"alias": "MyToken",
"tokenStatus": {
"tokenStatusId": 1,
"name": "Active"
},
"expirationDate": "2023-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": "2019-08-24T14:15:22Z"
},
"birthDate": {
"inaccuracyFlag": true,
"inaccuracyFlagReason": "T.B.D",
"inaccuracyFlagSetCounter": 1,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2019-08-24T14:15:22Z"
},
"photo": {
"inaccuracyFlag": true,
"inaccuracyFlagReason": "T.B.D",
"inaccuracyFlagSetCounter": 1,
"isValidated": false,
"changeCounter": 0,
"maxUpdatesVerificationCount": 0,
"lastChangeDate": "2019-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"
}
}
}
]
}
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 OVpas physical token:
summary: Add OVpas physical token
description: Add OVpas 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": 8,
"ovPayTokenId": 1,
"tokenTypeId": 1,
"lastDigits": null,
"ovpasNumber": null,
"alias": "Mijn token",
"tokenStatusId": 2,
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": null,
"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 OVpas physical token:
summary: Add EMV token
description: Add EMV token
value:
{
"ovPayToken": {
"customerProfileId": 8,
"ovPayTokenId": 1,
"tokenTypeId": 2,
"lastDigits": null,
"ovpasNumber": "OV34567",
"alias": "Mijn token",
"tokenStatusId": 2,
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": null,
"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 for a customerProfile
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"
}
}
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": 8,
"ovPayTokenId": 5,
"tokenTypeId": 1,
"lastDigits": null,
"ovpasNumber": null,
"alias": "Mijn token",
"tokenStatusId": 2,
"expirationDate": "2028-08-31T23:59:00+02:00",
"replacedByTokenId": null,
"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/replace",
"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"
}
}
},
"_links": {
"self": {
"href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens",
"method": "POST"
}
}
}
/customers/tokens/{ovPayTokenId}/productinstances:
get:
tags:
- ServiceEngine 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