openapi: 3.0.1 info: description: 'Consumer-to-Extole integration endpoints: consumer event submission, zone rendering, profile management, and SDK-backing operations for browser and native app environments.' title: Integration API - Consumer to Extole Audiences User Notifications API version: '1.0' servers: - description: Production url: https://{brand}.extole.io variables: brand: default: yourcompany description: Your Extole client subdomain (e.g. 'mycompany' for mycompany.extole.io) security: - HEADER: [] - QUERY: [] - COOKIE: [] tags: - name: User Notifications paths: /v6/notifications: get: description: Returns the calling user's in-portal notifications sorted newest first. Use the `limit` and `offset` parameters to page through results. Notifications include report completion alerts, campaign status changes, and custom client events fired via `createClientEvent`. operationId: listNotifications parameters: - in: query name: limit schema: format: int32 type: integer - in: query name: offset schema: format: int32 type: integer - in: query name: having_all_tags schema: items: type: string type: array uniqueItems: true - in: query name: event_id schema: type: string - in: query name: subscription_id schema: type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/NotificationResponse' type: array description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List recent notifications tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible /v6/notifications/read: get: description: Returns the timestamp up to which the calling user has read their notifications. Use this cursor to determine which notifications are unread (those created after the returned timestamp). Advance the cursor with `updateNotificationCursor`. operationId: getNotificationCursor responses: '200': content: application/json: schema: $ref: '#/components/schemas/NotificationCursorResponse' description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' missing_request_body: $ref: '#/components/examples/missing_request_body' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get notification read cursor tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible post: description: Advances the read cursor to the supplied timestamp, marking all notifications created at or before that time as read for the calling user. Returns the updated cursor state. Use `getNotificationCursor` to retrieve the current cursor position. operationId: updateNotificationCursor requestBody: content: application/json: example: last_read_event_time: '2025-10-24T02:00:00-07:00' schema: $ref: '#/components/schemas/NotificationCursorRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/NotificationCursorResponse' description: Updated notification read cursor. '400': content: application/json: examples: missing_date_time: $ref: '#/components/examples/missing_date_time' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Invalid read-cursor update: `missing_date_time` if no timestamp was supplied in the request body.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Mark notifications as read tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible /v6/notifications/snoozes: get: description: Returns all active notification snooze rules for the calling portal user, sorted newest first. A snooze rule suppresses notifications matching specified tags until its expiry time. To list snoozes for a different user, use `listSnoozesByUser`. operationId: listSnoozes responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/SnoozeResponse' type: array description: Successful response '400': content: application/json: examples: binding_error: $ref: '#/components/examples/binding_error' invalid_json: $ref: '#/components/examples/invalid_json' invalid_parameter: $ref: '#/components/examples/invalid_parameter' invalid_snooze_id: $ref: '#/components/examples/invalid_snooze_id' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_request_body: $ref: '#/components/examples/missing_request_body' user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Bad Request '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List notification snoozes for the caller tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible post: description: Creates a snooze rule that suppresses portal notifications matching the supplied tags for the calling portal user until the `expires_at` timestamp. Returns the newly created snooze with its assigned id. To create a snooze for a different user, use `createSnoozeByUser`. operationId: createSnooze requestBody: content: application/json: example: comment: comment expires_at: '2025-10-24T02:00:00-07:00' having_exactly_tags: - having_exactly_tag schema: $ref: '#/components/schemas/SnoozeRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/SnoozeResponse' description: Created notification snooze. '400': content: application/json: examples: invalid_expires_at: $ref: '#/components/examples/invalid_expires_at' missing_tags: $ref: '#/components/examples/missing_tags' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Snooze creation failed: `missing_tags` if no notification tags were supplied; `invalid_expires_at` if the expiry timestamp is not valid.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Create a notification snooze for the caller tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible /v6/notifications/snoozes/{snoozeId}: get: description: Returns the snooze rule identified by `snoozeId` belonging to the calling portal user. Returns the tags being snoozed and the expiry timestamp. To retrieve a snooze for a different user, use `getSnoozeByUser`. operationId: getSnooze parameters: - in: path name: snoozeId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SnoozeResponse' description: Notification snooze. '400': content: application/json: examples: invalid_snooze_id: $ref: '#/components/examples/invalid_snooze_id' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Snooze lookup failed: `invalid_snooze_id` if the supplied `snoozeId` does not match any snooze rule accessible to the calling user.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get a notification snooze for the caller tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible delete: description: Removes the snooze rule identified by `snoozeId` belonging to the calling portal user. Returns the deleted snooze. Notifications previously suppressed by this rule will resume immediately. To delete a snooze for a different user, use `deleteSnoozeByUser`. operationId: deleteSnooze parameters: - in: path name: snoozeId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SnoozeResponse' description: Deleted notification snooze. '400': content: application/json: examples: invalid_snooze_id: $ref: '#/components/examples/invalid_snooze_id' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Snooze lookup failed: `invalid_snooze_id` if the supplied `snoozeId` does not match any snooze rule accessible to the calling user.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Delete a notification snooze for the caller tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible /v6/notifications/{userId}: get: description: Returns the in-portal notifications for the Extole portal user identified by `userId`, sorted newest first. Requires the `USER_SUPPORT` scope. Use the `limit` and `offset` parameters to page through results. operationId: listNotificationsByUser parameters: - in: path name: userId required: true schema: type: string - in: query name: limit schema: format: int32 type: integer - in: query name: offset schema: format: int32 type: integer - in: query name: having_all_tags schema: items: type: string type: array uniqueItems: true - in: query name: event_id schema: type: string - in: query name: subscription_id schema: type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/NotificationResponse' type: array description: Notifications for the user. '400': content: application/json: examples: user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'User lookup failed: `user_not_found` if no Extole portal user with the given `userId` exists within this client.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List notifications for a user tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible /v6/notifications/{userId}/read: get: description: Returns the timestamp up to which the Extole portal user identified by `userId` has read their notifications. Requires the `USER_SUPPORT` scope. Use `updateNotificationCursorByUser` to advance the cursor. operationId: getNotificationCursorByUser parameters: - in: path name: userId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/NotificationCursorResponse' description: Notification read cursor. '400': content: application/json: examples: user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'User lookup failed: `user_not_found` if no Extole portal user with the given `userId` exists within this client.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get notification read cursor for a user tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible post: description: Advances the read cursor to the supplied timestamp for the Extole portal user identified by `userId`, marking all notifications created at or before that time as read. Returns the updated cursor state. operationId: updateNotificationCursorByUser parameters: - in: path name: userId required: true schema: type: string requestBody: content: application/json: example: last_read_event_time: '2025-10-24T02:00:00-07:00' schema: $ref: '#/components/schemas/NotificationCursorRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/NotificationCursorResponse' description: Updated notification read cursor. '400': content: application/json: examples: missing_date_time: $ref: '#/components/examples/missing_date_time' user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Invalid request: `user_not_found` if the `userId` does not correspond to an Extole portal user; `missing_date_time` if no timestamp was supplied in the request body.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Mark notifications as read for a user tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible /v6/notifications/{userId}/snoozes: get: description: Returns all active notification snooze rules for the Extole portal user identified by `userId`, sorted newest first. A snooze rule suppresses notifications matching specified tags until its expiry time. operationId: listSnoozesByUser parameters: - in: path name: userId required: true schema: type: string responses: '200': content: application/json: schema: items: $ref: '#/components/schemas/SnoozeResponse' type: array description: Notification snoozes for the user. '400': content: application/json: examples: invalid_user_id: $ref: '#/components/examples/invalid_user_id' user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'User lookup failed: `user_not_found` if no Extole portal user with the given `userId` exists within this client; `invalid_user_id` if the `userId` value is not a valid identifier.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: List notification snoozes for a user tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible post: description: Creates a snooze rule that suppresses portal notifications matching the supplied tags for the Extole portal user identified by `userId` until the `expires_at` timestamp. Returns the newly created snooze with its assigned id. operationId: createSnoozeByUser parameters: - in: path name: userId required: true schema: type: string requestBody: content: application/json: example: comment: comment expires_at: '2025-10-24T02:00:00-07:00' having_exactly_tags: - having_exactly_tag schema: $ref: '#/components/schemas/SnoozeRequest' responses: '200': content: application/json: schema: $ref: '#/components/schemas/SnoozeResponse' description: Created notification snooze. '400': content: application/json: examples: invalid_expires_at: $ref: '#/components/examples/invalid_expires_at' invalid_user_id: $ref: '#/components/examples/invalid_user_id' missing_tags: $ref: '#/components/examples/missing_tags' user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'Snooze creation failed: `user_not_found` if the `userId` does not correspond to a known portal user; `invalid_user_id` if the `userId` is not valid; `missing_tags` if no notification tags were supplied; `invalid_expires_at` if the expiry timestamp is not valid.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Create a notification snooze for a user tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible /v6/notifications/{userId}/snoozes/{snoozeId}: get: description: Returns the snooze rule identified by `snoozeId` belonging to the Extole portal user identified by `userId`. Returns the tags being snoozed and the expiry timestamp. operationId: getSnoozeByUser parameters: - in: path name: userId required: true schema: type: string - in: path name: snoozeId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SnoozeResponse' description: Notification snooze. '400': content: application/json: examples: invalid_snooze_id: $ref: '#/components/examples/invalid_snooze_id' invalid_user_id: $ref: '#/components/examples/invalid_user_id' user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'User or snooze lookup failed: `user_not_found` if the `userId` does not correspond to a known portal user; `invalid_user_id` if the `userId` is not a valid identifier; `invalid_snooze_id` if the `snoozeId` does not match any snooze rule for that user.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Get a notification snooze for a user tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible delete: description: Removes the snooze rule identified by `snoozeId` belonging to the Extole portal user identified by `userId`. Returns the deleted snooze. Notifications previously suppressed by this rule will resume immediately. operationId: deleteSnoozeByUser parameters: - in: path name: userId required: true schema: type: string - in: path name: snoozeId required: true schema: type: string responses: '200': content: application/json: schema: $ref: '#/components/schemas/SnoozeResponse' description: Deleted notification snooze. '400': content: application/json: examples: invalid_snooze_id: $ref: '#/components/examples/invalid_snooze_id' invalid_user_id: $ref: '#/components/examples/invalid_user_id' user_not_found: $ref: '#/components/examples/user_not_found' schema: $ref: '#/components/schemas/RestExceptionResponse' description: 'User or snooze lookup failed: `user_not_found` if the `userId` does not correspond to a known portal user; `invalid_user_id` if the `userId` is not a valid identifier; `invalid_snooze_id` if the `snoozeId` does not match any snooze rule for that user.' '401': content: application/json: examples: method_unauthorized: $ref: '#/components/examples/method_unauthorized' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unauthorized '402': content: application/json: examples: payment_required: $ref: '#/components/examples/payment_required' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Payment Required '403': content: application/json: examples: access_denied: $ref: '#/components/examples/access_denied' method_unauthorized: $ref: '#/components/examples/method_unauthorized' missing_access_token: $ref: '#/components/examples/missing_access_token' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Forbidden '415': content: application/json: examples: unsupported_media_type: $ref: '#/components/examples/unsupported_media_type' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Unsupported Media Type '429': content: application/json: examples: too_many_requests: $ref: '#/components/examples/too_many_requests' schema: $ref: '#/components/schemas/RestExceptionResponse' description: Too Many Requests summary: Delete a notification snooze for a user tags: - User Notifications x-extole-bundle: management x-extole-visibility: visible components: examples: invalid_json: summary: invalid_json value: code: invalid_json http_status_code: 400 message: JSON is invalid parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_access_token: summary: missing_access_token value: code: missing_access_token http_status_code: 403 message: No access_token was provided with this request. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 payment_required: summary: payment_required value: code: payment_required http_status_code: 402 message: The access_token provided is associated with an unpaid account. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_date_time: summary: missing_date_time value: code: missing_date_time http_status_code: 400 message: Date time is missing parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 unsupported_media_type: summary: unsupported_media_type value: code: unsupported_media_type http_status_code: 415 message: Request had an unsupported or no media type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 method_unauthorized: summary: method_unauthorized value: code: method_unauthorized http_status_code: 401 message: Unauthorized access to this endpoint parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 user_not_found: summary: user_not_found value: code: user_not_found http_status_code: 400 message: User not found parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_request_body: summary: missing_request_body value: code: missing_request_body http_status_code: 400 message: Missing request body parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 binding_error: summary: binding_error value: code: binding_error http_status_code: 400 message: Argument is not of the expected type parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 access_denied: summary: access_denied value: code: access_denied http_status_code: 403 message: The access_token provided is not permitted to access the specified resource. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 too_many_requests: summary: too_many_requests value: code: too_many_requests http_status_code: 429 message: The server is unable to process your request at the moment, please retry later. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_expires_at: summary: invalid_expires_at value: code: invalid_expires_at http_status_code: 400 message: Snooze must expire within the next thirty days parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_user_id: summary: invalid_user_id value: code: invalid_user_id http_status_code: 400 message: Invalid user id parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_parameter: summary: invalid_parameter value: code: invalid_parameter http_status_code: 400 message: Parameter is invalid. parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 missing_tags: summary: missing_tags value: code: missing_tags http_status_code: 400 message: At least one tag must be specified parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 invalid_snooze_id: summary: invalid_snooze_id value: code: invalid_snooze_id http_status_code: 400 message: Invalid snooze id parameters: {} unique_id: 00000000-0000-0000-0000-000000000000 schemas: NotificationCursorRequest: properties: last_read_event_time: $ref: '#/components/schemas/ZonedDateTime' required: - last_read_event_time type: object SnoozeRequest: properties: comment: type: string expires_at: $ref: '#/components/schemas/ZonedDateTime' having_exactly_tags: items: type: string type: array uniqueItems: true required: - comment - expires_at - having_exactly_tags type: object NotificationResponse: properties: cause_event_id: type: string cause_user_id: type: string channels: items: enum: - EMAIL - EXTOLE_CLIENT_SLACK - SLACK - THIRD_PARTY_EMAIL - WEBHOOK type: string type: array client_id: type: string client_version: format: int32 type: integer data: additionalProperties: type: string type: object event_id: type: string event_time: $ref: '#/components/schemas/ZonedDateTime' level: enum: - ERROR - INFO - WARN type: string message: type: string name: type: string snooze_id: type: string subscription_dedupe_duration_ms: format: int64 type: integer subscription_id: type: string tags: items: type: string type: array uniqueItems: true user_id: type: string required: - cause_event_id - cause_user_id - channels - client_id - client_version - data - event_id - event_time - level - message - name - snooze_id - subscription_dedupe_duration_ms - subscription_id - tags - user_id type: object SnoozeResponse: properties: comment: type: string expires_at: $ref: '#/components/schemas/ZonedDateTime' having_exactly_tags: items: type: string type: array uniqueItems: true snooze_id: type: string required: - comment - expires_at - having_exactly_tags - snooze_id type: object NotificationCursorResponse: properties: last_read_event_time: $ref: '#/components/schemas/ZonedDateTime' required: - last_read_event_time type: object ZonedDateTime: description: '[RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) or [RFC 9557](https://datatracker.ietf.org/doc/html/rfc9557#section-4) date-time with a numeric [UTC offset](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) and an optional [IANA time-zone](https://datatracker.ietf.org/doc/html/rfc9557#section-4) suffix in square brackets. Precision up to milliseconds.' example: '2025-10-24T02:00:00-07:00' pattern: ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d{1,3})?(Z|[+-](?:[01][0-9]|2[0-3]):[0-5][0-9])(\[[^\]]+\])?$ type: string RestExceptionResponse: description: Represents the API error response properties: code: description: Specific error code for this error type, documented per endpoint type: string http_status_code: description: HTTP status code that was returned with this error, useful if client get response code format: int32 type: integer message: description: User readable English description of the error type: string parameters: additionalProperties: description: Attributes related to the error, varies be error code, documented per endpoint type: object description: Attributes related to the error, varies be error code, documented per endpoint type: object unique_id: description: Unique id associated with this error, useful for discussions with Extole type: string required: - code - http_status_code - message - parameters - unique_id type: object securitySchemes: COOKIE: in: cookie name: extole_token type: apiKey HEADER: in: header name: Authorization type: apiKey x-bearer-format: bearer QUERY: in: query name: access_token type: apiKey x-tagGroups: - name: Integration API - Consumer to Extole tags: - Authentication - Content - Email - Events - Persons - Profile Assets - Profiles