diff --git a/src/openapi/customers/SE-customers.yaml b/src/openapi/customers/SE-customers.yaml index 53b13a9..7333668 100644 --- a/src/openapi/customers/SE-customers.yaml +++ b/src/openapi/customers/SE-customers.yaml @@ -1776,7 +1776,9 @@ paths: attributes: - Token type + - Token status (only if target token is known in the customer profile) - Experation date + - Instantiated GBO products - Auto reload registration - E-purse - PAD (name, birthdate, photo) @@ -1839,9 +1841,14 @@ paths: }, "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": @@ -1851,15 +1858,13 @@ paths: "transferableObjects": { "tokenType": true, + "tokenStatus": true, "expirationDate": true, + "productInstances": true, "autoReloadRegistration": true, "ePurse": true, "personalAccountData": - { - "name": true, - "birthdate": true, - "photo": true, - }, + { "name": true, "birthdate": true, "photo": true }, }, "_links": { @@ -1891,19 +1896,26 @@ paths: }, "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": null, "photo": null }, }, - "isTansferable": false, + "isTansferable": true, "transferableObjects": { "tokenType": true, + "tokenStatus": true, "expirationDate": true, + "productInstances": true, "autoReloadRegistration": true, "ePurse": false, "personalAccountData": @@ -1915,7 +1927,145 @@ paths: }, "_links": {}, } - + /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: Transfer old OVpay token to new OVpay token. + description: |- + Transfers all products, e-purse and personal account data 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/unavailable" + examples: + Transfer to an existing OVpay token: + value: { "ovPayTokenId": 2 } + Transfer to a new token by XTAT: + value: + { + "xtat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", + "alias": "MyToken", + } + 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": 2, + "autoReloadRegistration": + { + "autoReloadAmount": 500, + "retailerReferenceId": "abc", + "arrit": "425f7fc2-1103-4822-9c79-7c4aaa2fb6aa", + "autoReloadRegistrationStatus": "ACTIVE", + "autoReloadRegistrationStartDateTime": "2024-06-02T15:03:46Z", + }, + "ePurse": + { + "e-PurseBalance": + { "currency": "EUR", "amount": 350 }, + "status": "ACTIVE", + "originDate": "2019-07-16T11:00:00+02:00", + }, + "personalAccountData": + { + "name": + { + "inaccuracyFlag": false, + "inaccuracyFlagReason": null, + "inaccuracyFlagSetCounter": 0, + "isValidated": false, + "changeCounter": 0, + "maxUpdatesVerificationCount": 0, + "lastChangeDate": "2024-08-24T14:15:22Z", + }, + "birthdate": + { + "inaccuracyFlag": false, + "inaccuracyFlagReason": null, + "inaccuracyFlagSetCounter": 0, + "isValidated": false, + "changeCounter": 0, + "maxUpdatesVerificationCount": 0, + "lastChangeDate": "2024-08-24T14:15:22Z", + }, + "photo": + { + "inaccuracyFlag": false, + "inaccuracyFlagReason": null, + "inaccuracyFlagSetCounter": 0, + "isValidated": false, + "changeCounter": 0, + "maxUpdatesVerificationCount": 0, + "lastChangeDate": "2024-08-24T14:15:22Z", + }, + }, + "_links": + { + "self": + { + "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens?ovpaytokenId=1", + "method": "GET", + }, + "partial_edit": + { + "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", + "method": "PATCH", + }, + "replace_token": + { + "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/replace", + "method": "POST", + }, + "delete_token": + { + "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1", + "method": "DELETE", + }, + "get_productinstances": + { + "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/productinstances", + "method": "GET", + }, + "get_trips": + { + "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/customers/tokens/1/trips", + "method": "GET", + }, + "update_tokenPersonalization": + { + "href": "https://api.integratielaag.nl/abt/1.0/touchpoint/pad?ovpaytokenid=1", + "method": "PUT", + }, + }, + } components: schemas: unavailable: