Compare commits

...

15 Commits

Author SHA1 Message Date
9d9039d732 products and fixed productCategory Id 2026-02-04 10:33:38 +01:00
93efb6b8f7 Merge branch 'develop' of https://git.integratielaag.nl/HTM/ovpay into features/OVPAY2313-V2-swaggers-infoplaza 2026-02-04 09:57:24 +01:00
77953a726a OVPAY-973 - Fixed TP endpoints. Updated response and request body. 2026-01-30 16:00:20 +01:00
Max Martens
bbf21e61f7 Fixed all addressTypes 2026-01-29 14:09:08 +01:00
e3139fdd6d Merge pull request 'OVPAY-2346 - Implemented /issuedvouchers/{code}.' (#48) from feature/OVPAY-2346 into develop
Reviewed-on: #48
2026-01-28 09:33:47 +00:00
8f907896be Merge branch 'develop' of https://git.integratielaag.nl/HTM/ovpay into develop 2026-01-27 10:42:32 +01:00
591347e080 OVPAY-973 - Added ovPayTokenId example to POST. 2026-01-27 10:42:21 +01:00
da7afd63fc Merge pull request 'feature/OVPAY-973' (#50) from feature/OVPAY-973 into develop
Reviewed-on: #50
2026-01-27 09:37:03 +00:00
6a24636d50 OVPAY-973 - Added ovPayTokenId to POST /notificationsubscriptions. 2026-01-23 17:08:12 +01:00
c7fa48b554 OVPAY-2394 - Fixed schema for patch NotificationSubscription. 2026-01-22 09:28:27 +01:00
5133903efb OVPAY-2394 - Added example for no notificationCategories found. 2026-01-21 11:03:45 +01:00
447912e081 OVPAY-973 - Added alias to request and response bodies. 2026-01-19 15:08:42 +01:00
c6facc5a70 OVPAY-973 - Added GET/PUT /customers/notificationpreferences. 2026-01-19 14:31:01 +01:00
80c9fe7599 OVPAY-2346 - Processed review remarks. 2026-01-05 14:04:40 +01:00
e6b2146706 OVPAY-2346 - Implemented /issuedvouchers/{code}. 2025-12-30 14:57:43 +01:00
7 changed files with 1903 additions and 48 deletions

View File

@ -3452,7 +3452,7 @@ paths:
summary: No product-instances found summary: No product-instances found
value: value:
productInstances: { productInstances: {
"ovpayProducten":[], "ovPayProducts":[],
"barcodeTickets": [], "barcodeTickets": [],
"vouchers":[] "vouchers":[]
} }
@ -3461,7 +3461,7 @@ paths:
value: value:
{ {
"productInstances":{ "productInstances":{
"ovpayProducten":[], "ovPayProducts":[],
"barcodeTickets":[ "barcodeTickets":[
{ {
"productInstanceId": "0f0981bf-6d60-4b06-bc55-de1ba325f366", "productInstanceId": "0f0981bf-6d60-4b06-bc55-de1ba325f366",
@ -3506,7 +3506,7 @@ paths:
value: value:
{ {
"productInstances":{ "productInstances":{
"ovpayProducten":[ { "ovPayProducts":[ {
"productInstanceId": "26d41861-f77e-4666-9cde-2c5c66ace0a2", "productInstanceId": "26d41861-f77e-4666-9cde-2c5c66ace0a2",
"productId": 1, "productId": 1,
"name": "HTM 90% Korting", "name": "HTM 90% Korting",
@ -3548,7 +3548,7 @@ paths:
value: value:
{ {
"productInstances":{ "productInstances":{
"ovpayProducten":[ { "ovPayProducts":[ {
"productInstanceId": "26d41861-f77e-4666-9cde-2c5c66ace0a2", "productInstanceId": "26d41861-f77e-4666-9cde-2c5c66ace0a2",
"productId": 1, "productId": 1,
"name": "HTM 90% Korting", "name": "HTM 90% Korting",
@ -3625,7 +3625,7 @@ paths:
value: value:
{ {
"productInstances":{ "productInstances":{
"ovpayProducten":[], "ovPayProducts":[],
"barcodeTickets":[], "barcodeTickets":[],
"vouchers":[ "vouchers":[
{ {
@ -3634,7 +3634,7 @@ paths:
"name": "HTM ooivaarspas voucher ", "name": "HTM ooivaarspas voucher ",
"productCategory": "productCategory":
{ {
"productCategoryId": 6, "productCategoryId": 9,
"name": "Voucher", "name": "Voucher",
}, },
"voucherCode": "HTM45253", "voucherCode": "HTM45253",

File diff suppressed because it is too large Load Diff

View File

@ -417,38 +417,56 @@ paths:
example: example:
Entries: Entries:
phoneTypes: phoneTypes:
- name: mobile - name: Mobiel
id: 1 id: 1
- name: fixed line - name: Thuis
id: 2 id: 2
- name: Ouders
id: 3
- name: Bewindvoerder
id: 4
- name: Home
id: 5
- name: Mobile
id: 6
- name: Work
id: 7
- name: Noodtelefoon
id: 8
addressTypes: addressTypes:
- name: home - name: Shipping
id: 1 id: 1
- name: office - name: Billing
id: 2 id: 2
customerStatuses: customerStatuses:
- name: active - name: Inactive
id: 1 id: 1
- name: blocked - name: Active
id: 2 id: 2
- name: inactive - name: Blocked
id: 3 id: 3
- name: new - name: Frozen
id: 4 id: 4
- name: Cleared
id: 5
tokenTypes: tokenTypes:
- name: Debit card - name: EMV
id: 1 id: 1
- name: Credit card
id: 2
- name: OVPas physical - name: OVPas physical
id: 3 id: 2
- name: OVPas digital - name: OVPas digital
id: 4 id: 3
directDebitMandateTypes: directDebitMandateTypes:
- name: Paper Contract - name: Paper Contract
id: 1 id: 1
- name: PIN transaction - name: PIN transaction
id: 2 id: 2
- name: SEPA eMandate
id: 3
- name: Digital signature
id: 4
- name: IDEAL transaction
id: 5
tokenStatuses: tokenStatuses:
- name: Expired - name: Expired
id: 1 id: 1

View File

@ -257,6 +257,7 @@ paths:
value: value:
notificationCategoryId: 1 notificationCategoryId: 1
customerProfileId: 1337 customerProfileId: 1337
ovPayTokenId: 42
subscriptionActivity: subscriptionActivity:
user: "1001337" user: "1001337"
timestamp: "2025-10-02T14:00:00Z" timestamp: "2025-10-02T14:00:00Z"
@ -666,6 +667,10 @@ paths:
schema: schema:
$ref: "#/components/schemas/GetNotificationCategoriesResponse" $ref: "#/components/schemas/GetNotificationCategoriesResponse"
examples: examples:
emptyNotificationCategoriesResponse:
summary: No notification categories found
value:
notificationCategories: []
getNotifactionCategories?expand=none: getNotifactionCategories?expand=none:
summary: Return all the notification categories without nested attributes (expand=none) summary: Return all the notification categories without nested attributes (expand=none)
value: value:
@ -1388,6 +1393,9 @@ components:
customerProfileId: customerProfileId:
type: integer type: integer
example: 1337 example: 1337
ovPayTokenId:
type: integer
example: 42
subscriptionActivity: subscriptionActivity:
type: object type: object
properties: properties:
@ -1418,14 +1426,9 @@ components:
PatchNotificationSubscriptionRequest: PatchNotificationSubscriptionRequest:
type: object type: object
properties: properties:
notificationCategoryId: ovPayTokenId:
type: integer type: integer
example: 1 example: 43
customerProfileId:
type: integer
example: 1337
required:
- notificationCategoryId
PatchNotificationSubscriptionResponse: PatchNotificationSubscriptionResponse:
type: object type: object
properties: properties:

View File

@ -324,7 +324,7 @@ paths:
{ {
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893", "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -635,7 +635,7 @@ paths:
{ {
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893", "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -1046,7 +1046,7 @@ paths:
"orderCustomerAddresses": "orderCustomerAddresses":
[ [
{ {
"addressTypeId": 3, "addressTypeId": 2,
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -2328,7 +2328,7 @@ paths:
{ {
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893", "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -2398,7 +2398,7 @@ paths:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
example: example:
{ {
"addressTypeId": 3, "addressTypeId": 2,
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -2448,7 +2448,7 @@ paths:
type: integer type: integer
explode: false explode: false
required: false required: false
description: Filter on possible types of addresses. 1 = Shipping, 3 = Billing. description: Filter on possible types of addresses. 1 = Shipping, 2 = Billing.
- in: query - in: query
name: street name: street
schema: schema:
@ -2504,7 +2504,7 @@ paths:
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893", "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
"orderCustomerId": "540d8b7a-d626-443f-8f99-c24398604d7a", "orderCustomerId": "540d8b7a-d626-443f-8f99-c24398604d7a",
"orderId": "73cca95a-81d1-468f-a8bf-99b36367001a", "orderId": "73cca95a-81d1-468f-a8bf-99b36367001a",
"addressType": { "addressTypeId": 3, "name": "Billing" }, "addressType": { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",

View File

@ -1314,7 +1314,7 @@ paths:
{ {
"orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893", "orderCustomerAddressId": "aa50047c-58ac-4f15-9448-ee000dfc6893",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -3688,7 +3688,7 @@ paths:
{ {
"orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073", "orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -3965,7 +3965,7 @@ paths:
{ {
"orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073", "orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073",
"addressTypeId": "addressTypeId":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -4174,7 +4174,7 @@ paths:
{ {
"orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073", "orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073",
"addressTypeId": "addressTypeId":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -4226,7 +4226,7 @@ paths:
"orderCustomerAddresses": "orderCustomerAddresses":
[ [
{ {
"addressTypeId": 3, "addressTypeId": 2,
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -4433,7 +4433,7 @@ paths:
{ {
"orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073", "orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -4680,7 +4680,7 @@ paths:
{ {
"orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073", "orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -4724,7 +4724,7 @@ paths:
description: Add an address to a customer on an order description: Add an address to a customer on an order
value: value:
{ {
"addressTypeId": 3, "addressTypeId": 2,
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -4935,7 +4935,7 @@ paths:
{ {
"orderCustomerAddressId": "a0ef57fa-395c-4a03-96e9-234c26dccea9", "orderCustomerAddressId": "a0ef57fa-395c-4a03-96e9-234c26dccea9",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 10, "houseNumber": 10,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -4979,7 +4979,7 @@ paths:
description: Update order customer address description: Update order customer address
value: value:
{ {
"addressTypeId": 3, "addressTypeId": 2,
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 101, "houseNumber": 101,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",
@ -5190,7 +5190,7 @@ paths:
{ {
"orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073", "orderCustomerAddressId": "94270188-4cf6-447e-bd49-e8186bcec073",
"addressType": "addressType":
{ "addressTypeId": 3, "name": "Billing" }, { "addressTypeId": 2, "name": "Billing" },
"street": "Kon. Julianaplein", "street": "Kon. Julianaplein",
"houseNumber": 101, "houseNumber": 101,
"houseNumberSuffix": "a", "houseNumberSuffix": "a",

View File

@ -0,0 +1,211 @@
openapi: 3.0.1
info:
title: Service Engine APIs for HTM vouchers
description: Service Engine APIs for HTM vouchers. These are NOT the CRUD APIs to the data hub.
version: "1.0"
servers:
- url: https://services.acc.api.htm.nl/abt/abtvouchers/1.0
paths:
/issuedvouchers/{voucherCode}:
get:
summary: Get voucher details by voucher code
description: Retrieve voucher details using its unique voucher code.
parameters:
- name: voucherCode
in: path
required: true
description: The unique code of the voucher details to retrieve.
schema:
type: string
tags:
- Vouchers
responses:
"200":
description: Successful retrieval of voucher instance
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Voucher for a product with required attributes:
summary: Voucher for a single product with required attributes
value:
{
"issuedVoucher":
{
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
"voucherCode": "VOUCHER123",
"fromInclusive": "2024-10-04T00:00:00.000",
"untilInclusive": "2024-11-04T00:00:00.000",
"voucherStatus":
{ "voucherStatusId": 1, "name": "New" },
"product":
{
"productId": 263,
"productName": "HTM-80001",
"productDescription": "10 euro korting op Regiovrij maand.",
"productCategory":
{
"productCategoryId": 9,
"isTravelProduct": false,
"name": "Voucher",
},
"amountInclTax": -1000,
"requiredProducts":
[
{
"productId": 126,
"productName": "HTM-30001",
"productDescription": "Reis met 20% korting op je betaalpas bij HTM.",
"_links":
{
"get_details":
{
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/126",
"method": "GET",
},
},
},
],
"_links":
{
"get_details":
{
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/263",
"method": "GET",
},
},
},
"mandatoryCustomerDataItems":
[
{
"mandatoryCustomerDataItemId": 8,
"customerDataItem": "padBirthDate",
},
{
"mandatoryCustomerDataItemId": 4,
"customerDataItem": "emailAddress",
},
],
},
}
Voucher for a whole order:
summary: Voucher for a whole order
value:
{
"issuedVoucher":
{
"issuedVoucherId": "d4e5f6a7-b8c9-0d1e-2f3a-4b5c6d7e8f90",
"voucherCode": "VOUCHER123",
"fromInclusive": "2024-10-04T00:00:00.000",
"untilInclusive": "2024-11-04T00:00:00.000",
"voucherStatus":
{ "voucherStatusId": 1, "name": "New" },
"product":
{
"productId": 263,
"productName": "HTM-80002",
"productDescription": "10 euro korting op je gehele winkelmand.",
"productCategory":
{
"productCategoryId": 9,
"isTravelProduct": false,
"name": "Voucher",
},
"amountInclTax": -1000,
"requiredProducts": [],
"_links":
{
"get_details":
{
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/products/263",
"method": "GET",
},
},
},
},
"mandatoryCustomerDataItems": [],
}
"403":
description: Forbidden
content:
application/problem+json:
schema:
$ref: "#/components/schemas/rfc9457"
examples:
Access denied due to insufficient permissions:
summary: Access denied due to insufficient permissions
value:
{
"type": "https://example.com/probs/forbidden",
"title": "Access denied",
"detail": "You do not have permission to access this resource.",
"instance": "/issuedvouchers/VOUCHER123",
}
"404":
description: Not found
content:
application/problem+json:
schema:
$ref: "#/components/schemas/rfc9457"
examples:
Voucher not found:
summary: Voucher not found
value:
{
"type": "https://example.com/probs/not-found",
"title": "Voucher not found",
"detail": "The voucher with code VOUCHER123 does not exist.",
"instance": "/issuedvouchers/VOUCHER123",
}
"500":
description: Internal server error
content:
application/problem+json:
schema:
$ref: "#/components/schemas/rfc9457"
examples:
Unexpected server error:
summary: Unexpected server error
value:
{
"type": "https://example.com/probs/internal-server-error",
"title": "Internal Server Error",
"detail": "An unexpected error occurred while processing your request.",
"instance": "/issuedvouchers/VOUCHER123",
}
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