openapi: 3.1.0 info: title: Novu Activity Domains 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: Domains description: Used to manage your inbound email domains. externalDocs: url: https://docs.novu.co/platform/domains paths: /v1/domains: get: operationId: DomainsController_listDomains x-speakeasy-name-override: list summary: Novu List Domains for an Environment description: Returns a paginated list of inbound-email domains in the current environment. Supports cursor pagination and a name contains filter. parameters: - name: after required: false in: query description: Cursor for pagination indicating the starting point after which to fetch results. schema: type: string - name: before required: false in: query description: Cursor for pagination indicating the ending point before which to fetch results. schema: type: string - name: limit required: false in: query description: Limit the number of items to return example: 10 schema: type: number - name: orderDirection required: false in: query description: Direction of sorting schema: enum: - ASC - DESC type: string - name: orderBy required: false in: query description: Field to order by schema: type: string - name: includeCursor required: false in: query description: Include cursor item in response schema: type: boolean - name: name required: false in: query description: Domain name to filter results by. 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/ListDomainsResponseDto' '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: - Domains security: - secretKey: [] post: operationId: DomainsController_createDomain x-speakeasy-name-override: create summary: Novu Create a Domain description: Registers a new inbound-email domain. The response includes the DNS records customers must add at their DNS provider before the domain can receive mail. parameters: [] requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateDomainDto' responses: '201': description: Created 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/DomainResponseDto' '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: - Domains security: - secretKey: [] /v1/domains/{domain}: get: operationId: DomainsController_getDomain x-speakeasy-name-override: retrieve summary: Novu Retrieve a Domain by Name description: Returns the domain configuration and the DNS records that must be in place. This is a pure read; call `domains.verify` to refresh verification status from DNS. parameters: - name: domain required: true in: path 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/DomainResponseDto' '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: - Domains security: - secretKey: [] patch: operationId: DomainsController_updateDomain x-speakeasy-name-override: update summary: Novu Update a Domain description: Updates optional domain fields. When `data` is provided, it replaces the entire metadata object; omit `data` to leave it unchanged. parameters: - name: domain required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateDomainDto' 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/DomainResponseDto' '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: - Domains security: - secretKey: [] delete: operationId: DomainsController_deleteDomain x-speakeasy-name-override: delete summary: Novu Delete a Domain description: Removes the domain and cascades the deletion to all of its routes. Inbound mail for that domain stops being processed immediately. parameters: - name: domain required: true in: path 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: - Domains security: - secretKey: [] /v1/domains/{domain}/verify: post: operationId: DomainsController_verifyDomain x-speakeasy-name-override: verify summary: Novu Verify a Domain description: Performs a live DNS lookup to refresh the MX record status of the domain and updates the verification status accordingly. Returns the latest domain configuration. parameters: - name: domain required: true in: path 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/DomainResponseDto' '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: - Domains security: - secretKey: [] /v1/domains/{domain}/diagnose: post: operationId: DomainsController_diagnoseDomain x-speakeasy-name-override: diagnose summary: Novu Diagnose Inbound DNS for a Domain description: Runs live DNS checks for inbound email readiness (MX correctness, apex CNAME collision, and common DNS blocklists for the Novu mail host). Returns structured issues with plain-language fixes. parameters: - name: domain required: true in: path 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/DiagnoseDomainResponseDto' '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: - Domains security: - secretKey: [] /v1/domains/{domain}/routes: get: operationId: DomainsController_listDomainRoutes x-speakeasy-name-override: list x-speakeasy-group: Domains.Routes summary: Novu List Routes for a Domain description: Returns a paginated list of routes attached to the domain. Optionally filter by an agent identifier to find routes pointing to a specific agent. parameters: - name: domain required: true in: path schema: type: string - name: after required: false in: query description: Cursor for pagination indicating the starting point after which to fetch results. schema: type: string - name: before required: false in: query description: Cursor for pagination indicating the ending point before which to fetch results. schema: type: string - name: limit required: false in: query description: Limit the number of items to return example: 10 schema: type: number - name: orderDirection required: false in: query description: Direction of sorting schema: enum: - ASC - DESC type: string - name: orderBy required: false in: query description: Field to order by schema: type: string - name: includeCursor required: false in: query description: Include cursor item in response schema: type: boolean - name: agentId required: false in: query description: Agent identifier to filter routes by. 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/ListDomainRoutesResponseDto' '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: - Domains security: - secretKey: [] post: operationId: DomainsController_createDomainRoute x-speakeasy-name-override: create x-speakeasy-group: Domains.Routes summary: Novu Create a Route description: Creates a route on the domain that forwards inbound mail addressed to `
@` to either a webhook or an agent. Each address on a domain may only have a single route. parameters: - name: domain required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DomainRouteDto' responses: '201': description: Created 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/DomainRouteResponseDto' '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: - Domains security: - secretKey: [] /v1/domains/{domain}/routes/{address}: get: operationId: DomainsController_getDomainRoute x-speakeasy-name-override: retrieve x-speakeasy-group: Domains.Routes summary: Novu Retrieve a Route by Address description: Returns the route bound to `
@`. Use `*` as the address to retrieve the wildcard route for the domain. parameters: - name: domain required: true in: path schema: type: string - name: address required: true in: path 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/DomainRouteResponseDto' '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: - Domains security: - secretKey: [] patch: operationId: DomainsController_updateDomainRoute x-speakeasy-max-method-params: 4 x-speakeasy-name-override: update x-speakeasy-group: Domains.Routes summary: Novu Update a Route description: Updates the destination of the route bound to `
@`. The address itself is the resource identity and cannot be changed; delete and recreate the route to rename it. parameters: - name: domain required: true in: path schema: type: string - name: address required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/UpdateDomainRouteDto' 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/DomainRouteResponseDto' '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: - Domains security: - secretKey: [] delete: operationId: DomainsController_deleteDomainRoute x-speakeasy-name-override: delete x-speakeasy-group: Domains.Routes summary: Novu Delete a Route description: Removes the route bound to `
@`. Inbound mail for that address will no longer be processed. parameters: - name: domain required: true in: path schema: type: string - name: address required: true in: path 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: - Domains security: - secretKey: [] /v1/domains/{domain}/routes/{address}/test: post: operationId: DomainsController_testDomainRoute x-speakeasy-max-method-params: 4 x-speakeasy-name-override: test x-speakeasy-group: Domains.Routes summary: Novu Test an Inbound Route description: 'Sends a synthetic inbound email through the same delivery path as production (outbound webhooks for webhook routes, signed HTTP to the agent for agent routes). Use `dryRun: true` to preview the payload without delivering.' parameters: - name: domain required: true in: path schema: type: string - name: address required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/TestDomainRouteDto' 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/TestDomainRouteResponseDto' '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: - Domains security: - secretKey: [] /v1/domains/{domain}/auto-configure: get: operationId: DomainsController_getDomainAutoConfigure x-speakeasy-name-override: retrieve x-speakeasy-group: Domains.AutoConfigure summary: Novu Retrieve Auto-configuration Availability description: Returns whether DNS auto-configuration (Domain Connect) is available for this domain. When `available` is `false`, `manualRecords` lists the DNS records the customer must add manually. parameters: - name: domain required: true in: path 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/DomainConnectStatusResponseDto' '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: - Domains security: - secretKey: [] /v1/domains/{domain}/auto-configure/start: post: operationId: DomainsController_startDomainAutoConfigure x-speakeasy-name-override: start x-speakeasy-group: Domains.AutoConfigure summary: Novu Start DNS Auto-configuration description: Generates a signed redirect URL the customer can follow to apply Novu DNS records at their DNS provider. After the provider completes the flow, it redirects back to `redirectUri`. parameters: - name: domain required: true in: path schema: type: string requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/CreateDomainConnectApplyUrlDto' responses: '201': description: Created 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/DomainConnectApplyUrlResponseDto' '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: - Domains security: - secretKey: [] components: schemas: TestDomainRouteAgentResultDto: type: object properties: agentId: type: string httpStatus: type: number agentReply: type: object description: Parsed JSON body from the agent webhook response when JSON. latencyMs: type: number required: - agentId - httpStatus - latencyMs CreateDomainConnectApplyUrlDto: type: object properties: redirectUri: type: string description: Dashboard URL to return to after the DNS provider consent flow completes. ListDomainsResponseDto: type: object properties: data: description: List of returned domains type: array items: $ref: '#/components/schemas/DomainResponseDto' next: type: - string - 'null' description: The cursor for the next page of results, or null if there are no more pages. previous: type: - string - 'null' description: The cursor for the previous page of results, or null if this is the first page. totalCount: type: number description: The total count of items (up to 50,000) totalCountCapped: type: boolean description: Whether there are more than 50,000 results available required: - data - next - previous - totalCount - totalCountCapped DomainConnectApplyUrlResponseDto: type: object properties: applyUrl: type: string providerName: type: string redirectUri: type: string required: - applyUrl - providerName - redirectUri DiagnoseDomainResponseDto: type: object properties: ok: type: boolean description: True when there are no error-severity issues runAt: type: string description: ISO timestamp when the diagnostic run finished checks: type: array items: $ref: '#/components/schemas/DomainDiagnosticCheckDto' issues: type: array items: $ref: '#/components/schemas/DomainDiagnosticIssueDto' required: - ok - runAt - checks - issues 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 TestDomainRouteResponseDto: type: object properties: matched: type: boolean dryRun: type: boolean domainStatus: enum: - pending - verified type: string mxRecordConfigured: type: boolean type: enum: - agent - webhook type: string wouldDeliverTo: type: string description: Human-readable delivery target summary in dry-run mode. payload: type: object description: The outbound payload (dry-run only). additionalProperties: true webhook: $ref: '#/components/schemas/TestDomainRouteWebhookResultDto' agent: $ref: '#/components/schemas/TestDomainRouteAgentResultDto' required: - matched - dryRun ListDomainRoutesResponseDto: type: object properties: data: description: List of returned domain routes type: array items: $ref: '#/components/schemas/DomainRouteResponseDto' next: type: - string - 'null' description: The cursor for the next page of results, or null if there are no more pages. previous: type: - string - 'null' description: The cursor for the previous page of results, or null if this is the first page. totalCount: type: number description: The total count of items (up to 50,000) totalCountCapped: type: boolean description: Whether there are more than 50,000 results available required: - data - next - previous - totalCount - totalCountCapped UpdateDomainDto: type: object properties: data: type: object description: Replaces domain metadata when provided (max 10 keys, 500 characters total for keys+values). additionalProperties: type: string 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 TestDomainRouteDto: type: object properties: from: $ref: '#/components/schemas/TestDomainRouteFromDto' subject: type: string text: type: string html: type: string dryRun: type: boolean description: When true, returns the payload that would be delivered without invoking outbound webhooks or the agent HTTP endpoint. required: - from - subject DomainRouteDto: type: object properties: address: type: string description: Inbox address local part (e.g. "support", "*") agentId: type: string description: Agent identifier; required when type is agent, unused for webhook type: enum: - agent - webhook type: string data: type: object description: Optional string key-value metadata (max 10 keys, 500 characters total for keys+values). additionalProperties: type: string required: - address - type DomainDiagnosticCheckDto: type: object properties: code: enum: - mx_missing - mx_wrong_target - mx_low_priority - apex_cname_collision - dnsbl_listed type: string status: enum: - pass - fail - skipped type: string latencyMs: type: number description: Round-trip time for this check in milliseconds required: - code - status - latencyMs TestDomainRouteWebhookResultDto: type: object properties: skipped: type: boolean description: True when outbound webhooks are disabled for this environment (nothing was emitted). latencyMs: type: number required: - latencyMs DomainRouteResponseDto: type: object properties: _id: type: string _domainId: type: string address: type: string agentId: type: string description: Internal id of the destination agent. Only present for agent routes. type: enum: - agent - webhook type: string _environmentId: type: string _organizationId: type: string createdAt: type: string updatedAt: type: string data: type: object description: String key-value metadata (max 10 keys, 500 characters total when set via API). additionalProperties: type: string required: - _id - _domainId - address - type - _environmentId - _organizationId - createdAt - updatedAt TestDomainRouteFromDto: type: object properties: address: type: string name: type: string required: - address DomainDiagnosticIssueDto: type: object properties: code: enum: - mx_missing - mx_wrong_target - mx_low_priority - apex_cname_collision - dnsbl_listed type: string severity: enum: - warn - error type: string message: type: string fix: type: string description: Plain-language remediation guidance required: - code - severity - message - fix CreateDomainDto: type: object properties: name: type: string description: The domain name (e.g. "recent.dev") data: type: object description: Optional string key-value metadata (max 10 keys, 500 characters total for keys+values). additionalProperties: type: string required: - name UpdateDomainRouteDto: type: object properties: agentId: type: string description: Agent identifier; required when type is agent, ignored when type is webhook. type: enum: - agent - webhook type: string data: type: object description: Replaces route metadata when provided (max 10 keys, 500 characters total for keys+values). additionalProperties: type: string DomainConnectStatusResponseDto: type: object properties: available: type: boolean providerName: type: string providerId: type: string reason: type: string reasonCode: enum: - disabled - discovery_not_configured - unsupported_provider - incomplete_configuration - provider_settings_unavailable - untrusted_provider_flow - template_not_onboarded type: string manualRecords: type: array items: $ref: '#/components/schemas/ExpectedDnsRecordDto' required: - available - manualRecords ExpectedDnsRecordDto: type: object properties: type: type: string example: MX name: type: string example: inbound content: type: string example: inbound-smtp.us-east-1.amazonaws.com ttl: type: string example: Auto priority: type: number example: 10 required: - type - name - content - ttl DomainResponseDto: type: object properties: _id: type: string name: type: string status: enum: - pending - verified type: string mxRecordConfigured: type: boolean dnsProvider: type: string _environmentId: type: string _organizationId: type: string createdAt: type: string updatedAt: type: string expectedDnsRecords: type: array items: $ref: '#/components/schemas/ExpectedDnsRecordDto' data: type: object description: String key-value metadata (max 10 keys, 500 characters total when set via API). additionalProperties: type: string required: - _id - name - status - mxRecordConfigured - _environmentId - _organizationId - createdAt - updatedAt headers: 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' 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-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' 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" Content-Type: required: true description: The MIME type of the response body. schema: type: string example: application/json 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