OVPAY-1136 - Added API versioning in HTTP headers.

This commit is contained in:
Bas Boterman 2024-11-19 14:46:13 +01:00
parent 1f9e9c83ac
commit 889eeeb130

View File

@ -9,217 +9,291 @@ paths:
/orders/validation: /orders/validation:
post: post:
tags: tags:
- Order Validation v2 - Order Validation v1 & v2
summary: Validate order. summary: Validate order.
description: Validate order. description: Validate order.
parameters: parameters:
- in: header - in: header
name: X-HTM-JWT-AUTH-HEADER name: X-HTM-JWT-AUTH-HEADER
required: true required: false
style: simple style: simple
explode: false explode: false
schema: schema:
type: string type: string
- in: header
name: Accept-version
required: false
style: simple
explode: false
schema:
type: string
example: "2.0"
description: The version of the API.
requestBody: requestBody:
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
example: examples:
{ v1:
"purchaseDate": "2024-03-22", summary: Order validation v1
"customerProfileId": 1337, description: Order validation v1
"languageId": 1, value:
"billingAddressId": 1,
"shippingAddressId": 1,
"contents":
[ [
{ {
"productId": 1, "ovPayTokenId": 2,
"quantity": 5, "serviceReferenceId": "NLOV1234567ABCDEFG",
"validFrom": "2024-03-22T09:00:00", "amount": 34,
"validUntil": null, "ovpasNumber": "OV34567",
"tokens": "productId": 2,
[ "startDate": "2024-03-22T09:00:00z",
{ "quantity": 1,
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
}, },
{ {
"productId": 2, "ovPayTokenId": 3,
"quantity": 3, "serviceReferenceId": "NLOV1234567ABCDEFG",
"validFrom": "2024-03-22T09:00:00", "amount": 89,
"validUntil": null, "ovpasNumber": "OV34567",
"productId": 4,
"startDate": "2024-03-22T09:00:00z",
"quantity": 4,
}, },
], ]
"customer": v2:
summary: Order validation v2
description: Order validation v2
value:
{ {
"birthname": "Jan", "purchaseDate": "2024-03-22",
"surname": "Vries", "customerProfileId": 1337,
"prefix": "de", "languageId": 1,
"emailAddress": "jandevries@outlook.com", "billingAddressId": 1,
"dateOfBirth": "1970-01-01", "shippingAddressId": 1,
"addresses": "contents":
[ [
{ {
"addressTypeId": 1, "productId": 1,
"street": "Kon. Julianaplein", "quantity": 5,
"houseNumber": 10, "validFrom": "2024-03-22T09:00:00",
"houseNumberSuffix": "a", "validUntil": null,
"postalCode": "2595 AA", "tokens":
"city": "Den Haag", [
"country": "NL", {
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
},
{
"productId": 2,
"quantity": 3,
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
}, },
], ],
}, "customer":
} {
"birthname": "Jan",
"surname": "Vries",
"prefix": "de",
"emailAddress": "jandevries@outlook.com",
"dateOfBirth": "1970-01-01",
"addresses":
[
{
"addressTypeId": 1,
"street": "Kon. Julianaplein",
"houseNumber": 10,
"houseNumberSuffix": "a",
"postalCode": "2595 AA",
"city": "Den Haag",
"country": "NL",
},
],
},
}
responses: responses:
"201": "200":
description: Created description: OK
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
example: examples:
{ v1:
"validContents": true, summary: Order validation v1
"purchaseDate": "2024-03-22", description: Order validation v1
"customerProfileId": 1337, value:
"languageId": 1,
"billingAddressId": 1,
"shippingAddressId": 1,
"totalAmount": 121,
"contents":
[
{
"productId": 1,
"quantity": 5,
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"taxAmount": 21,
"taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"isRenewable": true,
"nextDebitDate": "2024-04-22",
"termAmountExclTax": 100,
"termAmountInclTax": 121,
"tokens":
[
{
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
"additionalRemarks": [],
"validationErrors":
[
{
"detail": "Startdate of this product should be at most 60 days in the future.",
"pointer": "#/contents[0]/validFrom",
},
{
"detail": "Combination of product and token type is not valid.",
"pointer": "#/contents[0]/tokens[0]/ovPayTokenId",
},
],
},
{
"productId": 2,
"quantity": 3,
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"taxAmount": 21,
"taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"isRenewable": true,
"nextDebitDate": "2024-04-22",
"termAmountExclTax": 100,
"termAmountInclTax": 121,
},
],
"customer":
{ {
"birthname": "Jan", "validContents": true,
"surname": "Vries", "amountExclTax": 0,
"prefix": "de", "taxPercentage": 0,
"emailAddress": "jandevries@outlook.com", "amountInclTax": 0,
"dateOfBirth": "1970-01-01", "contents":
"addresses":
[ [
{ {
"addressTypeId": 1, "ovPayTokenId": 0,
"street": "Kon. Julianaplein", "serviceReferenceId": "string",
"houseNumber": 10, "ovpasNumber": "string",
"houseNumberSuffix": "a", "productId": 0,
"postalCode": "2595 AA", "quantity": 0,
"city": "Den Haag", "amountExclTax": 0,
"country": "NL", "taxPercentage": 0,
"amountInclTax": 0,
"startDate": "string",
"endDate": "string",
"isRenewable": true,
"nextDebitDate": "string",
"termAmountExclTax": 0,
"termAmountInclTax": 0,
"additionalRemarks":
[{ "code": "string", "parameter": "string" }],
"validationErrors":
[{ "detail": "string", "pointer": "string" }],
}, },
], ],
"additionalRemarks": }
v2:
summary: Order validation v2
description: Order validation v2
value:
{
"validContents": true,
"purchaseDate": "2024-03-22",
"customerProfileId": 1337,
"languageId": 1,
"billingAddressId": 1,
"shippingAddressId": 1,
"totalAmount": 121,
"contents":
[ [
{ {
"code": "PERSONAL_DATA_NEEDED", "productId": 1,
"parameter": "dateOfBirth", "quantity": 5,
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"taxAmount": 21,
"taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"isRenewable": true,
"nextDebitDate": "2024-04-22",
"termAmountExclTax": 100,
"termAmountInclTax": 121,
"tokens":
[
{
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
"additionalRemarks": [],
"validationErrors":
[
{
"detail": "Startdate of this product should be at most 60 days in the future.",
"pointer": "#/contents[0]/validFrom",
},
{
"detail": "Combination of product and token type is not valid.",
"pointer": "#/contents[0]/tokens[0]/ovPayTokenId",
},
],
}, },
{ {
"code": "PERSONAL_DATA_NEEDED", "productId": 2,
"parameter": "photo", "quantity": 3,
}, "validFrom": "2024-03-22T09:00:00",
{ "validUntil": null,
"code": "MANDATE_REQUIRED", "taxAmount": 21,
"parameter": "directDebitMandateId", "taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"isRenewable": true,
"nextDebitDate": "2024-04-22",
"termAmountExclTax": 100,
"termAmountInclTax": 121,
}, },
], ],
"validationErrors": "customer":
[ {
{ "birthname": "Jan",
"detail": "Startdate of this product should be at most 60 days in the future.", "surname": "Vries",
"pointer": "#/contents[1]/validFrom", "prefix": "de",
}, "emailAddress": "jandevries@outlook.com",
], "dateOfBirth": "1970-01-01",
}, "addresses":
} [
{
"addressTypeId": 1,
"street": "Kon. Julianaplein",
"houseNumber": 10,
"houseNumberSuffix": "a",
"postalCode": "2595 AA",
"city": "Den Haag",
"country": "NL",
},
],
"additionalRemarks":
[
{
"code": "PERSONAL_DATA_NEEDED",
"parameter": "dateOfBirth",
},
{
"code": "PERSONAL_DATA_NEEDED",
"parameter": "photo",
},
{
"code": "MANDATE_REQUIRED",
"parameter": "directDebitMandateId",
},
],
"validationErrors":
[
{
"detail": "Startdate of this product should be at most 60 days in the future.",
"pointer": "#/contents[1]/validFrom",
},
],
},
}
/orders/{orderId}/fulfillment: /orders/{orderId}/fulfillment:
post: post:
tags: tags:
- Order Fulfillment v2 - Order Fulfillment v1 & v2
summary: Fulfill an order. summary: Fulfill an order.
description: Fulfill an order. description: Fulfill an order.
parameters: parameters:
- in: header - in: header
name: X-HTM-JWT-AUTH-HEADER name: X-HTM-JWT-AUTH-HEADER
required: true required: false
style: simple style: simple
explode: false explode: false
schema: schema:
@ -233,116 +307,168 @@ paths:
type: string type: string
format: uuid format: uuid
example: a0ef57fa-395c-4a03-96e9-234c26dccea9 example: a0ef57fa-395c-4a03-96e9-234c26dccea9
- in: header
name: Accept-version
required: false
style: simple
explode: false
schema:
type: string
example: "2.0"
description: The version of the API.
requestBody: requestBody:
content: content:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
example: examples:
{ v1:
"orderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", summary: Order fulfillment v1
"customerProfileId": 1337, description: Order fulfillment v1
"totalAmount": 121, value:
"languageId": 1,
"billingAddressId": 1,
"shippingAddressId": 1,
"createdOn": "2024-03-22T09:00:00",
"orderStatusId": 4,
"orderLines":
[
{
"orderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f",
"productId": 1,
"productName": "HTM Maandkorting 20%",
"productCode": "HTM-MND-20",
"productDescription": "HTM Maandkorting 20%",
"taxAmount": 21,
"taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"quantity": 1,
"terms":
[
"generalTermsAndConditions.pdf",
"productTermsAndConditions.pdf",
],
"createdOn": "2024-03-22T09:00:00",
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"orderLineStatusId": 4,
"tokens":
[
{
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
},
],
"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",
},
],
"payPush":
{
"consumerIssuer": "ABN AMRO",
"transactionId": "0000000000000001",
"consumerName": "J. de Vries",
"consumerIBAN": "NL44RABO0123456789",
"consumerBIC": "RABONL2U",
},
},
],
"customer":
{ {
"birthname": "Jan", "customerProfileID": 123415,
"surname": "Vries", "customerProfileData": { "dateOfBirth": "09-03-1989" },
"prefix": "de", "personalAccountData": { "birthdate": "09-03-1989" },
"emailAddress": "jandevries@outlook.com", "directDebitMandate":
"dateOfBirth": "1970-01-01", {
"addresses": "consumerName": "J. de Tèster",
"consumerBic": "RABONL2U",
"consumerIban": "NL44RABO0123456789",
},
"orderContents":
[ [
{ {
"addressTypeId": 1, "ovPayTokenId": 123,
"street": "Kon. Julianaplein", "serviceReferenceId": "NLOV1234567ABCDEFG",
"houseNumber": 10, "amount": 450,
"houseNumberSuffix": "a", "ovpasNumber": "63AW974",
"postalCode": "2595 AA", "productId": 2,
"city": "Den Haag", "startDate": "2024-03-22T09:00:00Z",
"country": "NL", "quantity": 1,
"orderlineId": "2d7fadc9-b64b-4516-9a7d-cf550f201372",
},
{
"ovPayTokenId": 123,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 450,
"ovpasNumber": "63AW974",
"productId": 3,
"startDate": "2024-03-16T09:00:00Z",
"quantity": 1,
"orderlineId": "9d7fadc9-b64b-4516-9a7d-cf550f201378",
}, },
], ],
}, "orderStatus": "succeededPayment",
} }
v2:
summary: Order fulfillment v2
description: Order fulfillment v2
value:
{
"orderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9",
"customerProfileId": 1337,
"totalAmount": 121,
"languageId": 1,
"billingAddressId": 1,
"shippingAddressId": 1,
"createdOn": "2024-03-22T09:00:00",
"orderStatusId": 4,
"orderLines":
[
{
"orderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f",
"productId": 1,
"productName": "HTM Maandkorting 20%",
"productCode": "HTM-MND-20",
"productDescription": "HTM Maandkorting 20%",
"taxAmount": 21,
"taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"quantity": 1,
"terms":
[
"generalTermsAndConditions.pdf",
"productTermsAndConditions.pdf",
],
"createdOn": "2024-03-22T09:00:00",
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"orderLineStatusId": 4,
"tokens":
[
{
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
},
],
"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",
},
],
"payPush":
{
"consumerIssuer": "ABN AMRO",
"transactionId": "0000000000000001",
"consumerName": "J. de Vries",
"consumerIBAN": "NL44RABO0123456789",
"consumerBIC": "RABONL2U",
},
},
],
"customer":
{
"birthname": "Jan",
"surname": "Vries",
"prefix": "de",
"emailAddress": "jandevries@outlook.com",
"dateOfBirth": "1970-01-01",
"addresses":
[
{
"addressTypeId": 1,
"street": "Kon. Julianaplein",
"houseNumber": 10,
"houseNumberSuffix": "a",
"postalCode": "2595 AA",
"city": "Den Haag",
"country": "NL",
},
],
},
}
responses: responses:
"201": "201":
description: Created description: Created
@ -350,112 +476,120 @@ paths:
application/json: application/json:
schema: schema:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
example: examples:
{ v1:
"orderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", summary: Order fulfillment v1
"orderNumber": "123456", description: Order fulfillment v1
"customerProfileId": 1337, value: {}
"totalAmount": 121, v2:
"languageId": 1, summary: Order fulfillment v2
"billingAddressId": 1, description: Order fulfillment v2
"shippingAddressId": 1, value:
"createdOn": "2024-03-22T09:00:00",
"orderStatusId": 4,
"orderLines":
[
{
"orderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f",
"productId": 1,
"productName": "HTM Maandkorting 20%",
"productCode": "HTM-MND-20",
"productDescription": "HTM Maandkorting 20%",
"taxAmount": 21,
"taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"quantity": 1,
"terms":
[
"generalTermsAndConditions.pdf",
"productTermsAndConditions.pdf",
],
"createdOn": "2024-03-22T09:00:00",
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"orderLineStatusId": 4,
"tokens":
[
{
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
},
],
"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",
},
],
"payPush":
{
"consumerIssuer": "ABN AMRO",
"transactionId": "0000000000000001",
"consumerName": "J. de Vries",
"consumerIBAN": "NL44RABO0123456789",
"consumerBIC": "RABONL2U",
},
},
],
"customer":
{ {
"birthname": "Jan", "orderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9",
"surname": "Vries", "orderNumber": "123456",
"prefix": "de", "customerProfileId": 1337,
"emailAddress": "jandevries@outlook.com", "totalAmount": 121,
"dateOfBirth": "1970-01-01", "languageId": 1,
"addresses": "billingAddressId": 1,
"shippingAddressId": 1,
"createdOn": "2024-03-22T09:00:00",
"orderStatusId": 4,
"orderLines":
[ [
{ {
"addressTypeId": 1, "orderLineId": "2ba39cae-c401-446b-ae5c-2d6d85b3df1f",
"street": "Kon. Julianaplein", "productId": 1,
"houseNumber": 10, "productName": "HTM Maandkorting 20%",
"houseNumberSuffix": "a", "productCode": "HTM-MND-20",
"postalCode": "2595 AA", "productDescription": "HTM Maandkorting 20%",
"city": "Den Haag", "taxAmount": 21,
"country": "NL", "taxCode": "V21",
"amountExclTax": 100,
"amountInclTax": 121,
"quantity": 1,
"terms":
[
"generalTermsAndConditions.pdf",
"productTermsAndConditions.pdf",
],
"createdOn": "2024-03-22T09:00:00",
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"orderLineStatusId": 4,
"tokens":
[
{
"tokenTypeId": 1,
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verificationCode": "A7H6",
"personalAccountData":
{
"name": "Jan de Vries",
"dateOfBirth": "01-01-1970",
"photoReference": "DSC_0502.JPG",
"fileType": "image/jpg",
"challengeTypeId": 1,
"oneTimePassword": "H5Iiz3JTaQeIV8p",
},
},
],
}, },
], ],
}, "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",
},
],
"payPush":
{
"consumerIssuer": "ABN AMRO",
"transactionId": "0000000000000001",
"consumerName": "J. de Vries",
"consumerIBAN": "NL44RABO0123456789",
"consumerBIC": "RABONL2U",
},
},
],
"customer":
{
"birthname": "Jan",
"surname": "Vries",
"prefix": "de",
"emailAddress": "jandevries@outlook.com",
"dateOfBirth": "1970-01-01",
"addresses":
[
{
"addressTypeId": 1,
"street": "Kon. Julianaplein",
"houseNumber": 10,
"houseNumberSuffix": "a",
"postalCode": "2595 AA",
"city": "Den Haag",
"country": "NL",
},
],
},
}
/customers/{customerProfileId}/orders: /customers/{customerProfileId}/orders:
parameters: parameters:
- in: path - in: path
@ -900,7 +1034,7 @@ paths:
example: example:
{ {
"orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df", "orderId": "1e441d7d-50d6-4006-aca7-5e87e2f218df",
"orderNumber": "ORD-123456" "orderNumber": "ORD-123456",
} }
delete: delete:
tags: tags: