Compare commits
42 Commits
feature/OV
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
| cf0d24632f | |||
| aa4721c651 | |||
| 46bf7874d9 | |||
| 1a14918f4a | |||
| 7147318900 | |||
| e0f78d2e38 | |||
| ab57e27c1d | |||
| 68c7ccc279 | |||
| 8946026860 | |||
| fb8723124a | |||
| 6d7c260e9e | |||
| 292588b7ba | |||
| 4bd216bd37 | |||
| bfaa1ddcb1 | |||
| 55bac27561 | |||
|
|
715a9668fc | ||
| b4f20a9758 | |||
| 22cb3ddd92 | |||
| 1f3e2289dc | |||
| 3ff55e5888 | |||
| 987f64a081 | |||
| 00448486f3 | |||
| ed61633579 | |||
| d34ba20d19 | |||
| 3e1f23afe3 | |||
|
|
6260cc5d63 | ||
| d9157d04ef | |||
| f57f17e645 | |||
| 3ae52206fc | |||
| a52dfcab93 | |||
| 80b0de274e | |||
| 38cfec81c8 | |||
|
|
3ffc525d48 | ||
|
|
105a18c0ac | ||
| 7732ae13a6 | |||
| 4084a574c9 | |||
| 3ebdf0090f | |||
| b898288632 | |||
| dce4d5ea17 | |||
| e4b3ab4ccf | |||
| 01aa8a9f1a | |||
| bb917c3635 |
@ -28,10 +28,33 @@ public final class Helpers {
|
||||
return new JSONObject(string).get("alertId").toString();
|
||||
}
|
||||
|
||||
public static String getTripId(String string) throws IOException {
|
||||
return new JSONObject(string).get("tripId").toString();
|
||||
}
|
||||
|
||||
public static String getXbot(String string) throws IOException {
|
||||
return new JSONObject(string).get("xbot").toString();
|
||||
}
|
||||
|
||||
public static void getTripDetails(String tripId, String xbot, String gboBearerToken) throws Exception {
|
||||
SSLContext sc = SSLContext.getInstance("SSL");
|
||||
sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom());
|
||||
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
|
||||
|
||||
URL url = new URL("https://api.sbx.idbt.translink.nl/api/v3/id-media/tokens/xbot/" + xbot + "/trips/details/" + tripId);
|
||||
URLConnection con = url.openConnection();
|
||||
HttpURLConnection http = (HttpURLConnection)con;
|
||||
http.setRequestMethod("GET");
|
||||
http.setDoOutput(true);
|
||||
http.setRequestProperty("Authorization", "Bearer " + gboBearerToken);
|
||||
http.connect();
|
||||
|
||||
try(InputStream is = http.getInputStream()) {
|
||||
String response = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
LOGGER.info("GBO API 8659 trip details response for xBOT " + xbot + " and tripId " + tripId + ": \n" + new JSONObject(response).toString(2));
|
||||
}
|
||||
}
|
||||
|
||||
public static void getAlertDetails(String alertId, String xBot, String gboBearerToken) throws Exception {
|
||||
SSLContext sc = SSLContext.getInstance("SSL");
|
||||
sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom());
|
||||
@ -48,7 +71,7 @@ public final class Helpers {
|
||||
|
||||
try(InputStream is = http.getInputStream()) {
|
||||
String response = new String(is.readAllBytes(), StandardCharsets.UTF_8);
|
||||
LOGGER.info("GBO API 8851 alert details response for xBOT " + xBot + ": \n" + new JSONObject(response).toString(2));
|
||||
LOGGER.info("GBO API 8851 alert details response for xBOT " + xBot + " and alertId " + alertId + ": \n" + new JSONObject(response).toString(2));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -16,14 +16,28 @@ public class RabbitConnector {
|
||||
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(RabbitConnector.class);
|
||||
|
||||
// TRIPS
|
||||
// SubscriptionId = 3e246de5-d3ad-468f-834b-1aaebf52244c
|
||||
// Use API 9853 to manually add xBOT to queue
|
||||
private static final String QUEUE_NAME = "BEID_3.TRIPS";
|
||||
private static final String USER_NAME = "BEID_3_TRIPS_HlTT";
|
||||
private static final String PASSWORD = "xJR4C8hIqhHQw0sn";
|
||||
|
||||
// ALERTS
|
||||
// SubscriptionId = 17c8100b-88a2-4cef-b40d-8dca4f93d311
|
||||
// Use API 9853 to manually add xBOT to queue
|
||||
// private static final String QUEUE_NAME = "BEID_3.ALERTS";
|
||||
// private static final String USER_NAME = "BEID_3_ALERTS_nZs3";
|
||||
// private static final String PASSWORD = "VyubhPnczKgTB2zJ";
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
ConnectionFactory factory = new ConnectionFactory();
|
||||
factory.setVirtualHost("/");
|
||||
factory.setAutomaticRecoveryEnabled(true);
|
||||
factory.setPort(443);
|
||||
factory.setHost("not.sbx.idbt.translink.nl");
|
||||
factory.setUsername("BEID_3_ALERTS_nZs3");
|
||||
factory.setPassword("VyubhPnczKgTB2zJ");
|
||||
factory.setUsername(USER_NAME);
|
||||
factory.setPassword(PASSWORD);
|
||||
factory.useSslProtocol("TLSv1.2");
|
||||
factory.setExceptionHandler(new ForgivingExceptionHandler());
|
||||
Map<String, Object> configs = factory.getClientProperties();
|
||||
@ -33,7 +47,7 @@ public class RabbitConnector {
|
||||
Channel channel = connection.createChannel();
|
||||
DeliverCallback deliverCallback = initDeliverCallback(channel);
|
||||
|
||||
AMQP.Queue.DeclareOk queue = channel.queueDeclarePassive("BEID_3.ALERTS");
|
||||
AMQP.Queue.DeclareOk queue = channel.queueDeclarePassive(QUEUE_NAME);
|
||||
LOGGER.info(
|
||||
"Declared queue: " + queue.getQueue() + ", consumer count: " + queue.getConsumerCount() + ", message count: " +
|
||||
queue.getMessageCount());
|
||||
@ -52,17 +66,39 @@ public class RabbitConnector {
|
||||
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
|
||||
LOGGER.info("Successfully acknowledged message with delivery tag: " + delivery.getEnvelope().getDeliveryTag());
|
||||
|
||||
LOGGER.info("Getting alert details via GBO API 8851...");
|
||||
if (QUEUE_NAME.equals("BEID_3.TRIPS")) {
|
||||
getTripDetails(message);
|
||||
} else if (QUEUE_NAME.equals("BEID_3.ALERTS")) {
|
||||
getAlertDetails(message);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static void getAlertDetails(String message) {
|
||||
try {
|
||||
String alertId = Helpers.getAlertId(message);
|
||||
String xBot = Helpers.getXbot(message);
|
||||
String gboBearerToken = Helpers.getGboBearerToken();
|
||||
|
||||
LOGGER.info("Getting alert details for xBOT {} and alertId {} via GBO API 8851...", xBot, alertId);
|
||||
Helpers.getAlertDetails(alertId, xBot, gboBearerToken);
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private static void getTripDetails(String message) {
|
||||
try {
|
||||
String tripId = Helpers.getTripId(message);
|
||||
String xBot = Helpers.getXbot(message);
|
||||
String gboBearerToken = Helpers.getGboBearerToken();
|
||||
|
||||
LOGGER.info("Getting trip details for xBOT {} and tripId {} via GBO API 8659...", xBot, tripId);
|
||||
Helpers.getTripDetails(tripId, xBot, gboBearerToken);
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -597,9 +597,13 @@ paths:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
examples:
|
||||
List all contract payments for a single debtor:
|
||||
summary: List all contract payments for a single debtor
|
||||
description: List all contract payments for single debtor with debtor number 'D123456'.
|
||||
Empty list:
|
||||
summary: Empty list
|
||||
description: List all contract payments for a debtor with no payments.
|
||||
value: { "contractPayments": [] }
|
||||
Successful direct debit:
|
||||
summary: Successful direct debit
|
||||
description: One payment for a debtor with a successful direct debit.
|
||||
value:
|
||||
{
|
||||
"contractPayments":
|
||||
@ -607,8 +611,133 @@ paths:
|
||||
{
|
||||
"paymentId": "151845776",
|
||||
"totalAmount": "26.62",
|
||||
"paymentMethod": "Twikey",
|
||||
"paymentMethod": "Automatische incasso",
|
||||
"paymentDate": "2024-09-12",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722263",
|
||||
"invoiceNumber": "F2024-0001",
|
||||
"description": "HTM Maandkorting 20%",
|
||||
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
"get_contractdetails":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
Direct debit reversal:
|
||||
summary: Direct debit reversal
|
||||
description: One payment for a debtor with a reversed direct debit.
|
||||
value:
|
||||
{
|
||||
"contractPayments":
|
||||
[
|
||||
{
|
||||
"paymentId": "151845776",
|
||||
"totalAmount": "-26.62",
|
||||
"paymentMethod": "Stornering",
|
||||
"paymentDate": "2024-09-12",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722263",
|
||||
"invoiceNumber": "F2024-0001",
|
||||
"description": "HTM Maandkorting 20%",
|
||||
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
"get_contractdetails":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
iDEAL payment:
|
||||
summary: iDEAL payment
|
||||
description: One payment for a debtor with an iDEAL payment.
|
||||
value:
|
||||
{
|
||||
"contractPayments":
|
||||
[
|
||||
{
|
||||
"paymentId": "151845776",
|
||||
"totalAmount": "26.62",
|
||||
"paymentMethod": "iDEAL",
|
||||
"paymentDate": "2024-09-12",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722263",
|
||||
"invoiceNumber": "F2024-0001",
|
||||
"description": "HTM Maandkorting 20%",
|
||||
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
"get_contractdetails":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
Bank transfer:
|
||||
summary: Bank transfer
|
||||
description: One payment for a debtor with a bank transfer.
|
||||
value:
|
||||
{
|
||||
"contractPayments":
|
||||
[
|
||||
{
|
||||
"paymentId": "151845776",
|
||||
"totalAmount": "26.62",
|
||||
"paymentMethod": "Overboeking",
|
||||
"paymentDate": "2024-09-12",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722263",
|
||||
"invoiceNumber": "F2024-0001",
|
||||
"description": "HTM Maandkorting 20%",
|
||||
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
"get_contractdetails":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
}
|
||||
List of four payments for one invoice:
|
||||
summary: List of four payments for one invoice
|
||||
description: Four payments for a debtor for one invoice; a direct debit, a direct debit reversal, a bank transfer and an iDEAL payment.
|
||||
value:
|
||||
{
|
||||
"contractPayments":
|
||||
[
|
||||
{
|
||||
"paymentId": "151845776",
|
||||
"totalAmount": "26.62",
|
||||
"paymentMethod": "Automatische incasso",
|
||||
"paymentDate": "2024-09-12",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722263",
|
||||
@ -626,22 +755,67 @@ paths:
|
||||
},
|
||||
},
|
||||
{
|
||||
"paymentId": "151845851",
|
||||
"totalAmount": "45.21",
|
||||
"paymentMethod": "Twikey",
|
||||
"paymentId": "151845776",
|
||||
"totalAmount": "-26.62",
|
||||
"paymentMethod": "Stornering",
|
||||
"paymentDate": "2024-09-12",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722266",
|
||||
"invoiceNumber": "F2024-0002",
|
||||
"invoiceId": "147722263",
|
||||
"invoiceNumber": "F2024-0001",
|
||||
"description": "HTM Maandkorting 20%",
|
||||
"publicLink": "https://factuurinzien.nl/d/ddb245d6df67999eca48c4a71b5661b93038e20a/i/dp5h1i5cuu94nopiolkdst3u17vkmzo",
|
||||
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
"get_contractdetails":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/7b2f8c1a-3d9d-4c2d-960e-4471e8e28b6a",
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"paymentId": "151845777",
|
||||
"totalAmount": "10.00",
|
||||
"paymentMethod": "Overboeking",
|
||||
"paymentDate": "2024-09-13",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722263",
|
||||
"invoiceNumber": "F2024-0001",
|
||||
"description": "HTM Maandkorting 20%",
|
||||
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
"get_contractdetails":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
"paymentId": "151845778",
|
||||
"totalAmount": "16.62",
|
||||
"paymentMethod": "iDEAL",
|
||||
"paymentDate": "2024-09-14",
|
||||
"iban": "NL25INGB******1337",
|
||||
"invoice":
|
||||
{
|
||||
"invoiceId": "147722263",
|
||||
"invoiceNumber": "F2024-0001",
|
||||
"description": "HTM Maandkorting 20%",
|
||||
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a",
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
"get_contractdetails":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a",
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
|
||||
@ -187,25 +187,21 @@ paths:
|
||||
examples:
|
||||
minimalCustomerProfile:
|
||||
value:
|
||||
{
|
||||
"person": {
|
||||
"emailAddress": "j.jansen@hatseflats.nl"
|
||||
}
|
||||
}
|
||||
{ "person": { "emailAddress": "j.jansen@hatseflats.nl" } }
|
||||
fullCustomerProfile:
|
||||
value:
|
||||
{
|
||||
"customerPreference": {
|
||||
"languageId": 1
|
||||
},
|
||||
"person": {
|
||||
"customerPreference": { "languageId": 1 },
|
||||
"person":
|
||||
{
|
||||
"birthname": "Jan",
|
||||
"surname": "Jansen",
|
||||
"prefix": "dhr",
|
||||
"suffix": "jr",
|
||||
"dateOfBirth": "1970-01-01",
|
||||
"emailAddress": "j.jansen@hatseflats.nl",
|
||||
"addresses": [
|
||||
"addresses":
|
||||
[
|
||||
{
|
||||
"street": "Laan van Meerdervoort",
|
||||
"houseNumber": 5,
|
||||
@ -214,7 +210,7 @@ paths:
|
||||
"city": "Den Haag",
|
||||
"country": "NL",
|
||||
"isPreferred": true,
|
||||
"addressTypeId": 1
|
||||
"addressTypeId": 1,
|
||||
},
|
||||
{
|
||||
"street": "Beeklaan",
|
||||
@ -224,24 +220,26 @@ paths:
|
||||
"city": "Den Haag",
|
||||
"country": "NL",
|
||||
"isPreferred": false,
|
||||
"addressTypeId": 2
|
||||
}
|
||||
"addressTypeId": 2,
|
||||
},
|
||||
],
|
||||
"phones": [
|
||||
"phones":
|
||||
[
|
||||
{
|
||||
"number": "6123456789",
|
||||
"countryCode": "0031",
|
||||
"phoneTypeId": 1,
|
||||
"isPreferred": true
|
||||
"isPreferred": true,
|
||||
},
|
||||
{
|
||||
"number": "7012345678",
|
||||
"countryCode": "0031",
|
||||
"phoneTypeId": 2,
|
||||
"isPreferred": false
|
||||
}
|
||||
"isPreferred": false,
|
||||
},
|
||||
],
|
||||
"devices": [
|
||||
"devices":
|
||||
[
|
||||
{
|
||||
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
|
||||
"alias": "My iPhone",
|
||||
@ -249,9 +247,9 @@ paths:
|
||||
{
|
||||
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
|
||||
"alias": "My iPad",
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
responses:
|
||||
"201":
|
||||
@ -296,20 +294,22 @@ paths:
|
||||
patchCustomer:
|
||||
value:
|
||||
{
|
||||
"person": {
|
||||
"person":
|
||||
{
|
||||
"birthname": "Jan",
|
||||
"surname": "Jansen",
|
||||
"prefix": "dhr",
|
||||
"suffix": "jr",
|
||||
"dateOfBirth": "1970-01-01",
|
||||
"addresses": [
|
||||
"addresses":
|
||||
[
|
||||
{
|
||||
"addressId": 2,
|
||||
"street": "Laan van Meerdervoort",
|
||||
"houseNumber": 5,
|
||||
"postalCode": "2500AA",
|
||||
"city": "Den Haag",
|
||||
"country": "NL"
|
||||
"country": "NL",
|
||||
},
|
||||
{
|
||||
"addressId": 1,
|
||||
@ -319,26 +319,28 @@ paths:
|
||||
"postalCode": "2500AA",
|
||||
"city": "Den Haag",
|
||||
"country": "NL",
|
||||
"addressTypeId": 2
|
||||
}
|
||||
"addressTypeId": 2,
|
||||
},
|
||||
],
|
||||
"phones": [
|
||||
"phones":
|
||||
[
|
||||
{
|
||||
"phoneId": 1,
|
||||
"number": "6123456789",
|
||||
"countryCode": "0031",
|
||||
"phoneTypeId": 1,
|
||||
"isPreferred": true
|
||||
"isPreferred": true,
|
||||
},
|
||||
{
|
||||
"phoneId": 2,
|
||||
"number": "7012345678",
|
||||
"countryCode": "0031",
|
||||
"phoneTypeId": 2,
|
||||
"isPreferred": false
|
||||
}
|
||||
"isPreferred": false,
|
||||
},
|
||||
],
|
||||
"devices": [
|
||||
"devices":
|
||||
[
|
||||
{
|
||||
"deviceId": "813afdd8-bf8c-4e26-bfda-4da79552bd38",
|
||||
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
|
||||
@ -348,9 +350,9 @@ paths:
|
||||
"deviceId": "4f4249a2-ac6c-44f9-b740-66e66b6f3c28",
|
||||
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
|
||||
"alias": "My iPad",
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
],
|
||||
},
|
||||
}
|
||||
responses:
|
||||
"200":
|
||||
@ -490,8 +492,9 @@ paths:
|
||||
"customerProfileId": 1,
|
||||
"ovPayTokenId": 1,
|
||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||
"ovpasNumber": "",
|
||||
"alias": "Mijn EMV pas",
|
||||
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
"expirationDate": "2028-02-01",
|
||||
@ -567,6 +570,7 @@ paths:
|
||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34567",
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
@ -649,6 +653,7 @@ paths:
|
||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34567",
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
@ -707,7 +712,7 @@ paths:
|
||||
"gboAgeProfileId": 1,
|
||||
"name": "Kind (4 t/m 11 jaar)",
|
||||
"ageFromInclusive": 4,
|
||||
"ageToInclusive": 11
|
||||
"ageToInclusive": 11,
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
@ -771,6 +776,7 @@ paths:
|
||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34567",
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
@ -804,7 +810,7 @@ paths:
|
||||
"gboAgeProfileId": 1,
|
||||
"name": "Kind (4 t/m 11 jaar)",
|
||||
"ageFromInclusive": 4,
|
||||
"ageToInclusive": 11
|
||||
"ageToInclusive": 11,
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
@ -868,6 +874,7 @@ paths:
|
||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34567",
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
@ -919,7 +926,7 @@ paths:
|
||||
"gboAgeProfileId": 1,
|
||||
"name": "Kind (4 t/m 11 jaar)",
|
||||
"ageFromInclusive": 4,
|
||||
"ageToInclusive": 11
|
||||
"ageToInclusive": 11,
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
@ -983,6 +990,7 @@ paths:
|
||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34567",
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
@ -1003,6 +1011,7 @@ paths:
|
||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV54567",
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 3, "name": "Replaced (*)" },
|
||||
@ -1024,6 +1033,7 @@ paths:
|
||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34547",
|
||||
"alias": "MyToken",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 4, "name": "On stock" },
|
||||
@ -1037,7 +1047,7 @@ paths:
|
||||
"birthdate": null,
|
||||
"photo": null,
|
||||
},
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
{
|
||||
"customerProfileId": 132,
|
||||
@ -1045,6 +1055,7 @@ paths:
|
||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34831",
|
||||
"alias": "Mijn OV Pas",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 5, "name": "Suspended" },
|
||||
@ -1058,7 +1069,7 @@ paths:
|
||||
"birthdate": null,
|
||||
"photo": null,
|
||||
},
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
{
|
||||
"customerProfileId": 166,
|
||||
@ -1066,6 +1077,7 @@ paths:
|
||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV34984",
|
||||
"alias": "Mijn OV Pas",
|
||||
"tokenStatus":
|
||||
{
|
||||
@ -1082,7 +1094,7 @@ paths:
|
||||
"birthdate": null,
|
||||
"photo": null,
|
||||
},
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
{
|
||||
"customerProfileId": 166,
|
||||
@ -1090,6 +1102,7 @@ paths:
|
||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV54368",
|
||||
"alias": "My retired token",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 1, "name": "Retired" },
|
||||
@ -1103,7 +1116,7 @@ paths:
|
||||
"birthdate": null,
|
||||
"photo": null,
|
||||
},
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
{
|
||||
"customerProfileId": 1,
|
||||
@ -1111,6 +1124,7 @@ paths:
|
||||
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"ovpasNumber": "OV98263",
|
||||
"alias": "My found token",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 7, "name": "Renewed Active" },
|
||||
@ -1124,7 +1138,7 @@ paths:
|
||||
"birthdate": null,
|
||||
"photo": null,
|
||||
},
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
],
|
||||
_links:
|
||||
@ -1214,7 +1228,7 @@ paths:
|
||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||
"tokenType": { "tokenTypeId": 1, "name": "EMV" },
|
||||
"lastDigits": null,
|
||||
"ovPasNumber": null,
|
||||
"ovpasNumber": null,
|
||||
"alias": "Mijn token",
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
@ -1950,11 +1964,12 @@ paths:
|
||||
type: integer
|
||||
example: 1
|
||||
required: true
|
||||
summary: Replace an OVpay token with another (+ transfer products) - V2 (for Integratielaag)
|
||||
description: |
|
||||
summary: |-
|
||||
NOT TO BE CALLED BY TOUCHPOINTS - Replace an OVpay token with another (+ transfer products) - V2
|
||||
description: |-
|
||||
**NOTE: This endpoint is for usage by integratielaag only. Touchpoints should use
|
||||
`/customers/tokens/{ovpayTokenId}/transfer` instead.**\
|
||||
Transfer products from one OVpay token to another, and replace the tokens in the database.
|
||||
This endpoint is for usage by integratielaag only. Touch points should use
|
||||
`/customers/tokens/{ovpayTokenId}/transfer` instead.
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
@ -2369,7 +2384,7 @@ paths:
|
||||
"ePurse": null,
|
||||
"personalAccountData":
|
||||
{ "name": null, "birthdate": null, "photo": null },
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
"newOvPayToken":
|
||||
{
|
||||
@ -2386,7 +2401,7 @@ paths:
|
||||
"ePurse": null,
|
||||
"personalAccountData":
|
||||
{ "name": null, "birthdate": null, "photo": null },
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
"isTransferable": true,
|
||||
"transferableObjects":
|
||||
@ -2399,7 +2414,7 @@ paths:
|
||||
"ePurse": true,
|
||||
"personalAccountData":
|
||||
{ "name": true, "birthdate": true, "photo": true },
|
||||
"gboAgeProfile": true
|
||||
"gboAgeProfile": true,
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
@ -2423,50 +2438,57 @@ paths:
|
||||
"tokenStatus":
|
||||
{ "tokenStatusId": 2, "name": "Active" },
|
||||
"expirationDate": "2028-02-01",
|
||||
"productInstances": [
|
||||
"productInstances":
|
||||
[
|
||||
{
|
||||
"productId": 1,
|
||||
"name": "HTM 90% Korting EMV",
|
||||
"status": "Active",
|
||||
"isRenewable": true,
|
||||
"productCategory": {
|
||||
"productCategory":
|
||||
{
|
||||
"productCategoryId": 1,
|
||||
"name": "Kortingsabonnement"
|
||||
"name": "Kortingsabonnement",
|
||||
},
|
||||
"fromInclusive": "2025-11-25T13:25:00+01:00",
|
||||
"untilInclusive": "2025-12-25T03:59:59+01:00",
|
||||
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
|
||||
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
|
||||
"contractId": "56B17EF-C436-9043-B76C-481797WEB464F",
|
||||
"_links": {
|
||||
"self": {
|
||||
"_links":
|
||||
{
|
||||
"self":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances/1",
|
||||
"method": "GET"
|
||||
"method": "GET",
|
||||
},
|
||||
"get_order": {
|
||||
"get_order":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/orders/501B17EF-36C4-4039-B92C-6517969B464E",
|
||||
"method": "GET"
|
||||
"method": "GET",
|
||||
},
|
||||
"get_contract": {
|
||||
"get_contract":
|
||||
{
|
||||
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F",
|
||||
"method": "GET"
|
||||
}
|
||||
}
|
||||
}
|
||||
"method": "GET",
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
"replacedByTokenId": null,
|
||||
"autoReloadRegistration": null,
|
||||
"ePurse": null,
|
||||
"personalAccountData":
|
||||
{ "name": null, "birthdate": null, "photo": null },
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
"newOvPayToken":
|
||||
{
|
||||
"customerProfileId": null,
|
||||
"ovPayTokenId": null,
|
||||
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
|
||||
"tokenType": { "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"tokenType":
|
||||
{ "tokenTypeId": 2, "name": "OV-pas physical" },
|
||||
"alias": null,
|
||||
"tokenStatus": null,
|
||||
"expirationDate": "2028-02-01",
|
||||
@ -2476,7 +2498,7 @@ paths:
|
||||
"ePurse": null,
|
||||
"personalAccountData":
|
||||
{ "name": null, "birthdate": null, "photo": null },
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
"isTransferable": false,
|
||||
"transferableObjects":
|
||||
@ -2513,7 +2535,7 @@ paths:
|
||||
"ePurse": null,
|
||||
"personalAccountData":
|
||||
{ "name": null, "birthdate": null, "photo": null },
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
"newOvPayToken":
|
||||
{
|
||||
@ -2530,7 +2552,7 @@ paths:
|
||||
"ePurse": null,
|
||||
"personalAccountData":
|
||||
{ "name": null, "birthdate": null, "photo": null },
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
"isTransferable": false,
|
||||
"transferableObjects":
|
||||
@ -2602,8 +2624,8 @@ paths:
|
||||
"gboAgeProfileId": 1,
|
||||
"name": "Kind (4 t/m 11 jaar)",
|
||||
"ageFromInclusive": 4,
|
||||
"ageToInclusive": 11
|
||||
}
|
||||
"ageToInclusive": 11,
|
||||
},
|
||||
},
|
||||
"newOvPayToken":
|
||||
{
|
||||
@ -2620,7 +2642,7 @@ paths:
|
||||
"ePurse": null,
|
||||
"personalAccountData":
|
||||
{ "name": null, "birthdate": null, "photo": null },
|
||||
"gboAgeProfile": null
|
||||
"gboAgeProfile": null,
|
||||
},
|
||||
"isTransferable": false,
|
||||
"transferableObjects":
|
||||
@ -2678,8 +2700,8 @@ paths:
|
||||
"gboAgeProfileId": 1,
|
||||
"name": "Kind (4 t/m 11 jaar)",
|
||||
"ageFromInclusive": 4,
|
||||
"ageToInclusive": 11
|
||||
}
|
||||
"ageToInclusive": 11,
|
||||
},
|
||||
},
|
||||
"newOvPayToken":
|
||||
{
|
||||
@ -2714,8 +2736,8 @@ paths:
|
||||
"gboAgeProfileId": 4,
|
||||
"name": "Kind (19 t/m 65 jaar)",
|
||||
"ageFromInclusive": 19,
|
||||
"ageToInclusive": 65
|
||||
}
|
||||
"ageToInclusive": 65,
|
||||
},
|
||||
},
|
||||
"isTransferable": false,
|
||||
"transferableObjects":
|
||||
@ -2857,9 +2879,9 @@ paths:
|
||||
type: integer
|
||||
example: 1
|
||||
post:
|
||||
summary: "**INTEGRATIELAAG** Transfer old OVpay token to new OVpay token."
|
||||
summary: "Transfer old OVpay token to new OVpay token."
|
||||
description: |-
|
||||
**Note that this is an integratielaag endpoint, not a Service Engine endpoint!**
|
||||
**Note that this directly calls the integratielaag and not the Service Engine!**
|
||||
First transfers all personal account data (if present), then all products, of an existing OVpay token
|
||||
to a new OVpay token. The new token will also be persisted in the profile as a replacement
|
||||
of the old token. This call is asynchronous, and progress can be monitored using the
|
||||
@ -2998,9 +3020,9 @@ paths:
|
||||
get:
|
||||
tags:
|
||||
- Token Replace v2
|
||||
summary: "**INTEGRATIELAAG** Get the status of the initiated token transfer process (POST)."
|
||||
summary: "Get the status of the initiated token transfer process (POST)."
|
||||
description: |
|
||||
**Note that this is an integratielaag endpoint, not a Service Engine endpoint!** Get the status of the
|
||||
**Note that this directly calls the integratielaag and not the Service Engine!** Get the status of the
|
||||
asynchronous token transfer processing.
|
||||
responses:
|
||||
"200":
|
||||
@ -3078,7 +3100,7 @@ paths:
|
||||
"gboAgeProfileId": 1,
|
||||
"name": "Kind (4 t/m 11 jaar)",
|
||||
"ageFromInclusive": 4,
|
||||
"ageToInclusive": 11
|
||||
"ageToInclusive": 11,
|
||||
},
|
||||
"_links":
|
||||
{
|
||||
@ -3119,60 +3141,22 @@ paths:
|
||||
},
|
||||
},
|
||||
}
|
||||
"202":
|
||||
description: Accepted
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
examples:
|
||||
Token transfer in progress:
|
||||
description: |
|
||||
The transfer of the token is still in progress. The response body shows the details of the
|
||||
processing status.
|
||||
value:
|
||||
{
|
||||
"properties":
|
||||
{
|
||||
"waitEndTime": "2025-06-04T09:29:21.9641991Z",
|
||||
"startTime": "2025-06-04T09:29:21.9641991Z",
|
||||
"startTime": "2025-02-14T05:32:47.067Z",
|
||||
"status": "Running",
|
||||
"correlation":
|
||||
{
|
||||
"clientTrackingId": "08584525775244808022011782750CU00",
|
||||
},
|
||||
"workflow":
|
||||
{
|
||||
"id": "/workflows/9cd96b77c0b94b31832778569f8ef2f9/versions/08584532480062676349",
|
||||
"name": "08584532480062676349",
|
||||
"type": "workflows/versions",
|
||||
},
|
||||
"trigger":
|
||||
{
|
||||
"name": "token_transfer",
|
||||
"inputsLink":
|
||||
{
|
||||
"uri": "https://htm-abt-logicapp-acc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00/contents/TriggerInputs?api-version=2022-05-01&code=C6PDQGl3MGwt8KyA9BjWDdQbzBwm-01gEmZaTp-hPJ5UAzFuPU-thg%3d%3d&se=2025-06-04T13%3A00%3A00.0000000Z&sp=%2Fruns%2F08584525775235278538475939776CU00%2Fcontents%2FTriggerInputs%2Fread&sv=1.0&sig=6Uxs33K7cQ7jONWzhv9XFPzx4RRHZ6smzfM6wNPk5Mc",
|
||||
"contentSize": 298,
|
||||
},
|
||||
"outputsLink":
|
||||
{
|
||||
"uri": "https://htm-abt-logicapp-acc.azurewebsites.net:443/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00/contents/TriggerOutputs?api-version=2022-05-01&code=C6PDQGl3MGwt8KyA9BjWDdQbzBwm-01gEmZaTp-hPJ5UAzFuPU-thg%3d%3d&se=2025-06-04T13%3A00%3A00.0000000Z&sp=%2Fruns%2F08584525775235278538475939776CU00%2Fcontents%2FTriggerOutputs%2Fread&sv=1.0&sig=vJ6pmCsmz2aP7f73MVOmCTes3YvC1e2w0ZLqdypLXrM",
|
||||
"contentSize": 6110,
|
||||
},
|
||||
"startTime": "2025-06-04T09:29:21.9497457Z",
|
||||
"endTime": "2025-06-04T09:29:21.9497457Z",
|
||||
"originHistoryName": "08584525775235278538475939776CU00",
|
||||
"correlation":
|
||||
{
|
||||
"clientTrackingId": "08584525775244808022011782750CU00",
|
||||
},
|
||||
"status": "Succeeded",
|
||||
},
|
||||
"outputs": {},
|
||||
"response":
|
||||
{
|
||||
"startTime": "2025-06-04T09:29:21.9642901Z",
|
||||
"correlation": {},
|
||||
"status": "Waiting",
|
||||
},
|
||||
},
|
||||
"id": "/workflows/9cd96b77c0b94b31832778569f8ef2f9/runs/08584525775235278538475939776CU00",
|
||||
"name": "08584525775235278538475939776CU00",
|
||||
"type": "workflows/runs",
|
||||
"clientTrackingId": "08584620957189579629541919368CU00",
|
||||
}
|
||||
"404":
|
||||
description: Not found
|
||||
@ -3371,10 +3355,7 @@ paths:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
examples:
|
||||
Update alias of a device:
|
||||
value:
|
||||
{
|
||||
"alias": "My old iPhone 13",
|
||||
}
|
||||
value: { "alias": "My old iPhone 13" }
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
||||
@ -264,7 +264,8 @@ paths:
|
||||
- name: emailAddress
|
||||
in: query
|
||||
schema:
|
||||
type: integer
|
||||
type: string
|
||||
format: email
|
||||
example: john.doe@mymailprovider.com
|
||||
required: false
|
||||
description: The emailadress of the customer in the case of anonymous opt-ins
|
||||
@ -409,47 +410,25 @@ paths:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
examples:
|
||||
Create notificationSubscription anonymous active:
|
||||
Create notificationSubscription anonymous:
|
||||
value:
|
||||
{
|
||||
"emailAddress": "anonymous@mymailprovider.com",
|
||||
"notificationCategoryId": 1,
|
||||
"isActive": True,
|
||||
}
|
||||
Create notificationSubscription anonymous inactive:
|
||||
value:
|
||||
{
|
||||
"emailAddress": "anonymous@mymailprovider.com",
|
||||
"notificationCategoryId": 1,
|
||||
"isActive": False,
|
||||
"notificationCategoryId": 1
|
||||
}
|
||||
Create notificationSubscription account active:
|
||||
value: { "notificationCategoryId": 2, "isActive": True }
|
||||
Create notificationSubscription account inactive:
|
||||
value: { "notificationCategoryId": 2, "isActive": False }
|
||||
value: { "notificationCategoryId": 2 }
|
||||
responses:
|
||||
"201":
|
||||
description: Created
|
||||
content:
|
||||
application/json:
|
||||
examples:
|
||||
Create notificationSubscription anonymous active:
|
||||
summary: Return the created notification for an anonymous user active
|
||||
Create notificationSubscription anonymous:
|
||||
summary: Return the created notification for an anonymous user inactive by default.
|
||||
value:
|
||||
{
|
||||
"notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae",
|
||||
"notificationCategory":
|
||||
{
|
||||
"notificationCategoryId": 2,
|
||||
"name": "Nieuwsbrief aanmelding",
|
||||
},
|
||||
"isActive": True,
|
||||
}
|
||||
Create notificationSubscription anonymous inactive:
|
||||
summary: Return the created notification for an anonymous user inactive
|
||||
value:
|
||||
{
|
||||
"notificationSubscriptionId": "d51081fd-c48d-4111-8de4-ac5db7d47ecb",
|
||||
"notificationCategory":
|
||||
{
|
||||
"notificationCategoryId": 2,
|
||||
@ -466,15 +445,6 @@ paths:
|
||||
{ "notificationCategoryId": 2, "name": "Nieuwsbrief aanmelding" },
|
||||
"isActive": True,
|
||||
}
|
||||
Create notificationSubscription account inactive:
|
||||
summary: Return the created notification for an anonymous user inactive
|
||||
value:
|
||||
{
|
||||
"notificationSubscriptionId": "0dfc0ac9-c221-4493-8828-9dfa79ad9061",
|
||||
"notificationCategory":
|
||||
{ "notificationCategoryId": 2, "name": "Nieuwsbrief aanmelding" },
|
||||
"isActive": False,
|
||||
}
|
||||
"405":
|
||||
description: Method not allowed, ook als een notificatie aangemaakt wordt voor een account maar op een anonieme manier benadert wordt.
|
||||
content:
|
||||
@ -499,9 +469,9 @@ paths:
|
||||
patch:
|
||||
tags:
|
||||
- Notification subscriptions
|
||||
summary: Update a notificationSubscription for a customer (account or private).
|
||||
summary: Update a notificationSubscription for a customer.
|
||||
description: |
|
||||
Update a notificationSubscription for a customer (account or private).
|
||||
Update a notificationSubscription for a customer.
|
||||
parameters:
|
||||
- name: X-HTM-JWT-AUTH-HEADER
|
||||
in: header
|
||||
@ -532,14 +502,6 @@ paths:
|
||||
example: e112f26e-37fa-4bde-8def-9977cd1d50ae
|
||||
required: true
|
||||
description: The id of the notificationSubscription you want to update
|
||||
- name: emailAddress
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
format: email
|
||||
example: john.doe@mymailprovider.com
|
||||
required: false
|
||||
description: The emailadress of the customer in the case of anonymous opt-ins
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
@ -580,6 +542,26 @@ paths:
|
||||
},
|
||||
"isActive": True,
|
||||
}
|
||||
"405":
|
||||
description: Method not allowed,wanneer het account emailadres niet geverifieerd is.
|
||||
content:
|
||||
application/json:
|
||||
example:
|
||||
{
|
||||
"type": "https://api.integratielaag.nl/abt/touchpoint/2.0/notifications",
|
||||
"title": "Methode niet toegestaan",
|
||||
"detail": "",
|
||||
"instance": "555d00b5-bc3f-4591-949b-479e76d49ea7",
|
||||
"errors":
|
||||
[
|
||||
{
|
||||
"code": "405",
|
||||
"detail": null,
|
||||
"path": null,
|
||||
"parameter": null,
|
||||
},
|
||||
],
|
||||
}
|
||||
components:
|
||||
schemas:
|
||||
unavailable:
|
||||
|
||||
@ -31,6 +31,12 @@ paths:
|
||||
schema:
|
||||
type: integer
|
||||
description: Filter by customer profile ID
|
||||
- name: ovPayTokenId
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
description: Filter by OV Pay token ID
|
||||
- name: isCurrentlyActive
|
||||
in: query
|
||||
required: false
|
||||
@ -44,6 +50,13 @@ paths:
|
||||
type: integer
|
||||
default: 1
|
||||
description: Limit the number of subscription activities returned per subscription (default is 1)
|
||||
- name: expand
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
enum: [none, notificationPreference, eventTypeChannel]
|
||||
default: none
|
||||
description: "Expand nested attributes. Possible values: `none`, `notificationPreference`, and `eventTypeChannel`."
|
||||
responses:
|
||||
"200":
|
||||
description: A list of notification subscriptions
|
||||
@ -53,17 +66,21 @@ paths:
|
||||
$ref: "#/components/schemas/GetNotificationSubscriptionsResponse"
|
||||
examples:
|
||||
emptyNotificationSubscriptionResponse:
|
||||
summary: No notification subscriptions found
|
||||
value:
|
||||
notificationSubscriptions: []
|
||||
href: null
|
||||
fullNotificationSubscriptionResponse:
|
||||
notificationSubscriptionResponse?expand=none:
|
||||
summary: Return notification subscriptions without nested attributes (expand=none)
|
||||
value:
|
||||
notificationSubscriptions:
|
||||
- notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
notificationCategory:
|
||||
notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
customerProfileId: 1337
|
||||
ovPayTokenId: 42
|
||||
subscriptionActivities:
|
||||
- subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387
|
||||
user: "1001337"
|
||||
@ -77,7 +94,9 @@ paths:
|
||||
notificationCategory:
|
||||
notificationCategoryId: 2
|
||||
name: Nieuwsbrief aanmelding
|
||||
groupName: Marketing
|
||||
customerProfileId: 1338
|
||||
ovPayTokenId: null
|
||||
subscriptionActivities:
|
||||
- subscriptionActivityId: 7fae0d2c-1e20-4f3e-b25d-fd8505a381c4
|
||||
user: "1001338"
|
||||
@ -88,6 +107,113 @@ paths:
|
||||
timestamp: "2025-10-02T14:00:00Z"
|
||||
isActive: true
|
||||
href: null
|
||||
notificationSubscriptionResponse?expand=notificationPreference:
|
||||
summary: Return notification subscriptions with nested notification preferences (expand=notificationPreference)
|
||||
value:
|
||||
notificationSubscriptions:
|
||||
- notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
notificationCategory:
|
||||
notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
customerProfileId: 1337
|
||||
ovPayTokenId: 42
|
||||
subscriptionActivities:
|
||||
- subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387
|
||||
user: "1001337"
|
||||
timestamp: "2025-10-02T15:00:00Z"
|
||||
isActive: true
|
||||
- subscriptionActivityId: f78bc171-a50e-4b88-88d3-a76585bffd54
|
||||
user: "1001337"
|
||||
timestamp: "2025-10-02T14:00:00Z"
|
||||
isActive: false
|
||||
notificationPreferences:
|
||||
- notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc
|
||||
eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173
|
||||
resourceIdentifier: null
|
||||
- notificationPreferenceId: e5f6a7b8-c9d0-41e2-f012-34567890abcd
|
||||
eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d
|
||||
resourceIdentifier: 44
|
||||
- notificationSubscriptionId: 39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd
|
||||
notificationCategory:
|
||||
notificationCategoryId: 2
|
||||
name: Nieuwsbrief aanmelding
|
||||
groupName: Marketing
|
||||
customerProfileId: 1338
|
||||
ovPayTokenId: null
|
||||
subscriptionActivities:
|
||||
- subscriptionActivityId: 7fae0d2c-1e20-4f3e-b25d-fd8505a381c4
|
||||
user: "1001338"
|
||||
timestamp: "2025-10-02T15:00:00Z"
|
||||
isActive: false
|
||||
- subscriptionActivityId: cb2fc1d3-f143-4dd7-8608-4538e5637e3a
|
||||
user: "1001338"
|
||||
timestamp: "2025-10-02T14:00:00Z"
|
||||
isActive: true
|
||||
notificationPreferences: []
|
||||
href: null
|
||||
notificationSubscriptionResponse?expand=eventTypeChannel:
|
||||
summary: Return notification subscriptions with nested event type channels (expand=eventTypeChannel)
|
||||
value:
|
||||
notificationSubscriptions:
|
||||
- notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
notificationCategory:
|
||||
notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
customerProfileId: 1337
|
||||
ovPayTokenId: 42
|
||||
subscriptionActivities:
|
||||
- subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387
|
||||
user: "1001337"
|
||||
timestamp: "2025-10-02T15:00:00Z"
|
||||
isActive: true
|
||||
- subscriptionActivityId: f78bc171-a50e-4b88-88d3-a76585bffd54
|
||||
user: "1001337"
|
||||
timestamp: "2025-10-02T14:00:00Z"
|
||||
isActive: false
|
||||
notificationPreferences:
|
||||
- notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc
|
||||
eventTypeChannel:
|
||||
eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173
|
||||
channel:
|
||||
channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
resourceIdentifier: null
|
||||
- notificationPreferenceId: e5f6a7b8-c9d0-41e2-f012-34567890abcd
|
||||
eventTypeChannelId:
|
||||
eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d
|
||||
channel:
|
||||
channelId: 2
|
||||
name: email
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
isDefault: false
|
||||
isMandatory: false
|
||||
resourceIdentifier: 44
|
||||
- notificationSubscriptionId: 39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd
|
||||
notificationCategory:
|
||||
notificationCategoryId: 2
|
||||
name: Nieuwsbrief aanmelding
|
||||
groupName: Marketing
|
||||
customerProfileId: 1338
|
||||
ovPayTokenId: null
|
||||
subscriptionActivities:
|
||||
- subscriptionActivityId: 7fae0d2c-1e20-4f3e-b25d-fd8505a381c4
|
||||
user: "1001338"
|
||||
timestamp: "2025-10-02T15:00:00Z"
|
||||
isActive: false
|
||||
- subscriptionActivityId: cb2fc1d3-f143-4dd7-8608-4538e5637e3a
|
||||
user: "1001338"
|
||||
timestamp: "2025-10-02T14:00:00Z"
|
||||
isActive: true
|
||||
notificationPreferences: []
|
||||
"400":
|
||||
description: Bad request
|
||||
content:
|
||||
@ -175,10 +301,6 @@ paths:
|
||||
type: object
|
||||
$ref: "#/components/schemas/500Response"
|
||||
/notificationsubscriptions/{notificationSubscriptionId}:
|
||||
delete:
|
||||
summary: Delete a notification subscription by ID
|
||||
tags:
|
||||
- Notification Subscriptions
|
||||
parameters:
|
||||
- name: notificationSubscriptionId
|
||||
in: path
|
||||
@ -187,6 +309,63 @@ paths:
|
||||
type: string
|
||||
format: uuid
|
||||
example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
patch:
|
||||
summary: Update a notification subscription by ID
|
||||
tags:
|
||||
- Notification Subscriptions
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PatchNotificationSubscriptionRequest"
|
||||
examples:
|
||||
updateNotificationSubscriptionRequest:
|
||||
value:
|
||||
ovPayTokenId: 43
|
||||
responses:
|
||||
"200":
|
||||
description: Notification subscription updated successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PatchNotificationSubscriptionResponse"
|
||||
examples:
|
||||
updateNotificationSubscriptionResponse:
|
||||
value:
|
||||
notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
"400":
|
||||
description: Bad request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/400Response"
|
||||
"401":
|
||||
description: Unauthorized
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/401Response"
|
||||
"404":
|
||||
description: Not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/404Response"
|
||||
"500":
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/500Response"
|
||||
delete:
|
||||
summary: Delete a notification subscription by ID
|
||||
tags:
|
||||
- Notification Subscriptions
|
||||
responses:
|
||||
"204":
|
||||
description: No content
|
||||
@ -282,12 +461,196 @@ paths:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/500Response"
|
||||
/notificationsubscriptions/{notificationSubscriptionId}/notificationpreferences:
|
||||
parameters:
|
||||
- name: notificationSubscriptionId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
post:
|
||||
summary: Add a notification preference to a notification subscription
|
||||
tags:
|
||||
- Notification Preferences
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PostNotificationPreferenceRequest"
|
||||
examples:
|
||||
addNotificationPreferenceNotNull:
|
||||
summary: With non-null resource identifier
|
||||
value:
|
||||
eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173
|
||||
resourceIdentifier: 44
|
||||
addNotificationPreferenceNull:
|
||||
summary: With null resource identifier
|
||||
value:
|
||||
eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173
|
||||
resourceIdentifier: null
|
||||
responses:
|
||||
"201":
|
||||
description: Notification preference added successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PostNotificationPreferenceResponse"
|
||||
examples:
|
||||
addNotificationPreferenceResponse:
|
||||
value:
|
||||
notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc
|
||||
"400":
|
||||
description: Bad request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/400Response"
|
||||
"401":
|
||||
description: Unauthorized
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/401Response"
|
||||
"404":
|
||||
description: Not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/404Response"
|
||||
"500":
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/500Response"
|
||||
/notificationpreferences/{notificationPreferenceId}:
|
||||
parameters:
|
||||
- name: notificationPreferenceId
|
||||
in: path
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d4e5f6a7-b8c9-40d1-ef01-234567890abc
|
||||
patch:
|
||||
summary: Update a notification preference by ID
|
||||
tags:
|
||||
- Notification Preferences
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PatchNotificationPreferenceRequest"
|
||||
examples:
|
||||
updateNotificationPreferenceRequest:
|
||||
value:
|
||||
resourceIdentifier: 55
|
||||
responses:
|
||||
"200":
|
||||
description: Notification preference updated successfully
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/PatchNotificationPreferenceResponse"
|
||||
examples:
|
||||
updateNotificationPreferenceResponse:
|
||||
value:
|
||||
notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc
|
||||
"400":
|
||||
description: Bad request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/400Response"
|
||||
"401":
|
||||
description: Unauthorized
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/401Response"
|
||||
"404":
|
||||
description: Not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/404Response"
|
||||
"500":
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/500Response"
|
||||
delete:
|
||||
summary: Delete a notification preference by ID
|
||||
tags:
|
||||
- Notification Preferences
|
||||
responses:
|
||||
"204":
|
||||
description: No content
|
||||
"400":
|
||||
description: Bad request
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/400Response"
|
||||
"401":
|
||||
description: Unauthorized
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/401Response"
|
||||
"404":
|
||||
description: Not found
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/404Response"
|
||||
"500":
|
||||
description: Internal server error
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
$ref: "#/components/schemas/500Response"
|
||||
/notificationcategories:
|
||||
get:
|
||||
tags:
|
||||
- Notification Categories
|
||||
summary: Get all notification categories.
|
||||
parameters:
|
||||
- name: notificationCategoryId
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
description: Filter by notification category ID
|
||||
- name: name
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
description: Filter by notification category name (case-insensitive, partial match)
|
||||
- name: groupName
|
||||
in: query
|
||||
required: false
|
||||
schema:
|
||||
type: integer
|
||||
description: Filter by notification category group name (case-insensitive, partial match)
|
||||
- name: expand
|
||||
in: query
|
||||
schema:
|
||||
@ -309,35 +672,48 @@ paths:
|
||||
notificationCategories:
|
||||
- notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
- notificationCategoryId: 2
|
||||
name: Nieuwsbrief aanmelding
|
||||
groupName: Marketing
|
||||
- notificationCategoryId: 3
|
||||
name: Mijn Passen
|
||||
name: Serviceberichten
|
||||
groupName: Mijn Passen
|
||||
getNotifactionCategories?expand=eventType:
|
||||
summary: Return all the notification categories with nested event types (expand=eventType)
|
||||
value:
|
||||
notificationCategories:
|
||||
- notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
eventTypes:
|
||||
- eventTypeId: 2
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, TRAVEL_SCHEME
|
||||
subName: CI
|
||||
prettyName: Check In
|
||||
name: TRIPS
|
||||
subName: CKI
|
||||
prettyName: Normal Check-in
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: a1b2c3d4-e5f6-4789-abcd-1234567890ab
|
||||
name: GBO_TRIPS
|
||||
externalSubscriptionId: fedcba98-7654-3210-fedc-ba9876543210
|
||||
- eventTypeId: 3
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, PAD
|
||||
subName: null
|
||||
prettyName: Profielgegevens op de pas
|
||||
name: PAD
|
||||
subName: AMEND
|
||||
prettyName: PAD Wijzigen/Aanvullen
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
|
||||
name: GBO_PAD
|
||||
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
|
||||
- notificationCategoryId: 2
|
||||
name: Nieuwsbrief aanmelding
|
||||
groupName: Marketing
|
||||
eventTypes:
|
||||
- eventTypeId: 1
|
||||
eventOrigin:
|
||||
@ -347,76 +723,108 @@ paths:
|
||||
subName: null
|
||||
prettyName: HTM nieuwsbrief
|
||||
optinRequired: false
|
||||
originSubscription: null
|
||||
- notificationCategoryId: 3
|
||||
name: Mijn Passen
|
||||
name: Serviceberichten
|
||||
groupName: Mijn Passen
|
||||
eventTypes:
|
||||
- eventTypeId: 4
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, CARD
|
||||
subName: null
|
||||
prettyName: Mijn passen
|
||||
name: PRODUCT
|
||||
subName: ACTIVATE
|
||||
prettyName: Product Geactiveerd
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: f1a2b3c4-d5e6-4789-abcd-3456789012de
|
||||
name: GBO_PRODUCT
|
||||
externalSubscriptionId: 12345678-90ab-cdef-1234-567890abcdef
|
||||
- eventTypeId: 5
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, PAD
|
||||
subName: null
|
||||
prettyName: Profielgegevens op de pas
|
||||
name: PAD
|
||||
subName: MARK
|
||||
prettyName: PAD Markering
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
|
||||
name: GBO_PAD
|
||||
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
|
||||
getNotifactionCategories?expand=eventTypeChannel:
|
||||
summary: Return all the notification categories with all nested attributes (expand=eventTypeChannel)
|
||||
value:
|
||||
notificationCategories:
|
||||
- notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
eventTypes:
|
||||
- eventTypeId: 2
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, TRAVEL_SCHEME
|
||||
subName: CI
|
||||
prettyName: Check In
|
||||
name: TRIPS
|
||||
subName: CKI
|
||||
prettyName: Normal Check-in
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: a1b2c3d4-e5f6-4789-abcd-1234567890ab
|
||||
name: GBO_TRIPS
|
||||
externalSubscriptionId: fedcba98-7654-3210-fedc-ba9876543210
|
||||
eventTypeChannels:
|
||||
- eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173
|
||||
channel:
|
||||
channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
- eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d
|
||||
channel:
|
||||
channelId: 2
|
||||
name: email
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
isDefault: false
|
||||
isMandatory: false
|
||||
- eventTypeId: 3
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, PAD
|
||||
subName: null
|
||||
prettyName: Profielgegevens op de pas
|
||||
name: PAD
|
||||
subName: AMEND
|
||||
prettyName: PAD Wijzigen/Aanvullen
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
|
||||
name: GBO_PAD
|
||||
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
|
||||
eventTypeChannels:
|
||||
- eventTypeChannelId: 8e7df8f1-7e50-482f-8301-d399e75fd432
|
||||
channel:
|
||||
channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
- eventTypeChannelId: 72960a92-1855-469f-9cfd-5d72f57106f2
|
||||
channel:
|
||||
channelId: 2
|
||||
name: email
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
isDefault: false
|
||||
isMandatory: false
|
||||
- notificationCategoryId: 2
|
||||
name: Nieuwsbrief aanmelding
|
||||
groupName: Marketing
|
||||
eventTypes:
|
||||
- eventTypeId: 1
|
||||
eventOrigin:
|
||||
@ -426,56 +834,81 @@ paths:
|
||||
subName: null
|
||||
prettyName: HTM nieuwsbrief
|
||||
optinRequired: false
|
||||
originSubscription: null
|
||||
eventTypeChannels:
|
||||
- eventTypeChannelId: 447a1116-6cd7-4645-8c3d-43237b6186cd
|
||||
channel:
|
||||
channelId: 2
|
||||
name: email
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
- notificationCategoryId: 3
|
||||
name: Mijn Passen
|
||||
name: Serviceberichten
|
||||
groupName: Mijn Passen
|
||||
eventTypes:
|
||||
- eventTypeId: 4
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, CARD
|
||||
subName: null
|
||||
prettyName: Mijn passen
|
||||
name: PRODUCT
|
||||
subName: ACTIVATE
|
||||
prettyName: Product Geactiveerd
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: f1a2b3c4-d5e6-4789-abcd-3456789012de
|
||||
name: GBO_PRODUCT
|
||||
externalSubscriptionId: 12345678-90ab-cdef-1234-567890abcdef
|
||||
eventTypeChannels:
|
||||
- eventTypeChannelId: be07c7bb-714b-4637-acf5-a67025ad8e60
|
||||
channel:
|
||||
channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
- eventTypeChannelId: 0c797b5a-ed34-494b-8c64-0a832830d392
|
||||
channel:
|
||||
channelId: 2
|
||||
name: email
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
isDefault: false
|
||||
isMandatory: false
|
||||
- eventTypeId: 5
|
||||
eventOrigin:
|
||||
eventOriginId: 1
|
||||
name: GBO
|
||||
name: ALERTS, PAD
|
||||
subName: null
|
||||
prettyName: Profielgegevens op de pas
|
||||
name: PAD
|
||||
subName: MARK
|
||||
prettyName: PAD Markering
|
||||
optinRequired: false
|
||||
originSubscription:
|
||||
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
|
||||
name: GBO_PAD
|
||||
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
|
||||
eventTypeChannels:
|
||||
- eventTypeChannelId: b910368f-c045-4e8e-b01d-bcbc78708bac
|
||||
channel:
|
||||
channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
- eventTypeChannelId: 93e773da-ba3b-48da-9a0e-ee478eaa752f
|
||||
channel:
|
||||
channelId: 2
|
||||
name: email
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
isDefault: false
|
||||
isMandatory: false
|
||||
"400":
|
||||
@ -596,12 +1029,24 @@ paths:
|
||||
channels:
|
||||
- channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
- channelId: 2
|
||||
name: email
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
- channelId: 3
|
||||
name: sms
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
- channelId: 4
|
||||
name: mail
|
||||
resourceName:
|
||||
resourceNameId: 4
|
||||
name: customers
|
||||
"400":
|
||||
description: Bad request
|
||||
content:
|
||||
@ -750,6 +1195,7 @@ paths:
|
||||
notificationCategory:
|
||||
notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
- eventType:
|
||||
eventTypeId: 16
|
||||
eventOrigin:
|
||||
@ -762,6 +1208,7 @@ paths:
|
||||
notificationCategory:
|
||||
notificationCategoryId: 1
|
||||
name: Mijn Reizen
|
||||
groupName: Mijn Passen
|
||||
"400":
|
||||
description: Bad request
|
||||
content:
|
||||
@ -827,6 +1274,9 @@ paths:
|
||||
channel:
|
||||
channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
- eventTypeChannelId: c4729ad4-46ef-4329-94f9-5079be21dfc5
|
||||
@ -842,6 +1292,9 @@ paths:
|
||||
channel:
|
||||
channelId: 1
|
||||
name: push
|
||||
resourceName:
|
||||
resourceNameId: 8
|
||||
name: devices
|
||||
isDefault: true
|
||||
isMandatory: false
|
||||
"400":
|
||||
@ -962,6 +1415,24 @@ components:
|
||||
type: string
|
||||
format: uuid
|
||||
example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
PatchNotificationSubscriptionRequest:
|
||||
type: object
|
||||
properties:
|
||||
notificationCategoryId:
|
||||
type: integer
|
||||
example: 1
|
||||
customerProfileId:
|
||||
type: integer
|
||||
example: 1337
|
||||
required:
|
||||
- notificationCategoryId
|
||||
PatchNotificationSubscriptionResponse:
|
||||
type: object
|
||||
properties:
|
||||
notificationSubscriptionId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
|
||||
PostSubscriptionActivityRequest:
|
||||
type: object
|
||||
properties:
|
||||
@ -986,6 +1457,40 @@ components:
|
||||
type: string
|
||||
format: uuid
|
||||
example: 30b32657-1ba1-44e0-8868-4db807695387
|
||||
PostNotificationPreferenceRequest:
|
||||
type: object
|
||||
properties:
|
||||
eventTypeChannelId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f
|
||||
resourceIdentifier:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d4e5f678-49ab-bcde-2345-678901bcdef0
|
||||
required:
|
||||
- eventTypeChannelId
|
||||
PostNotificationPreferenceResponse:
|
||||
type: object
|
||||
properties:
|
||||
notificationPreferenceId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d4e5f678-49ab-bcde-2345-678901bcdef0
|
||||
PatchNotificationPreferenceRequest:
|
||||
type: object
|
||||
properties:
|
||||
resourceIdentifier:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d4e5f678-49ab-bcde-2345-678901bcdef0
|
||||
PatchNotificationPreferenceResponse:
|
||||
type: object
|
||||
properties:
|
||||
notificationPreferenceId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d4e5f678-49ab-bcde-2345-678901bcdef0
|
||||
GetEventOriginsResponse:
|
||||
type: object
|
||||
properties:
|
||||
@ -1076,6 +1581,24 @@ components:
|
||||
optInRequired:
|
||||
type: boolean
|
||||
example: true
|
||||
originSubscription:
|
||||
type: object
|
||||
properties:
|
||||
originSubscriptionId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: a1b2c3d4-e5f6-4789-abcd-1234567890ab
|
||||
name:
|
||||
type: string
|
||||
example: GBO_TRIPS
|
||||
externalSubscriptionId:
|
||||
type: string
|
||||
format: uuid
|
||||
example: fedcba98-7654-3210-fedc-ba9876543210
|
||||
required:
|
||||
- originSubscriptionId
|
||||
- name
|
||||
- externalSubscriptionId
|
||||
eventTypeChannels:
|
||||
type: array
|
||||
items:
|
||||
@ -1107,9 +1630,22 @@ components:
|
||||
name:
|
||||
type: string
|
||||
example: push
|
||||
resourceName:
|
||||
type: object
|
||||
properties:
|
||||
resourceNameId:
|
||||
type: integer
|
||||
example: 8
|
||||
name:
|
||||
type: string
|
||||
example: devices
|
||||
required:
|
||||
- resourceNameId
|
||||
- name
|
||||
required:
|
||||
- channelId
|
||||
- name
|
||||
- resourceName
|
||||
NotificationCategory:
|
||||
type: object
|
||||
properties:
|
||||
@ -1119,6 +1655,9 @@ components:
|
||||
name:
|
||||
type: string
|
||||
example: Mijn Reizen
|
||||
groupName:
|
||||
type: string
|
||||
example: Mijn Passen
|
||||
eventTypes:
|
||||
type: array
|
||||
items:
|
||||
|
||||
@ -2999,8 +2999,12 @@ paths:
|
||||
transactionItems:
|
||||
- transactionItemId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7
|
||||
status: returned to src
|
||||
aggregationReference: null
|
||||
accountingSystemReference: null
|
||||
- transactionItemId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3
|
||||
status: returned to src
|
||||
aggregationReference: null
|
||||
accountingSystemReference: null
|
||||
List of transactions items to return:
|
||||
summary: List of transaction items to return to transaction database
|
||||
description: List of transaction items to return to transaction database in bulk.
|
||||
@ -3008,8 +3012,12 @@ paths:
|
||||
transactionItems:
|
||||
- transactionItemId: eacb9bdc-c6b5-4277-942b-cebb102944f5
|
||||
status: returned to trx-db
|
||||
aggregationReference: null
|
||||
accountingSystemReference: null
|
||||
- transactionItemId: 2f361bfb-9df0-4e0f-af7c-7b9be3e7bc61
|
||||
status: returned to trx-db
|
||||
aggregationReference: null
|
||||
accountingSystemReference: null
|
||||
responses:
|
||||
"202":
|
||||
description: Accepted
|
||||
@ -3061,10 +3069,32 @@ paths:
|
||||
Body of a batch of transaction items that was successfully patched.
|
||||
A number of transaction items were patched.
|
||||
value:
|
||||
startTime: 2025-02-14T05:32:47.067Z
|
||||
status: Finished
|
||||
clientTrackingId: 08584620957189579629541919368CU00
|
||||
summary:
|
||||
created: 0
|
||||
updated: 15
|
||||
total: 15
|
||||
"202":
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/GetResponseStatus"
|
||||
examples:
|
||||
Batch is still being processed:
|
||||
summary: Batch is still being processed
|
||||
description: |
|
||||
Batch is still being processed
|
||||
value:
|
||||
startTime: 2025-02-14T05:32:47.067Z
|
||||
status: Running
|
||||
clientTrackingId: 08584620957189579629541919368CU00
|
||||
summary:
|
||||
created: 0
|
||||
updated: 0
|
||||
total: 0
|
||||
security:
|
||||
- default: []
|
||||
x-auth-type: Application & Application User
|
||||
@ -3089,8 +3119,10 @@ paths:
|
||||
processingFailures:
|
||||
- processingFailureId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7
|
||||
resolved: true
|
||||
change: Configuratie aangepast voor artikelnummer 1337.
|
||||
- processingFailureId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3
|
||||
resolved: true
|
||||
change: Configuratie aangepast voor artikelnummer 1337.
|
||||
responses:
|
||||
"202":
|
||||
description: Accepted
|
||||
@ -3142,10 +3174,32 @@ paths:
|
||||
Body of a batch of processing failures that was successfully patched.
|
||||
A number of processing failures were patched.
|
||||
value:
|
||||
startTime: 2025-02-14T05:32:47.067Z
|
||||
status: Finished
|
||||
clientTrackingId: 08584620957189579629541919368CU00
|
||||
summary:
|
||||
created: 0
|
||||
updated: 15
|
||||
total: 15
|
||||
"202":
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/GetResponseStatus"
|
||||
examples:
|
||||
Batch is still being processed:
|
||||
summary: Batch is still being processed
|
||||
description: |
|
||||
Batch is still being processed
|
||||
value:
|
||||
startTime: 2025-02-14T05:32:47.067Z
|
||||
status: Running
|
||||
clientTrackingId: 08584620957189579629541919368CU00
|
||||
summary:
|
||||
created: 0
|
||||
updated: 0
|
||||
total: 0
|
||||
security:
|
||||
- default: []
|
||||
x-auth-type: Application & Application User
|
||||
|
||||
@ -5,6 +5,12 @@ info:
|
||||
description: CRUD APIs for ABT Orders database. These are NOT the functional APIs from Service Engine.
|
||||
servers:
|
||||
- url: https://services.acc.api.htm.nl/abt/abtorder/1.0
|
||||
tags:
|
||||
- name: Order
|
||||
- name: Order Line
|
||||
- name: Payment
|
||||
- name: Customer
|
||||
- name: Order Voucher
|
||||
paths:
|
||||
/orders:
|
||||
get:
|
||||
@ -50,6 +56,14 @@ paths:
|
||||
example: 1
|
||||
required: false
|
||||
description: The id of the touch point where the order was initiated.
|
||||
- in: query
|
||||
name: deviceId
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "7a28bd54-7ca9-499a-a722-d15ab858ab99"
|
||||
required: false
|
||||
description: The id of the device used to place the order.
|
||||
- in: query
|
||||
name: languageId
|
||||
schema:
|
||||
@ -98,6 +112,14 @@ paths:
|
||||
explode: false
|
||||
required: false
|
||||
description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled.
|
||||
- in: query
|
||||
name: issuedVoucherId
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
example: "b0a9f3c9-9b92-4f8c-b78d-6129be7218a6"
|
||||
required: false
|
||||
description: Filter on applied issuedVoucherId for the order.
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
@ -119,6 +141,7 @@ paths:
|
||||
"touchPointId": 1,
|
||||
"name": "Perplex"
|
||||
},
|
||||
"deviceId": "42e77532-d831-41da-b07a-7edb9bb7f004",
|
||||
"language":
|
||||
{
|
||||
"languageId": 1,
|
||||
@ -148,6 +171,30 @@ paths:
|
||||
"description": "Betaling in behandeling",
|
||||
},
|
||||
],
|
||||
"orderVouchers": [
|
||||
{
|
||||
"orderVoucherId": "399bd3b3-9721-4f09-a936-d64637de1621",
|
||||
"issuedVoucher":{
|
||||
"issuedVoucherId": "a0996218-bc5e-4826-9020-cda98a32838d",
|
||||
"voucherCode": "Voucher1234",
|
||||
"purchasedProductId": 31,
|
||||
"fromInclusive": "2025-03-22T08:55:00",
|
||||
"untillInclusive": "2026-03-22T08:55:00"
|
||||
},
|
||||
"orderLineId": null
|
||||
},
|
||||
{
|
||||
"orderVoucherId": "f6c7ac42-1811-4e4d-82af-53e18fe16110",
|
||||
"issuedVoucher":{
|
||||
"issuedVoucherId": "54668baf-4905-4e9a-af02-09c170f295ed",
|
||||
"voucherCode": "Voucher124",
|
||||
"purchasedProductId": 35,
|
||||
"fromInclusive": "2025-03-22T08:55:00",
|
||||
"untillInclusive": "2026-03-22T08:55:00"
|
||||
},
|
||||
"orderLineId": "7a7a9d1a-3fc8-4058-a28b-082860aaa311"
|
||||
}
|
||||
],
|
||||
"orderLines":
|
||||
[
|
||||
{
|
||||
@ -327,19 +374,22 @@ paths:
|
||||
"customerProfileId": 1337,
|
||||
"totalAmount": 121,
|
||||
"touchPointId": 1,
|
||||
"deviceId": "b8ca9fdf-0bb9-4e49-b48d-41e395563377",
|
||||
"languageId": 1,
|
||||
"createdOn": "2024-03-22T09:00:00",
|
||||
"order_OrderStatus":
|
||||
[
|
||||
{
|
||||
"orderStatusId": 4,
|
||||
"createdOn": "2024-03-22T09:00:00",
|
||||
"description": "Order succesvol betaald",
|
||||
},
|
||||
{
|
||||
"orderStatusId": 3,
|
||||
"orderStatusId": 1,
|
||||
"createdOn": "2024-03-22T08:55:00",
|
||||
"description": "Betaling in behandeling",
|
||||
"description": "Concept order",
|
||||
},
|
||||
],
|
||||
"orderVouchers":
|
||||
[
|
||||
{
|
||||
"issuedVoucherId": "e81b2197-a6c2-45b6-9560-8ce8442e8604",
|
||||
"orderLineId": "97824d2e-5189-456d-b6da-4cca511a7685"
|
||||
},
|
||||
],
|
||||
"orderLines":
|
||||
@ -390,57 +440,6 @@ paths:
|
||||
],
|
||||
},
|
||||
],
|
||||
"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":
|
||||
@ -487,6 +486,7 @@ paths:
|
||||
"touchPointId": 1,
|
||||
"name": "Perplex"
|
||||
},
|
||||
"deviceId": null,
|
||||
"language":
|
||||
{
|
||||
"languageId": 1,
|
||||
@ -512,6 +512,7 @@ paths:
|
||||
"description": "Betaling in behandeling",
|
||||
},
|
||||
],
|
||||
"orderVouchers": null,
|
||||
"orderLines":
|
||||
[
|
||||
{
|
||||
@ -658,6 +659,7 @@ paths:
|
||||
example:
|
||||
{
|
||||
"customerProfileId": 1337,
|
||||
"deviceId": "fe68e624-b75f-48ca-a179-d5f86a8ab7d5",
|
||||
"totalAmount": 121,
|
||||
"languageId": 1,
|
||||
"lastUpdatedOn": "2024-03-22T09:00:00",
|
||||
@ -678,6 +680,7 @@ paths:
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
|
||||
/orders/{orderId}/statuses:
|
||||
parameters:
|
||||
- in: path
|
||||
@ -715,6 +718,143 @@ paths:
|
||||
{
|
||||
"order_orderStatusId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
|
||||
}
|
||||
/orders/{orderId}/ordervouchers:
|
||||
parameters:
|
||||
- in: path
|
||||
name: orderId
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d1dd439b-6072-4b97-89c9-724268865b93
|
||||
required: true
|
||||
description: The id of the order to process.
|
||||
post:
|
||||
summary: Add an order voucher.
|
||||
description: Add an order voucher.
|
||||
tags:
|
||||
- Order Voucher
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
example:
|
||||
{
|
||||
"issuedVoucherId": "eec6af41-1a60-49f6-a92e-440054a92f13",
|
||||
"orderLineId": "7a9d6e15-7c5c-421d-9ea9-00b9bb6dbe67"
|
||||
}
|
||||
responses:
|
||||
"201":
|
||||
description: Created
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
example:
|
||||
{
|
||||
"orderVoucherId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
|
||||
}
|
||||
/ordervouchers:
|
||||
parameters:
|
||||
- in: query
|
||||
name: orderVoucherId
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d1dd439b-6072-4b97-89c9-724268865b93
|
||||
required: false
|
||||
description: The id of the orderVoucher you are looking for.
|
||||
- in: query
|
||||
name: orderId
|
||||
schema:
|
||||
type: string
|
||||
example: 90c926b9-3178-4757-acca-34cff66b980c
|
||||
required: false
|
||||
description: The id of the order
|
||||
- in: query
|
||||
name: orderLineId
|
||||
schema:
|
||||
type: string
|
||||
example: 9e3363c8-e776-4675-b108-99b8c2e38eb6
|
||||
required: false
|
||||
description: The id of the orderLine
|
||||
get:
|
||||
summary: Find vouchers on the order
|
||||
description: Find vouchers on the order
|
||||
tags:
|
||||
- Order Voucher
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
example:
|
||||
[
|
||||
{
|
||||
"orderVoucherId": "19ef6882-8eda-43bf-b48e-9b4ff8745a50",
|
||||
"issuedVoucher":{
|
||||
"issuedVoucherId": "54668baf-4905-4e9a-af02-09c170f295ed",
|
||||
"voucherCode": "Voucher124",
|
||||
"purchasedProductId": 35,
|
||||
"fromInclusive": "2025-03-22T08:55:00",
|
||||
"untillInclusive": "2026-03-22T08:55:00"
|
||||
},
|
||||
"orderId": "f59e4769-53a0-4156-8991-6f9119ba629f",
|
||||
"orderLineId": "eeb86071-4f59-405d-b2be-7d7a77044bfa"
|
||||
}
|
||||
]
|
||||
/ordervouchers/{ordervoucherId}:
|
||||
parameters:
|
||||
- in: path
|
||||
name: ordervoucherId
|
||||
schema:
|
||||
type: string
|
||||
format: uuid
|
||||
example: d1dd439b-6072-4b97-89c9-724268865b93
|
||||
required: true
|
||||
description: The id of the order to process.
|
||||
patch:
|
||||
summary: Update an order voucher.
|
||||
description: Update an order voucher.
|
||||
tags:
|
||||
- Order Voucher
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
example:
|
||||
{
|
||||
"issuedVoucherId": "eec6af41-1a60-49f6-a92e-440054a92f13",
|
||||
"orderLineId": "7a9d6e15-7c5c-421d-9ea9-00b9bb6dbe67"
|
||||
}
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
example:
|
||||
{
|
||||
"orderVoucherId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066",
|
||||
}
|
||||
delete:
|
||||
summary: Delete an order voucher.
|
||||
description: Delete an order voucher.
|
||||
tags:
|
||||
- Order Voucher
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
example:
|
||||
{}
|
||||
/orders/{orderId}/orderlines:
|
||||
parameters:
|
||||
- in: path
|
||||
@ -1844,6 +1984,7 @@ paths:
|
||||
"touchPointId": 1,
|
||||
"name": "Perplex"
|
||||
},
|
||||
"deviceId": null,
|
||||
"isRefund": false,
|
||||
"htmPaymentReference": "HTM-1234",
|
||||
"pspPaymentReference": "Buckaroo-1234",
|
||||
|
||||
@ -243,143 +243,6 @@ paths:
|
||||
],
|
||||
"href": null,
|
||||
}
|
||||
post:
|
||||
tags:
|
||||
- Purchased Product
|
||||
summary: Create a new purchased product.
|
||||
description: Create a new purchased product.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
examples:
|
||||
Create Purchased GBO Product:
|
||||
value:
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts":
|
||||
[
|
||||
{
|
||||
"salesTimestamp": "2024-10-04T12:34:56.000",
|
||||
"refundTimestamp": "2024-10-04T12:34:56.000",
|
||||
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||
"untilInclusive": "2024-10-04T12:34:56.000",
|
||||
"packageTemplateId": "30003",
|
||||
"xBot": "f15efe6f-7353-4968-b134-60ba6fc2da8b",
|
||||
"xTat": "42efebf7-132e-4ee0-9cbb-4037a9a54ad8",
|
||||
"xSpit": "d67b2f72-918a-4e6c-957d-a39ed9c9e16b",
|
||||
"customerTokenId": "b6492322-c458-4857-9ac3-a109c1887b9f",
|
||||
"ovPayTokenId": 13,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"createdBy": "someuser",
|
||||
"lastUpdatedBy": null,
|
||||
},
|
||||
],
|
||||
"purchasedTapconnectTickets": [],
|
||||
"issuedVouchers": [],
|
||||
}
|
||||
Create Purchased TapConnet Ticket:
|
||||
value:
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts": [],
|
||||
"purchasedTapconnectTickets":
|
||||
[
|
||||
{
|
||||
"issuedAt": "2024-10-04T12:34:56.000",
|
||||
"activatedAt": "2024-10-04T12:34:56.000",
|
||||
"cancelledAt": null,
|
||||
"ticketReference": "KJj43nejhbTxhr897287",
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"createdBy": "user",
|
||||
"lastUpdatedBy": "user",
|
||||
},
|
||||
],
|
||||
"issuedVouchers": [],
|
||||
}
|
||||
Create Issued Voucher:
|
||||
value:
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts": [],
|
||||
"purchasedTapconnectTickets": [],
|
||||
"issuedVouchers":
|
||||
[
|
||||
{
|
||||
"voucherCode": "VOUCHER123",
|
||||
"voucherStatusInstances":
|
||||
[
|
||||
{
|
||||
"voucherStatusId": 1,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
],
|
||||
"voucherClaims":
|
||||
[
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 8,
|
||||
"value": "1999-12-31",
|
||||
},
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 4,
|
||||
"value": "vlad.harkonnen@househarkonnen.net",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
responses:
|
||||
"201":
|
||||
description: Created
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
example:
|
||||
{ "purchasedProductId": "a9b3dea5-fb8a-4b1e-9fe6-90cad31c0cfd" }
|
||||
/purchasedproducts/{purchasedProductId}:
|
||||
parameters:
|
||||
- in: path
|
||||
@ -1146,6 +1009,8 @@ paths:
|
||||
"value": "vlad.harkonnen@househarkonnen.net",
|
||||
},
|
||||
],
|
||||
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||
"untilInclusive": "2025-10-04T12:34:56.000",
|
||||
}
|
||||
responses:
|
||||
"201":
|
||||
@ -1241,6 +1106,8 @@ paths:
|
||||
"value": "vlad.harkonnen@househarkonnen.net",
|
||||
},
|
||||
],
|
||||
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||
"untilInclusive": "2025-10-04T12:34:56.000",
|
||||
},
|
||||
],
|
||||
}
|
||||
@ -1302,6 +1169,444 @@ paths:
|
||||
{ "voucherStatusId": 5, "name": "Expired" },
|
||||
],
|
||||
}
|
||||
/purchasedproducts/bulk:
|
||||
post:
|
||||
tags:
|
||||
- Bulk processing
|
||||
summary: Create one or more purchased product(s) in bulk.
|
||||
description: Create a new purchased product.
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
examples:
|
||||
Create Single Purchased GBO Product:
|
||||
value:
|
||||
{
|
||||
"purchasedProducts":
|
||||
[
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts":
|
||||
[
|
||||
{
|
||||
"salesTimestamp": "2024-10-04T12:34:56.000",
|
||||
"refundTimestamp": "2024-10-04T12:34:56.000",
|
||||
"fromInclusive": "2024-10-04T12:34:56.000",
|
||||
"untilInclusive": "2024-10-04T12:34:56.000",
|
||||
"packageTemplateId": "30003",
|
||||
"xBot": "f15efe6f-7353-4968-b134-60ba6fc2da8b",
|
||||
"xTat": "42efebf7-132e-4ee0-9cbb-4037a9a54ad8",
|
||||
"xSpit": "d67b2f72-918a-4e6c-957d-a39ed9c9e16b",
|
||||
"customerTokenId": "b6492322-c458-4857-9ac3-a109c1887b9f",
|
||||
"ovPayTokenId": 13,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"createdBy": "someuser",
|
||||
"lastUpdatedBy": null,
|
||||
},
|
||||
],
|
||||
"purchasedTapconnectTickets": [],
|
||||
"issuedVouchers": [],
|
||||
},
|
||||
],
|
||||
}
|
||||
Create Single Purchased TapConnet Ticket:
|
||||
value:
|
||||
{
|
||||
"purchasedProducts":
|
||||
[
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts": [],
|
||||
"purchasedTapconnectTickets":
|
||||
[
|
||||
{
|
||||
"issuedAt": "2024-10-04T12:34:56.000",
|
||||
"activatedAt": "2024-10-04T12:34:56.000",
|
||||
"cancelledAt": null,
|
||||
"ticketReference": "KJj43nejhbTxhr897287",
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"createdBy": "user",
|
||||
"lastUpdatedBy": "user",
|
||||
},
|
||||
],
|
||||
"issuedVouchers": [],
|
||||
},
|
||||
],
|
||||
}
|
||||
Create Single Issued Voucher:
|
||||
value:
|
||||
{
|
||||
"purchasedProducts":
|
||||
[
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts": [],
|
||||
"purchasedTapconnectTickets": [],
|
||||
"issuedVouchers":
|
||||
[
|
||||
{
|
||||
"voucherCode": "VOUCHER123",
|
||||
"voucherStatusInstances":
|
||||
[
|
||||
{
|
||||
"voucherStatusId": 1,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
],
|
||||
"voucherClaims":
|
||||
[
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 8,
|
||||
"value": "1999-12-31",
|
||||
},
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 4,
|
||||
"value": "vlad.harkonnen@househarkonnen.net",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
Create Multiple Issued Vouchers:
|
||||
value:
|
||||
{
|
||||
"purchasedProducts":
|
||||
[
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "408eefa9-b393-4bb3-8439-b2e51833abc7",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "f809a6e1-1c8d-4f8e-8a6e-0d0b1e1e1e1e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts": [],
|
||||
"purchasedTapconnectTickets": [],
|
||||
"issuedVouchers":
|
||||
[
|
||||
{
|
||||
"voucherCode": "VOUCHER123",
|
||||
"voucherStatusInstances":
|
||||
[
|
||||
{
|
||||
"voucherStatusId": 1,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
],
|
||||
"voucherClaims":
|
||||
[
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 8,
|
||||
"value": "1999-12-31",
|
||||
},
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 4,
|
||||
"value": "vlad.harkonnen@househarkonnen.net",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "7ce32f9b-52f0-4e80-a527-0c6184b57f52",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "02047745-f03e-4c00-8e1b-8dc5c86a786e",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts": [],
|
||||
"purchasedTapconnectTickets": [],
|
||||
"issuedVouchers":
|
||||
[
|
||||
{
|
||||
"voucherCode": "VOUCHER123",
|
||||
"voucherStatusInstances":
|
||||
[
|
||||
{
|
||||
"voucherStatusId": 1,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
],
|
||||
"voucherClaims":
|
||||
[
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 8,
|
||||
"value": "1940-01-18",
|
||||
},
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 4,
|
||||
"value": "valdemar.hoskanner@househarkonnen.net",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
"productId": 11,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
"lastUpdatedOn": "2024-10-04T12:34:56.000",
|
||||
"purchasedProductResources":
|
||||
[
|
||||
{
|
||||
"resourceNameId": 1,
|
||||
"resourceIdentifier": "7c71ec8a-3326-451f-9464-3e36d10260e3",
|
||||
},
|
||||
{
|
||||
"resourceNameId": 2,
|
||||
"resourceIdentifier": "73c7a805-2edf-4616-a04c-267e88e0931c",
|
||||
},
|
||||
],
|
||||
"purchasedGboProducts": [],
|
||||
"purchasedTapconnectTickets": [],
|
||||
"issuedVouchers":
|
||||
[
|
||||
{
|
||||
"voucherCode": "VOUCHER123",
|
||||
"voucherStatusInstances":
|
||||
[
|
||||
{
|
||||
"voucherStatusId": 1,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
],
|
||||
"voucherClaims":
|
||||
[
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 8,
|
||||
"value": "2016-06-08",
|
||||
},
|
||||
{
|
||||
"mandatoryCustomerDataItemId": 4,
|
||||
"value": "alia.artreides@housearteides.net",
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
}
|
||||
responses:
|
||||
"202":
|
||||
description: Accepted
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/BulkResponseBody"
|
||||
examples:
|
||||
Array of purchased products accepted:
|
||||
summary: Array of purchased products accepted
|
||||
description: |
|
||||
The array of purchased products was accepted successfully.
|
||||
The purchased products will be processed asynchronously.
|
||||
In the response body the consumer will find information on how to retrieve the processing status.
|
||||
value:
|
||||
startTime: 2025-02-14T05:32:47.0672237Z
|
||||
status: Running
|
||||
clientTrackingId: 08584620957189579629541919368CU00
|
||||
callbackurl: https://api.integratielaag.nl/purchasedproducts/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
|
||||
retryAfter: 10
|
||||
summary: null
|
||||
/purchasedproducts/bulk/{clientTrackingId}:
|
||||
get:
|
||||
tags:
|
||||
- Bulk processing
|
||||
summary: Get the status of the purchased products bulk post.
|
||||
description: Get the status of the asynchronous purchased products bulk post.
|
||||
parameters:
|
||||
- in: path
|
||||
name: clientTrackingId
|
||||
schema:
|
||||
type: string
|
||||
required: true
|
||||
description: The clientTrackingId of the purchased products bulk post.
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/BulkResponseBody"
|
||||
examples:
|
||||
Batch successfully processed:
|
||||
summary: Batch successfully processed
|
||||
description: |
|
||||
Body of a batch of purchased products that was successfully created.
|
||||
A number of purchased products were created.
|
||||
value:
|
||||
startTime: "2025-02-14T05:32:47.067Z"
|
||||
status: "Finished"
|
||||
clientTrackingId: "08584620957189579629541919368CU00"
|
||||
callbackurl: https://api.integratielaag.nl/purchasedproducts/bulk/responsestatus/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
|
||||
retryAfter: 0
|
||||
summary:
|
||||
created: 13
|
||||
updated: 0
|
||||
total: 13
|
||||
/voucherstatusinstances/bulk:
|
||||
post:
|
||||
summary: Post voucher status instances in bulk.
|
||||
description: Post voucher status instances in bulk.
|
||||
tags:
|
||||
- Bulk processing
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/unavailable"
|
||||
examples:
|
||||
List of issued vouchers to set status to revoked:
|
||||
summary: List of issued vouchers to set status to revoked
|
||||
description: List of issued vouchers to set status to revoked
|
||||
value:
|
||||
{
|
||||
"voucherStatusInstances":
|
||||
[
|
||||
{
|
||||
"issuedVoucherId": "8a63552f-faf5-43f3-b22d-bebc976a8a5e",
|
||||
"voucherStatusId": 4,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
{
|
||||
"issuedVoucherId": "a9ff40ec-2940-413a-9957-dfd471c4caf3",
|
||||
"voucherStatusId": 4,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
{
|
||||
"issuedVoucherId": "9e7363e6-beaa-4c38-9ed6-c8afed459bd5",
|
||||
"voucherStatusId": 4,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
{
|
||||
"issuedVoucherId": "9d7332d6-1949-4c20-aa99-d87096b035fa",
|
||||
"voucherStatusId": 4,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
{
|
||||
"issuedVoucherId": "43ca757b-8370-4cb0-92b9-717948383d5e",
|
||||
"voucherStatusId": 4,
|
||||
"createdOn": "2024-10-04T12:34:56.000",
|
||||
},
|
||||
],
|
||||
}
|
||||
responses:
|
||||
"202":
|
||||
description: Accepted
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/BulkResponseBody"
|
||||
examples:
|
||||
Array of issued vouchers accepted:
|
||||
summary: Array of issued vouchers status instances accepted
|
||||
description: |
|
||||
The array of issued vouchers status instances was accepted successfully.
|
||||
The issued vouchers status instances will be processed asynchronously.
|
||||
In the response body the consumer will find information on how to retrieve the processing status.
|
||||
value:
|
||||
startTime: 2025-02-14T05:32:47.0672237Z
|
||||
status: Running
|
||||
clientTrackingId: 08584620957189579629541919368CU00
|
||||
callbackurl: https://api.integratielaag.nl/voucherstatusinstances/bulk/responsestatus/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
|
||||
retryAfter: 10
|
||||
summary: null
|
||||
/voucherstatusinstances/bulk/responsestatus/{clientTrackingId}:
|
||||
get:
|
||||
tags:
|
||||
- Bulk processing
|
||||
summary: Get the status of the voucher status instances bulk post.
|
||||
description: Get the status of the asynchronous voucher status instances bulk post.
|
||||
parameters:
|
||||
- in: path
|
||||
name: clientTrackingId
|
||||
schema:
|
||||
type: string
|
||||
required: true
|
||||
description: The clientTrackingId of the voucher status instances bulk post.
|
||||
responses:
|
||||
"200":
|
||||
description: OK
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: "#/components/schemas/BulkResponseBody"
|
||||
examples:
|
||||
Batch successfully processed:
|
||||
summary: Batch successfully processed
|
||||
description: |
|
||||
Body of a batch of voucher status instances that was successfully created.
|
||||
A number of voucher status instances were created.
|
||||
value:
|
||||
startTime: "2025-02-14T05:32:47.067Z"
|
||||
status: "Finished"
|
||||
clientTrackingId: "08584620957189579629541919368CU00"
|
||||
callbackurl: https://api.integratielaag.nl/voucherstatusinstances/bulk/responsestatus/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
|
||||
retryAfter: 0
|
||||
summary:
|
||||
created: 5
|
||||
updated: 0
|
||||
total: 5
|
||||
components:
|
||||
securitySchemes:
|
||||
bearerToken:
|
||||
@ -1311,6 +1616,56 @@ components:
|
||||
schemas:
|
||||
unavailable:
|
||||
type: object
|
||||
BulkResponseBody:
|
||||
type: object
|
||||
properties:
|
||||
startTime:
|
||||
type: string
|
||||
format: date-time
|
||||
example: 2025-02-14T05:32:47.0672237Z
|
||||
status:
|
||||
type: string
|
||||
example: Running
|
||||
clientTrackingId:
|
||||
type: string
|
||||
example: 08584620957189579629541919368CU00
|
||||
callbackurl:
|
||||
type: string
|
||||
format: uri
|
||||
example: https://services.api.htm.nl/purchasedproducts/responsestatus/runtime/webhooks/workflow/scaleUnits/prod-00/workflows/6fd466916c
|
||||
retryAfter:
|
||||
type: integer
|
||||
example: 10
|
||||
summary:
|
||||
$ref: "#/components/schemas/summaryBody"
|
||||
required:
|
||||
- startTime
|
||||
- status
|
||||
- clientTrackingId
|
||||
- callbackurl
|
||||
- retryAfter
|
||||
- summary
|
||||
summaryBody:
|
||||
type: object
|
||||
properties:
|
||||
summary:
|
||||
type: object
|
||||
properties:
|
||||
created:
|
||||
type: integer
|
||||
example: 15
|
||||
updated:
|
||||
type: integer
|
||||
example: 2
|
||||
total:
|
||||
type: integer
|
||||
example: 17
|
||||
required:
|
||||
- created
|
||||
- total
|
||||
- updated
|
||||
required:
|
||||
- summary
|
||||
rfc9457:
|
||||
type: object
|
||||
properties:
|
||||
|
||||
477
src/openapi/tapconnect/tapconnect.yaml
Normal file
477
src/openapi/tapconnect/tapconnect.yaml
Normal file
@ -0,0 +1,477 @@
|
||||
openapi: 3.0.1
|
||||
info:
|
||||
title: TapConnect
|
||||
description: >-
|
||||
Welcome to the TapConnect Issuing API documentation. These pages describe the endpoints available within TapConnect. Please note that for historical reasons, Date/times are always in the "Europe/Amsterdam" timezone. The endpoints in this document are grouped as follows:
|
||||
|
||||
- **Export endpoints**: Export related endpoints return information about events related to tickets that have been issued. This can be used for Business Intelligence purposes or for financial record keeping.
|
||||
- **Product endpoints**: Product related endpoints return information about products that are available to you as a sales partner and the details of each of these products.
|
||||
- **Ticket endpoints**: Ticket related endpoints allow you to manage tickets throughout their lifecycle. This includes ticket creation, retrieving ticket information, or retrieving the barcode for a ticket.
|
||||
- **Journey endpoints**: Used to calculate the price of a journey and to issue a ticket for that journey using the external fare calculation engine.
|
||||
|
||||
For more information on TapConnect please visit [https://tapconnect.io](https://tapconnect.io) or [https://documentation.tapconnect.io](https://documentation.tapconnect.io).
|
||||
version: '1.0'
|
||||
servers:
|
||||
- url: https://services.acc.api.htm.nl/tapconnect/1.0
|
||||
tags:
|
||||
- name: Export
|
||||
description: >-
|
||||
Export data that can be used to generate reports about issued tickets
|
||||
and related information
|
||||
paths:
|
||||
/v5/ticket-events-export:
|
||||
get:
|
||||
summary: Elastic Search ticket events export
|
||||
description: "Exports ticket events data from Elastic Search.\n\nBoth parameters\
|
||||
\ are a string, and they have to represent a date. Consider the list of valid\
|
||||
\ formats below:\n1. 2021 - searches for all events in a year\n2. 2021-02\
|
||||
\ - searches for all events in a month\n3. 2021-02-02 - searches for all events\
|
||||
\ in a day\n4. 2021-02-02T12 - searches for all events in a specific hour\n\
|
||||
5. 2021-02-02T12:00 - searches for all events in a specific minute\n6. 2021-02-02T12:00:00\
|
||||
\ - searches for all events in a specific second\n\nIf an error occur, the\
|
||||
\ last element returned will be a message with \"An error occurred on Elasticsearch\"\
|
||||
\ and it \nmeans that not all the results are returned.\n_Keep in mind that\
|
||||
\ the above timestamps would also be accepted as Zulu: 2021-02-02T11:00:00Z\
|
||||
\ (winter time)_\n"
|
||||
parameters:
|
||||
- explode: true
|
||||
in: query
|
||||
name: start
|
||||
required: true
|
||||
description: The date to be considered as the interval starting date
|
||||
schema:
|
||||
example: 2021-02-01T00:00:00
|
||||
type: string
|
||||
style: form
|
||||
- explode: true
|
||||
in: query
|
||||
name: end
|
||||
required: true
|
||||
description: The date to be considered as the interval ending date
|
||||
schema:
|
||||
example: 2021-02-02T00:00:00
|
||||
type: string
|
||||
style: form
|
||||
responses:
|
||||
"200":
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/v5_ticket_events_export_response'
|
||||
description: Returns a JSON chunked array of ticket events exported from elastic search.
|
||||
"400":
|
||||
description: |
|
||||
The request could not be validated. The request body or parameters contain incomplete or incorrect parameters. The body of the response will contain information about the problem.
|
||||
"401":
|
||||
description: |
|
||||
Unauthorized call, you are not authorized to call this endpoint with the api key provided in the Authorization header. Please verify that your api key is correct and/or if you are authorized to call this endpoint.
|
||||
"403":
|
||||
description: |
|
||||
Unauthorized call, you are not authorized to call this endpoint with the api key provided in the Authorization header. Please verify that your api key is correct and/or if you are authorized to call this endpoint.
|
||||
"404":
|
||||
description: |
|
||||
The requested URL does not exist, or the requested object was not found.
|
||||
"406":
|
||||
description: |
|
||||
The request was not accepted by the server. The body of the response will contain information about the problem.
|
||||
tags:
|
||||
- Export
|
||||
components:
|
||||
schemas:
|
||||
v5_ticket_events_export_response:
|
||||
type: array
|
||||
items:
|
||||
anyOf:
|
||||
- $ref: '#/components/schemas/ActivateTicketEvent'
|
||||
- $ref: '#/components/schemas/CreateBarcodeEvent'
|
||||
- $ref: '#/components/schemas/CreateTicketEvent'
|
||||
- $ref: '#/components/schemas/TapEvent'
|
||||
- $ref: '#/components/schemas/InspectTicketEvent'
|
||||
- $ref: '#/components/schemas/NotifyEvent'
|
||||
ActivateTicketEvent:
|
||||
properties:
|
||||
eventId:
|
||||
example: 1
|
||||
type: number
|
||||
eventType:
|
||||
example: ACTIVATE_TICKET
|
||||
type: string
|
||||
occurredAt:
|
||||
example: 2021-06-07T08:42:00.791992000Z
|
||||
type: string
|
||||
receivedAt:
|
||||
example: 2021-06-07T08:42:00.791992000Z
|
||||
type: string
|
||||
timeToDie:
|
||||
example: 2445836980
|
||||
type: number
|
||||
operators:
|
||||
items:
|
||||
example: HTM
|
||||
type: string
|
||||
type: array
|
||||
createdBy:
|
||||
example: HTM
|
||||
type: string
|
||||
definedBy:
|
||||
example: HTM
|
||||
type: string
|
||||
ticketId:
|
||||
example: hkbu3415fbidswd803nfdg7
|
||||
type: string
|
||||
validityStart:
|
||||
example: 2021-06-06T22:00:00.000000000Z
|
||||
type: string
|
||||
validityEnd:
|
||||
example: 2021-06-07T23:40:00.000000000Z
|
||||
type: string
|
||||
validityType:
|
||||
example: FIXED
|
||||
type: string
|
||||
CreateBarcodeEvent:
|
||||
properties:
|
||||
eventId:
|
||||
example: 2
|
||||
type: number
|
||||
eventType:
|
||||
example: CREATE_BARCODE
|
||||
type: string
|
||||
occurredAt:
|
||||
example: 2021-06-07T08:42:01.629279000Z
|
||||
type: string
|
||||
receivedAt:
|
||||
example: 2021-06-07T08:42:01.629279000Z
|
||||
type: string
|
||||
timeToDie:
|
||||
example: 2445836980
|
||||
type: number
|
||||
operators:
|
||||
items:
|
||||
example: HTM
|
||||
type: string
|
||||
type: array
|
||||
createdBy:
|
||||
example: HTM
|
||||
type: string
|
||||
definedBy:
|
||||
example: HTM
|
||||
type: string
|
||||
ticketId:
|
||||
example: 2huCpR99LHjGfiq8ZJoF
|
||||
type: string
|
||||
barcodeSignatureKeyId:
|
||||
example: TCT07
|
||||
type: string
|
||||
barcodeValidityStart:
|
||||
example: 2021-06-06T22:00:00.000000000Z
|
||||
type: string
|
||||
barcodeValidityEnd:
|
||||
example: 2021-06-07T23:40:00.000000000Z
|
||||
type: string
|
||||
CreateTicketEvent:
|
||||
properties:
|
||||
eventId:
|
||||
example: 0
|
||||
type: number
|
||||
eventType:
|
||||
example: CREATE_TICKET
|
||||
type: string
|
||||
occurredAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
receivedAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
reportedAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
timeToDie:
|
||||
example: 2445836980
|
||||
type: number
|
||||
operators:
|
||||
items:
|
||||
example: HTM
|
||||
type: string
|
||||
type: array
|
||||
createdBy:
|
||||
example: HTM
|
||||
type: string
|
||||
definedBy:
|
||||
example: HTM
|
||||
type: string
|
||||
ticketId:
|
||||
example: 344BEuHcFkEChOPm06sY
|
||||
type: string
|
||||
serviceId:
|
||||
example: HTM-0987-7477-0993
|
||||
type: string
|
||||
productName:
|
||||
example: HTM Kinder Dagkaart
|
||||
type: string
|
||||
productCode:
|
||||
example: "303"
|
||||
type: string
|
||||
productValidityPeriodUnit:
|
||||
example: "DAYS"
|
||||
type: string
|
||||
productValidityPeriod:
|
||||
example: 1
|
||||
type: number
|
||||
lifespanStart:
|
||||
example: 2021-06-07
|
||||
type: string
|
||||
lifespanEnd:
|
||||
example: 2021-06-08
|
||||
type: string
|
||||
language:
|
||||
example: NL
|
||||
type: string
|
||||
salesChannelId:
|
||||
example: "9999"
|
||||
type: string
|
||||
salesChannelName:
|
||||
example: HTM App
|
||||
type: string
|
||||
startStation:
|
||||
example: Haarlem
|
||||
type: string
|
||||
endStation:
|
||||
example: Leiden Centraal
|
||||
type: string
|
||||
barcodeType:
|
||||
example: UIC
|
||||
type: string
|
||||
validityType:
|
||||
example: FIXED
|
||||
type: string
|
||||
refundable:
|
||||
example: true
|
||||
type: boolean
|
||||
priceInCents:
|
||||
example: 150,
|
||||
type: number
|
||||
numberOfAdults:
|
||||
example: 1
|
||||
type: number
|
||||
numberOfChildren:
|
||||
example: 0
|
||||
type: number
|
||||
roundToBusinessDay:
|
||||
example: true
|
||||
type: boolean
|
||||
modalities:
|
||||
example: ["BUS", "TRAM"]
|
||||
type: array
|
||||
items:
|
||||
example: BUS
|
||||
type: string
|
||||
TapEvent:
|
||||
properties:
|
||||
eventId:
|
||||
example: 5
|
||||
type: number
|
||||
eventType:
|
||||
example: TAP
|
||||
type: string
|
||||
occurredAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
receivedAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
timeToDie:
|
||||
example: 2445836980
|
||||
type: number
|
||||
validationAction:
|
||||
example: CHECK_OUT
|
||||
type: string
|
||||
validationResult:
|
||||
example: Approved
|
||||
type: string
|
||||
tapId:
|
||||
example: a9aea0ae-52de-42cd-a2f1-93b80d9af389
|
||||
type: string
|
||||
operators:
|
||||
items:
|
||||
example: HTM
|
||||
type: string
|
||||
type: array
|
||||
createdBy:
|
||||
example: HTM
|
||||
type: string
|
||||
definedBy:
|
||||
example: HTM
|
||||
type: string
|
||||
ticketId:
|
||||
example: hkbu3415fbidswd803nfdg7
|
||||
type: string
|
||||
modality:
|
||||
example: BUS
|
||||
type: string
|
||||
line:
|
||||
example: "25"
|
||||
type: string
|
||||
trip:
|
||||
example: "240"
|
||||
type: string
|
||||
vehicle:
|
||||
example: "1512"
|
||||
type: string
|
||||
deviceId:
|
||||
example: "13513A"
|
||||
type: string
|
||||
deviceType:
|
||||
example: VBS
|
||||
type: string
|
||||
lastStopId:
|
||||
example: "3409"
|
||||
type: string
|
||||
lastStopName:
|
||||
example: Gramsbergenlaan
|
||||
type: string
|
||||
nextStopId:
|
||||
example: "3409"
|
||||
type: string
|
||||
nextStopName:
|
||||
example: Gramsbergenlaan
|
||||
type: string
|
||||
location:
|
||||
type: object
|
||||
properties:
|
||||
lat:
|
||||
example: 52.00089453333333
|
||||
type: number
|
||||
lon:
|
||||
example: 4.004570666666667
|
||||
type: number
|
||||
InspectTicketEvent:
|
||||
properties:
|
||||
eventId:
|
||||
example: 3
|
||||
type: number
|
||||
eventType:
|
||||
example: INSPECT_TICKET
|
||||
type: string
|
||||
occurredAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
receivedAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
timeToDie:
|
||||
example: 2445836980
|
||||
type: number
|
||||
operators:
|
||||
items:
|
||||
example: HTM
|
||||
type: string
|
||||
type: array
|
||||
createdBy:
|
||||
example: HTM
|
||||
type: string
|
||||
definedBy:
|
||||
example: HTM
|
||||
type: string
|
||||
ticketId:
|
||||
example: uv1hzvrRd7Xd1Fs9vTxi
|
||||
type: string
|
||||
modality:
|
||||
example: BUS
|
||||
type: string
|
||||
deviceId:
|
||||
example: 6959bd00eaec8e68
|
||||
type: string
|
||||
deviceType:
|
||||
example: IBS
|
||||
type: string
|
||||
validationResult:
|
||||
example: Approved
|
||||
type: string
|
||||
NotifyEvent:
|
||||
properties:
|
||||
eventId:
|
||||
example: 1185
|
||||
type: number
|
||||
eventType:
|
||||
example: NOTIFY
|
||||
type: string
|
||||
occurredAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
receivedAt:
|
||||
example: 2021-06-07T08:42:00.790992000Z
|
||||
type: string
|
||||
timeToDie:
|
||||
example: 2445836980
|
||||
type: number
|
||||
tapId:
|
||||
example: a9aea0ae-52de-42cd-a2f1-93b80d9af389
|
||||
type: string
|
||||
sequence:
|
||||
example: 2
|
||||
type: number
|
||||
tapResponseTimeMillis:
|
||||
example: 402
|
||||
type: number
|
||||
validationAction:
|
||||
example: CHECK_OUT
|
||||
type: string
|
||||
validationMethod:
|
||||
example: ONLINE
|
||||
type: string
|
||||
validationResult:
|
||||
example: Approved
|
||||
type: string
|
||||
operators:
|
||||
items:
|
||||
example: HTM
|
||||
type: string
|
||||
type: array
|
||||
createdBy:
|
||||
example: HTM
|
||||
type: string
|
||||
definedBy:
|
||||
example: HTM
|
||||
type: string
|
||||
modality:
|
||||
example: TRAM
|
||||
type: string
|
||||
line:
|
||||
example: "3"
|
||||
type: string
|
||||
trip:
|
||||
example: "692"
|
||||
type: string
|
||||
vehicle:
|
||||
example: "4058"
|
||||
type: string
|
||||
deviceId:
|
||||
example: "13A886"
|
||||
type: string
|
||||
deviceType:
|
||||
example: VBS
|
||||
type: string
|
||||
lastStopId:
|
||||
example: "2005"
|
||||
type: string
|
||||
lastStopName:
|
||||
example: Fahrenheitstraat
|
||||
type: string
|
||||
nextStopId:
|
||||
example: "2011"
|
||||
type: string
|
||||
nextStopName:
|
||||
example: Valkenbosplein
|
||||
type: string
|
||||
ticketId:
|
||||
example: hkbu3415fbidswd803nfdg7
|
||||
type: string
|
||||
location:
|
||||
type: object
|
||||
properties:
|
||||
lat:
|
||||
example: 52.001300283333336
|
||||
type: number
|
||||
lon:
|
||||
example: 4.004586633333333
|
||||
type: number
|
||||
Loading…
Reference in New Issue
Block a user