openapi: 3.1.0 info: title: Novu Activity Messages API description: Novu REST API. Please see https://docs.novu.co/api-reference for more details. version: 3.15.0 contact: name: Novu Support url: https://discord.gg/novu email: support@novu.co termsOfService: https://novu.co/terms license: name: MIT url: https://opensource.org/license/mit servers: - url: https://api.novu.co - url: https://eu.api.novu.co security: - secretKey: [] tags: - name: Messages description: A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages. externalDocs: url: https://docs.novu.co/workflows/messages paths: /v1/messages: get: operationId: MessagesController_getMessages summary: Novu List All Messages description: "List all messages for the current environment. \n This API supports filtering by **channel**, **subscriberId**, and **transactionId**. \n This API returns a paginated list of messages." parameters: - name: channel required: false in: query schema: $ref: '#/components/schemas/ChannelTypeEnum' - name: subscriberId required: false in: query schema: type: string - name: transactionId required: false in: query schema: type: array items: type: string - name: contextKeys required: false in: query description: 'Filter by exact context keys, order insensitive (format: "type:id")' example: - tenant:org-123 - region:us-east-1 schema: type: array items: type: string - name: page required: false in: query schema: default: 0 type: number - name: limit required: false in: query schema: default: 10 type: number responses: '200': headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' description: '' content: application/json: schema: $ref: '#/components/schemas/MessagesResponseDto' '400': description: Bad Request headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '401': description: Unauthorized headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '403': description: Forbidden headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '404': description: Not Found headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '405': description: Method Not Allowed headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '409': description: Conflict headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '413': description: Payload Too Large headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '414': description: URI Too Long content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '415': description: Unsupported Media Type headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '422': description: Unprocessable Entity headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ValidationErrorDto' '429': description: 'The client has sent too many requests in a given amount of time. ' headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' Retry-After: $ref: '#/components/headers/Retry-After' content: application/json: schema: type: string example: API rate limit exceeded '500': description: Internal Server Error headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '503': description: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' Retry-After: $ref: '#/components/headers/Retry-After' content: application/json: schema: type: string example: Please wait some time, then try again. tags: - Messages security: - secretKey: [] /v1/messages/{messageId}: delete: operationId: MessagesController_deleteMessage summary: Novu Delete a Message description: "Delete a message entity from the Novu platform by **messageId**. \n This action is irreversible. **messageId** is required and of mongodbId type." parameters: - name: messageId required: true in: path example: 507f1f77bcf86cd799439011 schema: type: string responses: '200': description: OK headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: properties: data: $ref: '#/components/schemas/DeleteMessageResponseDto' '400': description: Bad Request headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '401': description: Unauthorized headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '403': description: Forbidden headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '404': description: Not Found headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '405': description: Method Not Allowed headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '409': description: Conflict headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '413': description: Payload Too Large headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '414': description: URI Too Long content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '415': description: Unsupported Media Type headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '422': description: Unprocessable Entity headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ValidationErrorDto' '429': description: 'The client has sent too many requests in a given amount of time. ' headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' Retry-After: $ref: '#/components/headers/Retry-After' content: application/json: schema: type: string example: API rate limit exceeded '500': description: Internal Server Error headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '503': description: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' Retry-After: $ref: '#/components/headers/Retry-After' content: application/json: schema: type: string example: Please wait some time, then try again. tags: - Messages security: - secretKey: [] /v1/messages/transaction/{transactionId}: delete: operationId: MessagesController_deleteMessagesByTransactionId x-speakeasy-name-override: deleteByTransactionId summary: Novu Delete Messages by TransactionId description: "Delete multiple messages from the Novu platform using **transactionId** of triggered event. \n This API supports filtering by **channel** and delete all messages associated with the **transactionId**." parameters: - name: channel required: false in: query description: The channel of the message to be deleted schema: enum: - in_app - email - sms - chat - push type: string - name: transactionId required: true in: path example: 507f1f77bcf86cd799439011 schema: type: string responses: '204': headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' description: '' '400': description: Bad Request headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '401': description: Unauthorized headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '403': description: Forbidden headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '404': description: Not Found headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '405': description: Method Not Allowed headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '409': description: Conflict headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '413': description: Payload Too Large headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '414': description: URI Too Long content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '415': description: Unsupported Media Type headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '422': description: Unprocessable Entity headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ValidationErrorDto' '429': description: 'The client has sent too many requests in a given amount of time. ' headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' Retry-After: $ref: '#/components/headers/Retry-After' content: application/json: schema: type: string example: API rate limit exceeded '500': description: Internal Server Error headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' content: application/json: schema: $ref: '#/components/schemas/ErrorDto' '503': description: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay. headers: Content-Type: $ref: '#/components/headers/Content-Type' RateLimit-Limit: $ref: '#/components/headers/RateLimit-Limit' RateLimit-Remaining: $ref: '#/components/headers/RateLimit-Remaining' RateLimit-Reset: $ref: '#/components/headers/RateLimit-Reset' RateLimit-Policy: $ref: '#/components/headers/RateLimit-Policy' Idempotency-Key: $ref: '#/components/headers/Idempotency-Key' Idempotency-Replay: $ref: '#/components/headers/Idempotency-Replay' Retry-After: $ref: '#/components/headers/Retry-After' content: application/json: schema: type: string example: Please wait some time, then try again. tags: - Messages security: - secretKey: [] components: schemas: MessageActionResult: type: object properties: payload: type: object description: Payload of the action result additionalProperties: true type: $ref: '#/components/schemas/ButtonTypeEnum' NotificationTriggerVariable: type: object properties: name: type: string description: Name of the variable required: - name MessageAction: type: object properties: status: $ref: '#/components/schemas/MessageActionStatusEnum' buttons: description: List of buttons associated with the message action type: array items: $ref: '#/components/schemas/MessageButton' result: description: Result of the message action allOf: - $ref: '#/components/schemas/MessageActionResult' EmailBlockTypeEnum: type: string description: Type of the email block enum: - button - text DelayScheduledMetadata: type: object properties: type: type: string enum: - scheduled delayPath: type: string required: - type - delayPath ChannelSettingsDto: type: object properties: providerId: $ref: '#/components/schemas/ChatOrPushProviderEnum' integrationIdentifier: type: string description: The integration identifier credentials: description: Credentials payload for the specified provider allOf: - $ref: '#/components/schemas/ChannelCredentials' _integrationId: type: string description: The unique identifier of the integration associated with this channel. required: - providerId - credentials - _integrationId MessageCTA: type: object properties: type: $ref: '#/components/schemas/ChannelCTATypeEnum' data: description: Data associated with the call to action allOf: - $ref: '#/components/schemas/MessageCTAData' action: description: Action associated with the call to action allOf: - $ref: '#/components/schemas/MessageAction' SubscriberResponseDto: type: object properties: _id: type: string description: The internal ID generated by Novu for your subscriber. This ID does not match the `subscriberId` used in your queries. Refer to `subscriberId` for that identifier. firstName: type: - string - 'null' description: The first name of the subscriber. lastName: type: - string - 'null' description: The last name of the subscriber. email: type: - string - 'null' description: The email address of the subscriber. phone: type: - string - 'null' description: The phone number of the subscriber. avatar: type: - string - 'null' description: The URL of the subscriber's avatar image. locale: type: - string - 'null' description: The locale setting of the subscriber, indicating their preferred language or region. channels: description: An array of channel settings associated with the subscriber. type: array items: $ref: '#/components/schemas/ChannelSettingsDto' topics: description: An array of topics that the subscriber is subscribed to. deprecated: true type: array items: type: string isOnline: type: - boolean - 'null' description: Indicates whether the subscriber is currently online. lastOnlineAt: type: - string - 'null' description: The timestamp indicating when the subscriber was last online, in ISO 8601 format. __v: type: number description: The version of the subscriber document. data: type: - object - 'null' description: Additional custom data for the subscriber additionalProperties: true timezone: type: - string - 'null' description: Timezone of the subscriber subscriberId: type: string description: The identifier used to create this subscriber, which typically corresponds to the user ID in your system. _organizationId: type: string description: The unique identifier of the organization to which the subscriber belongs. _environmentId: type: string description: The unique identifier of the environment associated with this subscriber. deleted: type: boolean description: Indicates whether the subscriber has been deleted. createdAt: type: string description: The timestamp indicating when the subscriber was created, in ISO 8601 format. updatedAt: type: string description: The timestamp indicating when the subscriber was last updated, in ISO 8601 format. required: - subscriberId - _organizationId - _environmentId - deleted - createdAt - updatedAt DeleteMessageResponseDto: type: object properties: acknowledged: type: boolean description: A boolean stating the success of the action status: type: string description: The status enum for the performed action enum: - deleted required: - acknowledged - status ReplyCallback: type: object properties: active: type: boolean description: Indicates whether the reply callback is active. url: type: string description: The URL to which replies should be sent. EmailBlock: type: object properties: type: $ref: '#/components/schemas/EmailBlockTypeEnum' content: type: string description: Content of the email block url: type: string description: URL associated with the email block, if any styles: description: Styles applied to the email block allOf: - $ref: '#/components/schemas/EmailBlockStyles' required: - type - content ButtonTypeEnum: type: string description: Type of button for the action result enum: - primary - secondary MessagesResponseDto: type: object properties: totalCount: type: number description: Total number of messages available hasMore: type: boolean description: Indicates if there are more messages available data: description: List of messages type: array items: $ref: '#/components/schemas/MessageResponseDto' pageSize: type: number description: Number of messages per page page: type: number description: Current page number required: - hasMore - data - pageSize - page MessageActionStatusEnum: type: string description: Status of the message action enum: - pending - done MessageStatusEnum: type: string description: Status of the message enum: - sent - error - warning MessageButton: type: object properties: type: $ref: '#/components/schemas/ButtonTypeEnum' content: type: string description: Content of the button resultContent: type: string description: Content of the result when the button is clicked required: - type - content ConstraintValidation: type: object properties: messages: type: array items: type: string description: List of validation error messages example: - Field is required - Invalid format value: description: Value that failed validation oneOf: - type: - string - 'null' - type: number - type: boolean - type: object - type: array items: anyOf: - type: - string - 'null' - type: number - type: boolean - type: object additionalProperties: true example: 'xx xx xx ' required: - messages WorkflowResponse: type: object properties: _id: type: string name: type: string description: type: string active: type: boolean draft: type: boolean preferenceSettings: $ref: '#/components/schemas/SubscriberPreferenceChannels' critical: type: boolean tags: type: array items: type: string steps: type: array items: $ref: '#/components/schemas/NotificationStepDto' _organizationId: type: string _creatorId: type: string _environmentId: type: string triggers: type: array items: $ref: '#/components/schemas/NotificationTrigger' _notificationGroupId: type: string _parentId: type: string deleted: type: boolean deletedAt: type: string deletedBy: type: string notificationGroup: $ref: '#/components/schemas/NotificationGroup' data: type: object workflowIntegrationStatus: type: object required: - name - description - active - draft - preferenceSettings - critical - tags - steps - _organizationId - _creatorId - _environmentId - triggers - _notificationGroupId - deleted - deletedAt - deletedBy FieldFilterPartDto: type: object properties: field: type: string value: type: string operator: type: string enum: - LARGER - SMALLER - LARGER_EQUAL - SMALLER_EQUAL - EQUAL - NOT_EQUAL - ALL_IN - ANY_IN - NOT_IN - BETWEEN - NOT_BETWEEN - LIKE - NOT_LIKE - IN 'on': type: string enum: - subscriber - payload required: - field - value - operator - 'on' NotificationStepDto: type: object properties: _id: type: string description: Unique identifier for the notification step. uuid: type: string description: Universally unique identifier for the notification step. name: type: string description: Name of the notification step. _templateId: type: string description: ID of the template associated with this notification step. active: type: boolean description: Indicates whether the notification step is active. shouldStopOnFail: type: boolean description: Determines if the process should stop on failure. template: description: Message template used in this notification step. allOf: - $ref: '#/components/schemas/MessageTemplate' filters: description: Filters applied to this notification step. type: array items: $ref: '#/components/schemas/StepFilterDto' _parentId: type: string description: ID of the parent notification step, if applicable. metadata: description: Metadata associated with the workflow step. Can vary based on the type of step. oneOf: - $ref: '#/components/schemas/DigestRegularMetadata' - $ref: '#/components/schemas/DigestTimedMetadata' - $ref: '#/components/schemas/DelayRegularMetadata' - $ref: '#/components/schemas/DelayScheduledMetadata' replyCallback: description: Callback information for replies, including whether it is active and the callback URL. allOf: - $ref: '#/components/schemas/ReplyCallback' variants: type: array items: $ref: '#/components/schemas/NotificationStepData' ValidationErrorDto: type: object properties: statusCode: type: number description: HTTP status code of the error response. example: 404 timestamp: type: string description: Timestamp of when the error occurred. example: '2024-12-12T13:00:00Z' path: type: string description: The path where the error occurred. example: /api/v1/resource message: description: Value that failed validation oneOf: - type: - string - 'null' - type: number - type: boolean - type: - object - 'null' - type: array items: anyOf: - type: - string - 'null' - type: number - type: boolean - type: object additionalProperties: true example: 'xx xx xx ' ctx: type: object description: Optional context object for additional error details. additionalProperties: true example: workflowId: some_wf_id stepId: some_wf_id errorId: type: string description: "Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500." example: abc123 errors: type: object description: A record of validation errors keyed by field name additionalProperties: $ref: '#/components/schemas/ConstraintValidation' example: fieldName1: messages: - Field is required - Must be a valid email address value: invalidEmail fieldName2: messages: - Must be at least 18 years old value: 17 fieldName3: messages: - Must be a boolean value value: true fieldName4: messages: - Must be a valid object value: key: value fieldName5: messages: - Field is missing value: null fieldName6: messages: - Undefined value required: - statusCode - timestamp - path - errors ErrorDto: type: object properties: statusCode: type: number description: HTTP status code of the error response. example: 404 timestamp: type: string description: Timestamp of when the error occurred. example: '2024-12-12T13:00:00Z' path: type: string description: The path where the error occurred. example: /api/v1/resource message: description: Value that failed validation oneOf: - type: - string - 'null' - type: number - type: boolean - type: - object - 'null' - type: array items: anyOf: - type: - string - 'null' - type: number - type: boolean - type: object additionalProperties: true example: 'xx xx xx ' ctx: type: object description: Optional context object for additional error details. additionalProperties: true example: workflowId: some_wf_id stepId: some_wf_id errorId: type: string description: "Optional unique identifier for the error, useful for tracking using Sentry and \n New Relic, only available for 500." example: abc123 required: - statusCode - timestamp - path DigestRegularMetadata: type: object properties: amount: type: number unit: type: string enum: - seconds - minutes - hours - days - weeks - months digestKey: type: string type: type: string enum: - regular - backoff backoff: type: boolean backoffAmount: type: number backoffUnit: type: string enum: - seconds - minutes - hours - days - weeks - months updateMode: type: boolean required: - type SubscriberPreferenceChannels: type: object properties: email: type: boolean description: Email channel preference example: true sms: type: boolean description: SMS channel preference example: false in_app: type: boolean description: In-app channel preference example: true chat: type: boolean description: Chat channel preference example: false push: type: boolean description: Push notification channel preference example: true MessageCTAData: type: object properties: url: type: string description: URL for the call to action ChannelCTATypeEnum: type: string description: Type of call to action enum: - redirect MessageResponseDto: type: object properties: _id: type: string description: Unique identifier for the message _templateId: type: - string - 'null' description: Template ID associated with the message _environmentId: type: string description: Environment ID where the message is sent _messageTemplateId: type: - string - 'null' description: Message template ID _organizationId: type: string description: Organization ID associated with the message _notificationId: type: string description: Notification ID associated with the message _subscriberId: type: string description: Subscriber ID associated with the message subscriber: description: Subscriber details, if available allOf: - $ref: '#/components/schemas/SubscriberResponseDto' template: description: Workflow template associated with the message allOf: - $ref: '#/components/schemas/WorkflowResponse' templateIdentifier: type: string description: Identifier for the message template createdAt: type: string description: Creation date of the message deliveredAt: description: Array of delivery dates for the message, if the message has multiple delivery dates, for example after being snoozed type: array items: type: string lastSeenDate: type: string description: Last seen date of the message, if available lastReadDate: type: string description: Last read date of the message, if available content: oneOf: - type: array items: $ref: '#/components/schemas/EmailBlock' - type: string description: String representation of the content description: Content of the message, can be an email block or a string transactionId: type: string description: Transaction ID associated with the message subject: type: string description: Subject of the message, if applicable channel: $ref: '#/components/schemas/ChannelTypeEnum' read: type: boolean description: Indicates if the message has been read seen: type: boolean description: Indicates if the message has been seen snoozedUntil: type: string description: Date when the message will be unsnoozed email: type: string description: Email address associated with the message, if applicable phone: type: string description: Phone number associated with the message, if applicable directWebhookUrl: type: string description: Direct webhook URL for the message, if applicable providerId: type: string description: Provider ID associated with the message, if applicable deviceTokens: description: Device tokens associated with the message, if applicable type: array items: type: string title: type: string description: Title of the message, if applicable cta: description: Call to action associated with the message allOf: - $ref: '#/components/schemas/MessageCTA' _feedId: type: - string - 'null' description: Feed ID associated with the message, if applicable status: $ref: '#/components/schemas/MessageStatusEnum' errorId: type: string description: Error ID if the message has an error errorText: type: string description: Error text if the message has an error payload: type: object description: The payload that was used to send the notification trigger additionalProperties: true overrides: type: object description: Provider specific overrides used when triggering the notification additionalProperties: true contextKeys: description: Context (single or multi) in which the message was sent example: - tenant:org-123 - region:us-east-1 type: array items: type: string required: - _environmentId - _organizationId - _notificationId - _subscriberId - createdAt - transactionId - channel - read - seen - cta - status TimedConfig: type: object properties: atTime: type: string weekDays: type: array items: type: string enum: - monday - tuesday - wednesday - thursday - friday - saturday - sunday monthDays: type: array items: type: string ordinal: type: string enum: - '1' - '2' - '3' - '4' - '5' - last ordinalValue: type: string enum: - day - weekday - weekend - sunday - monday - tuesday - wednesday - thursday - friday - saturday monthlyType: type: string enum: - each - 'on' NotificationStepData: type: object properties: _id: type: string description: Unique identifier for the notification step. uuid: type: string description: Universally unique identifier for the notification step. name: type: string description: Name of the notification step. _templateId: type: string description: ID of the template associated with this notification step. active: type: boolean description: Indicates whether the notification step is active. shouldStopOnFail: type: boolean description: Determines if the process should stop on failure. template: description: Message template used in this notification step. allOf: - $ref: '#/components/schemas/MessageTemplate' filters: description: Filters applied to this notification step. type: array items: $ref: '#/components/schemas/StepFilterDto' _parentId: type: string description: ID of the parent notification step, if applicable. metadata: description: Metadata associated with the workflow step. Can vary based on the type of step. oneOf: - $ref: '#/components/schemas/DigestRegularMetadata' - $ref: '#/components/schemas/DigestTimedMetadata' - $ref: '#/components/schemas/DelayRegularMetadata' - $ref: '#/components/schemas/DelayScheduledMetadata' replyCallback: description: Callback information for replies, including whether it is active and the callback URL. allOf: - $ref: '#/components/schemas/ReplyCallback' DelayRegularMetadata: type: object properties: amount: type: number unit: type: string enum: - seconds - minutes - hours - days - weeks - months type: type: string enum: - regular required: - type StepFilterDto: type: object properties: isNegated: type: boolean type: $ref: '#/components/schemas/BuilderFieldTypeEnum' value: type: string enum: - AND - OR children: type: array items: $ref: '#/components/schemas/FieldFilterPartDto' required: - isNegated - type - value - children ChannelTypeEnum: type: string description: Channel type through which the message is sent enum: - in_app - email - sms - chat - push BuilderFieldTypeEnum: type: string enum: - BOOLEAN - TEXT - DATE - NUMBER - STATEMENT - LIST - MULTI_LIST - GROUP NotificationGroup: type: object properties: _id: type: string name: type: string _environmentId: type: string _organizationId: type: string _parentId: type: string required: - name - _environmentId - _organizationId ChatOrPushProviderEnum: type: string description: The provider identifier for the credentials enum: - slack - discord - msteams - mattermost - ryver - zulip - grafana-on-call - getstream - rocket-chat - whatsapp-business - chat-webhook - novu-slack - telegram - fcm - apns - expo - one-signal - pushpad - push-webhook - pusher-beams - appio TextAlignEnum: type: string description: Text alignment for the email block enum: - center - left - right EmailBlockStyles: type: object properties: textAlign: $ref: '#/components/schemas/TextAlignEnum' required: - textAlign NotificationTrigger: type: object properties: type: type: string enum: - event identifier: type: string variables: type: array items: $ref: '#/components/schemas/NotificationTriggerVariable' subscriberVariables: type: array items: $ref: '#/components/schemas/NotificationTriggerVariable' required: - type - identifier - variables DigestTimedMetadata: type: object properties: amount: type: number unit: type: string enum: - seconds - minutes - hours - days - weeks - months digestKey: type: string type: type: string enum: - timed timed: $ref: '#/components/schemas/TimedConfig' required: - type MessageTemplate: type: object properties: {} ChannelCredentials: type: object properties: webhookUrl: type: string description: Webhook URL used by chat app integrations. The webhook should be obtained from the chat app provider. example: https://example.com/webhook channel: type: string description: Channel specification for Mattermost chat notifications. example: general deviceTokens: description: Contains an array of the subscriber device tokens for a given provider. Used on Push integrations. example: - token1 - token2 - token3 type: array items: type: string alertUid: type: string description: Alert UID for Grafana on-call webhook payload. example: 12345-abcde title: type: string description: Title to be used with Grafana on-call webhook. example: Critical Alert imageUrl: type: string description: Image URL property for Grafana on-call webhook. example: https://example.com/image.png state: type: string description: State property for Grafana on-call webhook. example: resolved externalUrl: type: string description: Link to upstream details property for Grafana on-call webhook. example: https://example.com/details headers: Content-Type: required: true description: The MIME type of the response body. schema: type: string example: application/json RateLimit-Remaining: required: false description: The number of requests remaining until the next window. schema: type: string example: '93' Idempotency-Key: required: false description: The idempotency key used to evaluate the request. schema: type: string example: '8' Idempotency-Replay: required: false description: Whether the request was a replay of a previous request. schema: type: string example: 'true' RateLimit-Limit: required: false description: The number of requests that the client is permitted to make per second. The actual maximum may differ when burst is enabled. schema: type: string example: '100' Retry-After: required: false description: The number of seconds after which the client may retry the request that was previously rejected. schema: type: string example: '8' RateLimit-Reset: required: false description: The remaining seconds until a request of the same cost will be refreshed. schema: type: string example: '8' RateLimit-Policy: required: false description: The rate limit policy that was used to evaluate the request. schema: type: string example: 100;w=1;burst=110;comment="token bucket";category="trigger";cost="single" securitySchemes: secretKey: type: apiKey name: Authorization in: header description: 'API key authentication. Allowed headers-- "Authorization: ApiKey ".' x-speakeasy-example: YOUR_SECRET_KEY_HERE externalDocs: description: Novu Documentation url: https://docs.novu.co x-webhooks: message.sent: post: summary: 'Event: message.sent' description: This webhook is triggered when a `message` event (`message.sent`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.sent` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.failed: post: summary: 'Event: message.failed' description: This webhook is triggered when a `message` event (`message.failed`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.failed` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageFailedDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.delivered: post: summary: 'Event: message.delivered' description: This webhook is triggered when a `message` event (`message.delivered`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.delivered` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.seen: post: summary: 'Event: message.seen' description: This webhook is triggered when a `message` event (`message.seen`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.seen` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.read: post: summary: 'Event: message.read' description: This webhook is triggered when a `message` event (`message.read`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.read` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.unread: post: summary: 'Event: message.unread' description: This webhook is triggered when a `message` event (`message.unread`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.unread` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.archived: post: summary: 'Event: message.archived' description: This webhook is triggered when a `message` event (`message.archived`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.archived` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.unarchived: post: summary: 'Event: message.unarchived' description: This webhook is triggered when a `message` event (`message.unarchived`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.unarchived` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.snoozed: post: summary: 'Event: message.snoozed' description: This webhook is triggered when a `message` event (`message.snoozed`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.snoozed` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.unsnoozed: post: summary: 'Event: message.unsnoozed' description: This webhook is triggered when a `message` event (`message.unsnoozed`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.unsnoozed` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks message.deleted: post: summary: 'Event: message.deleted' description: This webhook is triggered when a `message` event (`message.deleted`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `message.deleted` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookMessageDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks workflow.created: post: summary: 'Event: workflow.created' description: This webhook is triggered when a `workflow` event (`workflow.created`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `workflow.created` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookCreatedWorkflowDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks workflow.updated: post: summary: 'Event: workflow.updated' description: This webhook is triggered when a `workflow` event (`workflow.updated`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `workflow.updated` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookUpdatedWorkflowDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks workflow.deleted: post: summary: 'Event: workflow.deleted' description: This webhook is triggered when a `workflow` event (`workflow.deleted`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `workflow.deleted` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookDeletedWorkflowDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks workflow.published: post: summary: 'Event: workflow.published' description: This webhook is triggered when a `workflow` event (`workflow.published`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `workflow.published` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookUpdatedWorkflowDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks preference.updated: post: summary: 'Event: preference.updated' description: This webhook is triggered when a `preference` event (`preference.updated`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `preference.updated` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookPreferenceDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks email.received: post: summary: 'Event: email.received' description: This webhook is triggered when a `email_inbound` event (`email.received`) occurs. The payload contains the details of the event. Configure your webhook endpoint URL in the Novu dashboard. requestBody: description: Webhook payload for the `email.received` event. required: true content: application/json: schema: $ref: '#/components/schemas/WebhookInboundEmailDtoWebhookPayloadWrapper' responses: '200': description: Acknowledges successful receipt of the webhook. No response body is expected. tags: - Webhooks