ovpay/src/openapi/orders/service_engine_orders.yaml

411 lines
14 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/v1
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",
"touchPointId": 1,
"customerProfileId": 1,
"contents":
[
{
"productId": 1,
"quantity": 5,
"personalization":
{
"gboProduct":
{
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verifcationCode": "A7H6",
"startDate": "2024-03-22",
},
"tapconnectProduct":
{
"ticketLanguage": "NL",
"validityStart": "2024-03-22",
"validityStartTime": "10:30",
},
},
},
{
"productId": 2,
"quantity": 3,
"personalization":
{
"gboProduct":
{
"ovPayTokenId": 2,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verifcationCode": "A7H6",
"startDate": "2024-03-22",
},
"tapconnectProduct":
{
"ticketLanguage": "NL",
"validityStart": "2024-03-22",
"validityStartTime": "10:30",
},
},
},
],
}
responses:
"200":
description: Successful
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
example:
{
"validContents": true,
"amountExclTax": 200,
"taxPercentage": 21,
"amountInclTax": 242,
"purchaseDate": "2024-03-22",
"touchPointId": 1,
"customerProfileId": 1,
"contents":
[
{
"productId": 1,
"quantity": 5,
"amountExclTax": 100,
"taxPercentage": 21,
"amountInclTax": 121,
"personalization":
{
"gboProduct":
{
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verifcationCode": "A7H6",
"startDate": "2024-03-22",
"endDate": null,
"isRenewable": true,
"nextDebitDate": "2024-04-22",
"termAmountExclTax": 100,
"termAmountInclTax": 121,
},
"tapconnectProduct":
{
"ticketLanguage": "NL",
"validityStart": "2020-03-22",
"validityStartTime": "10:30",
},
},
"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[0]/personalization/gboProduct/startDate",
},
{
"detail": "Combination of product and token type is not valid.",
"pointer": "#/contents[0]/personalization/gboProduct/ovPayTokenId",
},
],
},
{
"productId": 2,
"quantity": 3,
"amountExclTax": 100,
"taxPercentage": 21,
"amountInclTax": 121,
"personalization":
{
"gboProduct":
{
"ovPayTokenId": 1,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 34,
"ovpasNumber": "OV34567",
"verifcationCode": "A7H6",
"startDate": "2024-03-22",
"endDate": null,
"isRenewable": true,
"nextDebitDate": "2024-04-22",
"termAmountExclTax": 100,
"termAmountInclTax": 121,
},
"tapconnectProduct":
{
"ticketLanguage": "NL",
"validityStart": "2020-03-22",
"validityStartTime": "10:30",
},
},
"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]/personalization/gboProduct/startDate",
},
{
"detail": "Combination of product and token type is not valid.",
"pointer": "#/contents[1]/personalization/gboProduct/ovPayTokenId",
},
],
},
],
}
/orders/{orderId}/fulfillment:
post:
tags:
- Order Fulfillment v2
summary: Order fulfillment
description: Order fulfillment.
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
format: uuid
requestBody:
content:
application/json:
schema:
$ref: "#/components/schemas/postOrderFulfillment"
example:
{
"customerProfileID": 123415,
"customerProfileData": { "dateOfBirth": "09-03-1989" },
"personalAccountData": { "birthdate": "09-03-1989" },
"directDebitMandate":
{
"consumerName": "J. de Tèster",
"consumerBic": "RABONL2U",
"consumerIban": "NL44RABO0123456789",
},
"orderContents":
[
{
"ovPayTokenId": 123,
"serviceReferenceId": "NLOV1234567ABCDEFG",
"amount": 450,
"ovpasNumber": "63AW974",
"productId": 2,
"startDate": "2024-03-22T09:00:00Z",
"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",
}
responses:
"200":
description: Successful
components:
schemas:
unavailable:
type: object
postOrderFulfillment:
type: object
properties:
customerProfileID:
type: number
customerProfileData:
type: object
properties:
dateOfBirth:
type: string
personalAccountData:
type: object
properties:
birthdate:
type: string
directDebitMandate:
type: object
properties:
consumerName:
type: string
consumerBic:
type: string
consumerIban:
type: string
orderContents:
type: array
items:
type: object
properties:
ovPayTokenId:
type: number
serviceReferenceId:
type: string
amount:
type: number
ovpasNumber:
type: string
productId:
type: number
startDate:
type: string
quantity:
type: number
orderlineId:
type: string
format: uuid
orderStatus:
type: string
postOrderValidation:
type: array
items:
properties:
ovPayTokenId:
type: integer
serviceReferenceId:
type: string
amount:
type: integer
ovpasNumber:
type: string
productId:
type: integer
startDate:
type: string
quantity:
type: integer
postCustomerProfileOvPayTokenResponse:
type: object
properties:
validContents:
type: boolean
amountExclTax:
type: number
taxPercentage:
type: number
amountInclTax:
type: number
contents:
type: array
items:
type: object
properties:
ovPayTokenId:
type: number
serviceReferenceId:
type: string
ovpasNumber:
type: string
productId:
type: number
quantity:
type: number
amountExclTax:
type: number
taxPercentage:
type: number
amountInclTax:
type: number
startDate:
type: string
endDate:
type: string
isRenewable:
type: boolean
nextDebitDate:
type: string
termAmountExclTax:
type: number
termAmountInclTax:
type: number
additionalRemarks:
type: array
items:
type: object
properties:
code:
type: string
parameter:
type: string
validationErrors:
type: array
items:
type: object
properties:
detail:
type: string
pointer:
type: string