3478 lines
155 KiB
YAML
3478 lines
155 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 search 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/touchpoint/1.0/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/touchpoint/1.0/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/touchpoint/1.0/customers/tokens",
|
|
"method": "GET",
|
|
},
|
|
},
|
|
}
|
|
EMV without PAD:
|
|
summary: EMV without PAD
|
|
description: EMV without PAD
|
|
value:
|
|
{
|
|
"ovPayTokens":
|
|
[
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate": null,
|
|
"photo": null,
|
|
},
|
|
"_links":
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
_links:
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens",
|
|
"method": "GET",
|
|
},
|
|
},
|
|
}
|
|
OV pas without PAD:
|
|
summary: OV pas without PAD
|
|
description: OV pas without PAD
|
|
value:
|
|
{
|
|
"ovPayTokens":
|
|
[
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/51compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
_links:
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"update_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "PATCH",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
_links:
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse":
|
|
{
|
|
"e-PurseBalance":
|
|
{ "currency": "EUR", "amount": 350 },
|
|
"status": "ACTIVE",
|
|
"originDate": "2019-07-16T11:00:00+02:00",
|
|
},
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate":
|
|
{
|
|
"inaccuracyFlag": true,
|
|
"inaccuracyFlagReason": "Invalid birthdate",
|
|
"inaccuracyFlagSetCounter": 1,
|
|
"isValidated": false,
|
|
"changeCounter": 0,
|
|
"maxUpdatesVerificationCount": 0,
|
|
"lastChangeDate": "2024-08-24T14:15:22Z",
|
|
},
|
|
"photo": null,
|
|
},
|
|
"_links":
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"update_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "PATCH",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
_links:
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"update_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "PATCH",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
_links:
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/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,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate": null,
|
|
"photo": null,
|
|
},
|
|
},
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 6,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"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,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 4, "name": "On stock" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate": null,
|
|
"photo": null,
|
|
},
|
|
},
|
|
{
|
|
"customerProfileId": 132,
|
|
"ovPayTokenId": 21,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "Mijn OV Pas",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 5, "name": "Suspended" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate": null,
|
|
"photo": null,
|
|
},
|
|
},
|
|
{
|
|
"customerProfileId": 166,
|
|
"ovPayTokenId": 28,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "Mijn OV Pas",
|
|
"tokenStatus":
|
|
{
|
|
"tokenStatusId": 6,
|
|
"name": "Removed by customer (*)",
|
|
},
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate": null,
|
|
"photo": null,
|
|
},
|
|
},
|
|
{
|
|
"customerProfileId": 166,
|
|
"ovPayTokenId": 115,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "My retired token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 1, "name": "Retired" },
|
|
"expirationDate": "2025-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate": null,
|
|
"photo": null,
|
|
},
|
|
},
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 118,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "My found token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 7, "name": "Renewed Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate": null,
|
|
"photo": null,
|
|
},
|
|
},
|
|
],
|
|
_links:
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovPasNumber": null,
|
|
"alias": "Mijn token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
"_links":
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
}
|
|
Add OV pas physical token:
|
|
summary: Add OV pas physical token
|
|
description: Add OV pas physical token
|
|
value:
|
|
{
|
|
"ovPayToken":
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": "OV34567",
|
|
"alias": "Mijn token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
"_links":
|
|
{
|
|
"self":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/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 OVpay token with another (+ transfer products) - V1 (for touch point)
|
|
description: |
|
|
Transfer products from one OVpay token to another, and replace the tokens in the database.
|
|
This endpoint is for touch point usage and will be replaced by `/customers/tokens/{ovpayTokenId}/transfer`.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Replace with new EMV token by SRID:
|
|
summary: Replace with new token by SRID
|
|
description: Replace with new token by service reference ID and amount.
|
|
value:
|
|
{
|
|
"ovPayToken":
|
|
{
|
|
"newTokenId": null,
|
|
"tokenTypeId": 1,
|
|
"serviceReferenceId": "NLOV1234567ABCDEFG",
|
|
"amount": 230,
|
|
"alias": "Nieuw token",
|
|
},
|
|
}
|
|
Replace with existing EMV token from profile:
|
|
summary: Replace with existing token from profile
|
|
description: Replace with existing token from customer profile.
|
|
value: { "ovPayToken": { "newTokenId": 10 } }
|
|
Replace with new OV pas token:
|
|
summary: Replace with new OV pas token
|
|
description: Replace with new OV pas token by OV-pas number.
|
|
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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": null,
|
|
"alias": "Mijn token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=5",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": "OV34567",
|
|
"alias": "Mijn token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-08-31T23:59:00+02:00",
|
|
"replacedByTokenId": null,
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=5",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": null,
|
|
"alias": "Mijn bestaande token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=10",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10/compare",
|
|
"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": 5,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": null,
|
|
"alias": "Mijn token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 5, "name": "Suspended" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=5",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"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": 5,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": null,
|
|
"alias": "Mijn nieuwe tokennaam",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=5",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"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": 5,
|
|
"xTat": "e35977b2-52bb-48ef-aca8-297b2c1d5058",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": null,
|
|
"alias": "Mijn verloren pas",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 5, "name": "Suspended" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=5",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/e35977b2-52bb-48ef-aca8-297b2c1d5058",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"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}/replace:
|
|
post:
|
|
tags:
|
|
- Token Replace v2
|
|
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 OVpay token with another (+ transfer products) - V2 (for Integratielaag)
|
|
description: |
|
|
Transfer products from one OVpay token to another, and replace the tokens in the database.
|
|
This endpoint is for usage by integratielaag only. Touch points should use
|
|
`/customers/tokens/{ovpayTokenId}/transfer` instead.
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Replace with new token by XTAT:
|
|
summary: Replace with new token by XTAT
|
|
description: |
|
|
Replace with new token by XTAT. Note however the consumer provides an XTAT to identify
|
|
the new token, this token could still be an existing token linked to the customer profile. This should
|
|
be checked beforehand.
|
|
value:
|
|
{
|
|
"ovPayToken":
|
|
{
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": null,
|
|
"alias": "Mijn token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=5",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": "OV34567",
|
|
"alias": "Mijn token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-08-31T23:59:00+02:00",
|
|
"replacedByTokenId": null,
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=5",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare",
|
|
"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,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"lastDigits": null,
|
|
"ovpasNumber": null,
|
|
"alias": "Mijn bestaande token",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=10",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10/trips",
|
|
"method": "GET",
|
|
},
|
|
"add_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"method": "POST",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/10/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
/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/touchpoint/1.0/customers/tokens/1/productinstances/1",
|
|
"method": "GET",
|
|
},
|
|
"get_order":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E",
|
|
"method": "GET",
|
|
},
|
|
"get_contract":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F",
|
|
"method": "GET",
|
|
},
|
|
},
|
|
},
|
|
],
|
|
}
|
|
/customers/tokens/{ovPayTokenId}/compare:
|
|
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
|
|
required: true
|
|
style: simple
|
|
description: Id of the OVpay token for the LHS of the comparison.
|
|
schema:
|
|
type: integer
|
|
example: 1
|
|
post:
|
|
summary: Compare attributes of two OVpay tokens.
|
|
description: |-
|
|
Compare the attributes of an existing OVpay token in the customer profile with the
|
|
attributes of a new OVpay token. The new token can be passed using one of the following
|
|
methods:
|
|
|
|
- Compare with an existing OVpay token
|
|
- Compare with an XBOT
|
|
- Compare with an XTAT
|
|
- Compare with SRID + amount
|
|
- Compare with OVpas number + verification code
|
|
|
|
The comparison results are returned in the response body. Comparison is made on the following
|
|
attributes:
|
|
|
|
- Token type
|
|
- Token status (only if target token is known in the customer profile)
|
|
- Expiry date
|
|
- Instantiated GBO products
|
|
- Auto reload registration
|
|
- E-purse
|
|
- PAD (name, birthdate, photo)
|
|
- Age profile
|
|
tags:
|
|
- Customers
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/CompareRequest"
|
|
examples:
|
|
Compare with an existing OVpay token:
|
|
value: { "ovPayTokenId": 1 }
|
|
Compare with an xBOT:
|
|
value: { "xBot": "e35977b2-52bb-48ef-aca8-297b2c1d5058" }
|
|
Compare with an xTAT:
|
|
value: { "xTat": "e35977b2-52bb-48ef-aca8-297b2c1d5058" }
|
|
Compare with SRID + amount:
|
|
value:
|
|
{ "serviceReferenceId": "NLOV1234567ABCDEFG", "amount": 230 }
|
|
Compare with OVpas number + verification code:
|
|
value: { "ovpasNumber": "OV34567", "verificationCode": "1234" }
|
|
Complete request body (for development only):
|
|
value:
|
|
{
|
|
"ovPayTokenId": 1,
|
|
"xBot": "e35977b2-52bb-48ef-aca8-297b2c1d5058",
|
|
"xTat": "e35977b2-52bb-48ef-aca8-297b2c1d5058",
|
|
"serviceReferenceId": "NLOV1234567ABCDEFG",
|
|
"amount": 230,
|
|
"ovpasNumber": "OV34567",
|
|
"verificationCode": "1234",
|
|
}
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Transferable token:
|
|
value:
|
|
{
|
|
"oldOvPayToken":
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{ "name": null, "birthdate": null, "photo": null },
|
|
},
|
|
"newOvPayToken":
|
|
{
|
|
"customerProfileId": null,
|
|
"ovPayTokenId": null,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": null,
|
|
"tokenStatus": null,
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{ "name": null, "birthdate": null, "photo": null },
|
|
},
|
|
"isTransferable": true,
|
|
"transferableObjects":
|
|
{
|
|
"tokenType": true,
|
|
"tokenStatus": true,
|
|
"expirationDate": true,
|
|
"productInstances": true,
|
|
"autoReloadRegistration": true,
|
|
"ePurse": true,
|
|
"personalAccountData":
|
|
{ "name": true, "birthdate": true, "photo": true },
|
|
},
|
|
"_links":
|
|
{
|
|
"transfer":
|
|
{
|
|
"href": "https://services.dev.api.htm.nl/abt/touchpoint/1.0/customers/tokens/1/transfer",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
}
|
|
Non-transferable token (products not compatible on new token):
|
|
value:
|
|
{
|
|
"oldOvPayToken":
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{ "name": null, "birthdate": null, "photo": null },
|
|
},
|
|
"newOvPayToken":
|
|
{
|
|
"customerProfileId": null,
|
|
"ovPayTokenId": null,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": null,
|
|
"tokenStatus": null,
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{ "name": null, "birthdate": null, "photo": null },
|
|
},
|
|
"isTransferable": false,
|
|
"transferableObjects":
|
|
{
|
|
"tokenType": true,
|
|
"tokenStatus": true,
|
|
"expirationDate": true,
|
|
"productInstances": false,
|
|
"autoReloadRegistration": true,
|
|
"ePurse": true,
|
|
"personalAccountData":
|
|
{ "name": true, "birthdate": true, "photo": true },
|
|
},
|
|
"_links": {},
|
|
}
|
|
Non-transferable token (unsupported token type combination):
|
|
value:
|
|
{
|
|
"oldOvPayToken":
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{ "name": null, "birthdate": null, "photo": null },
|
|
},
|
|
"newOvPayToken":
|
|
{
|
|
"customerProfileId": null,
|
|
"ovPayTokenId": null,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": null,
|
|
"tokenStatus": null,
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{ "name": null, "birthdate": null, "photo": null },
|
|
},
|
|
"isTransferable": false,
|
|
"transferableObjects":
|
|
{
|
|
"tokenType": false,
|
|
"tokenStatus": true,
|
|
"expirationDate": true,
|
|
"productInstances": true,
|
|
"autoReloadRegistration": true,
|
|
"ePurse": true,
|
|
"personalAccountData":
|
|
{ "name": true, "birthdate": true, "photo": true },
|
|
},
|
|
"_links": {},
|
|
}
|
|
Non-transferable token (marked PAD):
|
|
value:
|
|
{
|
|
"oldOvPayToken":
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": "MyToken",
|
|
"tokenStatus":
|
|
{ "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": 2,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"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",
|
|
},
|
|
},
|
|
},
|
|
"newOvPayToken":
|
|
{
|
|
"customerProfileId": null,
|
|
"ovPayTokenId": null,
|
|
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": null,
|
|
"tokenStatus": null,
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{ "name": null, "birthdate": null, "photo": null },
|
|
},
|
|
"isTransferable": false,
|
|
"transferableObjects":
|
|
{
|
|
"tokenType": true,
|
|
"tokenStatus": true,
|
|
"expirationDate": true,
|
|
"productInstances": true,
|
|
"autoReloadRegistration": true,
|
|
"ePurse": true,
|
|
"personalAccountData":
|
|
{
|
|
"name": false,
|
|
"birthdate": false,
|
|
"photo": false,
|
|
},
|
|
},
|
|
"_links": {},
|
|
}
|
|
Non-transferable token (different age profile):
|
|
value:
|
|
{
|
|
"oldOvPayToken":
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 1,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"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":
|
|
{
|
|
"inaccuracyFlag": false,
|
|
"inaccuracyFlagReason": "T.B.D",
|
|
"inaccuracyFlagSetCounter": 1,
|
|
"isValidated": false,
|
|
"changeCounter": 0,
|
|
"maxUpdatesVerificationCount": 0,
|
|
"lastChangeDate": "2024-08-24T14:15:22Z",
|
|
},
|
|
"photo": null,
|
|
},
|
|
},
|
|
"newOvPayToken":
|
|
{
|
|
"customerProfileId": null,
|
|
"ovPayTokenId": null,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
|
"alias": null,
|
|
"tokenStatus": null,
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"autoReloadRegistration": null,
|
|
"ePurse": null,
|
|
"personalAccountData":
|
|
{
|
|
"name": null,
|
|
"birthdate":
|
|
{
|
|
"inaccuracyFlag": false,
|
|
"inaccuracyFlagReason": "T.B.D",
|
|
"inaccuracyFlagSetCounter": 1,
|
|
"isValidated": false,
|
|
"changeCounter": 0,
|
|
"maxUpdatesVerificationCount": 0,
|
|
"lastChangeDate": "2024-08-24T14:15:22Z",
|
|
},
|
|
"photo": null,
|
|
},
|
|
},
|
|
"isTransferable": false,
|
|
"transferableObjects":
|
|
{
|
|
"tokenType": true,
|
|
"tokenStatus": true,
|
|
"expirationDate": true,
|
|
"productInstances": true,
|
|
"autoReloadRegistration": true,
|
|
"ePurse": false,
|
|
"personalAccountData":
|
|
{ "name": true, "birthdate": false, "photo": true },
|
|
},
|
|
"_links": {},
|
|
}
|
|
"400":
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
New token already present in other customer profile:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/badrequest",
|
|
"title": "Bad Request",
|
|
"detail": "New token already present in other customer profile.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "New token already present in other customer profile.",
|
|
"pointer": "#/0/ovPayTokenId",
|
|
"ovPayTokenId": 2,
|
|
},
|
|
],
|
|
}
|
|
"404":
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Old token not found in profile:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notfound",
|
|
"title": "The item you requested was not found.",
|
|
"detail": "The old token was not found in the customer profile.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The old token was not found in the customer profile.",
|
|
"pointer": "#/0/ovPayTokenId",
|
|
"ovPayTokenId": 1,
|
|
},
|
|
],
|
|
}
|
|
New token not found in profile:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notfound",
|
|
"title": "The item you requested was not found.",
|
|
"detail": "The new token was not found in the customer profile.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The new token was not found in the customer profile.",
|
|
"pointer": "#/0/ovPayTokenId",
|
|
"ovPayTokenId": 2,
|
|
},
|
|
],
|
|
}
|
|
XTAT for new token not found in GBO:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notfound",
|
|
"title": "The item you requested was not found.",
|
|
"detail": "The new token was not found in GBO:.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "XTAT for the new token was not found in GBO.",
|
|
"pointer": "#/0/xTat",
|
|
"xTat": "e35977b2-52bb-48ef-aca8-297b2c1d5058",
|
|
},
|
|
],
|
|
}
|
|
SRID for new token not found in GBO:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notfound",
|
|
"title": "The item you requested was not found.",
|
|
"detail": "The new token was not found in GBO:.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "Service Reference ID for the new token was not found in GBO.",
|
|
"pointer": "#/0/serviceReferenceId",
|
|
"serviceReferenceId": "NLOV1234567ABCDEFG",
|
|
},
|
|
],
|
|
}
|
|
/customers/tokens/{ovPayTokenId}/transfer:
|
|
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
|
|
required: true
|
|
style: simple
|
|
description: Id of the OVpay token from which data will be transferred.
|
|
schema:
|
|
type: integer
|
|
example: 1
|
|
post:
|
|
summary: "**INTEGRATIELAAG** Transfer old OVpay token to new OVpay token."
|
|
description: |-
|
|
**Note that this is an integratielaag endpoint, not a Service Engine endpoint!**
|
|
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
|
|
of the old token. This call is asynchronous, and progress can be monitored using the
|
|
`/customers/tokens/transfer/responsestatus/*` endpoint.
|
|
tags:
|
|
- Token Replace v2
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/TransferRequest"
|
|
examples:
|
|
Transfer from a token without PAD to a new token:
|
|
summary: Transfer from a token without PAD to a new token
|
|
description: |
|
|
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
|
|
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.
|
|
value:
|
|
{
|
|
"oldOvPayToken": {},
|
|
"newOvPayToken":
|
|
{
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"alias": "My new token",
|
|
},
|
|
}
|
|
? 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: |
|
|
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
|
|
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
|
|
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.
|
|
value:
|
|
{
|
|
"oldOvPayToken": { "padOtp": "123456" },
|
|
"newOvPayToken":
|
|
{
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"alias": "My new token",
|
|
"padEmailAddress": "jandevries@outlook.com",
|
|
"padOtp": "678901",
|
|
},
|
|
}
|
|
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: |
|
|
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
|
|
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.
|
|
value:
|
|
{
|
|
"oldOvPayToken": { "padOtp": "123456" },
|
|
"newOvPayToken":
|
|
{
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"alias": "My new token",
|
|
"padOtp": "678901",
|
|
},
|
|
}
|
|
Complete request body (for development only):
|
|
summary: Complete request body (for development only)
|
|
description: |
|
|
Complete request body (for development only).
|
|
value:
|
|
{
|
|
"oldOvPayToken": { "padOtp": "123456" },
|
|
"newOvPayToken":
|
|
{
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"alias": "My new token",
|
|
"padEmailAddress": "jandevries@outlook.com",
|
|
"padOtp": "678901",
|
|
},
|
|
}
|
|
responses:
|
|
"202":
|
|
description: Accepted
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Transfer of token started:
|
|
description: |
|
|
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
|
|
processing status.
|
|
value:
|
|
{
|
|
"startTime": "2025-02-14T05:32:47.067Z",
|
|
"status": "Running",
|
|
"clientTrackingId": "08584620957189579629541919368CU00",
|
|
"callbackurl": "https://api.integratielaag.nl/customers/tokens/transfer/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c",
|
|
"retryAfter": 10,
|
|
}
|
|
"400":
|
|
description: Bad Request
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Request body validation error:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/validation",
|
|
"title": "Validation error",
|
|
"detail": "The request body is not valid.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The old token is required.",
|
|
"pointer": "#/oldOvPayToken",
|
|
},
|
|
{
|
|
"detail": "The new token is required.",
|
|
"pointer": "#/newOvPayToken",
|
|
},
|
|
],
|
|
}
|
|
/customers/tokens/transfer/responsestatus/{clientTrackingId}:
|
|
parameters:
|
|
- in: path
|
|
name: clientTrackingId
|
|
schema:
|
|
type: string
|
|
required: true
|
|
description: The clientTrackingId of the token transfer request.
|
|
get:
|
|
tags:
|
|
- Token Replace v2
|
|
summary: "**INTEGRATIELAAG** Get the status of the initiated token transfer process (POST)."
|
|
description: |
|
|
**Note that this is an integratielaag endpoint, not a Service Engine endpoint!** Get the status of the
|
|
asynchronous token transfer processing.
|
|
responses:
|
|
"200":
|
|
description: OK
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
New token as a result of a successful transfer:
|
|
description: |
|
|
The transfer of the token was processed successfully. The response body shows the details of the new
|
|
token to which the data was transferred.
|
|
value:
|
|
{
|
|
"customerProfileId": 1,
|
|
"ovPayTokenId": 2,
|
|
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"tokenType":
|
|
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
|
"alias": "MyToken",
|
|
"tokenStatus": { "tokenStatusId": 2, "name": "Active" },
|
|
"expirationDate": "2028-02-01",
|
|
"replacedByTokenId": null,
|
|
"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/touchpoint/1.0/customers/tokens?ovpaytokenId=1",
|
|
"method": "GET",
|
|
},
|
|
"partial_edit":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "PATCH",
|
|
},
|
|
"delete_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1",
|
|
"method": "DELETE",
|
|
},
|
|
"get_productinstances":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances",
|
|
"method": "GET",
|
|
},
|
|
"get_trips":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips",
|
|
"method": "GET",
|
|
},
|
|
"update_personal-data":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/personal-data/e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
|
"method": "PATCH",
|
|
},
|
|
"compare_token":
|
|
{
|
|
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/compare",
|
|
"method": "POST",
|
|
},
|
|
},
|
|
}
|
|
Token transfer in progress:
|
|
description: |
|
|
The transfer of the token is still in progress. The response body shows the details of the
|
|
processing status.
|
|
value:
|
|
{
|
|
"properties":
|
|
{
|
|
"waitEndTime": "2025-06-04T09:29:21.9641991Z",
|
|
"startTime": "2025-06-04T09:29:21.9641991Z",
|
|
"status": "Running",
|
|
"correlation":
|
|
{
|
|
"clientTrackingId": "08584525775244808022011782750CU00",
|
|
},
|
|
"workflow":
|
|
{
|
|
"id": "/workflows/9cd96b77c0b94b31832778569f8ef2f9/versions/08584532480062676349",
|
|
"name": "08584532480062676349",
|
|
"type": "workflows/versions",
|
|
},
|
|
"trigger":
|
|
{
|
|
"name": "token_transfer",
|
|
"inputsLink":
|
|
{
|
|
"uri": "https://htm-abt-logicapp-acc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00/contents/TriggerInputs?api-version=2022-05-01&code=C6PDQGl3MGwt8KyA9BjWDdQbzBwm-01gEmZaTp-hPJ5UAzFuPU-thg%3d%3d&se=2025-06-04T13%3A00%3A00.0000000Z&sp=%2Fruns%2F08584525775235278538475939776CU00%2Fcontents%2FTriggerInputs%2Fread&sv=1.0&sig=6Uxs33K7cQ7jONWzhv9XFPzx4RRHZ6smzfM6wNPk5Mc",
|
|
"contentSize": 298,
|
|
},
|
|
"outputsLink":
|
|
{
|
|
"uri": "https://htm-abt-logicapp-acc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00/contents/TriggerOutputs?api-version=2022-05-01&code=C6PDQGl3MGwt8KyA9BjWDdQbzBwm-01gEmZaTp-hPJ5UAzFuPU-thg%3d%3d&se=2025-06-04T13%3A00%3A00.0000000Z&sp=%2Fruns%2F08584525775235278538475939776CU00%2Fcontents%2FTriggerOutputs%2Fread&sv=1.0&sig=vJ6pmCsmz2aP7f73MVOmCTes3YvC1e2w0ZLqdypLXrM",
|
|
"contentSize": 6110,
|
|
},
|
|
"startTime": "2025-06-04T09:29:21.9497457Z",
|
|
"endTime": "2025-06-04T09:29:21.9497457Z",
|
|
"originHistoryName": "08584525775235278538475939776CU00",
|
|
"correlation":
|
|
{
|
|
"clientTrackingId": "08584525775244808022011782750CU00",
|
|
},
|
|
"status": "Succeeded",
|
|
},
|
|
"outputs": {},
|
|
"response":
|
|
{
|
|
"startTime": "2025-06-04T09:29:21.9642901Z",
|
|
"correlation": {},
|
|
"status": "Waiting",
|
|
},
|
|
},
|
|
"id": "/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00",
|
|
"name": "08584525775235278538475939776CU00",
|
|
"type": "workflows/runs",
|
|
}
|
|
"404":
|
|
description: Not found
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Old token not found in profile:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notfound",
|
|
"title": "The item you requested was not found.",
|
|
"detail": "The old token was not found in the customer profile.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The old token was not found in the customer profile.",
|
|
"pointer": "#/0/ovPayTokenId",
|
|
"ovPayTokenId": 1,
|
|
},
|
|
],
|
|
}
|
|
New token not found in profile:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notfound",
|
|
"title": "The item you requested was not found.",
|
|
"detail": "The new token was not found in the customer profile.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The new token was not found in the customer profile.",
|
|
"pointer": "#/0/ovPayTokenId",
|
|
"ovPayTokenId": 2,
|
|
},
|
|
],
|
|
}
|
|
XTAT for new token not found in GBO:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notfound",
|
|
"title": "The item you requested was not found.",
|
|
"detail": "The new token was not found in GBO:.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "XTAT for the new token was not found in GBO.",
|
|
"pointer": "#/0/xTat",
|
|
"xTat": "e35977b2-52bb-48ef-aca8-297b2c1d5058",
|
|
},
|
|
],
|
|
}
|
|
"405":
|
|
description: Not allowed
|
|
content:
|
|
application/json:
|
|
schema:
|
|
$ref: "#/components/schemas/unavailable"
|
|
examples:
|
|
Old token is wrong token type:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notallowed",
|
|
"title": "The transfer you requested was not allowed.",
|
|
"detail": "The old token has wrong token type.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The old token has token type OV-pas physical.",
|
|
"pointer": "#/0/ovPayToken/tokenTypeId",
|
|
"tokenTypeId": 2,
|
|
},
|
|
],
|
|
}
|
|
Old token has wrong token status:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notallowed",
|
|
"title": "The transfer you requested was not allowed.",
|
|
"detail": "The old token has wrong token status.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The old token has token status replaced.",
|
|
"pointer": "#/0/ovPayToken/tokenStatusId",
|
|
"tokenStatusId": 4,
|
|
},
|
|
],
|
|
}
|
|
New token is expired:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notallowed",
|
|
"title": "The transfer you requested was not allowed.",
|
|
"detail": "The new token is expired.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "The new token is expired.",
|
|
"pointer": "#/0/ovPayToken/expirationDate",
|
|
"expirationDate": "2022-01-01",
|
|
},
|
|
],
|
|
}
|
|
One or more GBO product instances not transferable:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notallowed",
|
|
"title": "The transfer you requested was not allowed.",
|
|
"detail": "One or more GBO product instances are not transferable.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "One or more GBO product instances are not transferable",
|
|
"pointer": "#/0/ovPayToken/packageTemplateId",
|
|
"packageTemplateId": "33613",
|
|
},
|
|
],
|
|
}
|
|
One or more PAD attributes marked:
|
|
value:
|
|
{
|
|
"type": "https://htm.nl/api/v1/probs/notallowed",
|
|
"title": "The transfer you requested was not allowed.",
|
|
"detail": "One or more PAD attributes are not transferable.",
|
|
"instance": "urn:uuid:4017fabc-1b28-11e8-accf-0ed5f89f718b",
|
|
"errors":
|
|
[
|
|
{
|
|
"detail": "PAD attribute birthdate is marked on the old token",
|
|
"pointer": "#/0/ovPayToken/padAttributes/birthdate",
|
|
},
|
|
],
|
|
}
|
|
components:
|
|
schemas:
|
|
unavailable:
|
|
type: object
|
|
CompareRequest:
|
|
type: object
|
|
properties:
|
|
ovPayTokenId:
|
|
type: integer
|
|
example: 1
|
|
description: When new token is already present in customer profile
|
|
xBOT:
|
|
type: string
|
|
format: uuid
|
|
example: "91641b54-056c-49ea-b598-ccde81d6c45a"
|
|
xTAT:
|
|
type: string
|
|
format: uuid
|
|
example: "4c2d60e2-cd03-4c80-ae70-573a301f0bff"
|
|
serviceReferenceId:
|
|
type: string
|
|
example: "NLOV1234567ABCDEFG"
|
|
description: When provided, amount is also required
|
|
amount:
|
|
type: integer
|
|
example: 100
|
|
description: When provided, serviceReferenceId is also required
|
|
ovpasNumber:
|
|
type: string
|
|
example: "OV34567"
|
|
description: When provided, verificationCode is also required
|
|
verificationCode:
|
|
type: string
|
|
example: "1234"
|
|
description: When provided, ovpasNumber is also required
|
|
TransferRequest:
|
|
type: object
|
|
required:
|
|
- oldOvPayToken
|
|
- newOvPayToken
|
|
properties:
|
|
oldOvPayToken:
|
|
type: object
|
|
properties:
|
|
padOtp:
|
|
type: string
|
|
pattern: ^[0-9]{6}$
|
|
example: "023456"
|
|
newOvPayToken:
|
|
type: object
|
|
properties:
|
|
ovPayTokenId:
|
|
type: integer
|
|
example: 1
|
|
description: When new token is already present in customer profile
|
|
xBOT:
|
|
type: string
|
|
format: uuid
|
|
example: "91641b54-056c-49ea-b598-ccde81d6c45a"
|
|
xTAT:
|
|
type: string
|
|
format: uuid
|
|
example: "4c2d60e2-cd03-4c80-ae70-573a301f0bff"
|
|
serviceReferenceId:
|
|
type: string
|
|
example: "NLOV1234567ABCDEFG"
|
|
description: When provided, amount is also required
|
|
amount:
|
|
type: integer
|
|
example: 100
|
|
description: When provided, serviceReferenceId is also required
|
|
padOtp:
|
|
type: string
|
|
pattern: ^[0-9]{6}$
|
|
example: "123456"
|
|
description: Can be xTAT-based OTP (for existing PAD), or email-based OTP (for new PAD). In the latter case, padEmailAddress should be the same address as used for the OTP!
|
|
padEmailAddress:
|
|
type: string
|
|
format: email
|
|
example: 8Z9dG@example.com
|
|
alias:
|
|
type: string
|
|
example: MyNewToken
|
|
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
|
|
addressType:
|
|
type: object
|
|
properties:
|
|
addressTypeId:
|
|
type: integer
|
|
example: 1
|
|
name:
|
|
type: string
|
|
example: Shipping
|
|
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: NL
|
|
_links:
|
|
type: object
|
|
properties:
|
|
self:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/addresses/1
|
|
method:
|
|
type: string
|
|
example: GET
|
|
delete_address:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/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/touchpoint/1.0/customers/phones/1
|
|
method:
|
|
type: string
|
|
example: GET
|
|
delete_phone:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/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/touchpoint/1.0/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/touchpoint/1.0/customers/statuses
|
|
method:
|
|
type: string
|
|
example: POST
|
|
partial_edit:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers
|
|
method:
|
|
type: string
|
|
example: PATCH
|
|
get_tokens:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens
|
|
method:
|
|
type: string
|
|
example: GET
|
|
create_token:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/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/touchpoint/1.0/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/touchpoint/1.0/customers/tokens/1
|
|
method:
|
|
type: string
|
|
example: PATCH
|
|
replace_token:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/replace
|
|
method:
|
|
type: string
|
|
example: POST
|
|
delete_token:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1
|
|
method:
|
|
type: string
|
|
example: DELETE
|
|
get_productinstances:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances
|
|
method:
|
|
type: string
|
|
example: GET
|
|
get_trips:
|
|
type: object
|
|
properties:
|
|
href:
|
|
type: string
|
|
example: https://api.integratielaag.nl/abt/touchpoint/1.0/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/touchpoint/1.0/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/touchpoint/1.0/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/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F
|
|
method:
|
|
type: string
|
|
example: GET
|