Compare commits

..

No commits in common. "develop" and "features/Edit-TP-notification" have entirely different histories.

9 changed files with 852 additions and 2290 deletions

View File

@ -28,33 +28,10 @@ public final class Helpers {
return new JSONObject(string).get("alertId").toString(); 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 { public static String getXbot(String string) throws IOException {
return new JSONObject(string).get("xbot").toString(); 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 { public static void getAlertDetails(String alertId, String xBot, String gboBearerToken) throws Exception {
SSLContext sc = SSLContext.getInstance("SSL"); SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom()); sc.init(null, DummyX509TrustManager.getDummyArray(), new java.security.SecureRandom());
@ -71,7 +48,7 @@ public final class Helpers {
try(InputStream is = http.getInputStream()) { try(InputStream is = http.getInputStream()) {
String response = new String(is.readAllBytes(), StandardCharsets.UTF_8); String response = new String(is.readAllBytes(), StandardCharsets.UTF_8);
LOGGER.info("GBO API 8851 alert details response for xBOT " + xBot + " and alertId " + alertId + ": \n" + new JSONObject(response).toString(2)); LOGGER.info("GBO API 8851 alert details response for xBOT " + xBot + ": \n" + new JSONObject(response).toString(2));
} }
} }

View File

@ -16,28 +16,14 @@ public class RabbitConnector {
private static final Logger LOGGER = LoggerFactory.getLogger(RabbitConnector.class); 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 { public static void main(String[] args) throws Exception {
ConnectionFactory factory = new ConnectionFactory(); ConnectionFactory factory = new ConnectionFactory();
factory.setVirtualHost("/"); factory.setVirtualHost("/");
factory.setAutomaticRecoveryEnabled(true); factory.setAutomaticRecoveryEnabled(true);
factory.setPort(443); factory.setPort(443);
factory.setHost("not.sbx.idbt.translink.nl"); factory.setHost("not.sbx.idbt.translink.nl");
factory.setUsername(USER_NAME); factory.setUsername("BEID_3_ALERTS_nZs3");
factory.setPassword(PASSWORD); factory.setPassword("VyubhPnczKgTB2zJ");
factory.useSslProtocol("TLSv1.2"); factory.useSslProtocol("TLSv1.2");
factory.setExceptionHandler(new ForgivingExceptionHandler()); factory.setExceptionHandler(new ForgivingExceptionHandler());
Map<String, Object> configs = factory.getClientProperties(); Map<String, Object> configs = factory.getClientProperties();
@ -47,7 +33,7 @@ public class RabbitConnector {
Channel channel = connection.createChannel(); Channel channel = connection.createChannel();
DeliverCallback deliverCallback = initDeliverCallback(channel); DeliverCallback deliverCallback = initDeliverCallback(channel);
AMQP.Queue.DeclareOk queue = channel.queueDeclarePassive(QUEUE_NAME); AMQP.Queue.DeclareOk queue = channel.queueDeclarePassive("BEID_3.ALERTS");
LOGGER.info( LOGGER.info(
"Declared queue: " + queue.getQueue() + ", consumer count: " + queue.getConsumerCount() + ", message count: " + "Declared queue: " + queue.getQueue() + ", consumer count: " + queue.getConsumerCount() + ", message count: " +
queue.getMessageCount()); queue.getMessageCount());
@ -66,39 +52,17 @@ public class RabbitConnector {
channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false); channel.basicAck(delivery.getEnvelope().getDeliveryTag(), false);
LOGGER.info("Successfully acknowledged message with delivery tag: " + delivery.getEnvelope().getDeliveryTag()); LOGGER.info("Successfully acknowledged message with delivery tag: " + delivery.getEnvelope().getDeliveryTag());
if (QUEUE_NAME.equals("BEID_3.TRIPS")) { LOGGER.info("Getting alert details via GBO API 8851...");
getTripDetails(message);
} else if (QUEUE_NAME.equals("BEID_3.ALERTS")) {
getAlertDetails(message);
}
};
}
private static void getAlertDetails(String message) {
try { try {
String alertId = Helpers.getAlertId(message); String alertId = Helpers.getAlertId(message);
String xBot = Helpers.getXbot(message); String xBot = Helpers.getXbot(message);
String gboBearerToken = Helpers.getGboBearerToken(); String gboBearerToken = Helpers.getGboBearerToken();
LOGGER.info("Getting alert details for xBOT {} and alertId {} via GBO API 8851...", xBot, alertId);
Helpers.getAlertDetails(alertId, xBot, gboBearerToken); Helpers.getAlertDetails(alertId, xBot, gboBearerToken);
} catch (Exception e) { } catch (Exception e) {
throw new RuntimeException(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);
}
} }
} }

View File

@ -597,13 +597,9 @@ paths:
schema: schema:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
examples: examples:
Empty list: List all contract payments for a single debtor:
summary: Empty list summary: List all contract payments for a single debtor
description: List all contract payments for a debtor with no payments. description: List all contract payments for single debtor with debtor number 'D123456'.
value: { "contractPayments": [] }
Successful direct debit:
summary: Successful direct debit
description: One payment for a debtor with a successful direct debit.
value: value:
{ {
"contractPayments": "contractPayments":
@ -611,9 +607,8 @@ paths:
{ {
"paymentId": "151845776", "paymentId": "151845776",
"totalAmount": "26.62", "totalAmount": "26.62",
"paymentMethod": "Automatische incasso", "paymentMethod": "Twikey",
"paymentDate": "2024-09-12", "paymentDate": "2024-09-12",
"iban": "NL25INGB******1337",
"invoice": "invoice":
{ {
"invoiceId": "147722263", "invoiceId": "147722263",
@ -630,192 +625,23 @@ paths:
}, },
}, },
}, },
],
}
Direct debit reversal:
summary: Direct debit reversal
description: One payment for a debtor with a reversed direct debit.
value:
{ {
"contractPayments": "paymentId": "151845851",
[ "totalAmount": "45.21",
{ "paymentMethod": "Twikey",
"paymentId": "151845776",
"totalAmount": "-26.62",
"paymentMethod": "Stornering",
"paymentDate": "2024-09-12", "paymentDate": "2024-09-12",
"iban": "NL25INGB******1337",
"invoice": "invoice":
{ {
"invoiceId": "147722263", "invoiceId": "147722266",
"invoiceNumber": "F2024-0001", "invoiceNumber": "F2024-0002",
"description": "HTM Maandkorting 20%", "description": "HTM Maandkorting 20%",
"publicLink": "https://factuurinzien.nl/d/b0aac3f42f325f5dd6abc172f723caab5956524d/i/ddb245d6df67999eca48c4a71b5661b93038e20a", "publicLink": "https://factuurinzien.nl/d/ddb245d6df67999eca48c4a71b5661b93038e20a/i/dp5h1i5cuu94nopiolkdst3u17vkmzo",
}, },
"_links": "_links":
{ {
"get_contractdetails": "get_contractdetails":
{ {
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/5ca46c1a-cb9d-4c2d-960e-4471e8e28b6a", "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/7b2f8c1a-3d9d-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",
"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": "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",
},
},
},
{
"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", "method": "GET",
}, },
}, },

View File

@ -187,21 +187,25 @@ paths:
examples: examples:
minimalCustomerProfile: minimalCustomerProfile:
value: value:
{ "person": { "emailAddress": "j.jansen@hatseflats.nl" } } {
"person": {
"emailAddress": "j.jansen@hatseflats.nl"
}
}
fullCustomerProfile: fullCustomerProfile:
value: value:
{ {
"customerPreference": { "languageId": 1 }, "customerPreference": {
"person": "languageId": 1
{ },
"person": {
"birthname": "Jan", "birthname": "Jan",
"surname": "Jansen", "surname": "Jansen",
"prefix": "dhr", "prefix": "dhr",
"suffix": "jr", "suffix": "jr",
"dateOfBirth": "1970-01-01", "dateOfBirth": "1970-01-01",
"emailAddress": "j.jansen@hatseflats.nl", "emailAddress": "j.jansen@hatseflats.nl",
"addresses": "addresses": [
[
{ {
"street": "Laan van Meerdervoort", "street": "Laan van Meerdervoort",
"houseNumber": 5, "houseNumber": 5,
@ -210,7 +214,7 @@ paths:
"city": "Den Haag", "city": "Den Haag",
"country": "NL", "country": "NL",
"isPreferred": true, "isPreferred": true,
"addressTypeId": 1, "addressTypeId": 1
}, },
{ {
"street": "Beeklaan", "street": "Beeklaan",
@ -220,26 +224,24 @@ paths:
"city": "Den Haag", "city": "Den Haag",
"country": "NL", "country": "NL",
"isPreferred": false, "isPreferred": false,
"addressTypeId": 2, "addressTypeId": 2
}, }
], ],
"phones": "phones": [
[
{ {
"number": "6123456789", "number": "6123456789",
"countryCode": "0031", "countryCode": "0031",
"phoneTypeId": 1, "phoneTypeId": 1,
"isPreferred": true, "isPreferred": true
}, },
{ {
"number": "7012345678", "number": "7012345678",
"countryCode": "0031", "countryCode": "0031",
"phoneTypeId": 2, "phoneTypeId": 2,
"isPreferred": false, "isPreferred": false
}, }
], ],
"devices": "devices": [
[
{ {
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000", "externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
"alias": "My iPhone", "alias": "My iPhone",
@ -247,9 +249,9 @@ paths:
{ {
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999", "externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
"alias": "My iPad", "alias": "My iPad",
}, }
], ]
}, }
} }
responses: responses:
"201": "201":
@ -294,22 +296,20 @@ paths:
patchCustomer: patchCustomer:
value: value:
{ {
"person": "person": {
{
"birthname": "Jan", "birthname": "Jan",
"surname": "Jansen", "surname": "Jansen",
"prefix": "dhr", "prefix": "dhr",
"suffix": "jr", "suffix": "jr",
"dateOfBirth": "1970-01-01", "dateOfBirth": "1970-01-01",
"addresses": "addresses": [
[
{ {
"addressId": 2, "addressId": 2,
"street": "Laan van Meerdervoort", "street": "Laan van Meerdervoort",
"houseNumber": 5, "houseNumber": 5,
"postalCode": "2500AA", "postalCode": "2500AA",
"city": "Den Haag", "city": "Den Haag",
"country": "NL", "country": "NL"
}, },
{ {
"addressId": 1, "addressId": 1,
@ -319,28 +319,26 @@ paths:
"postalCode": "2500AA", "postalCode": "2500AA",
"city": "Den Haag", "city": "Den Haag",
"country": "NL", "country": "NL",
"addressTypeId": 2, "addressTypeId": 2
}, }
], ],
"phones": "phones": [
[
{ {
"phoneId": 1, "phoneId": 1,
"number": "6123456789", "number": "6123456789",
"countryCode": "0031", "countryCode": "0031",
"phoneTypeId": 1, "phoneTypeId": 1,
"isPreferred": true, "isPreferred": true
}, },
{ {
"phoneId": 2, "phoneId": 2,
"number": "7012345678", "number": "7012345678",
"countryCode": "0031", "countryCode": "0031",
"phoneTypeId": 2, "phoneTypeId": 2,
"isPreferred": false, "isPreferred": false
}, }
], ],
"devices": "devices": [
[
{ {
"deviceId": "813afdd8-bf8c-4e26-bfda-4da79552bd38", "deviceId": "813afdd8-bf8c-4e26-bfda-4da79552bd38",
"externalDeviceId": "123e4567-e89b-12d3-a456-426614174000", "externalDeviceId": "123e4567-e89b-12d3-a456-426614174000",
@ -350,9 +348,9 @@ paths:
"deviceId": "4f4249a2-ac6c-44f9-b740-66e66b6f3c28", "deviceId": "4f4249a2-ac6c-44f9-b740-66e66b6f3c28",
"externalDeviceId": "987e6543-e21b-12d3-a456-426614174999", "externalDeviceId": "987e6543-e21b-12d3-a456-426614174999",
"alias": "My iPad", "alias": "My iPad",
}, }
], ]
}, }
} }
responses: responses:
"200": "200":
@ -492,9 +490,8 @@ paths:
"customerProfileId": 1, "customerProfileId": 1,
"ovPayTokenId": 1, "ovPayTokenId": 1,
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
"ovpasNumber": "",
"alias": "Mijn EMV pas",
"tokenType": { "tokenTypeId": 1, "name": "EMV" }, "tokenType": { "tokenTypeId": 1, "name": "EMV" },
"alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
"expirationDate": "2028-02-01", "expirationDate": "2028-02-01",
@ -570,7 +567,6 @@ paths:
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34567",
"alias": "MyToken", "alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
@ -653,7 +649,6 @@ paths:
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34567",
"alias": "MyToken", "alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
@ -712,7 +707,7 @@ paths:
"gboAgeProfileId": 1, "gboAgeProfileId": 1,
"name": "Kind (4 t/m 11 jaar)", "name": "Kind (4 t/m 11 jaar)",
"ageFromInclusive": 4, "ageFromInclusive": 4,
"ageToInclusive": 11, "ageToInclusive": 11
}, },
"_links": "_links":
{ {
@ -776,7 +771,6 @@ paths:
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34567",
"alias": "MyToken", "alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
@ -810,7 +804,7 @@ paths:
"gboAgeProfileId": 1, "gboAgeProfileId": 1,
"name": "Kind (4 t/m 11 jaar)", "name": "Kind (4 t/m 11 jaar)",
"ageFromInclusive": 4, "ageFromInclusive": 4,
"ageToInclusive": 11, "ageToInclusive": 11
}, },
"_links": "_links":
{ {
@ -874,7 +868,6 @@ paths:
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34567",
"alias": "MyToken", "alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
@ -926,7 +919,7 @@ paths:
"gboAgeProfileId": 1, "gboAgeProfileId": 1,
"name": "Kind (4 t/m 11 jaar)", "name": "Kind (4 t/m 11 jaar)",
"ageFromInclusive": 4, "ageFromInclusive": 4,
"ageToInclusive": 11, "ageToInclusive": 11
}, },
"_links": "_links":
{ {
@ -990,7 +983,6 @@ paths:
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34567",
"alias": "MyToken", "alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
@ -1011,7 +1003,6 @@ paths:
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV54567",
"alias": "MyToken", "alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 3, "name": "Replaced (*)" }, { "tokenStatusId": 3, "name": "Replaced (*)" },
@ -1033,7 +1024,6 @@ paths:
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34547",
"alias": "MyToken", "alias": "MyToken",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 4, "name": "On stock" }, { "tokenStatusId": 4, "name": "On stock" },
@ -1047,7 +1037,7 @@ paths:
"birthdate": null, "birthdate": null,
"photo": null, "photo": null,
}, },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
{ {
"customerProfileId": 132, "customerProfileId": 132,
@ -1055,7 +1045,6 @@ paths:
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34831",
"alias": "Mijn OV Pas", "alias": "Mijn OV Pas",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 5, "name": "Suspended" }, { "tokenStatusId": 5, "name": "Suspended" },
@ -1069,7 +1058,7 @@ paths:
"birthdate": null, "birthdate": null,
"photo": null, "photo": null,
}, },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
{ {
"customerProfileId": 166, "customerProfileId": 166,
@ -1077,7 +1066,6 @@ paths:
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV34984",
"alias": "Mijn OV Pas", "alias": "Mijn OV Pas",
"tokenStatus": "tokenStatus":
{ {
@ -1094,7 +1082,7 @@ paths:
"birthdate": null, "birthdate": null,
"photo": null, "photo": null,
}, },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
{ {
"customerProfileId": 166, "customerProfileId": 166,
@ -1102,7 +1090,6 @@ paths:
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV54368",
"alias": "My retired token", "alias": "My retired token",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 1, "name": "Retired" }, { "tokenStatusId": 1, "name": "Retired" },
@ -1116,7 +1103,7 @@ paths:
"birthdate": null, "birthdate": null,
"photo": null, "photo": null,
}, },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
{ {
"customerProfileId": 1, "customerProfileId": 1,
@ -1124,7 +1111,6 @@ paths:
"xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969", "xTat": "e7fa3392-646b-40e2-95a6-c417dc0b0969",
"tokenType": "tokenType":
{ "tokenTypeId": 2, "name": "OV-pas physical" }, { "tokenTypeId": 2, "name": "OV-pas physical" },
"ovpasNumber": "OV98263",
"alias": "My found token", "alias": "My found token",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 7, "name": "Renewed Active" }, { "tokenStatusId": 7, "name": "Renewed Active" },
@ -1138,7 +1124,7 @@ paths:
"birthdate": null, "birthdate": null,
"photo": null, "photo": null,
}, },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
], ],
_links: _links:
@ -1228,7 +1214,7 @@ paths:
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
"tokenType": { "tokenTypeId": 1, "name": "EMV" }, "tokenType": { "tokenTypeId": 1, "name": "EMV" },
"lastDigits": null, "lastDigits": null,
"ovpasNumber": null, "ovPasNumber": null,
"alias": "Mijn token", "alias": "Mijn token",
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
@ -1964,12 +1950,11 @@ paths:
type: integer type: integer
example: 1 example: 1
required: true required: true
summary: |- summary: Replace an OVpay token with another (+ transfer products) - V2 (for Integratielaag)
NOT TO BE CALLED BY TOUCHPOINTS - Replace an OVpay token with another (+ transfer products) - V2 description: |
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. 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: requestBody:
content: content:
application/json: application/json:
@ -2384,7 +2369,7 @@ paths:
"ePurse": null, "ePurse": null,
"personalAccountData": "personalAccountData":
{ "name": null, "birthdate": null, "photo": null }, { "name": null, "birthdate": null, "photo": null },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
"newOvPayToken": "newOvPayToken":
{ {
@ -2401,7 +2386,7 @@ paths:
"ePurse": null, "ePurse": null,
"personalAccountData": "personalAccountData":
{ "name": null, "birthdate": null, "photo": null }, { "name": null, "birthdate": null, "photo": null },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
"isTransferable": true, "isTransferable": true,
"transferableObjects": "transferableObjects":
@ -2414,7 +2399,7 @@ paths:
"ePurse": true, "ePurse": true,
"personalAccountData": "personalAccountData":
{ "name": true, "birthdate": true, "photo": true }, { "name": true, "birthdate": true, "photo": true },
"gboAgeProfile": true, "gboAgeProfile": true
}, },
"_links": "_links":
{ {
@ -2438,57 +2423,50 @@ paths:
"tokenStatus": "tokenStatus":
{ "tokenStatusId": 2, "name": "Active" }, { "tokenStatusId": 2, "name": "Active" },
"expirationDate": "2028-02-01", "expirationDate": "2028-02-01",
"productInstances": "productInstances": [
[
{ {
"productId": 1, "productId": 1,
"name": "HTM 90% Korting EMV", "name": "HTM 90% Korting EMV",
"status": "Active", "status": "Active",
"isRenewable": true, "isRenewable": true,
"productCategory": "productCategory": {
{
"productCategoryId": 1, "productCategoryId": 1,
"name": "Kortingsabonnement", "name": "Kortingsabonnement"
}, },
"fromInclusive": "2025-11-25T13:25:00+01:00", "fromInclusive": "2025-11-25T13:25:00+01:00",
"untilInclusive": "2025-12-25T03:59:59+01:00", "untilInclusive": "2025-12-25T03:59:59+01:00",
"orderId": "501B17EF-36C4-4039-B92C-6517969B464E", "orderId": "501B17EF-36C4-4039-B92C-6517969B464E",
"orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E", "orderLineId": "38B17EF-36C4-4039-B92C-4817969B464E",
"contractId": "56B17EF-C436-9043-B76C-481797WEB464F", "contractId": "56B17EF-C436-9043-B76C-481797WEB464F",
"_links": "_links": {
{ "self": {
"self":
{
"href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/tokens/1/productinstances/1", "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", "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", "href": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers/contracts/56B17EF-C436-9043-B76C-481797WEB464F",
"method": "GET", "method": "GET"
}, }
}, }
}, }
], ],
"replacedByTokenId": null, "replacedByTokenId": null,
"autoReloadRegistration": null, "autoReloadRegistration": null,
"ePurse": null, "ePurse": null,
"personalAccountData": "personalAccountData":
{ "name": null, "birthdate": null, "photo": null }, { "name": null, "birthdate": null, "photo": null },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
"newOvPayToken": "newOvPayToken":
{ {
"customerProfileId": null, "customerProfileId": null,
"ovPayTokenId": null, "ovPayTokenId": null,
"xTat": "32089cc8-d187-47ff-a3a9-5c2558def811", "xTat": "32089cc8-d187-47ff-a3a9-5c2558def811",
"tokenType": "tokenType": { "tokenTypeId": 2, "name": "OV-pas physical" },
{ "tokenTypeId": 2, "name": "OV-pas physical" },
"alias": null, "alias": null,
"tokenStatus": null, "tokenStatus": null,
"expirationDate": "2028-02-01", "expirationDate": "2028-02-01",
@ -2498,7 +2476,7 @@ paths:
"ePurse": null, "ePurse": null,
"personalAccountData": "personalAccountData":
{ "name": null, "birthdate": null, "photo": null }, { "name": null, "birthdate": null, "photo": null },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
"isTransferable": false, "isTransferable": false,
"transferableObjects": "transferableObjects":
@ -2535,7 +2513,7 @@ paths:
"ePurse": null, "ePurse": null,
"personalAccountData": "personalAccountData":
{ "name": null, "birthdate": null, "photo": null }, { "name": null, "birthdate": null, "photo": null },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
"newOvPayToken": "newOvPayToken":
{ {
@ -2552,7 +2530,7 @@ paths:
"ePurse": null, "ePurse": null,
"personalAccountData": "personalAccountData":
{ "name": null, "birthdate": null, "photo": null }, { "name": null, "birthdate": null, "photo": null },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
"isTransferable": false, "isTransferable": false,
"transferableObjects": "transferableObjects":
@ -2624,8 +2602,8 @@ paths:
"gboAgeProfileId": 1, "gboAgeProfileId": 1,
"name": "Kind (4 t/m 11 jaar)", "name": "Kind (4 t/m 11 jaar)",
"ageFromInclusive": 4, "ageFromInclusive": 4,
"ageToInclusive": 11, "ageToInclusive": 11
}, }
}, },
"newOvPayToken": "newOvPayToken":
{ {
@ -2642,7 +2620,7 @@ paths:
"ePurse": null, "ePurse": null,
"personalAccountData": "personalAccountData":
{ "name": null, "birthdate": null, "photo": null }, { "name": null, "birthdate": null, "photo": null },
"gboAgeProfile": null, "gboAgeProfile": null
}, },
"isTransferable": false, "isTransferable": false,
"transferableObjects": "transferableObjects":
@ -2700,8 +2678,8 @@ paths:
"gboAgeProfileId": 1, "gboAgeProfileId": 1,
"name": "Kind (4 t/m 11 jaar)", "name": "Kind (4 t/m 11 jaar)",
"ageFromInclusive": 4, "ageFromInclusive": 4,
"ageToInclusive": 11, "ageToInclusive": 11
}, }
}, },
"newOvPayToken": "newOvPayToken":
{ {
@ -2736,8 +2714,8 @@ paths:
"gboAgeProfileId": 4, "gboAgeProfileId": 4,
"name": "Kind (19 t/m 65 jaar)", "name": "Kind (19 t/m 65 jaar)",
"ageFromInclusive": 19, "ageFromInclusive": 19,
"ageToInclusive": 65, "ageToInclusive": 65
}, }
}, },
"isTransferable": false, "isTransferable": false,
"transferableObjects": "transferableObjects":
@ -2879,9 +2857,9 @@ paths:
type: integer type: integer
example: 1 example: 1
post: post:
summary: "Transfer old OVpay token to new OVpay token." summary: "**INTEGRATIELAAG** Transfer old OVpay token to new OVpay token."
description: |- description: |-
**Note that this directly calls the integratielaag and not the Service Engine!** **Note that this is an integratielaag endpoint, not a Service Engine endpoint!**
First transfers all personal account data (if present), then all products, of an existing OVpay token 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 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 of the old token. This call is asynchronous, and progress can be monitored using the
@ -3020,9 +2998,9 @@ paths:
get: get:
tags: tags:
- Token Replace v2 - Token Replace v2
summary: "Get the status of the initiated token transfer process (POST)." summary: "**INTEGRATIELAAG** Get the status of the initiated token transfer process (POST)."
description: | description: |
**Note that this directly calls the integratielaag and not the Service Engine!** Get the status of the **Note that this is an integratielaag endpoint, not a Service Engine endpoint!** Get the status of the
asynchronous token transfer processing. asynchronous token transfer processing.
responses: responses:
"200": "200":
@ -3100,7 +3078,7 @@ paths:
"gboAgeProfileId": 1, "gboAgeProfileId": 1,
"name": "Kind (4 t/m 11 jaar)", "name": "Kind (4 t/m 11 jaar)",
"ageFromInclusive": 4, "ageFromInclusive": 4,
"ageToInclusive": 11, "ageToInclusive": 11
}, },
"_links": "_links":
{ {
@ -3141,22 +3119,60 @@ paths:
}, },
}, },
} }
"202":
description: Accepted
content:
application/json:
schema:
$ref: "#/components/schemas/unavailable"
examples:
Token transfer in progress: Token transfer in progress:
description: | description: |
The transfer of the token is still in progress. The response body shows the details of the The transfer of the token is still in progress. The response body shows the details of the
processing status. processing status.
value: value:
{ {
"startTime": "2025-02-14T05:32:47.067Z", "properties":
{
"waitEndTime": "2025-06-04T09:29:21.9641991Z",
"startTime": "2025-06-04T09:29:21.9641991Z",
"status": "Running", "status": "Running",
"clientTrackingId": "08584620957189579629541919368CU00", "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",
} }
"404": "404":
description: Not found description: Not found
@ -3355,7 +3371,10 @@ paths:
$ref: "#/components/schemas/unavailable" $ref: "#/components/schemas/unavailable"
examples: examples:
Update alias of a device: Update alias of a device:
value: { "alias": "My old iPhone 13" } value:
{
"alias": "My old iPhone 13",
}
responses: responses:
"200": "200":
description: OK description: OK

View File

@ -31,12 +31,6 @@ paths:
schema: schema:
type: integer type: integer
description: Filter by customer profile ID description: Filter by customer profile ID
- name: ovPayTokenId
in: query
required: false
schema:
type: integer
description: Filter by OV Pay token ID
- name: isCurrentlyActive - name: isCurrentlyActive
in: query in: query
required: false required: false
@ -50,13 +44,6 @@ paths:
type: integer type: integer
default: 1 default: 1
description: Limit the number of subscription activities returned per subscription (default is 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: responses:
"200": "200":
description: A list of notification subscriptions description: A list of notification subscriptions
@ -66,21 +53,17 @@ paths:
$ref: "#/components/schemas/GetNotificationSubscriptionsResponse" $ref: "#/components/schemas/GetNotificationSubscriptionsResponse"
examples: examples:
emptyNotificationSubscriptionResponse: emptyNotificationSubscriptionResponse:
summary: No notification subscriptions found
value: value:
notificationSubscriptions: [] notificationSubscriptions: []
href: null href: null
notificationSubscriptionResponse?expand=none: fullNotificationSubscriptionResponse:
summary: Return notification subscriptions without nested attributes (expand=none)
value: value:
notificationSubscriptions: notificationSubscriptions:
- notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 - notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377
notificationCategory: notificationCategory:
notificationCategoryId: 1 notificationCategoryId: 1
name: Mijn Reizen name: Mijn Reizen
groupName: Mijn Passen
customerProfileId: 1337 customerProfileId: 1337
ovPayTokenId: 42
subscriptionActivities: subscriptionActivities:
- subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387 - subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387
user: "1001337" user: "1001337"
@ -94,9 +77,7 @@ paths:
notificationCategory: notificationCategory:
notificationCategoryId: 2 notificationCategoryId: 2
name: Nieuwsbrief aanmelding name: Nieuwsbrief aanmelding
groupName: Marketing
customerProfileId: 1338 customerProfileId: 1338
ovPayTokenId: null
subscriptionActivities: subscriptionActivities:
- subscriptionActivityId: 7fae0d2c-1e20-4f3e-b25d-fd8505a381c4 - subscriptionActivityId: 7fae0d2c-1e20-4f3e-b25d-fd8505a381c4
user: "1001338" user: "1001338"
@ -107,113 +88,6 @@ paths:
timestamp: "2025-10-02T14:00:00Z" timestamp: "2025-10-02T14:00:00Z"
isActive: true isActive: true
href: null 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": "400":
description: Bad request description: Bad request
content: content:
@ -301,6 +175,10 @@ paths:
type: object type: object
$ref: "#/components/schemas/500Response" $ref: "#/components/schemas/500Response"
/notificationsubscriptions/{notificationSubscriptionId}: /notificationsubscriptions/{notificationSubscriptionId}:
delete:
summary: Delete a notification subscription by ID
tags:
- Notification Subscriptions
parameters: parameters:
- name: notificationSubscriptionId - name: notificationSubscriptionId
in: path in: path
@ -309,63 +187,6 @@ paths:
type: string type: string
format: uuid format: uuid
example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 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: responses:
"204": "204":
description: No content description: No content
@ -461,196 +282,12 @@ paths:
schema: schema:
type: object type: object
$ref: "#/components/schemas/500Response" $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: /notificationcategories:
get: get:
tags: tags:
- Notification Categories - Notification Categories
summary: Get all notification categories. summary: Get all notification categories.
parameters: 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 - name: expand
in: query in: query
schema: schema:
@ -666,58 +303,41 @@ paths:
schema: schema:
$ref: "#/components/schemas/GetNotificationCategoriesResponse" $ref: "#/components/schemas/GetNotificationCategoriesResponse"
examples: examples:
emptyNotificationCategoriesResponse:
summary: No notification categories found
value:
notificationCategories: []
getNotifactionCategories?expand=none: getNotifactionCategories?expand=none:
summary: Return all the notification categories without nested attributes (expand=none) summary: Return all the notification categories without nested attributes (expand=none)
value: value:
notificationCategories: notificationCategories:
- notificationCategoryId: 1 - notificationCategoryId: 1
name: Mijn Reizen name: Mijn Reizen
groupName: Mijn Passen
- notificationCategoryId: 2 - notificationCategoryId: 2
name: Nieuwsbrief aanmelding name: Nieuwsbrief aanmelding
groupName: Marketing
- notificationCategoryId: 3 - notificationCategoryId: 3
name: Serviceberichten name: Mijn Passen
groupName: Mijn Passen
getNotifactionCategories?expand=eventType: getNotifactionCategories?expand=eventType:
summary: Return all the notification categories with nested event types (expand=eventType) summary: Return all the notification categories with nested event types (expand=eventType)
value: value:
notificationCategories: notificationCategories:
- notificationCategoryId: 1 - notificationCategoryId: 1
name: Mijn Reizen name: Mijn Reizen
groupName: Mijn Passen
eventTypes: eventTypes:
- eventTypeId: 2 - eventTypeId: 2
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: TRIPS name: ALERTS, TRAVEL_SCHEME
subName: CKI subName: CI
prettyName: Normal Check-in prettyName: Check In
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: a1b2c3d4-e5f6-4789-abcd-1234567890ab
name: GBO_TRIPS
externalSubscriptionId: fedcba98-7654-3210-fedc-ba9876543210
- eventTypeId: 3 - eventTypeId: 3
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: PAD name: ALERTS, PAD
subName: AMEND subName: null
prettyName: PAD Wijzigen/Aanvullen prettyName: Profielgegevens op de pas
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
name: GBO_PAD
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
- notificationCategoryId: 2 - notificationCategoryId: 2
name: Nieuwsbrief aanmelding name: Nieuwsbrief aanmelding
groupName: Marketing
eventTypes: eventTypes:
- eventTypeId: 1 - eventTypeId: 1
eventOrigin: eventOrigin:
@ -727,108 +347,76 @@ paths:
subName: null subName: null
prettyName: HTM nieuwsbrief prettyName: HTM nieuwsbrief
optinRequired: false optinRequired: false
originSubscription: null
- notificationCategoryId: 3 - notificationCategoryId: 3
name: Serviceberichten name: Mijn Passen
groupName: Mijn Passen
eventTypes: eventTypes:
- eventTypeId: 4 - eventTypeId: 4
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: PRODUCT name: ALERTS, CARD
subName: ACTIVATE subName: null
prettyName: Product Geactiveerd prettyName: Mijn passen
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: f1a2b3c4-d5e6-4789-abcd-3456789012de
name: GBO_PRODUCT
externalSubscriptionId: 12345678-90ab-cdef-1234-567890abcdef
- eventTypeId: 5 - eventTypeId: 5
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: PAD name: ALERTS, PAD
subName: MARK subName: null
prettyName: PAD Markering prettyName: Profielgegevens op de pas
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
name: GBO_PAD
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
getNotifactionCategories?expand=eventTypeChannel: getNotifactionCategories?expand=eventTypeChannel:
summary: Return all the notification categories with all nested attributes (expand=eventTypeChannel) summary: Return all the notification categories with all nested attributes (expand=eventTypeChannel)
value: value:
notificationCategories: notificationCategories:
- notificationCategoryId: 1 - notificationCategoryId: 1
name: Mijn Reizen name: Mijn Reizen
groupName: Mijn Passen
eventTypes: eventTypes:
- eventTypeId: 2 - eventTypeId: 2
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: TRIPS name: ALERTS, TRAVEL_SCHEME
subName: CKI subName: CI
prettyName: Normal Check-in prettyName: Check In
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: a1b2c3d4-e5f6-4789-abcd-1234567890ab
name: GBO_TRIPS
externalSubscriptionId: fedcba98-7654-3210-fedc-ba9876543210
eventTypeChannels: eventTypeChannels:
- eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173 - eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173
channel: channel:
channelId: 1 channelId: 1
name: push name: push
resourceName:
resourceNameId: 8
name: devices
isDefault: true isDefault: true
isMandatory: false isMandatory: false
- eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d - eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d
channel: channel:
channelId: 2 channelId: 2
name: email name: email
resourceName:
resourceNameId: 4
name: customers
isDefault: false isDefault: false
isMandatory: false isMandatory: false
- eventTypeId: 3 - eventTypeId: 3
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: PAD name: ALERTS, PAD
subName: AMEND subName: null
prettyName: PAD Wijzigen/Aanvullen prettyName: Profielgegevens op de pas
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
name: GBO_PAD
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
eventTypeChannels: eventTypeChannels:
- eventTypeChannelId: 8e7df8f1-7e50-482f-8301-d399e75fd432 - eventTypeChannelId: 8e7df8f1-7e50-482f-8301-d399e75fd432
channel: channel:
channelId: 1 channelId: 1
name: push name: push
resourceName:
resourceNameId: 8
name: devices
isDefault: true isDefault: true
isMandatory: false isMandatory: false
- eventTypeChannelId: 72960a92-1855-469f-9cfd-5d72f57106f2 - eventTypeChannelId: 72960a92-1855-469f-9cfd-5d72f57106f2
channel: channel:
channelId: 2 channelId: 2
name: email name: email
resourceName:
resourceNameId: 4
name: customers
isDefault: false isDefault: false
isMandatory: false isMandatory: false
- notificationCategoryId: 2 - notificationCategoryId: 2
name: Nieuwsbrief aanmelding name: Nieuwsbrief aanmelding
groupName: Marketing
eventTypes: eventTypes:
- eventTypeId: 1 - eventTypeId: 1
eventOrigin: eventOrigin:
@ -838,81 +426,56 @@ paths:
subName: null subName: null
prettyName: HTM nieuwsbrief prettyName: HTM nieuwsbrief
optinRequired: false optinRequired: false
originSubscription: null
eventTypeChannels: eventTypeChannels:
- eventTypeChannelId: 447a1116-6cd7-4645-8c3d-43237b6186cd - eventTypeChannelId: 447a1116-6cd7-4645-8c3d-43237b6186cd
channel: channel:
channelId: 2 channelId: 2
name: email name: email
resourceName:
resourceNameId: 4
name: customers
isDefault: true isDefault: true
isMandatory: false isMandatory: false
- notificationCategoryId: 3 - notificationCategoryId: 3
name: Serviceberichten name: Mijn Passen
groupName: Mijn Passen
eventTypes: eventTypes:
- eventTypeId: 4 - eventTypeId: 4
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: PRODUCT name: ALERTS, CARD
subName: ACTIVATE subName: null
prettyName: Product Geactiveerd prettyName: Mijn passen
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: f1a2b3c4-d5e6-4789-abcd-3456789012de
name: GBO_PRODUCT
externalSubscriptionId: 12345678-90ab-cdef-1234-567890abcdef
eventTypeChannels: eventTypeChannels:
- eventTypeChannelId: be07c7bb-714b-4637-acf5-a67025ad8e60 - eventTypeChannelId: be07c7bb-714b-4637-acf5-a67025ad8e60
channel: channel:
channelId: 1 channelId: 1
name: push name: push
resourceName:
resourceNameId: 8
name: devices
isDefault: true isDefault: true
isMandatory: false isMandatory: false
- eventTypeChannelId: 0c797b5a-ed34-494b-8c64-0a832830d392 - eventTypeChannelId: 0c797b5a-ed34-494b-8c64-0a832830d392
channel: channel:
channelId: 2 channelId: 2
name: email name: email
resourceName:
resourceNameId: 4
name: customers
isDefault: false isDefault: false
isMandatory: false isMandatory: false
- eventTypeId: 5 - eventTypeId: 5
eventOrigin: eventOrigin:
eventOriginId: 1 eventOriginId: 1
name: GBO name: GBO
name: PAD name: ALERTS, PAD
subName: MARK subName: null
prettyName: PAD Markering prettyName: Profielgegevens op de pas
optinRequired: false optinRequired: false
originSubscription:
originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc
name: GBO_PAD
externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f
eventTypeChannels: eventTypeChannels:
- eventTypeChannelId: b910368f-c045-4e8e-b01d-bcbc78708bac - eventTypeChannelId: b910368f-c045-4e8e-b01d-bcbc78708bac
channel: channel:
channelId: 1 channelId: 1
name: push name: push
resourceName:
resourceNameId: 8
name: devices
isDefault: true isDefault: true
isMandatory: false isMandatory: false
- eventTypeChannelId: 93e773da-ba3b-48da-9a0e-ee478eaa752f - eventTypeChannelId: 93e773da-ba3b-48da-9a0e-ee478eaa752f
channel: channel:
channelId: 2 channelId: 2
name: email name: email
resourceName:
resourceNameId: 4
name: customers
isDefault: false isDefault: false
isMandatory: false isMandatory: false
"400": "400":
@ -1033,24 +596,12 @@ paths:
channels: channels:
- channelId: 1 - channelId: 1
name: push name: push
resourceName:
resourceNameId: 8
name: devices
- channelId: 2 - channelId: 2
name: email name: email
resourceName:
resourceNameId: 4
name: customers
- channelId: 3 - channelId: 3
name: sms name: sms
resourceName:
resourceNameId: 4
name: customers
- channelId: 4 - channelId: 4
name: mail name: mail
resourceName:
resourceNameId: 4
name: customers
"400": "400":
description: Bad request description: Bad request
content: content:
@ -1199,7 +750,6 @@ paths:
notificationCategory: notificationCategory:
notificationCategoryId: 1 notificationCategoryId: 1
name: Mijn Reizen name: Mijn Reizen
groupName: Mijn Passen
- eventType: - eventType:
eventTypeId: 16 eventTypeId: 16
eventOrigin: eventOrigin:
@ -1212,7 +762,6 @@ paths:
notificationCategory: notificationCategory:
notificationCategoryId: 1 notificationCategoryId: 1
name: Mijn Reizen name: Mijn Reizen
groupName: Mijn Passen
"400": "400":
description: Bad request description: Bad request
content: content:
@ -1278,9 +827,6 @@ paths:
channel: channel:
channelId: 1 channelId: 1
name: push name: push
resourceName:
resourceNameId: 8
name: devices
isDefault: true isDefault: true
isMandatory: false isMandatory: false
- eventTypeChannelId: c4729ad4-46ef-4329-94f9-5079be21dfc5 - eventTypeChannelId: c4729ad4-46ef-4329-94f9-5079be21dfc5
@ -1296,9 +842,6 @@ paths:
channel: channel:
channelId: 1 channelId: 1
name: push name: push
resourceName:
resourceNameId: 8
name: devices
isDefault: true isDefault: true
isMandatory: false isMandatory: false
"400": "400":
@ -1419,24 +962,6 @@ components:
type: string type: string
format: uuid format: uuid
example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 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: PostSubscriptionActivityRequest:
type: object type: object
properties: properties:
@ -1461,40 +986,6 @@ components:
type: string type: string
format: uuid format: uuid
example: 30b32657-1ba1-44e0-8868-4db807695387 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: GetEventOriginsResponse:
type: object type: object
properties: properties:
@ -1585,24 +1076,6 @@ components:
optInRequired: optInRequired:
type: boolean type: boolean
example: true 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: eventTypeChannels:
type: array type: array
items: items:
@ -1634,22 +1107,9 @@ components:
name: name:
type: string type: string
example: push example: push
resourceName:
type: object
properties:
resourceNameId:
type: integer
example: 8
name:
type: string
example: devices
required:
- resourceNameId
- name
required: required:
- channelId - channelId
- name - name
- resourceName
NotificationCategory: NotificationCategory:
type: object type: object
properties: properties:
@ -1659,9 +1119,6 @@ components:
name: name:
type: string type: string
example: Mijn Reizen example: Mijn Reizen
groupName:
type: string
example: Mijn Passen
eventTypes: eventTypes:
type: array type: array
items: items:

View File

@ -2999,12 +2999,8 @@ paths:
transactionItems: transactionItems:
- transactionItemId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 - transactionItemId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7
status: returned to src status: returned to src
aggregationReference: null
accountingSystemReference: null
- transactionItemId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3 - transactionItemId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3
status: returned to src status: returned to src
aggregationReference: null
accountingSystemReference: null
List of transactions items to return: List of transactions items to return:
summary: List of transaction items to return to transaction database summary: List of transaction items to return to transaction database
description: List of transaction items to return to transaction database in bulk. description: List of transaction items to return to transaction database in bulk.
@ -3012,12 +3008,8 @@ paths:
transactionItems: transactionItems:
- transactionItemId: eacb9bdc-c6b5-4277-942b-cebb102944f5 - transactionItemId: eacb9bdc-c6b5-4277-942b-cebb102944f5
status: returned to trx-db status: returned to trx-db
aggregationReference: null
accountingSystemReference: null
- transactionItemId: 2f361bfb-9df0-4e0f-af7c-7b9be3e7bc61 - transactionItemId: 2f361bfb-9df0-4e0f-af7c-7b9be3e7bc61
status: returned to trx-db status: returned to trx-db
aggregationReference: null
accountingSystemReference: null
responses: responses:
"202": "202":
description: Accepted description: Accepted
@ -3069,32 +3061,10 @@ paths:
Body of a batch of transaction items that was successfully patched. Body of a batch of transaction items that was successfully patched.
A number of transaction items were patched. A number of transaction items were patched.
value: value:
startTime: 2025-02-14T05:32:47.067Z
status: Finished
clientTrackingId: 08584620957189579629541919368CU00
summary: summary:
created: 0 created: 0
updated: 15 updated: 15
total: 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: security:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User
@ -3119,10 +3089,8 @@ paths:
processingFailures: processingFailures:
- processingFailureId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7 - processingFailureId: d8ee7035-fa3d-400e-9ad5-4fe8c4c73eb7
resolved: true resolved: true
change: Configuratie aangepast voor artikelnummer 1337.
- processingFailureId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3 - processingFailureId: 88910e83-4b1e-4fde-ab13-bd8bb60cbcd3
resolved: true resolved: true
change: Configuratie aangepast voor artikelnummer 1337.
responses: responses:
"202": "202":
description: Accepted description: Accepted
@ -3174,32 +3142,10 @@ paths:
Body of a batch of processing failures that was successfully patched. Body of a batch of processing failures that was successfully patched.
A number of processing failures were patched. A number of processing failures were patched.
value: value:
startTime: 2025-02-14T05:32:47.067Z
status: Finished
clientTrackingId: 08584620957189579629541919368CU00
summary: summary:
created: 0 created: 0
updated: 15 updated: 15
total: 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: security:
- default: [] - default: []
x-auth-type: Application & Application User x-auth-type: Application & Application User

View File

@ -5,12 +5,6 @@ info:
description: CRUD APIs for ABT Orders database. These are NOT the functional APIs from Service Engine. description: CRUD APIs for ABT Orders database. These are NOT the functional APIs from Service Engine.
servers: servers:
- url: https://services.acc.api.htm.nl/abt/abtorder/1.0 - 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: paths:
/orders: /orders:
get: get:
@ -56,14 +50,6 @@ paths:
example: 1 example: 1
required: false required: false
description: The id of the touch point where the order was initiated. 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 - in: query
name: languageId name: languageId
schema: schema:
@ -112,14 +98,6 @@ paths:
explode: false explode: false
required: false required: false
description: Filter on most recent order status. 1 = concept, 2 = awaitingPayment, 3 = pendingPayment, 4 = paid, 5 = delivered, 6 = cancelled. 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: responses:
"200": "200":
description: OK description: OK
@ -141,7 +119,6 @@ paths:
"touchPointId": 1, "touchPointId": 1,
"name": "Perplex" "name": "Perplex"
}, },
"deviceId": "42e77532-d831-41da-b07a-7edb9bb7f004",
"language": "language":
{ {
"languageId": 1, "languageId": 1,
@ -171,30 +148,6 @@ paths:
"description": "Betaling in behandeling", "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": "orderLines":
[ [
{ {
@ -374,22 +327,19 @@ paths:
"customerProfileId": 1337, "customerProfileId": 1337,
"totalAmount": 121, "totalAmount": 121,
"touchPointId": 1, "touchPointId": 1,
"deviceId": "b8ca9fdf-0bb9-4e49-b48d-41e395563377",
"languageId": 1, "languageId": 1,
"createdOn": "2024-03-22T09:00:00", "createdOn": "2024-03-22T09:00:00",
"order_OrderStatus": "order_OrderStatus":
[ [
{ {
"orderStatusId": 1, "orderStatusId": 4,
"createdOn": "2024-03-22T08:55:00", "createdOn": "2024-03-22T09:00:00",
"description": "Concept order", "description": "Order succesvol betaald",
}, },
],
"orderVouchers":
[
{ {
"issuedVoucherId": "e81b2197-a6c2-45b6-9560-8ce8442e8604", "orderStatusId": 3,
"orderLineId": "97824d2e-5189-456d-b6da-4cca511a7685" "createdOn": "2024-03-22T08:55:00",
"description": "Betaling in behandeling",
}, },
], ],
"orderLines": "orderLines":
@ -440,6 +390,57 @@ 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: responses:
"201": "201":
@ -486,7 +487,6 @@ paths:
"touchPointId": 1, "touchPointId": 1,
"name": "Perplex" "name": "Perplex"
}, },
"deviceId": null,
"language": "language":
{ {
"languageId": 1, "languageId": 1,
@ -512,7 +512,6 @@ paths:
"description": "Betaling in behandeling", "description": "Betaling in behandeling",
}, },
], ],
"orderVouchers": null,
"orderLines": "orderLines":
[ [
{ {
@ -659,7 +658,6 @@ paths:
example: example:
{ {
"customerProfileId": 1337, "customerProfileId": 1337,
"deviceId": "fe68e624-b75f-48ca-a179-d5f86a8ab7d5",
"totalAmount": 121, "totalAmount": 121,
"languageId": 1, "languageId": 1,
"lastUpdatedOn": "2024-03-22T09:00:00", "lastUpdatedOn": "2024-03-22T09:00:00",
@ -680,7 +678,6 @@ paths:
responses: responses:
"200": "200":
description: OK description: OK
/orders/{orderId}/statuses: /orders/{orderId}/statuses:
parameters: parameters:
- in: path - in: path
@ -718,143 +715,6 @@ paths:
{ {
"order_orderStatusId": "b9cf0096-4211-4be6-ac21-7bc34bc8e066", "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: /orders/{orderId}/orderlines:
parameters: parameters:
- in: path - in: path
@ -1984,7 +1844,6 @@ paths:
"touchPointId": 1, "touchPointId": 1,
"name": "Perplex" "name": "Perplex"
}, },
"deviceId": null,
"isRefund": false, "isRefund": false,
"htmPaymentReference": "HTM-1234", "htmPaymentReference": "HTM-1234",
"pspPaymentReference": "Buckaroo-1234", "pspPaymentReference": "Buckaroo-1234",

View File

@ -1009,8 +1009,6 @@ paths:
"value": "vlad.harkonnen@househarkonnen.net", "value": "vlad.harkonnen@househarkonnen.net",
}, },
], ],
"fromInclusive": "2024-10-04T12:34:56.000",
"untilInclusive": "2025-10-04T12:34:56.000",
} }
responses: responses:
"201": "201":
@ -1106,8 +1104,6 @@ paths:
"value": "vlad.harkonnen@househarkonnen.net", "value": "vlad.harkonnen@househarkonnen.net",
}, },
], ],
"fromInclusive": "2024-10-04T12:34:56.000",
"untilInclusive": "2025-10-04T12:34:56.000",
}, },
], ],
} }
@ -1185,8 +1181,7 @@ paths:
Create Single Purchased GBO Product: Create Single Purchased GBO Product:
value: value:
{ {
"purchasedProducts": "purchasedProducts":[
[
{ {
"productId": 11, "productId": 11,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000",
@ -1223,14 +1218,13 @@ paths:
], ],
"purchasedTapconnectTickets": [], "purchasedTapconnectTickets": [],
"issuedVouchers": [], "issuedVouchers": [],
}, }
], ]
} }
Create Single Purchased TapConnet Ticket: Create Single Purchased TapConnet Ticket:
value: value:
{ {
"purchasedProducts": "purchasedProducts":[
[
{ {
"productId": 11, "productId": 11,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000",
@ -1261,14 +1255,13 @@ paths:
}, },
], ],
"issuedVouchers": [], "issuedVouchers": [],
}, }
], ]
} }
Create Single Issued Voucher: Create Single Issued Voucher:
value: value:
{ {
"purchasedProducts": "purchasedProducts":[
[
{ {
"productId": 11, "productId": 11,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000",
@ -1310,14 +1303,13 @@ paths:
], ],
}, },
], ],
}, }
], ]
} }
Create Multiple Issued Vouchers: Create Multiple Issued Vouchers:
value: value:
{ {
"purchasedProducts": "purchasedProducts":[
[
{ {
"productId": 11, "productId": 11,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000",
@ -1443,8 +1435,8 @@ paths:
], ],
}, },
], ],
}, }
], ]
} }
responses: responses:
"202": "202":
@ -1521,34 +1513,33 @@ paths:
description: List of issued vouchers to set status to revoked description: List of issued vouchers to set status to revoked
value: value:
{ {
"voucherStatusInstances": "voucherStatusInstances":[
[
{ {
"issuedVoucherId": "8a63552f-faf5-43f3-b22d-bebc976a8a5e", "issuedVoucherId": "8a63552f-faf5-43f3-b22d-bebc976a8a5e",
"voucherStatusId": 4, "voucherStatusId": 4,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000"
}, },
{ {
"issuedVoucherId": "a9ff40ec-2940-413a-9957-dfd471c4caf3", "issuedVoucherId": "a9ff40ec-2940-413a-9957-dfd471c4caf3",
"voucherStatusId": 4, "voucherStatusId": 4,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000"
}, },
{ {
"issuedVoucherId": "9e7363e6-beaa-4c38-9ed6-c8afed459bd5", "issuedVoucherId": "9e7363e6-beaa-4c38-9ed6-c8afed459bd5",
"voucherStatusId": 4, "voucherStatusId": 4,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000"
}, },
{ {
"issuedVoucherId": "9d7332d6-1949-4c20-aa99-d87096b035fa", "issuedVoucherId": "9d7332d6-1949-4c20-aa99-d87096b035fa",
"voucherStatusId": 4, "voucherStatusId": 4,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000"
}, },
{ {
"issuedVoucherId": "43ca757b-8370-4cb0-92b9-717948383d5e", "issuedVoucherId": "43ca757b-8370-4cb0-92b9-717948383d5e",
"voucherStatusId": 4, "voucherStatusId": 4,
"createdOn": "2024-10-04T12:34:56.000", "createdOn": "2024-10-04T12:34:56.000"
}, },
], ]
} }
responses: responses:
"202": "202":

View File

@ -1,477 +0,0 @@
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