openapi: '3.0.3' info: title: ABT Notifications CRUD APIs version: '1.0' description: CRUD APIs for ABT Notification tables. These are NOT the functional APIs from Service Engine. servers: - url: https://services.acc.api.htm.nl/abt/notifications/1.0 paths: /notificationsubscriptions: get: summary: Find one or more notification subscriptions tags: - Notification Subscriptions parameters: - name: notificationSubscriptionId in: query required: false schema: type: string format: uuid description: Filter by notification subscription ID - name: eventTypeChannelId in: query required: false schema: type: string format: uuid description: Filter by event type channel ID - name: eventTypeId in: query required: false schema: type: array items: type: integer explode: false description: Filter by event type IDs - name: eventOriginId in: query required: false schema: type: array items: type: integer description: Filter by event origin IDs - name: channelId in: query required: false schema: type: array items: type: integer description: Filter by channel IDs - name: customerProfileId in: query required: false schema: type: integer description: Filter by customer profile ID - name: ovpayTokenId in: query required: false schema: type: integer description: Filter by OVPay token ID - name: deviceId in: query required: false schema: type: string format: uuid description: Filter by device ID - name: createdAfter in: query required: false schema: type: string format: date-time description: Filter by creation date (after) - name: createdBefore in: query required: false schema: type: string format: date-time description: Filter by creation date (before) - name: updatedAfter in: query required: false schema: type: string format: date-time description: Filter by update date (after) - name: updatedBefore in: query required: false schema: type: string format: date-time description: Filter by update date (before) - name: isActive in: query required: false schema: type: boolean description: Filter by active status responses: '200': description: A list of notification subscriptions content: application/json: schema: $ref: '#/components/schemas/GetNotificationSubscriptionsResponse' examples: emptyNotificationSubscriptionResponse: value: notificationSubscriptions: [] href: null minimalNotificationSubscriptionResponse: value: notificationSubscriptions: - notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 eventTypeChannel: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false customerProfileId: null ovpayTokenId: null deviceId: null createdAt: '2025-10-01T12:00:00Z' createdBy: system updatedAt: null updatedBy: null isActive: true _links: edit: href: /notificationsubscriptions/5bedce29-af0c-4f3c-b182-2caa8a1f9377 method: PATCH delete: href: /notificationsubscriptions/5bedce29-af0c-4f3c-b182-2caa8a1f9377 method: DELETE - notificationSubscriptionId: 39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd eventTypeChannel: eventTypeChannelId: c4729ad4-46ef-4329-94f9-5079be21dfc5 eventType: eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false createdAt: '2025-09-15T08:30:00Z' createdBy: system isActive: false _links: edit: href: /notificationsubscriptions/39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd method: PATCH delete: href: /notificationsubscriptions/39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd method: DELETE href: null fullNotificationSubscriptionResponse: value: notificationSubscriptions: - notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 eventTypeChannel: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false customerProfileId: 1337 ovpayTokenId: 42 deviceId: 7122a988-a00a-417d-a5b4-da2d91354976 createdAt: '2025-10-01T12:00:00Z' createdBy: system updatedAt: '2025-10-02T12:00:00Z' updatedBy: user isActive: true _links: edit: href: /notificationsubscriptions/5bedce29-af0c-4f3c-b182-2caa8a1f9377 method: PATCH delete: href: /notificationsubscriptions/5bedce29-af0c-4f3c-b182-2caa8a1f9377 method: DELETE - notificationSubscriptionId: 39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd eventTypeChannel: eventTypeChannelId: c4729ad4-46ef-4329-94f9-5079be21dfc5 eventType: eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false customerProfileId: 1338 ovpayTokenId: 43 deviceId: c4b8e1f3-8f4e-4d2a-9f3e-1c2b3a4d5e6f createdAt: '2025-09-15T08:30:00Z' createdBy: system updatedAt: '2025-09-16T09:45:00Z' updatedBy: user isActive: false _links: edit: href: /notificationsubscriptions/39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd method: PATCH delete: href: /notificationsubscriptions/39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd method: DELETE href: null '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' post: summary: Create a new notification subscription tags: - Notification Subscriptions requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PostNotificationSubscriptionRequest' examples: minimalNotificationSubscriptionRequest: value: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f createdAt: '2025-10-01T12:00:00Z' createdBy: system isActive: true fullNotificationSubscriptionRequest: value: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f customerProfileId: 1337 ovpayTokenId: 42 deviceId: 7122a988-a00a-417d-a5b4-da2d91354976 createdAt: '2025-10-01T12:00:00Z' createdBy: system isActive: true responses: '201': description: Notification subscription created successfully content: application/json: schema: $ref: '#/components/schemas/PostNotificationSubscriptionResponse' examples: minimalNotificationSubscriptionResponse: value: notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 eventTypeChannel: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false createdAt: '2025-10-01T12:00:00Z' createdBy: system isActive: true fullNotificationSubscriptionResponse: value: notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 eventTypeChannel: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false customerProfileId: 1337 ovpayTokenId: 42 deviceId: 7122a988-a00a-417d-a5b4-da2d91354976 createdAt: '2025-10-01T12:00:00Z' createdBy: system isActive: true '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' /notificationsubscriptions/{notificationSubscriptionId}: patch: summary: Update a notification subscription by ID tags: - Notification Subscriptions parameters: - name: notificationSubscriptionId in: path required: true schema: type: string format: uuid example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PatchNotificationSubscriptionRequest' examples: notificationSubscriptionRequest: value: updatedAt: '2025-10-01T12:00:00Z' updatedBy: user isActive: false responses: '200': description: Notification subscription updated successfully content: application/json: schema: $ref: '#/components/schemas/PatchNotificationSubscriptionResponse' examples: minimalNotificationSubscriptionResponse: value: notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 eventTypeChannel: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false createdAt: '2025-10-01T12:00:00Z' createdBy: system updatedAt: '2025-10-02T12:00:00Z' updatedBy: user isActive: false fullNotificationSubscriptionResponse: value: notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 eventTypeChannel: eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false customerProfileId: 1337 ovpayTokenId: 42 deviceId: 7122a988-a00a-417d-a5b4-da2d91354976 createdAt: '2025-10-01T12:00:00Z' createdBy: system updatedAt: '2025-10-02T12:00:00Z' updatedBy: user isActive: false '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 parameters: - name: notificationSubscriptionId in: path required: true schema: type: string format: uuid example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 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' /eventorigins: get: summary: Get all event origins tags: - References responses: '200': description: A list of event origins content: application/json: schema: $ref: '#/components/schemas/GetEventOriginsResponse' examples: eventOriginsResponse: value: eventOrigins: - eventOriginId: 1 name: GBO description: Events originated at GBO - eventOriginId: 2 name: Website description: Events originated at the website - eventOriginId: 3 name: Payt description: Events originated at Payt - eventOriginId: 4 name: Twikey description: Events originated at Twikey - eventOriginId: 5 name: TapConnect description: Events originated at TapConnect '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' /channels: get: summary: Get all channels tags: - References responses: '200': description: A list of channels content: application/json: schema: $ref: '#/components/schemas/GetChannelsResponse' examples: channelsResponse: value: channels: - channelId: 1 name: push - channelId: 2 name: email - channelId: 3 name: sms - channelId: 4 name: mail '400': description: Bad request content: application/json: schema: type: object $ref: '#/components/schemas/400Response' '401': description: Unauthorized content: application/json: schema: type: object $ref: '#/components/schemas/401Response' '404': description: Not found content: application/json: schema: type: object $ref: '#/components/schemas/404Response' '500': description: Internal server error content: application/json: schema: type: object $ref: '#/components/schemas/500Response' /notificationcategories: get: summary: Get all notification categories tags: - References responses: '200': description: A list of notification categories content: application/json: schema: $ref: '#/components/schemas/GetNotificationCategoriesResponse' examples: notificationCategoriesResponse: value: notificationCategories: - notifcationCategoryId: 1 name: Mijn Reizen - notifcationCategoryId: 2 name: Mijn Passen - notifcationCategoryId: 3 name: Service Alerts - notifcationCategoryId: 4 name: Service Berichten - notifcationCategoryId: 5 name: Mijn Betalingen '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' /eventtypes: get: summary: Get all event types tags: - References responses: '200': description: A list of event types content: application/json: schema: $ref: '#/components/schemas/GetEventTypesResponse' examples: eventTypesResponse: value: eventTypes: - eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true - eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true - eventTypeId: 25 eventOrigin: eventOriginId: 3 name: Payt description: Events originated at Payt name: Payment subname: Failed Payment prettyName: Betaling mislukt optInRequired: false '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' /eventtypecategories: get: summary: Get all event type categories tags: - References responses: '200': description: A list of event type categories content: application/json: schema: $ref: '#/components/schemas/GetEventTypeCategoriesResponse' examples: eventTypeCategoriesResponse: value: eventTypeCategories: - eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true notificationCategory: notifcationCategoryId: 1 name: Mijn Reizen - eventType: eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true notificationCategory: notifcationCategoryId: 1 name: Mijn Reizen '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' /eventtypechannels: get: summary: Get all event type channels tags: - References responses: '200': description: A list of event type channels content: application/json: schema: $ref: '#/components/schemas/GetEventTypeChannelResponse' examples: eventTypeChannelsResponse: value: eventTypeChannels: - eventTypeChannelId: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false - eventTypeChannelId: c4729ad4-46ef-4329-94f9-5079be21dfc5 eventType: eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO description: Events originated at GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true channel: channelId: 1 name: push isDefault: true isMandatory: false '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' components: schemas: GetNotificationSubscriptionsResponse: type: object properties: notificationSubscriptions: type: array items: $ref: '#/components/schemas/NotificationSubscription' href: type: string required: - notificationSubscriptions - href NotificationSubscription: type: object properties: notificationSubscriptionId: type: string format: uuid example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 eventTypeChannel: $ref: '#/components/schemas/EventTypeChannel' customerProfileId: type: integer example: 1337 ovpayTokenId: type: integer example: 42 deviceId: type: string format: uuid example: 7122a988-a00a-417d-a5b4-da2d91354976 createdAt: type: string format: date-time example: '2025-10-01T12:00:00Z' createdBy: type: string example: system updatedAt: type: string format: date-time example: '2025-10-02T12:00:00Z' updatedBy: type: string example: user isActive: type: boolean example: true required: - notificationSubscriptionId - eventTypeChannel - createdAt - createdBy - isActive PostNotificationSubscriptionRequest: type: object properties: eventTypeChannelId: type: string format: uuid example: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f customerProfileId: type: integer example: 1337 ovpayTokenId: type: integer example: 42 deviceId: type: string format: uuid example: 7122a988-a00a-417d-a5b4-da2d91354976 createdAt: type: string format: date-time example: '2025-10-01T12:00:00Z' createdBy: type: string example: system isActive: type: boolean example: true required: - eventTypeChannelId - createdAt - createdBy PostNotificationSubscriptionResponse: $ref: '#/components/schemas/NotificationSubscription' PatchNotificationSubscriptionRequest: type: object properties: updatedAt: type: string format: date-time example: '2025-10-01T12:00:00Z' updatedBy: type: string example: user isActive: type: boolean example: false PatchNotificationSubscriptionResponse: $ref: '#/components/schemas/NotificationSubscription' GetEventOriginsResponse: type: object properties: eventOrigins: type: array items: $ref: '#/components/schemas/EventOrigin' GetChannelsResponse: type: object properties: channels: type: array items: $ref: '#/components/schemas/Channel' GetNotificationCategoriesResponse: type: object properties: notificationCategories: type: array items: $ref: '#/components/schemas/NotificationCategory' GetEventTypesResponse: type: object properties: eventTypes: type: array items: $ref: '#/components/schemas/EventType' GetEventTypeCategoriesResponse: type: object properties: eventTypeCategories: type: array items: type: object properties: eventType: $ref: '#/components/schemas/EventType' notificationCategory: $ref: '#/components/schemas/NotificationCategory' GetEventTypeChannelResponse: type: object properties: eventTypeChannels: type: array items: $ref: '#/components/schemas/EventTypeChannel' EventTypeChannel: type: object properties: eventTypeChannelId: type: string format: uuid example: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f eventType: $ref: '#/components/schemas/EventType' channel: $ref: '#/components/schemas/Channel' isDefault: type: boolean example: true isMandatory: type: boolean example: false required: - eventTypeChannelId - eventType - channel - isDefault - isMandatory EventType: type: object properties: eventTypeId: type: integer example: 15 eventOrigin: $ref: '#/components/schemas/EventOrigin' name: type: string example: Travel subname: type: string example: Missing CKO prettyName: type: string example: Checkout gemist optInRequired: type: boolean example: true required: - eventTypeId - eventOrigin - name - prettyName - optInRequired EventOrigin: type: object properties: eventOriginId: type: integer example: 1 name: type: string example: GBO description: type: string example: Events originated at GBO required: - eventOriginId - name Channel: type: object properties: channelId: type: integer example: 1 name: type: string example: push required: - channelId - name NotificationCategory: type: object properties: notifcationCategoryId: type: integer example: 1 name: type: string example: Mijn Reizen required: - notifcationCategoryId - name 400Response: type: object properties: code: type: string example: '400' type: type: string message: type: string example: Bad Request description: type: string example: >- 'Bad Request: Input parameters missing! Please fill in at least 1 valid input parameter. 401Response: type: object properties: code: type: string example: '401' type: type: string message: type: string example: Invalid Credentials description: type: string example: >- Invalid Credentials. Make sure you have provided the correct security credentials 404Response: type: object properties: code: type: string example: '404' type: type: string example: Status report message: type: string example: Not Found description: type: string example: The requested resource is not available. 500Response: type: object properties: code: type: string example: '500' type: type: string message: type: string example: Internal Server Error description: type: string securitySchemes: default: type: oauth2 flows: implicit: authorizationUrl: https://services.acc.api.htm.nl/authorize scopes: {}