diff --git a/src/openapi/orders/service_engine_orders.yaml b/src/openapi/orders/service_engine_orders.yaml index 4878ed1..adaebe9 100644 --- a/src/openapi/orders/service_engine_orders.yaml +++ b/src/openapi/orders/service_engine_orders.yaml @@ -3,7 +3,7 @@ info: title: ABT Service Engine Order APIs version: "1.0" description: Order APIs available in the Service Engine for order validation and fulfillment. -servers: +servers: - url: https://services.acc.api.htm.nl/abt/touchpoint/2.0 paths: /orders: @@ -75,7 +75,7 @@ paths: type: integer explode: false required: false - description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled. + description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled. - in: query name: customerProfileId schema: @@ -90,7 +90,7 @@ paths: description: xTat used in order fulfillment. Note that this is a joined parameter via PurchasedProduct. tags: - Order Retrieval - summary: Find orders. P1 + summary: Find orders. description: Find orders. responses: "200": @@ -100,9 +100,28 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2: - summary: Find orders v2 - description: Find orders v2 + Empty order list: + summary: Empty order list + description: Empty order list + value: + { + "orders": [], + "_links": + { + "self": + { + "href": "https://api.example.com/items", + "method": "GET", + "templated": true, + }, + }, + "href": "string", + } + List with multiple orders: + summary: List with two orders + description: | + List with two orders. Note how the second order is a concept order and therefore has + more token information than the first order which is already paid. value: { "orders": @@ -128,8 +147,6 @@ paths: "iso639Code": "nl-NL", "ietfCode": "nl", }, - "billingAddressId": 1, - "shippingAddressId": 1, "createdOn": "2024-03-22T09:00:00", "lastUpdatedOn": "2024-03-22T09:00:00", "order_OrderStatuses": @@ -140,7 +157,43 @@ paths: "createdOn": "2024-03-22T09:00:00", "description": "Order succesvol betaald", }, - "orderLines": [], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "fikoArticleNumber": "6609", + "productDescription": "HTM Maandkorting 20%", + "taxCode": "V21", + "taxPercentage": 21.0000, + "taxAmount": null, + "amountExclTax": null, + "amountInclTax": 121, + "quantity": 1, + "orderLineTerms": + [ + { + "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "termsUrl": "generalTermsAndConditions.pdf", + }, + { + "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", + "termsUrl": "productTermsAndConditions.pdf", + }, + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { + "orderLineStatusId": 1, + "name": "pending", + }, + "customerTokens": null, + }, + ], "payments": [ { @@ -245,8 +298,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -264,7 +317,10 @@ paths: "validFrom": "2024-03-22T09:00:00", "validUntil": null, "orderLineStatus": - { "orderLineStatusId": 1, "name": "pending" }, + { + "orderLineStatusId": 1, + "name": "pending", + }, "customerTokens": [ { @@ -289,6 +345,83 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": + { + "customerProfileId": 1337, + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -311,23 +444,23 @@ paths: ], "payments": [], "orderCustomer": null, - } - ], - "_links": + }, + ], + "_links": + { + "self": { - "self": - { - "href": "https://api.example.com/items", - "method": "GET", - "templated": true, - }, + "href": "https://api.example.com/items", + "method": "GET", + "templated": true, }, - "href": "string", - } + }, + "href": "string", + } post: tags: - - Order Creation - summary: Create a new order + - Order Creation Flow + summary: Create a new order. description: | Create a new order. This order can only contain the order itself, one ore more order lines and optionally a customer token per order line. @@ -339,9 +472,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Order creation v2.2 - description: Order creation v2.2 + Create order with OVpas and PAD: + summary: Create order with OVpas and PAD + description: Create order with OVpas and PAD value: { "externalOrderId": null, @@ -376,237 +509,6 @@ paths: }, ], } - v1.2: - summary: Order creation v1.2 - description: Order creation v1.2 - value: - { - "externalOrderId": null, - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "createdOn": "2024-03-22T09:00:00", - "order_OrderStatus": - [ - { - "orderStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Concept order", - }, - ], - "orderLines": - [ - { - "externalOrderLineId": null, - "productId": 1, - "quantity": 1, - "validFrom": "2024-03-22T09:00:00", - "validUntil": "2025-03-22T09:00:00", - "orderLineStatusId": 4, - "createdOn": "2024-03-22T09:00:00", - "customerTokens": - [ - { - "tokenTypeId": 1, - "ovPayTokenId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "verificationCode": "A7H6", - "personalAccountData": - { - "name": "Jan de Vries", - "dateOfBirth": "1970-01-01", - "photoReference": "DSC_0502.JPG", - "fileType": "image/jpg", - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - }, - }, - ], - "orderAccountingStatuses": - [ - { - "accountingStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Financiele transactie voor de FIKO.", - }, - ], - }, - ], - "payments": - [ - { - "createdOn": "2024-03-22T09:00:00", - "amountDebit": 121, - "paymentMethodId": 1, - "isRefund": false, - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - "paymentStatuses": - [ - { - "createdOn": "2024-03-22T09:00:00", - "statusCode": "190", - "statusDescription": "Success", - "statusSubCode": "S001", - "statusSubDescription": "PaymentSuccessful", - }, - ], - "mandateInput": - { - "directDebitMandateTypeId": 1, - "createdOn": "2024-03-22T09:00:00", - "bic": "RABONL2U", - "iban": "NL44RABO0123456789", - "ascription": "J. de Vries", - "place": "Den Haag", - }, - }, - ], - "orderCustomer": - { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - "orderCustomerAddresses": - [ - { - "addressTypeId": 1, - "street": "Kon. Julianaplein", - "houseNumber": 10, - "houseNumberSuffix": "a", - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "NL", - }, - ], - }, - } - v1: - summary: Order creation v1.1 - description: Order creation v1.1 - value: - { - "externalOrderId": null, - "customerProfileId": 1337, - "totalAmount": 121, - "touchPointId": 3, - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "createdOn": "2024-03-22T09:00:00", - "order_OrderStatus": - [ - { - "orderStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Concept order", - }, - ], - "orderLines": - [ - { - "externalOrderLineId": null, - "productId": 1, - "productName": "HTM Maandkorting 20%", - "productCode": "HTM-MND-20", - "productDescription": "HTM Maandkorting 20%", - "taxAmount": 21, - "taxMetadataId": "7275b910-37d9-40c1-aaac-80d8ceb62ff9", - "amountExclTax": 100, - "amountInclTax": 121, - "quantity": 1, - "orderLineTerms": - [{ "termsUrl": "generalTermsAndConditions.pdf" }], - "validFrom": "2024-03-22T09:00:00", - "validUntil": "2025-03-22T09:00:00", - "orderLineStatusId": 4, - "createdOn": "2024-03-22T09:00:00", - "customerTokens": - [ - { - "tokenTypeId": 1, - "ovPayTokenId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "verificationCode": "A7H6", - "personalAccountData": - { - "name": "Jan de Vries", - "dateOfBirth": "1970-01-01", - "photoReference": "DSC_0502.JPG", - "fileType": "image/jpg", - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - }, - }, - ], - "orderAccountingStatuses": - [ - { - "accountingStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Financiele transactie voor de FIKO.", - }, - ], - }, - ], - "payments": - [ - { - "createdOn": "2024-03-22T09:00:00", - "amountDebit": 121, - "paymentMethodId": 1, - "touchPointId": 1, - "isRefund": false, - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - "paymentStatuses": - [ - { - "createdOn": "2024-03-22T09:00:00", - "statusCode": "190", - "statusDescription": "Success", - "statusSubCode": "S001", - "statusSubDescription": "PaymentSuccessful", - }, - ], - "mandateInput": - { - "directDebitMandateTypeId": 1, - "createdOn": "2024-03-22T09:00:00", - "bic": "RABONL2U", - "iban": "NL44RABO0123456789", - "ascription": "J. de Vries", - "place": "Den Haag", - }, - }, - ], - "orderCustomer": - { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - "orderCustomerAddresses": - [ - { - "addressTypeId": 1, - "street": "Kon. Julianaplein", - "houseNumber": 10, - "houseNumberSuffix": "a", - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "NL", - }, - ], - }, - } responses: "201": description: Created @@ -615,7 +517,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Concept order with OVpas and PAD: value: { "validContents": false, @@ -661,8 +563,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -705,6 +607,83 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -728,12 +707,6 @@ paths: "payments": [], "orderCustomer": null, } - v1.2: - value: - { - "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", - "orderNumber": "ORD-123456", - } "400": description: Bad request content: @@ -782,7 +755,7 @@ paths: get: tags: - Order Retrieval - summary: Get a single order. P1 + summary: Get a single order. description: Get a single order. responses: "200": @@ -792,9 +765,381 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Order details v2.2 - description: Order details v2.2 + Order with status concept (and existing token): + summary: Order with status concept (and existing token) + description: Order with status concept (and existing token) + value: + { + "validContents": false, + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "language": + { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl", + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatuses": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": + { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + }, + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "fikoArticleNumber": "6609", + "productDescription": "HTM Maandkorting 20%", + "taxCode": "V21", + "taxPercentage": 21.0000, + "taxAmount": null, + "amountExclTax": null, + "amountInclTax": 121, + "quantity": 1, + "orderLineTerms": + [ + { + "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "termsUrl": "generalTermsAndConditions.pdf", + }, + { + "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", + "termsUrl": "productTermsAndConditions.pdf", + }, + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "customerTokens": + [ + { + "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", + "tokenType": + { "tokenTypeId": 1, "name": "EMV" }, + "ovPayTokenId": 1, + "serviceReferenceId": null, + "amount": null, + "ovpasNumber": null, + "verificationCode": null, + "personalAccountData": null, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, + }, + ], + "orderAccountingStatuses": [], + "validationResult": "invalid", + "additionalRemarks": + [ + { + "code": "MANDATE_REQUIRED", + "parameter": "directDebitMandateId", + }, + ], + "validationErrors": + [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + }, + ], + }, + ], + "payments": [], + "orderCustomer": null, + } + Order with status concept (and anonymous token): + summary: Order with status concept (and anonymous token) + description: Order with status concept (and anonymous token) + value: + { + "validContents": false, + "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", + "externalOrderId": null, + "orderNumber": "ORD-123456", + "customerProfileId": 1337, + "totalAmount": 121, + "touchPoint": + { + "salesTouchpointId": 3, + "name": "Website (Perplex)", + "isActive": true, + "retailerId": 1001, + }, + "language": + { + "languageId": 1, + "name": "Nederlands", + "iso639Code": "nl-NL", + "ietfCode": "nl", + }, + "createdOn": "2024-03-22T09:00:00", + "lastUpdatedOn": "2024-03-22T09:00:00", + "order_OrderStatuses": + [ + { + "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", + "orderStatus": + { "orderStatusId": 1, "name": "concept" }, + "createdOn": "2024-03-22T09:00:00", + "description": "Order is aangemaakt", + }, + ], + "orderLines": + [ + { + "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "externalOrderLineId": null, + "productId": 1, + "productName": "HTM Maandkorting 20%", + "fikoArticleNumber": "6609", + "productDescription": "HTM Maandkorting 20%", + "taxCode": "V21", + "taxPercentage": 21.0000, + "taxAmount": null, + "amountExclTax": null, + "amountInclTax": 121, + "quantity": 1, + "orderLineTerms": + [ + { + "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", + "termsUrl": "generalTermsAndConditions.pdf", + }, + { + "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", + "termsUrl": "productTermsAndConditions.pdf", + }, + ], + "createdOn": "2024-03-22T09:00:00", + "validFrom": "2024-03-22T09:00:00", + "validUntil": null, + "orderLineStatus": + { "orderLineStatusId": 1, "name": "pending" }, + "customerTokens": + [ + { + "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", + "tokenType": + { "tokenTypeId": 1, "name": "EMV" }, + "ovPayTokenId": null, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "ovpasNumber": "OV34567", + "verificationCode": "A7H6", + "personalAccountData": + { + "personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47", + "name": "Jan de Vries", + "birthdate": "1970-01-01", + "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC", + "challengeType": + { + "challengeTypeId": 1, + "name": "email", + }, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + "ovPayToken": + { + "customerProfileId": null, + "ovPayTokenId": null, + "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", + "tokenType": + { + "tokenTypeId": 2, + "name": "OV-pas physical", + }, + "alias": null, + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, + }, + ], + "orderAccountingStatuses": [], + "validationResult": "invalid", + "additionalRemarks": + [ + { + "code": "MANDATE_REQUIRED", + "parameter": "directDebitMandateId", + }, + ], + "validationErrors": + [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + }, + ], + }, + ], + "payments": [], + "orderCustomer": null, + } + Order with status paid: + summary: Order with status paid + description: Order with status paid value: { "validContents": null, @@ -847,8 +1192,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -889,6 +1234,7 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": null, }, ], "orderAccountingStatuses": @@ -990,7 +1336,7 @@ paths: } patch: tags: - - Order Creation + - Order Creation Flow summary: Update an existing order. description: Update an existing order. requestBody: @@ -999,25 +1345,10 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Order update v2.2 - description: Order update v2.2 - value: - { - "languageId": 1, - } - v1.2: - summary: Order update v1.2 - description: Order update v1.2 - value: - { - "customerProfileId": 1337, - "totalAmount": 121, - "languageId": 1, - "billingAddressId": 1, - "shippingAddressId": 1, - "lastUpdatedOn": "2024-03-22T09:00:00", - } + Update order languageId": + summary: Update order languageId + description: Update order languageId + value: { "languageId": 1 } responses: "200": description: OK @@ -1026,7 +1357,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Concept order with OVpas and PAD: value: { "validContents": false, @@ -1072,8 +1403,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -1096,7 +1427,7 @@ paths: [ { "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", - "tokenTypeId": + "tokenType": { "tokenTypeId": 1, "name": "EMV" }, "ovPayTokenId": 1, "serviceReferenceId": "NLOV1234567ABCDEFG", @@ -1116,10 +1447,87 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], - "validationResult": "preliminary", + "validationResult": "invalid", "additionalRemarks": [ { @@ -1127,18 +1535,18 @@ paths: "parameter": "directDebitMandateId", }, ], - "validationErrors": [], + "validationErrors": + [ + { + "detail": "Startdate of this product should be at most 60 days in the future.", + "pointer": "#/0/startDate", + }, + ], }, ], "payments": [], "orderCustomer": null, } - v1.2: - value: - { - "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", - "orderNumber": "ORD-123456", - } "400": description: Bad request content: @@ -1169,7 +1577,7 @@ paths: } delete: tags: - - Order Creation + - Order Creation Flow summary: Delete an existing order. description: Delete an existing order. responses: @@ -1215,8 +1623,8 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation - summary: Add a new order line to an existing order. P1 + - Order Creation Flow + summary: Add a new order line to an existing order. description: Add a new order line to an existing order. requestBody: content: @@ -1224,9 +1632,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2.2: - summary: Create order line v2.2.2 product with childeren - description: Create order line v2.2.2 product with childeren + Add order line to concept order: + summary: Add order line to concept order product with children + description: Add order line to concept order product with children value: { "externalOrderLineId": null, @@ -1248,64 +1656,14 @@ paths: }, ], } - v2.2.1: - summary: Create order line v2.2.1 with minimum requirements - description: Create order line v2.2.1 with minimum requirements + Order line with minimum requirements: + summary: Create order line with minimum requirements + description: Create order line with minimum requirements value: { "productId": 2, "quantity": 1, - "createdOn": "2024-03-22T09:00:00" - } - v1.2: - summary: Create orderLine v1.2 - description: Create orderLine v1.2 - value: - { - "externalOrderLineId": null, - "productId": 1, - "productName": "HTM Maandkorting 20%", - "productCode": "HTM-MND-20", - "productDescription": "HTM Maandkorting 20%", - "taxAmount": 21, - "taxMetadataId": "1d6f1725-1072-4f08-982c-3df51dd854a1", - "amountExclTax": 100, - "amountInclTax": 121, - "quantity": 1, - "orderLineTerms": - [{ "termsUrl": "generalTermsAndConditions.pdf" }], - "validFrom": "2024-03-22T09:00:00", - "validUntil": "2025-03-22T09:00:00", - "orderLineStatusId": 4, "createdOn": "2024-03-22T09:00:00", - "tokens": - [ - { - "tokenTypeId": 1, - "ovPayTokenId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "verificationCode": "A7H6", - "personalAccountData": - { - "name": "Jan de Vries", - "dateOfBirth": "1970-01-01", - "photoReference": "DSC_0502.JPG", - "fileType": "image/jpg", - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - }, - }, - ], - "orderAccountingStatuses": - [ - { - "accountingStatusId": 1, - "createdOn": "2024-03-22T09:00:00", - "description": "Financiele transactie voor de FIKO.", - }, - ], } responses: "200": @@ -1315,11 +1673,11 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2.2: + AddRemark chosen product is not a leaf node product: summary: AddRemark chosen product is not a leaf node product description: AddRemark for case where chosen product is not a leaf node product value: - { + { "validContents": false, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -1363,8 +1721,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -1394,28 +1752,106 @@ paths: "amount": null, "ovpasNumber": null, "verificationCode": null, - "personalAccountData": null + "personalAccountData": null, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], "validationResult": "preliminary", - "additionalRemarks": [ + "additionalRemarks": + [ { "code": "PRODUCT_CHOICE_REQUIRED", "parameter": "orderline.productId", - } - ], + }, + ], "validationErrors": [], }, ], "payments": [], - "orderCustomers": null + "orderCustomer": null, } - v2.2.1: - summary: Create order line v2.2.1 with minimum requirements - description: AddRemark for case where chosen product requires personal account data birthdate + Create order line with minimum requirements: + summary: Create order line with minimum requirements + description: AddRemark for case where chosen product requires personal account data birthdate value: - { + { "validContents": false, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -1459,8 +1895,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -1490,34 +1926,109 @@ paths: "amount": null, "ovpasNumber": null, "verificationCode": null, - "personalAccountData": null + "personalAccountData": null, + "ovPayToken": + { + "customerProfileId": 1, + "ovPayTokenId": 4, + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], "validationResult": "preliminary", - "additionalRemarks": [ + "additionalRemarks": + [ { "code": "PERSONALACCOUNTDATA_BIRTHDATE_REQUIRED", "parameter": "personalaccountdata.birthdate", - }, + }, { "code": "TOKEN_REQUIRED", "parameter": "customerToken", - }, + }, { "code": "VALIDFROM_REQUIRED", "parameter": "orderline.validFrom", - } - ], + }, + ], "validationErrors": [], }, ], "payments": [], - "orderCustomers": null - } - v1.2: - value: - { "orderLineId": "e78b78d9-4fb0-4a9c-8dc0-6d100c9f1b3f" } + "orderCustomer": null, + } "400": description: Bad request content: @@ -1565,18 +2076,18 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation - summary: Update an existing order line. P1 - description: Update an existing order line. P1 + - Order Creation Flow + summary: Update an existing order line. + description: Update an existing order line. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.3: - summary: Update order line v2.3 - description: Update order line v2.3 + Update order line: + summary: Update order line + description: Update order line value: { "productId": 21, @@ -1584,29 +2095,6 @@ paths: "validFrom": "2024-03-25T09:00:00", "validUntil": null, } - v2.2: - summary: Update order line v2.2 - description: Update order line v2.2 - value: - { - "quantity": 1, - "validFrom": "2024-03-25T09:00:00", - "validUntil": null, - } - v1.2: - summary: Orderline update v1.2 - description: Orderline update v1.2 - value: - { - "taxAmount": 21, - "taxMetadataId": "0574440e-7fa0-401f-b907-539c91633a5d", - "amountExclTax": 100, - "amountInclTax": 121, - "quantity": 1, - "validFrom": "2024-03-22T09:00:00", - "validUntil": "2025-03-22T09:00:00", - "orderLineStatusId": 4, - } responses: "200": description: OK @@ -1615,7 +2103,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with updated order line: value: { "validContents": false, @@ -1661,8 +2149,8 @@ paths: "productDescription": "Voor een vast bedrag onbeperkt reizen met EBS, HTM en RET in gebied HL65", "taxCode": "V09", "taxPercentage": 9.0000, - "taxAmount": 488, - "amountExclTax": 5412, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 5900, "quantity": 1, "orderLineTerms": @@ -1704,117 +2192,7 @@ paths: ], "payments": [], "orderCustomer": null, - } - v2.1: - value: - { - "validContents": false, - "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", - "externalOrderId": null, - "orderNumber": "ORD-123456", - "customerProfileId": 1337, - "totalAmount": 121, - "touchPoint": - { - "salesTouchpointId": 3, - "name": "Website (Perplex)", - "isActive": true, - "retailerId": 1001, - }, - "language": - { - "languageId": 1, - "name": "Nederlands", - "iso639Code": "nl-NL", - "ietfCode": "nl", - }, - "createdOn": "2024-03-22T09:00:00", - "lastUpdatedOn": "2024-03-22T09:00:00", - "order_OrderStatuses": - [ - { - "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", - "orderStatus": - { "orderStatusId": 1, "name": "concept" }, - "createdOn": "2024-03-22T09:00:00", - "description": "Order is aangemaakt", - }, - ], - "orderLines": - [ - { - "orderLineId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", - "externalOrderLineId": null, - "productId": 1, - "productName": "HTM Maandkorting 20%", - "fikoArticleNumber": "6609", - "productDescription": "HTM Maandkorting 20%", - "taxCode": "V21", - "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, - "amountInclTax": 121, - "quantity": 1, - "orderLineTerms": - [ - { - "orderLineTermsId": "cccada2c-d5ea-48ab-b4be-f590e16b5468", - "termsUrl": "generalTermsAndConditions.pdf", - }, - { - "orderLineTermsId": "bd76f723-9308-4629-a291-4c4fafd7ed87", - "termsUrl": "productTermsAndConditions.pdf", - }, - ], - "createdOn": "2024-03-22T09:00:00", - "validFrom": "2024-03-25T09:00:00", - "validUntil": null, - "orderLineStatus": - { "orderLineStatusId": 1, "name": "pending" }, - "customerTokens": - [ - { - "customerTokenId": "ca15ccfb-ff5c-4c3b-b7c5-d65fc39f499d", - "tokenType": - { "tokenTypeId": 1, "name": "EMV" }, - "ovPayTokenId": 1, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "ovpasNumber": "OV34567", - "verificationCode": "A7H6", - "personalAccountData": - { - "personalAccountDataId": "47db8a40-3238-4bf5-9284-759e3888bd47", - "name": "Jan de Vries", - "birthdate": "1970-01-01", - "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC", - "challengeType": - { - "challengeTypeId": 1, - "name": "email", - }, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - }, - }, - ], - "orderAccountingStatuses": [], - "validationResult": "valid", - "additionalRemarks": - [ - { - "code": "MANDATE_REQUIRED", - "parameter": "directDebitMandateId", - }, - ], - "validationErrors": [], - }, - ], - "payments": [], - "orderCustomer": null, } - v1.2: - value: - { "orderLineId": "e78b78d9-4fb0-4a9c-8dc0-6d100c9f1b3f" } "400": description: Bad request content: @@ -1839,7 +2217,7 @@ paths: } delete: tags: - - Order Creation + - Order Creation Flow summary: Delete an existing order line. description: Delete an existing order line. responses: @@ -1850,7 +2228,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with removed order line: value: { "validContents": true, @@ -1912,67 +2290,66 @@ paths: ], } /orderlines/{orderLineId}/customertokens: - parameters: - - in: path - name: orderLineId - required: true - style: simple - explode: false - schema: - type: string - format: uuid - example: a0ef57fa-395c-4a03-96e9-234c26dccea9 - - in: header - name: X-HTM-JWT-AUTH-HEADER - schema: - type: string - example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c - description: The JWT of the logged in customer (in case of a web shop). - post: - tags: - - Order Creation - summary: Add a customer token to an orderLine. - description: Add a customer token to an orderLine + parameters: + - in: path + name: orderLineId + required: true + style: simple + explode: false + schema: + type: string + format: uuid + example: a0ef57fa-395c-4a03-96e9-234c26dccea9 + - in: header + name: X-HTM-JWT-AUTH-HEADER + schema: + type: string + example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c + description: The JWT of the logged in customer (in case of a web shop). + post: + tags: + - Order Creation Flow + summary: Add a customer token to an orderLine. + description: Add a customer token to an orderLine. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2.1: - summary: Add an existing customer token to an orderline v2.2 - description: Add an existing customer token to an orderline v2.2 - value: - { - "tokenTypeId": 1, - "ovPayTokenId": 12} - v2.2.2: - summary: Add a new customer token (emv) to an orderline v2.2 - description: Add a new customer token (emv) to an orderline v2.2 + Add an existing customer token to an order line: + summary: Add an existing customer token to an order line + description: Add an existing customer token to an order line + value: { "tokenTypeId": 1, "ovPayTokenId": 12 } + Add a new customer token (EMV) to an order line: + summary: Add a new customer token (EMV) to an order line + description: Add a new customer token (EMV) to an order line value: { "tokenTypeId": 1, "serviceReferenceId": "NLOV485456456445", - "amount": 100} - v2.2.3: - summary: Add a new customer token (ov pas) to an orderline v2.2 - description: Add a new customer token (ov pas) to an orderline v2.2 + "amount": 100, + } + Add a new customer token (OVpas) to an order line: + summary: Add a new customer token (OVpas) to an order line + description: Add a new customer token (OVpas) to an order line value: { - "tokenTypeId": 2, + "tokenTypeId": 2, "ovpasNumber": "OV34567", - "verificationCode": "A7H6",} + "verificationCode": "A7H6", + } responses: - "201": + "201": description: Created content: application/json: schema: $ref: "#/components/schemas/unavailable" - examples: - v2.2: + examples: + Order with updated order line: value: - { + { "validContents": false, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -2016,8 +2393,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -2047,60 +2424,139 @@ paths: "amount": null, "ovpasNumber": null, "verificationCode": null, - "personalAccountData": null + "personalAccountData": null, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], "validationResult": "preliminary", - "additionalRemarks": [ + "additionalRemarks": + [ { "code": "PERSONALACCOUNTDATA_BIRTHDATE_REQUIRED", "parameter": "personalaccountdata.birthdate", - } - ], + }, + ], "validationErrors": [], }, ], "payments": [], - "orderCustomers": null - } + "orderCustomer": null, + } /customertokens/{customerTokenId}: - parameters: - - in: path - name: customerTokenId - required: true - style: simple - explode: false - schema: - type: string - format: uuid - example: a0ef57fa-395c-4a03-96e9-234c26dccea9 - - in: header - name: X-HTM-JWT-AUTH-HEADER - schema: - type: string - example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c - description: The JWT of the logged in customer (in case of a web shop). - patch: - tags: - - Order Creation + parameters: + - in: path + name: customerTokenId + required: true + style: simple + explode: false + schema: + type: string + format: uuid + example: a0ef57fa-395c-4a03-96e9-234c26dccea9 + - in: header + name: X-HTM-JWT-AUTH-HEADER + schema: + type: string + example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c + description: The JWT of the logged in customer (in case of a web shop). + patch: + tags: + - Order Creation Flow summary: Update a customer token. - description: Update a customer token + description: Update a customer token. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Update a customer token v2.2 - description: Update a customer token v2.2 + Update a customer token: + summary: Update a customer token + description: Update a customer token value: { "tokenTypeId": 1, "ovPayTokenId": null, "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34} + "amount": 34, + } responses: "200": description: OK @@ -2109,9 +2565,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with updated customer token: value: - { + { "validContents": true, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -2155,8 +2611,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -2175,14 +2631,93 @@ paths: "validUntil": null, "orderLineStatus": { "orderLineStatusId": 1, "name": "pending" }, - "customerTokens": [ - { - "customerTokenId":"a0ef57fa-395c-4a03-96e9-234c26dccea9", - "tokenTypeId": 1, - "ovPayTokenId": null, - "serviceReferenceId": "NLOV1234567ABCDEFG", - "amount": 34, - "personalAccountData": null} + "customerTokens": + [ + { + "customerTokenId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", + "tokenTypeId": 1, + "ovPayTokenId": null, + "serviceReferenceId": "NLOV1234567ABCDEFG", + "amount": 34, + "personalAccountData": null, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, + }, ], "orderAccountingStatuses": [], "validationResult": "valid", @@ -2191,13 +2726,13 @@ paths: }, ], "payments": [], - "orderCustomers": null - } + "orderCustomer": null, + } delete: - tags: - - Order Creation - summary: Delete a customer token from an orderline. - description: Delete a customer token from an orderline + tags: + - Order Creation Flow + summary: Delete a customer token from an orderline. + description: Delete a customer token from an orderline. responses: "200": description: OK @@ -2206,9 +2741,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with deleted customer token: value: - { + { "validContents": false, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -2252,8 +2787,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -2275,7 +2810,8 @@ paths: "customerTokens": [], "orderAccountingStatuses": [], "validationResult": "preliminary", - "additionalRemarks": [ + "additionalRemarks": + [ { "code": "CUSTOMERTOKEN_REQUIRED", "parameter": "customerTokenId", @@ -2285,58 +2821,58 @@ paths: }, ], "payments": [], - "orderCustomers": null + "orderCustomer": null, } /customertokens/{customerTokenId}/personalaccountdata: - parameters: - - in: path - name: customerTokenId - required: true - style: simple - explode: false - schema: - type: string - format: uuid - example: a0ef57fa-395c-4a03-96e9-234c26dccea9 - - in: header - name: X-HTM-JWT-AUTH-HEADER - schema: - type: string - example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c - description: The JWT of the logged in customer (in case of a web shop). - post: - tags: - - Order Creation + parameters: + - in: path + name: customerTokenId + required: true + style: simple + explode: false + schema: + type: string + format: uuid + example: a0ef57fa-395c-4a03-96e9-234c26dccea9 + - in: header + name: X-HTM-JWT-AUTH-HEADER + schema: + type: string + example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c + description: The JWT of the logged in customer (in case of a web shop). + post: + tags: + - Order Creation Flow summary: Add personal account data to a customer token. - description: Add personal account data to a customer token + description: Add personal account data to a customer token. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Add personal account data to a customer token v2.2 - description: Add personal account data to a customer token v2.2 + Add personal account data to a customer token: + summary: Add personal account data to a customer token + description: Add personal account data to a customer token value: { "name": "Jan de Vries", "birthdate": "1970-01-01", - "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" , + "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC", "challengeTypeId": 1, "oneTimePassword": "H5Iiz3JTaQeIV8p", } responses: - "201": + "201": description: Created content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with added personal account data to customer token: value: - { + { "validContents": true, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -2380,8 +2916,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -2411,14 +2947,92 @@ paths: "amount": null, "ovpasNumber": null, "verificationCode": null, - "personalAccountData":{ - "personalAccountDataId": "d9021fdd-6e83-45c0-9aef-71680f0b4e74", - "name": "Jan de Vries", - "birthdate": "1970-01-01", - "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" , - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - } + "personalAccountData": + { + "personalAccountDataId": "d9021fdd-6e83-45c0-9aef-71680f0b4e74", + "name": "Jan de Vries", + "birthdate": "1970-01-01", + "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + "ovPayToken": + { + "customerProfileId": 1, + "ovPayTokenId": 12, + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -2428,54 +3042,51 @@ paths: }, ], "payments": [], - "orderCustomers": null + "orderCustomer": null, } /personalaccountdata/{personalAccountDataId}: - parameters: - - in: path - name: personalAccountDataId - required: true - style: simple - explode: false - schema: - type: string - format: uuid - example: d9021fdd-6e83-45c0-9aef-71680f0b4e74 - - in: header - name: X-HTM-JWT-AUTH-HEADER - schema: - type: string - example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c - description: The JWT of the logged in customer (in case of a web shop). - patch: - tags: - - Order Creation + parameters: + - in: path + name: personalAccountDataId + required: true + style: simple + explode: false + schema: + type: string + format: uuid + example: d9021fdd-6e83-45c0-9aef-71680f0b4e74 + - in: header + name: X-HTM-JWT-AUTH-HEADER + schema: + type: string + example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c + description: The JWT of the logged in customer (in case of a web shop). + patch: + tags: + - Order Creation Flow summary: Update personal account data. - description: Update personal account data + description: Update personal account data. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Update personal account data v2.2 - description: Update personal account data v2.2 - value: - { - "birthdate": "2010-01-01", - } + Update personal account data: + summary: Update personal account data + description: Update personal account data + value: { "birthdate": "2010-01-01" } responses: - "201": + "201": description: Created content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with updated personal account data: value: - { + { "validContents": false, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -2519,8 +3130,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -2550,46 +3161,125 @@ paths: "amount": null, "ovpasNumber": null, "verificationCode": null, - "personalAccountData":{ - "personalAccountDataId": "d9021fdd-6e83-45c0-9aef-71680f0b4e74", - "name": "Jan de Vries", - "birthdate": "2010-01-01", - "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC" , - "challengeTypeId": 1, - "oneTimePassword": "H5Iiz3JTaQeIV8p", - } + "personalAccountData": + { + "personalAccountDataId": "d9021fdd-6e83-45c0-9aef-71680f0b4e74", + "name": "Jan de Vries", + "birthdate": "2010-01-01", + "photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAWJLR0Q+SWQA4wAAAAd0SU1FB+YCBAwmK58TFQgAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDItMDRUMTI6Mzg6NDMrMDA6MDBAjYOrAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTAyLTA0VDEyOjM4OjQzKzAwOjAwMdA7FwAAAFd6VFh0UmF3IHByb2ZpbGUgdHlwZSBpcHRjAAB4nOPyDAhxVigoyk/LzEnlUgADIwsuYwsTIxNLkxQDEyBEgDTDZAMjs1Qgy9jUyMTMxBzEB8uASKBKLgDqFxF08kI1lQAAAYdpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0n77u/JyBpZD0nVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkJz8+DQo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIj48cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPjxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSJ1dWlkOmZhZjViZGQ1LWJhM2QtMTFkYS1hZDMxLWQzM2Q3NTE4MmYxYiIgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPjx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+PC9yZGY6RGVzY3JpcHRpb24+PC9yZGY6UkRGPjwveDp4bXBtZXRhPg0KPD94cGFja2V0IGVuZD0ndyc/PiyUmAsAAAANSURBVBhXY3grk/YfAAXYAm/HQierAAAAAElFTkSuQmCC", + "challengeTypeId": 1, + "oneTimePassword": "H5Iiz3JTaQeIV8p", + }, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], "validationResult": "invalid", "additionalRemarks": [], - "validationErrors": [ + "validationErrors": + [ { "detail": "Product is for gboAgeProfile 19-65, given gboAgeProfile is 12-19", "pointer": "#/customerTokens/878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e/personalAccountData/birthdate", }, - ], + ], }, ], "payments": [], - "orderCustomers": null - } - delete: - tags: - - Order Creation + "orderCustomer": null, + } + delete: + tags: + - Order Creation Flow summary: Delete personal account data. - description: Delete personal account data + description: Delete personal account data. responses: - "200": + "200": description: Ok content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - value: - { + Order with deleted personal account data: + value: + { "validContents": true, "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "externalOrderId": null, @@ -2633,8 +3323,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -2664,7 +3354,84 @@ paths: "amount": null, "ovpasNumber": null, "verificationCode": null, - "personalAccountData": null + "personalAccountData": null, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -2674,8 +3441,8 @@ paths: }, ], "payments": [], - "orderCustomers": null - } + "orderCustomer": null, + } /orders/{orderId}/payments: parameters: - in: path @@ -2695,7 +3462,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation + - Order Creation Flow summary: Add a payment to an existing order. description: Add a payment to an existing order. requestBody: @@ -2704,11 +3471,13 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Add a payment v2.2 + Add a payment to an order: + summary: Add a payment to an order description: | Add a payment for a concept order. Note how it is not allowed to add a payment status or an external - payment reference when adding a payment to a concept order. + payment reference when adding a payment to a concept order. Also note how the order status changes to + 'awaitingPayment' after adding the payment. Finally, the customerToken information is less detailed + since the order status is not concept anymore. value: { "createdOn": "2024-03-22T09:00:00", @@ -2717,38 +3486,6 @@ paths: "isRefund": false, "htmPaymentReference": "HTM-1234", } - v1.2: - summary: Order creation v1.2 - description: Order creation v1.2 - value: - { - "createdOn": "2024-03-22T09:00:00", - "amountDebit": 121, - "paymentMethodId": 1, - "touchpointId": 1, - "isRefund": false, - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - "paymentStatuses": - [ - { - "createdOn": "2024-03-22T09:00:00", - "statusCode": "190", - "statusDescription": "Success", - "statusSubCode": "S001", - "statusSubDescription": "PaymentSuccessful", - }, - ], - "mandateInput": - { - "directDebitMandateTypeId": 1, - "createdOn": "2024-03-22T09:00:00", - "bic": "RABONL2U", - "iban": "NL44RABO0123456789", - "ascription": "J. de Vries", - "place": "Den Haag", - }, - } responses: "201": description: Created @@ -2757,7 +3494,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order in status 'awaitingPayment': value: { "validContents": true, @@ -2810,8 +3547,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -2854,6 +3591,7 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": null, }, ], "orderAccountingStatuses": [], @@ -2870,8 +3608,8 @@ paths: "productDescription": "HTM Maandkorting 40%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 42, - "amountExclTax": 200, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 242, "quantity": 1, "orderLineTerms": @@ -2902,6 +3640,7 @@ paths: "ovpasNumber": null, "verificationCode": null, "personalAccountData": null, + "ovPayToken": null, }, ], "orderAccountingStatuses": [], @@ -2960,8 +3699,6 @@ paths: ], }, } - v1.2: - value: { "paymentId": "94270188-4cf6-447e-bd49-e8186bcec073" } /payments/{paymentId}: parameters: - in: path @@ -2981,18 +3718,22 @@ paths: description: The JWT of the logged in customer (in case of a web shop). patch: tags: - - Order Creation - summary: Update a payment on an existing order. P2 - description: Update a payment on an existing order. P2 + - Order Creation Flow + summary: Update a payment on an existing orders. + description: Update a payment on an existing order. requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Update payment v2.2 - description: Update payment v2.2 + Update payment (pending payment): + summary: Update payment (pending payment) + description: Update payment (pending payment) + value: { "todo": "todo" } + Update payment (payment successful): + summary: Update payment (payment successful) + description: Update payment (payment successful) value: { "htmPaymentReference": "HTM-1234", @@ -3017,14 +3758,14 @@ paths: "place": "Den Haag", }, } - v1.2: - summary: Order payment update v1.2 - description: Order payment update v1.2 - value: - { - "htmPaymentReference": "HTM-1234", - "pspPaymentReference": "Buckaroo-1234", - } + Update payment (payment failed): + summary: Update payment (payment failed) + description: Update payment (payment failed) + value: { "todo": "todo" } + Update payment (payment cancelled): + summary: Update payment (payment cancelled) + description: Update payment (payment cancelled) + value: { "todo": "todo" } responses: "200": description: OK @@ -3033,7 +3774,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order updated to payment successful: value: { "validContents": true, @@ -3060,6 +3801,20 @@ paths: "lastUpdatedOn": "2024-03-22T09:00:00", "order_OrderStatuses": [ + { + "order_orderStatusId": "5b6f4e2e-3c4b-4f5d-9e2a-8f4e2b6c7d8e", + "orderStatus": + { "orderStatusId": 3, "name": "paid" }, + "createdOn": "2024-03-22T09:10:00", + "description": "Betaling is succesvol afgerond", + }, + { + "order_orderStatusId": "99137e30-2bf5-4c9b-95f0-ca432adcae5f", + "orderStatus": + { "orderStatusId": 2, "name": "awaitingPayment" }, + "createdOn": "2024-03-22T09:05:00", + "description": "Betaling is geinitieerd", + }, { "order_orderStatusId": "f1d0e1a7-a3cf-4876-b8f2-073add10667f", "orderStatus": @@ -3079,8 +3834,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -3123,6 +3878,7 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": null, }, ], "orderAccountingStatuses": [], @@ -3196,7 +3952,7 @@ paths: }, }, ], - "orderCustomers": + "orderCustomer": { "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073", "birthname": "Jan", @@ -3220,8 +3976,6 @@ paths: ], }, } - v1.2: - value: { "paymentId": "94270188-4cf6-447e-bd49-e8186bcec073" } v9.9 (Nick Pows): value: { @@ -3268,8 +4022,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -3312,6 +4066,7 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": null, }, ], "orderAccountingStatuses": @@ -3406,7 +4161,7 @@ paths: }, }, ], - "orderCustomers": + "orderCustomer": { "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073", "birthname": "Jan", @@ -3449,8 +4204,8 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Creation - summary: Add a customer to an existing order. + - Order Creation Flow + summary: Add a customer to an existing orders. description: Add a customer to an existing order. requestBody: content: @@ -3458,9 +4213,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Add order customer v2.2 - description: Add order customer v2.2 + Add a customer to an existing order: + summary: Add a customer to an existing order + description: Add a customer to an existing order value: { "birthname": "Jan", @@ -3481,29 +4236,6 @@ paths: }, ], } - v1.2: - summary: Add order customer v1.2 - description: Add order customer v1.2 - value: - { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - "orderCustomerAddresses": - [ - { - "addressTypeId": 1, - "street": "Kon. Julianaplein", - "houseNumber": 10, - "houseNumberSuffix": "a", - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "NL", - }, - ], - } responses: "201": description: Created @@ -3512,7 +4244,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Oder with added customer: value: { "validContents": true, @@ -3558,8 +4290,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -3582,7 +4314,7 @@ paths: [ { "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", - "tokenTypeId": + "tokenType": { "tokenTypeId": 1, "name": "EMV" }, "ovPayTokenId": 1, "serviceReferenceId": "NLOV1234567ABCDEFG", @@ -3602,6 +4334,83 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -3635,11 +4444,6 @@ paths: ], }, } - v1.2: - value: - { - "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073", - } /ordercustomers/{orderCustomerId}: patch: parameters: @@ -3659,7 +4463,7 @@ paths: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). tags: - - Order Creation + - Order Creation Flow summary: Update a customer on an existing order. description: Update a customer on an existing order. requestBody: @@ -3668,20 +4472,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Update order customer v2.2 - description: Update order customer v2.2 - value: - { - "birthname": "Jan", - "surname": "Vries", - "prefix": "de", - "emailAddress": "jandevries@outlook.com", - "dateOfBirth": "1970-01-01", - } - v1.2: - summary: Update order customer v1.2 - description: Update order customer v1.2 + Update a customer on an existing order: + summary: Update a customer on an existing order + description: Update a customer on an existing order value: { "birthname": "Jan", @@ -3698,7 +4491,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with updated customer: value: { "validContents": true, @@ -3744,8 +4537,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -3768,7 +4561,7 @@ paths: [ { "customerTokenId": "878ad7c1-cd8f-4bcf-a983-1bd8c6e6975e", - "tokenTypeId": + "tokenType": { "tokenTypeId": 1, "name": "EMV" }, "ovPayTokenId": 1, "serviceReferenceId": "NLOV1234567ABCDEFG", @@ -3788,6 +4581,83 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -3821,11 +4691,6 @@ paths: ], }, } - v1.2: - value: - { - "orderCustomerId": "94270188-4cf6-447e-bd49-e8186bcec073", - } /ordercustomers/{orderCustomerId}/orderCustomerAddress: post: parameters: @@ -3845,7 +4710,7 @@ paths: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). tags: - - Order Creation + - Order Creation Flow summary: Create a customer address for an existing order. description: Create a customer address for an existing order. requestBody: @@ -3854,9 +4719,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Add order customer address v2.2 - description: Add order customer address v2.2 + Add an address to a customer on an order: + summary: Add an address to a customer on an order + description: Add an address to a customer on an order value: { "addressTypeId": 3, @@ -3867,19 +4732,6 @@ paths: "city": "Den Haag", "country": "NL", } - v1.2: - summary: Order customer address create v1.2 - description: Order customer address create v1.2 - value: - { - "addressTypeId": 1, - "street": "Kon. Julianaplein", - "houseNumber": 10, - "houseNumberSuffix": "a", - "postalCode": "2595 AA", - "city": "Den Haag", - "country": "NL", - } responses: "201": description: OK @@ -3888,7 +4740,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with added customer address: value: { "validContents": false, @@ -3934,8 +4786,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -3978,6 +4830,83 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": + { + "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", + }, + "gboPersonalAccountData": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -4036,7 +4965,7 @@ paths: example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c description: The JWT of the logged in customer (in case of a web shop). tags: - - Order Creation + - Order Creation Flow summary: Update a customer address for an existing order. description: Update a customer address for an existing order. requestBody: @@ -4045,9 +4974,9 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: - summary: Update order customer address v2.2 - description: Update order customer address v2.2 + Update order customer address: + summary: Update order customer address + description: Update order customer address value: { "addressTypeId": 3, @@ -4066,7 +4995,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.2: + Order with updated customer address: value: { "validContents": false, @@ -4112,8 +5041,8 @@ paths: "productDescription": "HTM Maandkorting 20%", "taxCode": "V21", "taxPercentage": 21.0000, - "taxAmount": 21, - "amountExclTax": 100, + "taxAmount": null, + "amountExclTax": null, "amountInclTax": 121, "quantity": 1, "orderLineTerms": @@ -4156,6 +5085,83 @@ paths: }, "oneTimePassword": "H5Iiz3JTaQeIV8p", }, + "ovPayToken": + { + "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", + }, + "gboPersonalAccountData": + { + "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", + }, + }, + "gboAgeProfile": + { + "gboAgeProfileId": 1, + "name": "Kind (4 t/m 11 jaar)", + "ageFromInclusive": 4, + "ageToInclusive": 11, + }, + }, }, ], "orderAccountingStatuses": [], @@ -4197,7 +5203,7 @@ paths: } delete: tags: - - Order Creation + - Order Creation Flow summary: Delete an existing order address. description: Delete an existing order address. parameters: @@ -4224,7 +5230,7 @@ paths: schema: $ref: "#/components/schemas/unavailable" examples: - v2.1: + Order after deleting customer address: value: { "validContents": true, @@ -4313,7 +5319,7 @@ paths: description: The JWT of the logged in customer (in case of a web shop). post: tags: - - Order Fulfill + - Order Fulfillment summary: Fulfill an order without creating or updating the order as a resource. description: Fulfill an order without creating or updating the order as a resource. responses: @@ -4322,8 +5328,8 @@ paths: /orders/validation/gboAgeProfile: get: tags: - - Order validation - summary: Get GBO age profile that is valid for the given input. P2 + - Order Validation + summary: Get GBO age profile that is valid for the given input. description: |- Only one age profile can be valid at any one time, so only one profile is returned. parameters: @@ -4385,7 +5391,7 @@ paths: description: verification code belonging to the OVpas number schema: type: string - example: 1A3C7D + example: 1A3C7D responses: "200": description: OK @@ -4491,4 +5497,4 @@ components: example: 4 ageToInclusive: type: integer - example: 11 \ No newline at end of file + example: 11