openapi: 3.0.1 info: title: Service Engine APIs for Notifications description: >- Service Engine APIs for all HTM Notifications. These are NOT the CRUD APIs to access raw data in the database. version: "1.0" servers: - url: https://services.acc.api.htm.nl/abt/touchpoint/2.0 tags: - name: Notifications description: >- Service Engine APIs for all HTM Notifications. These are NOT the CRUD APIs to access raw data in the database. paths: /notificationcategories: get: tags: - Notification categories summary: Get notification categories and optins for that category that a touchpoint can show. description: | Get notification categories that a touchpoint can show and optins ( eventTypes) and channels (eventType_channels) for the optin for that category parameters: - name: expand in: query schema: type: array items: type: string description: Choose the records related to the category nested, options are eventType, evenTypeChannel responses: "200": description: OK content: application/json: examples: getNotifactionCategories?Expand=eventType, evenTypeChannel, channel: summary: Return all the notification categories with their nested attributes value: { "notificationCategories":[ { "notificationCategoryId": 1, "name": "Nieuwsbrief", "eventTypes": [ { "eventTypeId": 1, "eventOrigin": { "eventOriginId": 6, "name": "Maileon" }, "name": "HTM nieuwsbrief", "subName": "", "prettyName": "HTM nieuwsbrief", "optinRequired": False, "eventTypeChannels":[ { "eventTypeChannelId": "447a1116-6cd7-4645-8c3d-43237b6186cd", "channel":{ "channelId": 2, "name": "email" }, "isDefault": True, "isMandatory": False } ] } ] }, { "notificationCategoryId": 2, "name": "Mijn Reizen", "eventTypes": [ { "eventTypeId": 2, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, TRAVEL_SCHEME", "subName": "CI", "prettyName": "Check In", "optinRequired": False, "eventTypeChannels":[ { "eventTypeChannelId": "ccc8c025-06b5-4928-a632-23e1c55cd173", "channel":{ "channelId": 1, "name": "push" }, "isDefault": True, "isMandatory": False }, { "eventTypeChannelId": "da2deb4c-ce77-4b5f-aecc-ddebfd14349d", "channel":{ "channelId": 2, "name": "email" }, "isDefault": False, "isMandatory": False } ] }, { "eventTypeId": 3, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, PAD", "subName": null, "prettyName": "Profielgegevens op de pas", "optinRequired": False, "eventTypeChannels":[ { "eventTypeChannelId": "8e7df8f1-7e50-482f-8301-d399e75fd432", "channel":{ "channelId": 1, "name": "push" }, "isDefault": True, "isMandatory": False }, { "eventTypeChannelId": "72960a92-1855-469f-9cfd-5d72f57106f2", "channel":{ "channelId": 2, "name": "email" }, "isDefault": False, "isMandatory": False } ] } ] }, { "notificationCategoryId": 3, "name": "Mijn Passen", "eventTypes": [ { "eventTypeId": 4, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, CARD", "subName": null, "prettyName": "Mijn passen", "optinRequired": False, "eventTypeChannels":[ { "eventTypeChannelId": "be07c7bb-714b-4637-acf5-a67025ad8e60", "channel":{ "channelId": 1, "name": "push" }, "isDefault": True, "isMandatory": False }, { "eventTypeChannelId": "0c797b5a-ed34-494b-8c64-0a832830d392", "channel":{ "channelId": 2, "name": "email" }, "isDefault": False, "isMandatory": False } ] }, { "eventTypeId": 5, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, PAD", "subName": null, "prettyName": "Profielgegevens op de pas", "optinRequired": False, "eventTypeChannels":[ { "eventTypeChannelId": "b910368f-c045-4e8e-b01d-bcbc78708bac", "channel":{ "channelId": 1, "name": "push" }, "isDefault": True, "isMandatory": False }, { "eventTypeChannelId": "93e773da-ba3b-48da-9a0e-ee478eaa752f", "channel":{ "channelId": 2, "name": "email" }, "isDefault": False, "isMandatory": False } ] } ] } ] } getNotifactionCategories?Expand=eventType: summary: Return all the notification categories with nested eventTypes value: { "notificationCategories":[ { "notificationCategoryId": 1, "name": "Nieuwsbrief", "eventTypes": [ { "eventTypeId": 1, "eventOrigin": { "eventOriginId": 6, "name": "Maileon" }, "name": "HTM nieuwsbrief", "subName": "", "prettyName": "HTM nieuwsbrief", "optinRequired": False } ] }, { "notificationCategoryId": 2, "name": "Mijn Reizen", "eventTypes": [ { "eventTypeId": 2, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, TRAVEL_SCHEME", "subName": "CI", "prettyName": "Check In", "optinRequired": False }, { "eventTypeId": 3, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, PAD", "subName": null, "prettyName": "Profielgegevens op de pas", "optinRequired": False } ] }, { "notificationCategoryId": 3, "name": "Mijn Passen", "eventTypes": [ { "eventTypeId": 4, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, CARD", "subName": null, "prettyName": "Mijn passen", "optinRequired": False }, { "eventTypeId": 5, "eventOrigin": { "eventOriginId": 1, "name": "GBO" }, "name": "ALERTS, PAD", "subName": null, "prettyName": "Profielgegevens op de pas", "optinRequired": False } ] } ] } getNotifactionCategories: summary: Return all the notification categories value: { "notificationCategories":[ { "notificationCategoryId": 1, "name": "Nieuwsbrief" }, { "notificationCategoryId": 2, "name": "Mijn Reizen" }, { "notificationCategoryId": 3, "name": "Mijn Passen" } ] } "404": description: No notification category found content: application/json: example: { "type": "https://api.integratielaag.nl/abt/touchpoint/1.0/customers", "apiErrorCode": "400.1", "title": "Niet gevonden", "detail": "Notificatiecategorie niet gevonden", "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", "errors": [{ "subApiErrorCode": "0017" }], } /notificationsubscriptions: get: tags: - Notification subscriptions summary: Get all possible notificationSubscriptions for a customer (account or private). description: | Get all possible notificationSubscriptions for a customer (account or private), including if they have opted-in for it. parameters: - name: X-HTM-JWT-AUTH-HEADER in: header schema: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c required: false description: The JWT of a customer in case of touchpoint were customer logs in themselves - name: X-HTM-CUSTOMER-PROFILE-ID-HEADER in: header schema: type: string example: feaaef83-a551-4283-8419-340b1ada3b55 required: false description: The customerProfileId of a customer in the case of the SMP - name: X-HTM-ROLE-HEADER in: header schema: type: string example: Customer required: false description: The role of the HTM employee in the case of the SMP - 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 responses: "200": description: OK content: application/json: examples: getNotifactionSubscriptionsAll: summary: Return all the notification subscriptions where for each category the client has actively opted in or out - All value: { "notificationSubscriptions":[ { "notificationSubscriptionId": "64047471-e0c3-4abc-b4eb-83a12a6de903", "notificationCategoryId": 1, "isActive": true }, { "notificationSubscriptionId": "571388cd-8903-40d5-89e6-9191cb8d656e", "notificationCategoryId": 2, "isActive": true }, { "notificationSubscriptionId": "cf736ff2-2f8f-434e-a3c7-a14064b73c9b", "notificationCategoryId": 3, "isActive": false } ] } getNotifactionSubscriptionsSome: summary: Return all the notification subscriptions where for each category the client has actively opted in or out - Some value: { "notificationSubscriptions": [ { "notificationSubscriptionId": "64047471-e0c3-4abc-b4eb-83a12a6de903", "notificationCategoryId": 1, "isActive": true }, { "notificationSubscriptionId": "cf736ff2-2f8f-434e-a3c7-a14064b73c9b", "notificationCategoryId": 3, "isActive": false } ] } "403": description: Forbidden // Als geverifieerd profiel gevonden wordt, maar niet op een geverifieerde manier benaderd wordt content: application/json: example: { "type": "https://api.integratielaag.nl/abt/touchpoint/2.0/notifications", "apiErrorCode": "403", "title": "Verboden", "detail": "", "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", "errors": [], } "404": description: No notification subscriptions found content: application/json: example: { "type": "https://api.integratielaag.nl/abt/touchpoint/2.0/notifications", "apiErrorCode": "404", "title": "Niet gevonden", "detail": "Notificatie niet gevonden", "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", "errors": [{ "subApiErrorCode": "0017" }], } post: tags: - Notification subscriptions summary: Create a new notificationSubscription for a customer (account or private). description: | Create a notificationSubscriptions for a customer (account or private), including if they have opted-in for it. parameters: - name: X-HTM-JWT-AUTH-HEADER in: header schema: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c required: false description: The JWT of a customer in case of touchpoint were customer logs in themselves - name: X-HTM-CUSTOMER-PROFILE-ID-HEADER in: header schema: type: string example: feaaef83-a551-4283-8419-340b1ada3b55 required: false description: The customerProfileId of a customer in the case of the SMP - name: X-HTM-ROLE-HEADER in: header schema: type: string example: Customer required: false description: The role of the HTM employee in the case of the SMP requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: Create notificationSubscription anonymous active: value: { "emailAddress": "anonymous@mymailprovider.com", "notificationCategoryId": 1, "isActive": True } Create notificationSubscription anonymous inactive: value: { "emailAddress": "anonymous@mymailprovider.com", "notificationCategoryId": 1, "isActive": False } Create notificationSubscription account active: value: { "notificationCategoryId": 2, "isActive": True } Create notificationSubscription account inactive: value: { "notificationCategoryId": 3, "isActive": False } responses: "201": description: Created content: application/json: examples: Create notificationSubscription anonymous active: summary: Return the created notification for an anonymous user active value: { "notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae", "notificationCategoryId": 1, "isActive": True } Create notificationSubscription anonymous inactive: summary: Return the created notification for an anonymous user inactive value: { "notificationSubscriptionId": "d51081fd-c48d-4111-8de4-ac5db7d47ecb", "notificationCategoryId": 1, "isActive": False } Create notificationSubscription account active: summary: Return the created notification for an anonymous user active value: { "notificationSubscriptionId": "6b88eba1-af1f-42fc-82d3-d7202d5f1afe", "notificationCategoryId": 2, "isActive": True } Create notificationSubscription account inactive: summary: Return the created notification for an anonymous user inactive value: { "notificationSubscriptionId": "0dfc0ac9-c221-4493-8828-9dfa79ad9061", "notificationCategoryId": 3, "isActive": False } "405": description: Method not allowed content: application/json: example: { "type": "https://api.integratielaag.nl/abt/touchpoint/2.0/notifications", "apiErrorCode": "405", "title": "Methode ", "detail": "Notificatie niet gevonden", "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", "errors": [{ "subApiErrorCode": "0017" }], } /notificationsubscriptions/{notificationSubscriptionId}: patch: tags: - Notification subscriptions summary: Update a notificationSubscription for a customer (account or private). description: | Update a notificationSubscription for a customer (account or private). parameters: - name: X-HTM-JWT-AUTH-HEADER in: header schema: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c required: false description: The JWT of a customer in case of touchpoint were customer logs in themselves - name: X-HTM-CUSTOMER-PROFILE-ID-HEADER in: header schema: type: string example: feaaef83-a551-4283-8419-340b1ada3b55 required: false description: The customerProfileId of a customer in the case of the SMP - name: X-HTM-ROLE-HEADER in: header schema: type: string example: Customer required: false description: The role of the HTM employee in the case of the SMP - name: notificationSubscriptionId in: path schema: type: string format: uuid 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: schema: $ref: "#/components/schemas/unavailable" examples: Update a notificationSubscription to inactive: value: { "isActive": False } Update a notificationSubscription to active: value: { "isActive": True } responses: "200": description: OK content: application/json: examples: Update a notificationSubscription to inactive: summary: Return the updated notification value: { "notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae", "notificationCategoryId": 1, "isActive": False } Update a notificationSubscription to active: summary: Return the updated notification value: { "notificationSubscriptionId": "e112f26e-37fa-4bde-8def-9977cd1d50ae", "notificationCategoryId": 1, "isActive": True } /notificationsubscriptions/{notificationSubscriptionId}/notificationpreferences: get: tags: - Notification preferences summary: Get all possible latest notificationPreferences for a customer (account or private) for a specific notificationSubscription. description: | Get all possible notificationPreferences for a customer (account or private) for a specific notificationSubscription. parameters: - name: X-HTM-JWT-AUTH-HEADER in: header schema: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c required: false description: The JWT of a customer in case of touchpoint were customer logs in themselves - name: X-HTM-CUSTOMER-PROFILE-ID-HEADER in: header schema: type: string example: feaaef83-a551-4283-8419-340b1ada3b55 required: false description: The customerProfileId of a customer in the case of the SMP - name: X-HTM-ROLE-HEADER in: header schema: type: string example: Customer required: false description: The role of the HTM employee in the case of the SMP - name: notificationSubscriptionId in: path schema: type: string format: uuid example: b4afbbca-55e0-4578-944e-0112929d2b13 required: true description: The id of notificationsubscription we want to to get the notificationSubscriptions for - 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 responses: "200": description: OK content: application/json: examples: getNotifactionPreferencesAll: summary: Return all the latest unique notification preferences for a specific subscription value: { "notificationPreferences":[ { "eventTypeChannel":{ "eventTypeChannelId": 1, "eventType":{ "prettyName": "HTM nieuwsbrief", "optinRequired": False }, "channel":{ "channelId": 2, "name": "email" } }, "isActive": True, "_links":{ "create_new":{ "href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/notificationPreferences", "method": "POST" } } }, { "eventTypeChannel":{ "eventTypeChannelId": 2, "eventType":{ "prettyName": "Check in", "optinRequired": False }, "channel":{ "channelId": 2, "name": "email" } }, "isActive": True, "_links":{ "create_new":{ "href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/notificationPreferences", "method": "POST" }, "get_tokens":{ "href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/customers/tokens", "method": "GET" } } }, { "eventTypeChannel":{ "eventTypeChannelId": 3, "eventType":{ "prettyName": "Profielgegevens op de pas", "optinRequired": False }, "channel":{ "channelId": 2, "name": "email" } }, "isActive": True, "_links":{ "partial_edit":{ "href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/notificationPreferences/e3045b28-d686-4e02-babd-53f0724c8826", "method": "PATCH" }, "get_tokens":{ "href": "https://services.dev.api.htm.nl/abt/touchpoint/2.0/customers/tokens", "method": "GET" } } } ] } /notificationpreferences: post: tags: - Notification preferences summary: Create a new notificationPreference for a customer (account or private). description: | Create a notificationPreference for a customer (account or private), including if they have opted-in for it. parameters: - name: X-HTM-JWT-AUTH-HEADER in: header schema: type: string example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c required: false description: The JWT of a customer in case of touchpoint were customer logs in themselves - name: X-HTM-CUSTOMER-PROFILE-ID-HEADER in: header schema: type: string example: feaaef83-a551-4283-8419-340b1ada3b55 required: false description: The customerProfileId of a customer in the case of the SMP - name: X-HTM-ROLE-HEADER in: header schema: type: string example: Customer required: false description: The role of the HTM employee in the case of the SMP - name: emailAddress in: header schema: type: string format: email example: anonymous@mymailprovider.com required: false description: The emailadress of the customer in case of an anonymous customer requestBody: content: application/json: schema: $ref: "#/components/schemas/unavailable" examples: Create notificationPreference anonymous active: value: { "eventTypeChannelId": 1, "isActive": False, "notificationPreferenceResources": null } Create notificationSubscription for token inactive: value: { "eventTypeChannelId": 3, "isActive": False, "notificationPreferenceResources":[ { "resourceNameId": 6, "resourceIdentifier": 136 } ] } responses: "201": description: Created content: application/json: examples: TODO TODO error emailadress known for verified profile "405": description: Method not allowed content: application/json: example: { "type": "https://api.integratielaag.nl/abt/touchpoint/2.0/notifications", "apiErrorCode": "405", "title": "Methode ", "detail": "Notificatie niet gevonden", "instance": "555d00b5-bc3f-4591-949b-479e76d49ea7", "errors": [{ "subApiErrorCode": "0017" }], } components: schemas: unavailable: type: object