diff --git a/src/openapi/customers/SE-customers.yaml b/src/openapi/customers/SE-customers.yaml index d814fc5..df0854b 100644 --- a/src/openapi/customers/SE-customers.yaml +++ b/src/openapi/customers/SE-customers.yaml @@ -4,7 +4,7 @@ info: 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' + version: "1.0" servers: - url: https://api.integratielaag.nl/v1/touchpoint tags: @@ -21,7 +21,7 @@ paths: description: Get a single customer profile based on search parameters. Only returns a profile if a single result matches the parameters; when multiple results are found, additional seach parameters are required to disambiguate. parameters: - name: customerProfileId - in: query + in: query schema: type: integer example: 1 @@ -44,7 +44,7 @@ paths: in: query schema: type: integer - example: 1 + example: 1 - name: birthname in: query schema: @@ -71,138 +71,134 @@ paths: in: query schema: type: string - example: Sesamestreet + example: Sesamestreet - name: addressHouseNumber in: query schema: type: integer - example: 1 + example: 1 - name: addressHouseNumberSuffix in: query schema: type: string - example: A + example: A - name: addressPostalCode in: query schema: type: string - example: 1234 AB + example: 1234 AB - name: addressCity in: query schema: type: string - example: The Hague + example: The Hague - name: addressCountry in: query schema: type: string - example: The Netherlands + example: The Netherlands - name: phoneNumber in: query schema: type: string - example: "0123456789" + example: "0123456789" - name: ovChipcardNumber in: query schema: type: integer - example: 0123456789 + example: 0123456789 - name: ovChipcardAlias in: query schema: type: string - example: My ovchipcard + example: My ovchipcard - name: ovPayTokenNumber in: query schema: type: integer - example: 0123456789 + example: 0123456789 - name: ovPayTokenAlias in: query schema: type: string - example: My Ov Pay Token + example: My Ov Pay Token - name: ovPayTokenXTat in: query schema: type: string - example: 180d04e0-a721-447e-a1d9-b416937b43bc + example: 180d04e0-a721-447e-a1d9-b416937b43bc - name: ovPayTokenXBot in: query schema: type: string example: e1307c73-676a-4d07-967b-6141276f7c7c responses: - '200': - description: OK - content: - application/json: - schema: - $ref: '#/components/schemas/CustomersResponse' - '404': - description: No customer found - content: - application/json: - example: - { - "type": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers", - "apiErrorCode": "400.1", - "title": "Niet gevonden", - "detail": "Klant niet gevonden", - "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", - "errors": [ - { - "subApiErrorCode": "0017" - } - ] - } - '409': - description: Multiple customers found - content: - application/json: - example: - { - "type": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers", - "apiErrorCode": "409.1", - "title": "Meer dan 1 klantprofiel gevonden", - "detail": "Meer dan 1 klantprofiel gevonden. Verfijn je zoekcriteria.", - "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7" - } + "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: + tags: - Customers parameters: - - name: X-HTM-JWT-AUTH-HEADER - in: header + - 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 + - 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 + 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 + - 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 + - name: tokenTypeId + in: query schema: type: array items: @@ -210,53 +206,53 @@ paths: explode: false description: Filter on tokentype. 1 = EMV, 2 = OV-pas physical, 3 = OV-pas digital required: false - - name: xTat - in: query + - 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 + - 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 + - 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 + - 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 + - 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 + 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 + description: Filter on the expirationDate of a customer token + - name: replacedByTokenId + in: query schema: type: integer example: 2 @@ -265,7 +261,7 @@ paths: 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': + "200": description: OK content: application/json: @@ -277,671 +273,702 @@ paths: description: Empty token list value: { - "ovPayTokens": [ - ], - _links: { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "GET" - } - } + "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": [ + "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: { - "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": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", - "method": "GET" + "self": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens", + "method": "GET", }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/tokenPersonalizations?ovpaytokenId=1", - "method": "POST" - } - } - } - ], - _links: { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "GET" - } - } + }, } OV pas without PAD: summary: OV pas without PAD description: OV pas without PAD value: { - "ovPayTokens": [ - { - "customerProfileId": 1, - "ovPayTokenId": 1, - "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": 2, - "autoReloadRegistration": null, - "ePurse": { - "e-PurseBalance": { - "currency": "EUR", - "amount": 350 + "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", + }, }, - "status": "ACTIVE", - "originDate": "2019-07-16T11:00:00+02:00" }, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", - "method": "GET" + ], + _links: + { + "self": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens", + "method": "GET", }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1", - "method": "POST" - } - } - } - ], - _links: { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "GET" - } - } - } + }, + } OV pas with PAD and autoReload: summary: OV pas with PAD and autoReload description: OV pas with PAD and autoReload value: { - "ovPayTokens": [ - { - "customerProfileId": 1, - "ovPayTokenId": 1, - "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": 2, - "autoReloadRegistration": { - "autoReloadAmount": 500, - "retailerReferenceId": "abc", - "arrit": "425f7fc2-1103-4822-9c79-7c4aaa2fb6aa", - "autoReloadRegistrationStatus": "ACTIVE", - "autoReloadRegistrationStartDateTime": "2024-06-02T15:03:46Z" - }, - "ePurse": { - "e-PurseBalance": { - "currency": "EUR", - "amount": 350 + "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", + }, }, - "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" + ], + _links: + { + "self": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens", + "method": "GET", }, - "birthdate": { - "inaccuracyFlag": false, - "inaccuracyFlagReason": null, - "inaccuracyFlagSetCounter": 0, - "isValidated": false, - "changeCounter": 0, - "maxUpdatesVerificationCount": 0, - "lastChangeDate": "2024-08-24T14:15:22Z" - }, - "photo": { - "inaccuracyFlag": false, - "inaccuracyFlagReason": null, - "inaccuracyFlagSetCounter": 0, - "isValidated": false, - "changeCounter": 0, - "maxUpdatesVerificationCount": 0, - "lastChangeDate": "2024-08-24T14:15:22Z" - } - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", - "method": "GET" - }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", - "method": "GET" - }, - "update_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1", - "method": "PUT" - } - } - } - ], - _links: { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "GET" - } - } - } + }, + } OV pas with partial PAD: summary: OV pas with partial PAD description: OV pas with partial PAD value: { - "ovPayTokens": [ - { - "customerProfileId": 1, - "ovPayTokenId": 1, - "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": 2, - "autoReloadRegistration": null, - "ePurse": { - "e-PurseBalance": { - "currency": "EUR", - "amount": 350 + "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", + }, }, - "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" + ], + _links: + { + "self": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens", + "method": "GET", }, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", - "method": "GET" - }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", - "method": "GET" - }, - "update_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1", - "method": "PUT" - } - } - } - ], - _links: { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "GET" - } - } - } + }, + } OV pas with invalid PAD: summary: OV pas with invalid PAD description: OV pas with invalid PAD value: { - "ovPayTokens": [ + "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: { - "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": 2, - "autoReloadRegistration": null, - "ePurse": { - "e-PurseBalance": { - "currency": "EUR", - "amount": 350 - }, - "status": "ACTIVE", - "originDate": "2019-07-16T11:00:00+02:00" - }, - "personalAccountData":{ - "name": { - "inaccuracyFlag": true, - "inaccuracyFlagReason": "T.B.D", - "inaccuracyFlagSetCounter": 1, - "isValidated": false, - "changeCounter": 0, - "maxUpdatesVerificationCount": 0, - "lastChangeDate": "2024-08-24T14:15:22Z" - }, - "birthdate": { - "inaccuracyFlag": true, - "inaccuracyFlagReason": "T.B.D", - "inaccuracyFlagSetCounter": 1, - "isValidated": false, - "changeCounter": 0, - "maxUpdatesVerificationCount": 0, - "lastChangeDate": "2024-08-24T14:15:22Z" + "self": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens", + "method": "GET", }, - "photo": { - "inaccuracyFlag": true, - "inaccuracyFlagReason": null, - "inaccuracyFlagSetCounter": 1, - "isValidated": false, - "changeCounter": 0, - "maxUpdatesVerificationCount": 0, - "lastChangeDate": "2024-08-24T14:15:22Z" - } - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", - "method": "GET" - }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", - "method": "GET" - }, - "update_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1", - "method": "PUT" - } - } - } - ], - _links: { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "GET" - } - } - } - Token list with every status for tokenTypeId = 2, role = KlantenService : - summary: Token list with every status for tokenTypeId = 2, role = KlantenService + }, + } + ? 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": [ + "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: { - "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": 0, - "autoReloadRegistration": null, - "ePurse": null, - "personalAccountData": { - "name": null, - "birthdate": null, - "photo": null, - } + "self": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens", + "method": "GET", + }, }, - { - "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": 2, - "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": 0, - "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": 0, - "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": 0, - "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": 0, - "autoReloadRegistration": null, - "ePurse": null, - "personalAccountData": { - "name": null, - "birthdate": null, - "photo": null, - } - } - ], - _links: { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "GET" - } - } - } + } post: tags: - Customers - parameters: - - name: X-HTM-JWT-AUTH-HEADER - in: header + 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 + - 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 + 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 + description: Create a new OV paytoken for a customerProfile requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - Add EMV token: + Add EMV token: summary: Add EMV token description: Add EMV token - value: + value: { - "ovPayToken": { - "tokenTypeId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 200, - "alias": "Mijn token" - } - } - Add OV pas physical token: + "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: + value: { - "ovPayToken": { - "tokenTypeId": 2, - "ovpasNumber": "OV34567", - "verificationCode": "211", - "alias": "Mijn token" - } - } + "ovPayToken": + { + "tokenTypeId": 2, + "ovpasNumber": "OV34567", + "verificationCode": "211", + "alias": "Mijn token", + }, + } responses: "201": description: Created @@ -950,217 +977,233 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - Add EMV token: + Add EMV token: summary: Add EMV token description: Add EMV token - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, "ovPayTokenId": 1, - "tokenType": { - "tokenTypeId": 1, - "name": "EMV" - }, + "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", + "tokenType": { "tokenTypeId": 1, "name": "EMV" }, "lastDigits": null, "ovPpasNumber": null, "alias": "Mijn token", - "tokenStatus": { - "tokenStatusId": 2, - "name": "Active" - }, + "tokenStatus": + { "tokenStatusId": 2, "name": "Active" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, "ePurse": null, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", - "method": "GET" + "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", }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1", - "method": "POST" - } - } }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "POST" - } - } } - Add OV pas physical token: + Add OV pas physical token: summary: Add EMV token description: Add EMV token - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, "ovPayTokenId": 1, - "tokenType": { - "tokenTypeId": 2, - "name": "OV-pas physical" - }, + "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" - }, + "tokenStatus": + { "tokenStatusId": 2, "name": "Active" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, - "ePurse": { - "e-PurseBalance": { - "currency": "EUR", - "amount": 00 + "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", }, - "status": "INACTIVE", - "originDate": "2019-07-16T11:00:00+02:00" - }, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", - "method": "GET" + "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", }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1", - "method": "POST" - } - } }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens", - "method": "POST" - } - } } /customers/tokens/{ovpayTokenId}: post: tags: - Customers - parameters: - - name: X-HTM-JWT-AUTH-HEADER - in: header + 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 + - 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 + 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 + required: false - name: ovpayTokenId - in: path + in: path schema: type: integer example: 1 required: true - summary: Replace an OV paytoken with another - description: Replace an OV paytoken in the database for a given customer with another token + summary: Replace an OVpay token with another (+ transfer products) + description: Transfer products from one OVpay token to antother, and replace the tokens in the database requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - Replace with new EMV token: - summary: Replace with new token - description: Replace with new token - value: + 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" - } + "ovPayToken": + { + "newTokenId": null, + "tokenTypeId": 1, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 230, + "alias": "Nieuw token", + }, } - Replace with existing EMV token: - summary: Replace with existing token - description: Replace with existing token - value: - { - "ovPayToken": { - "newTokenId": 10 - } - } - Replace with new OV pas token: + 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 - value: + description: Replace with new OV pas token by OV-pas number. + value: { - "ovPayToken": { - "tokenTypeId": 2, - "ovpasNumber": "OV34567", - "verificationCode": "211", - "alias": "Mijn token" - } + "ovPayToken": + { + "tokenTypeId": 2, + "ovpasNumber": "OV34567", + "verificationCode": "211", + "alias": "Mijn token", + }, + } + Replace with new token by XTAT: + summary: Replace with new token by XTAT + description: Replace with new token by XTAT. + value: + { + "ovPayToken": + { + "xtat": "32089cc8-d187-47ff-a3a9-5c2558def811", + "alias": "Mijn token", + }, } responses: "201": @@ -1170,134 +1213,138 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - Replace with new EMV token: + Replace with new EMV token: summary: Replace with new EMV token description: Replace with new EMV token - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, "ovPayTokenId": 5, - "tokenType": { - "tokenTypeId": 1, - "name": "EMV" - }, + "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", + "tokenType": { "tokenTypeId": 1, "name": "EMV" }, "lastDigits": null, "ovpasNumber": null, "alias": "Mijn token", - "tokenStatus": { - "tokenStatusId": 2, - "name": "Active" - }, + "tokenStatus": + { "tokenStatusId": 2, "name": "Active" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, "ePurse": null, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5", - "method": "GET" + "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", + }, }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5", - "method": "POST" - } - } - } + }, } - Replace with new OV pas token: + Replace with new OV pas token: summary: Replace with new OV pas token description: Replace with new OV pas token - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, "ovPayTokenId": 5, - "tokenType": { - "tokenTypeId": 2, - "name": "OV-pas physical" - }, + "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", + "tokenType": + { "tokenTypeId": 2, "name": "OV-pas physical" }, "lastDigits": null, - "ovpasNumber":"OV34567", + "ovpasNumber": "OV34567", "alias": "Mijn token", - "tokenStatus": { - "tokenStatusId": 2, - "name": "Active" - }, + "tokenStatus": + { "tokenStatusId": 2, "name": "Active" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, - "ePurse": { - "e-PurseBalance": { - "currency": "EUR", - "amount": 350 + "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", }, - "status": "ACTIVE", - "originDate": "2024-07-16T11:00:00+02:00" - }, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5", - "method": "GET" + "compare_token": + { + "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/5/compare", + "method": "POST", + }, }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5", - "method": "POST" - } - } - } + }, } - "200": + "200": description: Ok content: application/json: @@ -1307,89 +1354,91 @@ paths: Replace with existing EMV token: summary: Replace with existing EMV token description: Replace with existing EMV token - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, "ovPayTokenId": 10, - "tokenType": { - "tokenTypeId": 1, - "name": "EMV" - }, + "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", + "tokenType": { "tokenTypeId": 1, "name": "EMV" }, "lastDigits": null, "ovpasNumber": null, "alias": "Mijn bestaandetoken", - "tokenStatus": { - "tokenStatusId": 2, - "name": "Active" - }, + "tokenStatus": + { "tokenStatusId": 2, "name": "Active" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, "ePurse": null, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=10", - "method": "GET" + "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", + }, }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/10/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=10", - "method": "POST" - } - } - } - } + }, + } patch: tags: - Customers - parameters: - - name: X-HTM-JWT-AUTH-HEADER - in: header + 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 + - 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 + 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 + required: false - name: ovpayTokenId - in: path + in: path schema: type: integer example: 1 @@ -1402,33 +1451,21 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - Update an OV pay token status: - summary: Update an OV pay token status + 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 + 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 + 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: + value: { - "ovPayToken": { - "tokenStatusId": 5, - "alias": "Mijn verloren pas" - } + "ovPayToken": + { "tokenStatusId": 5, "alias": "Mijn verloren pas" }, } responses: "200": @@ -1438,212 +1475,218 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - Update an OV pay token status: + Update an OV pay token status: summary: Update an OV pay token status description: Update an OV pay token status - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, - "ovPayTokenId": 1, - "tokenType": { - "tokenTypeId": 1, - "name": "EMV" - }, + "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" - }, + "tokenStatus": + { "tokenStatusId": 5, "name": "Suspended" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, "ePurse": null, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5", - "method": "GET" + "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", + }, }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5", - "method": "POST" - } - } - } - } - Update an OV pay token alias: + }, + } + Update an OV pay token alias: summary: Update an OV pay token alias description: Update an OV pay token alias - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, - "ovPayTokenId": 1, - "tokenType": { - "tokenTypeId": 1, - "name": "EMV" - }, + "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" - }, + "tokenStatus": + { "tokenStatusId": 2, "name": "Active" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, "ePurse": null, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5", - "method": "GET" + "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", + }, }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5", - "method": "POST" - } - } - } + }, } - Update an OV pay token full: + Update an OV pay token full: summary: Update an OV pay token full description: Update an OV pay token full - value: + value: { - "ovPayToken": { + "ovPayToken": + { "customerProfileId": 1, - "ovPayTokenId": 1, - "tokenType": { - "tokenTypeId": 1, - "name": "EMV" - }, + "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" - }, + "tokenStatus": + { "tokenStatusId": 5, "name": "Suspended" }, "expirationDate": "2028-08-31T23:59:00+02:00", - "replacedByTokenId": 0, + "replacedByTokenId": null, "autoReloadRegistration": null, "ePurse": null, - "personalAccountData":{ - "name": null, - "birthdate": null, - "photo": null - }, - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=5", - "method": "GET" + "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", + }, }, - "partial_edit": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "PATCH" - }, - "replace_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "POST" - }, - "delete_token": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5", - "method": "DELETE" - }, - "get_productinstances": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/productinstances", - "method": "GET" - }, - "get_trips": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/5/trips", - "method": "GET" - }, - "create_tokenPersonalization": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenId=5", - "method": "POST" - } - } - } + }, } delete: tags: - Customers - parameters: - - name: X-HTM-JWT-AUTH-HEADER - in: header + 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 + - 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 + 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 + required: false - name: ovpayTokenId - in: path + in: path schema: type: integer example: 1 @@ -1672,12 +1715,12 @@ paths: type: integer example: 1 responses: - '200': + "200": description: OK content: application/json: schema: - $ref: '#/components/schemas/OvPayTokenProductInstancesResponse' + $ref: "#/components/schemas/OvPayTokenProductInstancesResponse" examples: getEmptyProductInstances: summary: No product-instances found on token @@ -1687,42 +1730,961 @@ paths: summary: One non-renewable product-instance value: { - "productInstances": [ - { - "productId": 1, - "name": "HTM 90% Korting", - "status": "Active", - "isRenewable": true, - "productCategory": { - "productCategoryId": 1, - "name": "Kortingsabonnement" + "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", + }, + }, }, - "fromInclusive": "2024-11-25T13:25:00+01:00", - "untilInclusive": "2024-12-25T03:59:59+01:00", - "orderId": "501B17EF-36C4-4039-B92C-6517969B464E", - "orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E", - "contractId": "56B17EF-C436-9043-B76C-481797WEB464F", - "_links": { - "self": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances/1", - "method": "GET" + ], + } + /customers/tokens/{ovPayTokenId}/compare: + parameters: + - 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": 2 } + 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 reqeuest body (for development only): + value: + { + "ovPayTokenId": 2, + "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 }, + }, + "isTansferable": 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", }, - "get_order": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/orders/501B17EF-36C4-4039-B92C-6517969B464E", - "method": "GET" - }, - "get_contract": { - "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F", - "method": "GET" + }, + } + 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 }, + }, + "isTansferable": 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 }, + }, + "isTansferable": 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 }, + }, + "isTansferable": 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 + } + }, + "isTansferable": 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: 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: "**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. + tags: + - Customers + requestBody: + content: + application/json: + schema: + $ref: "#/components/schemas/TransferRequest" + examples: + Transfer of a token without PAD to an existing OVpay token: + value: + { + "oldOvPayToken": {}, + "newOvPayToken": + { + "ovPayTokenId": 2, + "alias": "MyToken" + } + } + Transfer of a token without PAD to a new OVpay token by xTAT: + value: + { + "oldOvPayToken": {}, + "newOvPayToken": + { + "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", + "alias": "MyToken", + }, + } + Transfer of a token with PAD to an existing OVpay token without existing PAD: + value: + { + "oldOvPayToken": { "padOtp": "123456" }, + "newOvPayToken": + { + "ovPayTokenId": 2, + "padEmailAddress": "jandevries@outlook.com", + "alias": "MyToken", + }, + } + Transfer of a token with PAD to an existing OVpay token with existing PAD: + value: + { + "oldOvPayToken": { "padOtp": "123456" }, + "newOvPayToken": + { + "ovPayTokenId": 2, + "padOtp": "678901", + "alias": "MyToken" + }, + } + Transfer of a token with PAD to a new token by xTAT without existing PAD with e-mail verification by OTP: + value: + { + "oldOvPayToken": { "padOtp": "123456" }, + "newOvPayToken": + { + "xtat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", + "alias": "MyToken", + "padEmailAddress": "jandevries@outlook.com", + "padOtp": "678901", + }, + } + Transfer of a token with PAD to a new token by SRID and amount, with existing PAD: + value: + { + "oldOvPayToken": { "padOtp": "123456" }, + "newOvPayToken": + { + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 230, + "alias": "MyToken", + "padOtp": "678901", + }, + } + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: "#/components/schemas/unavailable" + examples: + New token as a result of a succesful transfer: + value: + { + "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": + { + "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", + }, + + }, + } + "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", + }, + ], + } + "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", + "expiriationDate": "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: @@ -1771,7 +2733,7 @@ components: dateOfBirth: type: string format: date - example: '2023-02-01' + example: "2023-02-01" emailAddress: type: string format: email @@ -1822,7 +2784,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/addresses/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/addresses/1 method: type: string example: GET @@ -1831,7 +2793,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/addresses/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/addresses/1 method: type: string example: DELETE @@ -1850,7 +2812,7 @@ components: type: object properties: phoneTypeId: - type: integer + type: integer example: 1 name: type: string @@ -1869,7 +2831,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/phones/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/phones/1 method: type: string example: GET @@ -1878,7 +2840,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/phones/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/phones/1 method: type: string example: DELETE @@ -1890,17 +2852,17 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers + 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 + type: object + description: ONLY ALLOWED FOR SMP - Create a new customer status properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/statuses + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/statuses method: type: string example: POST @@ -1909,7 +2871,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers method: type: string example: PATCH @@ -1918,7 +2880,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens method: type: string example: GET @@ -1927,10 +2889,10 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens method: type: string - example: POST + example: POST OvPayTokensResponse: type: object required: @@ -1944,7 +2906,7 @@ components: ovPayTokenId: type: integer example: 1 - tokenType: + tokenType: type: object properties: tokenTypeId: @@ -1968,7 +2930,7 @@ components: expirationDate: type: string format: date - example: '2023-02-01' + example: "2023-02-01" replacedByTokenId: type: integer example: 1 @@ -1980,17 +2942,17 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1 method: type: string - example: GET + example: GET partial_edit: type: object description: External touchpoints are only allowed to change alias - SMP can also change tokenStatus properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1 method: type: string example: PATCH @@ -1999,7 +2961,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/replace method: type: string example: POST @@ -2008,7 +2970,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1 + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1 method: type: string example: DELETE @@ -2017,7 +2979,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances method: type: string example: GET @@ -2026,7 +2988,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/trips method: type: string example: GET @@ -2041,12 +3003,12 @@ components: productId: type: integer example: 1 - name: + name: type: string example: HTM 90% Korting status: type: string - enum: [ "Active", "Ended", "Refunded" ] + enum: ["Active", "Ended", "Refunded"] example: Active isRenewable: type: boolean @@ -2060,7 +3022,7 @@ components: example: 1 name: type: string - example: Kortingsabonnement + example: Kortingsabonnement fromInclusive: type: string format: date-time-offset @@ -2068,7 +3030,7 @@ components: untilInclusive: type: string format: date-time-offset - description: >- + 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: @@ -2092,7 +3054,7 @@ components: properties: href: type: string - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances method: type: string example: GET @@ -2102,7 +3064,7 @@ components: href: type: string description: Always present for any HTM product-instance - example: https://api.integratielaag.nl/abt/1.0/touchpoint/orders/501B17EF-36C4-4039-B92C-6517969B464E + example: https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E method: type: string example: GET @@ -2112,12 +3074,7 @@ components: href: type: string description: Only present for subscriptions/contracts - example: https://api.integratielaag.nl/abt/1.0/touchpoint/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F + example: https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F method: type: string example: GET - - - - -