ovpay/src/openapi/orders/service_engine_orders.yaml

551 lines
18 KiB
YAML

openapi: 3.0.1
info:
title: ABT Service Engine Order APIs
version: "1.0"
description: Order APIs available in the Service Engine for order validation and fulfillment.
servers:
- url: https://api.integratielaag.nl/v2
paths:
/orders/validation:
post:
tags:
- Order Validation v2
summary: Validate order.
description: Validate order.
parameters:
- name: X-HTM-JWT-AUTH-HEADER
in: header
required: true
style: simple
explode: false
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example:
{
"purchaseDate": "2024-03-22",
"customerProfileId": 1337,
"languageId": 1,
"billingAddressId": 1,
"shippingAddressId": 1,
"contents":
[
{
"productId": 1,
"quantity": 5,
"validFrom": "2024-03-22T09:00:00",
"validUntil": null,
"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",
},
},
],
},
{
"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:
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example:
{
"validContents": true,
"purchaseDate": "2024-03-22",
"customerProfileId": 1337,
"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",
"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",
},
],
"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:
post:
tags:
- Order Fulfillment v2
summary: Fulfill an order.
description: Fulfill an order.
parameters:
- name: X-HTM-JWT-AUTH-HEADER
in: header
required: true
style: simple
explode: false
schema:
type: string
- name: orderId
in: path
required: true
style: simple
explode: false
schema:
type: string
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example:
{
"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:
"201":
description: Created
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example:
{
"orderId": "a0ef57fa-395c-4a03-96e9-234c26dccea9",
"orderNumber": "123456",
}
/orders/:
post:
tags:
- Order Creation v2 (RFU)
summary: Create a new order.
description: Create a new order.
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example: null
responses:
"201":
description: Created
/orders/{uuid}:
patch:
tags:
- Order Creation v2 (RFU)
summary: Update an existing orderline.
description: Update an existing orderline.
parameters:
- name: uuid
in: path
required: true
style: simple
explode: false
schema:
type: string
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example: null
responses:
"200":
description: OK
/orderlines/{uuid}:
patch:
tags:
- Order Creation v2 (RFU)
summary: Update an existing order.
description: Update an existing order.
parameters:
- name: uuid
in: path
required: true
style: simple
explode: false
schema:
type: string
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example: null
responses:
"200":
description: OK
/orders/{uuid}/payments:
post:
tags:
- Order Creation v2 (RFU)
summary: Add a payment to an existing order.
description: Add a payment to an existing order.
parameters:
- name: uuid
in: path
required: true
style: simple
explode: false
schema:
type: string
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example: null
responses:
"201":
description: Created
/payments/{uuid}:
patch:
tags:
- Order Creation v2 (RFU)
summary: Update a payment on an existing order.
description: Update a payment on an existing order.
parameters:
- name: uuid
in: path
required: true
style: simple
explode: false
schema:
type: string
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example: null
responses:
"200":
description: OK
/orders/{uuid}/customers:
post:
tags:
- Order Creation v2 (RFU)
summary: Add a customer to an existing order.
description: Add a customer to an existing order.
parameters:
- name: uuid
in: path
required: true
style: simple
explode: false
schema:
type: string
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example: null
responses:
"201":
description: Created
/customers/{uuid}:
patch:
tags:
- Order Creation v2 (RFU)
summary: Update a customer on an existing order.
description: Update a customer on an existing order.
parameters:
- name: uuid
in: path
required: true
style: simple
explode: false
schema:
type: string
example: a0ef57fa-395c-4a03-96e9-234c26dccea9
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example: null
responses:
"200":
description: OK
components:
securitySchemes:
bearerToken:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
unavailable:
type: object
rfc9457:
type: object
properties:
type:
type: string
format: url
example: "https://example.com/probs/out-of-credit"
title:
type: string
example: "You do not have enough credit."
detail:
type: string
example: "Your current balance is 30, but that costs 50."
instance:
type: string
example: "/account/12345/msgs/abc"
balance:
type: string
example: "30"
accounts:
type: array
items:
type: string
example:
- "/account/12345"
- "/account/67890"