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: notificationCategoryId in: query required: false schema: type: integer description: Filter by notification category ID - 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 OV Pay token ID - name: isCurrentlyActive in: query required: false schema: type: boolean description: Filters if most recent subscription active is active/inactive - name: activityLimit in: query required: false schema: type: integer default: 1 description: Limit the number of subscription activities returned per subscription (default is 1) - name: expand in: query schema: type: string enum: [none, notificationPreference, eventTypeChannel] default: none description: "Expand nested attributes. Possible values: `none`, `notificationPreference`, and `eventTypeChannel`." responses: "200": description: A list of notification subscriptions content: application/json: schema: $ref: "#/components/schemas/GetNotificationSubscriptionsResponse" examples: emptyNotificationSubscriptionResponse: summary: No notification subscriptions found value: notificationSubscriptions: [] href: null notificationSubscriptionResponse?expand=none: summary: Return notification subscriptions without nested attributes (expand=none) value: notificationSubscriptions: - notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 notificationCategory: notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen customerProfileId: 1337 ovPayTokenId: 42 subscriptionActivities: - subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387 user: "1001337" timestamp: "2025-10-02T15:00:00Z" isActive: true - subscriptionActivityId: f78bc171-a50e-4b88-88d3-a76585bffd54 user: "1001337" timestamp: "2025-10-02T14:00:00Z" isActive: false - 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 href: null notificationSubscriptionResponse?expand=notificationPreference: summary: Return notification subscriptions with nested notification preferences (expand=notificationPreference) value: notificationSubscriptions: - notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 notificationCategory: notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen customerProfileId: 1337 ovPayTokenId: 42 subscriptionActivities: - subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387 user: "1001337" timestamp: "2025-10-02T15:00:00Z" isActive: true - subscriptionActivityId: f78bc171-a50e-4b88-88d3-a76585bffd54 user: "1001337" timestamp: "2025-10-02T14:00:00Z" isActive: false notificationPreferences: - notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173 resourceIdentifier: null - notificationPreferenceId: e5f6a7b8-c9d0-41e2-f012-34567890abcd eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d resourceIdentifier: 44 - notificationSubscriptionId: 39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd notificationCategory: notificationCategoryId: 2 name: Nieuwsbrief aanmelding groupName: Marketing customerProfileId: 1338 ovPayTokenId: null subscriptionActivities: - subscriptionActivityId: 7fae0d2c-1e20-4f3e-b25d-fd8505a381c4 user: "1001338" timestamp: "2025-10-02T15:00:00Z" isActive: false - subscriptionActivityId: cb2fc1d3-f143-4dd7-8608-4538e5637e3a user: "1001338" timestamp: "2025-10-02T14:00:00Z" isActive: true notificationPreferences: [] href: null notificationSubscriptionResponse?expand=eventTypeChannel: summary: Return notification subscriptions with nested event type channels (expand=eventTypeChannel) value: notificationSubscriptions: - notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 notificationCategory: notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen customerProfileId: 1337 ovPayTokenId: 42 subscriptionActivities: - subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387 user: "1001337" timestamp: "2025-10-02T15:00:00Z" isActive: true - subscriptionActivityId: f78bc171-a50e-4b88-88d3-a76585bffd54 user: "1001337" timestamp: "2025-10-02T14:00:00Z" isActive: false notificationPreferences: - notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc eventTypeChannel: eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173 channel: channelId: 1 name: push resourceName: resourceNameId: 8 name: devices isDefault: true isMandatory: false resourceIdentifier: null - notificationPreferenceId: e5f6a7b8-c9d0-41e2-f012-34567890abcd eventTypeChannelId: eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d channel: channelId: 2 name: email resourceName: resourceNameId: 4 name: customers isDefault: false isMandatory: false resourceIdentifier: 44 - notificationSubscriptionId: 39e8d8e6-5c85-49b6-ba4b-62e47fa4f7fd notificationCategory: notificationCategoryId: 2 name: Nieuwsbrief aanmelding groupName: Marketing customerProfileId: 1338 ovPayTokenId: null subscriptionActivities: - subscriptionActivityId: 7fae0d2c-1e20-4f3e-b25d-fd8505a381c4 user: "1001338" timestamp: "2025-10-02T15:00:00Z" isActive: false - subscriptionActivityId: cb2fc1d3-f143-4dd7-8608-4538e5637e3a user: "1001338" timestamp: "2025-10-02T14:00:00Z" isActive: true notificationPreferences: [] "400": description: Bad request content: 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: fullNotificationSubscriptionRequest: value: notificationCategoryId: 1 customerProfileId: 1337 subscriptionActivity: user: "1001337" timestamp: "2025-10-02T14:00:00Z" isActive: true responses: "201": description: Notification subscription created successfully content: application/json: schema: $ref: "#/components/schemas/PostNotificationSubscriptionResponse" examples: notificationSubscriptionResponse: 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" /notificationsubscriptions/{notificationSubscriptionId}: parameters: - name: notificationSubscriptionId in: path required: true schema: type: string format: uuid example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 patch: summary: Update a notification subscription by ID tags: - Notification Subscriptions requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PatchNotificationSubscriptionRequest" examples: updateNotificationSubscriptionRequest: value: ovPayTokenId: 43 responses: "200": description: Notification subscription updated successfully content: application/json: schema: $ref: "#/components/schemas/PatchNotificationSubscriptionResponse" examples: updateNotificationSubscriptionResponse: value: notificationSubscriptionId: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 "400": description: Bad request content: application/json: schema: type: object $ref: "#/components/schemas/400Response" "401": description: Unauthorized content: application/json: schema: type: object $ref: "#/components/schemas/401Response" "404": description: Not found content: application/json: schema: type: object $ref: "#/components/schemas/404Response" "500": description: Internal server error content: application/json: schema: type: object $ref: "#/components/schemas/500Response" delete: summary: Delete a notification subscription by ID tags: - Notification Subscriptions responses: "204": description: No content "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}/subscriptionactivities: post: summary: Add a subscription activity to a notification subscription 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/PostSubscriptionActivityRequest" examples: addSubscriptionActivityRequest: value: user: "1001337" timestamp: "2025-10-08T15:00:00Z" isActive: true responses: "201": description: Subscription activity added successfully content: application/json: schema: $ref: "#/components/schemas/PostSubscriptionActivityResponse" examples: addSubscriptionActivityResponse: value: subscriptionActivityId: 30b32657-1ba1-44e0-8868-4db807695387 "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}/notificationpreferences: parameters: - name: notificationSubscriptionId in: path required: true schema: type: string format: uuid example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 post: summary: Add a notification preference to a notification subscription tags: - Notification Preferences requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PostNotificationPreferenceRequest" examples: addNotificationPreferenceNotNull: summary: With non-null resource identifier value: eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173 resourceIdentifier: 44 addNotificationPreferenceNull: summary: With null resource identifier value: eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173 resourceIdentifier: null responses: "201": description: Notification preference added successfully content: application/json: schema: $ref: "#/components/schemas/PostNotificationPreferenceResponse" examples: addNotificationPreferenceResponse: value: notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc "400": description: Bad request content: application/json: schema: type: object $ref: "#/components/schemas/400Response" "401": description: Unauthorized content: application/json: schema: type: object $ref: "#/components/schemas/401Response" "404": description: Not found content: application/json: schema: type: object $ref: "#/components/schemas/404Response" "500": description: Internal server error content: application/json: schema: type: object $ref: "#/components/schemas/500Response" /notificationpreferences/{notificationPreferenceId}: parameters: - name: notificationPreferenceId in: path required: true schema: type: string format: uuid example: d4e5f6a7-b8c9-40d1-ef01-234567890abc patch: summary: Update a notification preference by ID tags: - Notification Preferences requestBody: required: true content: application/json: schema: $ref: "#/components/schemas/PatchNotificationPreferenceRequest" examples: updateNotificationPreferenceRequest: value: resourceIdentifier: 55 responses: "200": description: Notification preference updated successfully content: application/json: schema: $ref: "#/components/schemas/PatchNotificationPreferenceResponse" examples: updateNotificationPreferenceResponse: value: notificationPreferenceId: d4e5f6a7-b8c9-40d1-ef01-234567890abc "400": description: Bad request content: application/json: schema: type: object $ref: "#/components/schemas/400Response" "401": description: Unauthorized content: application/json: schema: type: object $ref: "#/components/schemas/401Response" "404": description: Not found content: application/json: schema: type: object $ref: "#/components/schemas/404Response" "500": description: Internal server error content: application/json: schema: type: object $ref: "#/components/schemas/500Response" delete: summary: Delete a notification preference by ID tags: - Notification Preferences responses: "204": description: No content "400": description: Bad request content: application/json: schema: type: object $ref: "#/components/schemas/400Response" "401": description: Unauthorized content: application/json: schema: type: object $ref: "#/components/schemas/401Response" "404": description: Not found content: application/json: schema: type: object $ref: "#/components/schemas/404Response" "500": description: Internal server error content: application/json: schema: type: object $ref: "#/components/schemas/500Response" /notificationcategories: get: tags: - Notification Categories summary: Get all notification categories. parameters: - name: notificationCategoryId in: query required: false schema: type: integer description: Filter by notification category ID - name: name in: query required: false schema: type: integer description: Filter by notification category name (case-insensitive, partial match) - name: groupName in: query required: false schema: type: integer description: Filter by notification category group name (case-insensitive, partial match) - name: expand in: query schema: type: string enum: [none, eventType, eventTypeChannel] default: none description: "Expand nested attributes. Possible values: `none`, `eventType`, and `eventTypeChannel`." responses: "200": description: OK content: application/json: schema: $ref: "#/components/schemas/GetNotificationCategoriesResponse" examples: getNotifactionCategories?expand=none: summary: Return all the notification categories without nested attributes (expand=none) value: notificationCategories: - notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen - notificationCategoryId: 2 name: Nieuwsbrief aanmelding groupName: Marketing - notificationCategoryId: 3 name: Serviceberichten groupName: Mijn Passen getNotifactionCategories?expand=eventType: summary: Return all the notification categories with nested event types (expand=eventType) value: notificationCategories: - notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen eventTypes: - eventTypeId: 2 eventOrigin: eventOriginId: 1 name: GBO name: TRIPS subName: CKI prettyName: Normal Check-in optinRequired: false originSubscription: originSubscriptionId: a1b2c3d4-e5f6-4789-abcd-1234567890ab name: GBO_TRIPS externalSubscriptionId: fedcba98-7654-3210-fedc-ba9876543210 - eventTypeId: 3 eventOrigin: eventOriginId: 1 name: GBO name: PAD subName: AMEND prettyName: PAD Wijzigen/Aanvullen optinRequired: false originSubscription: originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc name: GBO_PAD externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f - notificationCategoryId: 2 name: Nieuwsbrief aanmelding groupName: Marketing eventTypes: - eventTypeId: 1 eventOrigin: eventOriginId: 6 name: Maileon name: newsletter subName: null prettyName: HTM nieuwsbrief optinRequired: false originSubscription: null - notificationCategoryId: 3 name: Serviceberichten groupName: Mijn Passen eventTypes: - eventTypeId: 4 eventOrigin: eventOriginId: 1 name: GBO name: PRODUCT subName: ACTIVATE prettyName: Product Geactiveerd optinRequired: false originSubscription: originSubscriptionId: f1a2b3c4-d5e6-4789-abcd-3456789012de name: GBO_PRODUCT externalSubscriptionId: 12345678-90ab-cdef-1234-567890abcdef - eventTypeId: 5 eventOrigin: eventOriginId: 1 name: GBO name: PAD subName: MARK prettyName: PAD Markering optinRequired: false originSubscription: originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc name: GBO_PAD externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f getNotifactionCategories?expand=eventTypeChannel: summary: Return all the notification categories with all nested attributes (expand=eventTypeChannel) value: notificationCategories: - notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen eventTypes: - eventTypeId: 2 eventOrigin: eventOriginId: 1 name: GBO name: TRIPS subName: CKI prettyName: Normal Check-in optinRequired: false originSubscription: originSubscriptionId: a1b2c3d4-e5f6-4789-abcd-1234567890ab name: GBO_TRIPS externalSubscriptionId: fedcba98-7654-3210-fedc-ba9876543210 eventTypeChannels: - eventTypeChannelId: ccc8c025-06b5-4928-a632-23e1c55cd173 channel: channelId: 1 name: push resourceName: resourceNameId: 8 name: devices isDefault: true isMandatory: false - eventTypeChannelId: da2deb4c-ce77-4b5f-aecc-ddebfd14349d channel: channelId: 2 name: email resourceName: resourceNameId: 4 name: customers isDefault: false isMandatory: false - eventTypeId: 3 eventOrigin: eventOriginId: 1 name: GBO name: PAD subName: AMEND prettyName: PAD Wijzigen/Aanvullen optinRequired: false originSubscription: originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc name: GBO_PAD externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f eventTypeChannels: - eventTypeChannelId: 8e7df8f1-7e50-482f-8301-d399e75fd432 channel: channelId: 1 name: push resourceName: resourceNameId: 8 name: devices isDefault: true isMandatory: false - eventTypeChannelId: 72960a92-1855-469f-9cfd-5d72f57106f2 channel: channelId: 2 name: email resourceName: resourceNameId: 4 name: customers isDefault: false isMandatory: false - notificationCategoryId: 2 name: Nieuwsbrief aanmelding groupName: Marketing eventTypes: - eventTypeId: 1 eventOrigin: eventOriginId: 6 name: Maileon name: newsletter subName: null prettyName: HTM nieuwsbrief optinRequired: false originSubscription: null eventTypeChannels: - eventTypeChannelId: 447a1116-6cd7-4645-8c3d-43237b6186cd channel: channelId: 2 name: email resourceName: resourceNameId: 4 name: customers isDefault: true isMandatory: false - notificationCategoryId: 3 name: Serviceberichten groupName: Mijn Passen eventTypes: - eventTypeId: 4 eventOrigin: eventOriginId: 1 name: GBO name: PRODUCT subName: ACTIVATE prettyName: Product Geactiveerd optinRequired: false originSubscription: originSubscriptionId: f1a2b3c4-d5e6-4789-abcd-3456789012de name: GBO_PRODUCT externalSubscriptionId: 12345678-90ab-cdef-1234-567890abcdef eventTypeChannels: - eventTypeChannelId: be07c7bb-714b-4637-acf5-a67025ad8e60 channel: channelId: 1 name: push resourceName: resourceNameId: 8 name: devices isDefault: true isMandatory: false - eventTypeChannelId: 0c797b5a-ed34-494b-8c64-0a832830d392 channel: channelId: 2 name: email resourceName: resourceNameId: 4 name: customers isDefault: false isMandatory: false - eventTypeId: 5 eventOrigin: eventOriginId: 1 name: GBO name: PAD subName: MARK prettyName: PAD Markering optinRequired: false originSubscription: originSubscriptionId: b2c3d4e5-f678-49ab-bcde-2345678901bc name: GBO_PAD externalSubscriptionId: edcba987-6543-210f-edcb-a9876543210f eventTypeChannels: - eventTypeChannelId: b910368f-c045-4e8e-b01d-bcbc78708bac channel: channelId: 1 name: push resourceName: resourceNameId: 8 name: devices isDefault: true isMandatory: false - eventTypeChannelId: 93e773da-ba3b-48da-9a0e-ee478eaa752f channel: channelId: 2 name: email resourceName: resourceNameId: 4 name: customers isDefault: false isMandatory: false "400": 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 deprecated: true tags: - References (not for MVP) parameters: - name: name in: query required: false schema: type: string description: Filter by event origin name (case-insensitive, partial match) responses: "200": description: A list of event origins content: application/json: schema: $ref: "#/components/schemas/GetEventOriginsResponse" examples: eventOriginsResponse: value: eventOrigins: - eventOriginId: 1 name: GBO - eventOriginId: 2 name: Website - eventOriginId: 3 name: Payt - eventOriginId: 4 name: Twikey - eventOriginId: 5 name: TapConnect - eventOriginId: 6 name: Maileon "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 deprecated: true tags: - References (not for MVP) parameters: - name: name in: query required: false schema: type: string description: Filter by channel name (case-insensitive, partial match) responses: "200": description: A list of channels content: application/json: schema: $ref: "#/components/schemas/GetChannelsResponse" examples: channelsResponse: value: channels: - channelId: 1 name: push resourceName: resourceNameId: 8 name: devices - channelId: 2 name: email resourceName: resourceNameId: 4 name: customers - channelId: 3 name: sms resourceName: resourceNameId: 4 name: customers - channelId: 4 name: mail resourceName: resourceNameId: 4 name: customers "400": description: Bad request content: 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 deprecated: true tags: - References (not for MVP) parameters: - name: name in: query required: false schema: type: string description: Filter by event type name (case-insensitive, partial match) responses: "200": description: A list of event types content: application/json: schema: $ref: "#/components/schemas/GetEventTypesResponse" examples: eventTypesResponse: value: eventTypes: - eventTypeId: 1 eventOrigin: eventOriginId: 6 name: Maileon name: newsletter subname: null prettyName: HTM nieuwsbrief optInRequired: false - eventTypeId: 15 eventOrigin: eventOriginId: 1 name: GBO name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true - eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true - eventTypeId: 25 eventOrigin: eventOriginId: 3 name: 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 deprecated: true tags: - References (not for MVP) parameters: - name: name in: query required: false schema: type: string description: Filter by event type category name (case-insensitive, partial match) 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 name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true notificationCategory: notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen - eventType: eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true notificationCategory: notificationCategoryId: 1 name: Mijn Reizen groupName: Mijn Passen "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 deprecated: true tags: - References (not for MVP) parameters: - name: name in: query required: false schema: type: string description: Filter by event type channel name (case-insensitive, partial match) 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 name: Travel subname: Missing CKO prettyName: Checkout gemist optInRequired: true channel: channelId: 1 name: push resourceName: resourceNameId: 8 name: devices isDefault: true isMandatory: false - eventTypeChannelId: c4729ad4-46ef-4329-94f9-5079be21dfc5 eventType: eventTypeId: 16 eventOrigin: eventOriginId: 1 name: GBO name: Travel subname: Missing CKI prettyName: Checkin gemist optInRequired: true channel: channelId: 1 name: push resourceName: resourceNameId: 8 name: devices 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 notificationCategory: $ref: "#/components/schemas/NotificationCategory" customerProfileId: type: integer example: 1337 subscriptionActivities: type: array items: type: object properties: subscriptionActivityId: type: string format: uuid example: 30b32657-1ba1-44e0-8868-4db807695387 user: type: string example: "1001337" timestamp: type: string format: date-time example: "2025-10-02T15:00:00Z" isActive: type: boolean example: true required: - subscriptionActivityId - user - timestamp - isActive required: - notificationSubscriptionId - notificationCategory - customerProfileId PostNotificationSubscriptionRequest: type: object properties: notificationCategoryId: type: integer example: 1 customerProfileId: type: integer example: 1337 subscriptionActivity: type: object properties: user: type: string example: "1001337" timestamp: type: string format: date-time example: "2025-10-02T15:00:00Z" isActive: type: boolean example: true required: - user - timestamp - isActive required: - notificationCategoryId - customerProfileId PostNotificationSubscriptionResponse: type: object properties: notificationSubscriptionId: type: string format: uuid example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 PatchNotificationSubscriptionRequest: type: object properties: notificationCategoryId: type: integer example: 1 customerProfileId: type: integer example: 1337 required: - notificationCategoryId PatchNotificationSubscriptionResponse: type: object properties: notificationSubscriptionId: type: string format: uuid example: 5bedce29-af0c-4f3c-b182-2caa8a1f9377 PostSubscriptionActivityRequest: type: object properties: user: type: string example: "1001337" timestamp: type: string format: date-time example: "2025-10-08T15:00:00Z" isActive: type: boolean example: true required: - user - timestamp - isActive PostSubscriptionActivityResponse: type: object properties: subscriptionActivityId: type: string format: uuid example: 30b32657-1ba1-44e0-8868-4db807695387 PostNotificationPreferenceRequest: type: object properties: eventTypeChannelId: type: string format: uuid example: 22a9ab1cb-b1a3-482e-bae3-9a517a8cfb4f resourceIdentifier: type: string format: uuid example: d4e5f678-49ab-bcde-2345-678901bcdef0 required: - eventTypeChannelId PostNotificationPreferenceResponse: type: object properties: notificationPreferenceId: type: string format: uuid example: d4e5f678-49ab-bcde-2345-678901bcdef0 PatchNotificationPreferenceRequest: type: object properties: resourceIdentifier: type: string format: uuid example: d4e5f678-49ab-bcde-2345-678901bcdef0 PatchNotificationPreferenceResponse: type: object properties: notificationPreferenceId: type: string format: uuid example: d4e5f678-49ab-bcde-2345-678901bcdef0 GetEventOriginsResponse: type: object properties: 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 originSubscription: type: object properties: originSubscriptionId: type: string format: uuid example: a1b2c3d4-e5f6-4789-abcd-1234567890ab name: type: string example: GBO_TRIPS externalSubscriptionId: type: string format: uuid example: fedcba98-7654-3210-fedc-ba9876543210 required: - originSubscriptionId - name - externalSubscriptionId eventTypeChannels: type: array items: $ref: "#/components/schemas/EventTypeChannel" required: - eventTypeId - eventOrigin - name - prettyName - optInRequired EventOrigin: type: object properties: eventOriginId: type: integer example: 1 name: type: string example: GBO required: - eventOriginId - name Channel: type: object properties: channelId: type: integer example: 1 name: type: string example: push resourceName: type: object properties: resourceNameId: type: integer example: 8 name: type: string example: devices required: - resourceNameId - name required: - channelId - name - resourceName NotificationCategory: type: object properties: notificationCategoryId: type: integer example: 1 name: type: string example: Mijn Reizen groupName: type: string example: Mijn Passen eventTypes: type: array items: $ref: "#/components/schemas/EventType" required: - notificationCategoryId - 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: {}