openapi: 3.1.0
paths:
/v1/environments:
post:
operationId: EnvironmentsControllerV1_createEnvironment
x-speakeasy-name-override: create
x-speakeasy-group: Environments
summary: Novu Create an Environment
description: "Creates a new environment within the current organization. \n Environments allow you to manage different stages of your application development lifecycle.\n Each environment has its own set of API keys and configurations."
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEnvironmentRequestDto'
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/EnvironmentResponseDto'
'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'
'402':
description: Payment Required
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:
- Environments
security:
- secretKey: []
get:
operationId: EnvironmentsControllerV1_listMyEnvironments
x-speakeasy-name-override: list
x-speakeasy-group: Environments
summary: Novu List All Environments
description: "This API returns a list of environments for the current organization. \n Each environment contains its configuration, API keys (if user has access), and metadata."
parameters: []
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:
type: array
items:
$ref: '#/components/schemas/EnvironmentResponseDto'
'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:
- Environments
security:
- secretKey: []
/v1/environments/{environmentId}:
put:
operationId: EnvironmentsControllerV1_updateMyEnvironment
x-speakeasy-name-override: update
x-speakeasy-group: Environments
summary: Novu Update an Environment
description: "Update an environment by its unique identifier **environmentId**. \n You can modify the environment name, identifier, color, and other configuration settings."
parameters:
- name: environmentId
required: true
in: path
description: The unique identifier of the environment
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEnvironmentRequestDto'
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/EnvironmentResponseDto'
'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:
- Environments
security:
- secretKey: []
delete:
operationId: EnvironmentsControllerV1_deleteEnvironment
x-speakeasy-name-override: delete
x-speakeasy-group: Environments
summary: Novu Delete an Environment
description: "Delete an environment by its unique identifier **environmentId**. \n This action is irreversible and will remove the environment and all its associated data."
parameters:
- name: environmentId
required: true
in: path
description: The unique identifier of the environment
schema:
type: string
responses:
'200':
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:
- Environments
security:
- secretKey: []
/v1/events/trigger:
post:
operationId: EventsController_trigger
x-speakeasy-group: ''
x-speakeasy-usage-example:
title: Trigger Notification Event
x-speakeasy-name-override: trigger
summary: Novu Trigger Event
description: |2-
Trigger event is the main (and only) way to send notifications to subscribers. The trigger identifier is used to match the particular workflow associated with it. Maximum number of recipients can be 100. Additional information can be passed according the body interface below.
To prevent duplicate triggers, you can optionally pass a **transactionId** in the request body. If the same **transactionId** is used again, the trigger will be ignored. The retention period depends on your billing tier.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerEventRequestDto'
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/TriggerEventResponseDto'
'400':
description: Payload validation failed - returned when payload does not match the workflow schema
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/PayloadValidationExceptionDto'
'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:
- Events
security:
- secretKey: []
/v1/events/trigger/bulk:
post:
operationId: EventsController_triggerBulk
x-speakeasy-group: ''
x-speakeasy-usage-example:
title: Trigger Notification Events in Bulk
x-speakeasy-name-override: triggerBulk
summary: Novu Bulk Trigger Event
description: "\n Using this endpoint you can trigger multiple events at once, to avoid multiple calls to the API.\n The bulk API is limited to 100 events per request.\n "
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkTriggerEventDto'
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:
type: array
items:
$ref: '#/components/schemas/TriggerEventResponseDto'
'400':
description: Payload validation failed - returned when any event payload does not match the workflow schema
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/PayloadValidationExceptionDto'
'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:
- Events
security:
- secretKey: []
/v1/events/trigger/broadcast:
post:
operationId: EventsController_broadcastEventToAll
x-speakeasy-group: ''
x-speakeasy-usage-example:
title: Broadcast Event to All
x-speakeasy-name-override: triggerBroadcast
summary: Novu Broadcast Event to All
description: |-
Trigger a broadcast event to all existing subscribers, could be used to send announcements, etc.
In the future could be used to trigger events to a subset of subscribers based on defined filters.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerEventToAllRequestDto'
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/TriggerEventResponseDto'
'201':
description: 'Broadcast request has been registered successfully '
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/TriggerEventResponseDto'
'400':
description: Payload validation failed - returned when payload does not match the workflow schema
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/PayloadValidationExceptionDto'
'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:
- Events
security:
- secretKey: []
/v1/events/trigger/{transactionId}:
delete:
operationId: EventsController_cancel
x-speakeasy-group: ''
x-speakeasy-usage-example:
title: Cancel Triggered Event
x-speakeasy-name-override: cancel
summary: Novu Cancel Triggered Event
description: "\n Using a previously generated transactionId during the event trigger,\n will cancel any active or pending workflows. This is useful to cancel active digests, delays etc...\n "
parameters:
- name: transactionId
required: true
in: path
schema:
type: string
responses:
'200':
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
description: ''
content:
application/json:
schema:
type: boolean
'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:
- Events
security:
- secretKey: []
/v1/notifications:
get:
operationId: NotificationsController_listNotifications
summary: Novu List All Events
description: "List all notification events (triggered events) for the current environment. \n This API supports filtering by **channels**, **templates**, **emails**, **subscriberIds**, **transactionId**, **topicKey**, **severity**, **contextKeys**. \n Checkout all available filters in the query section.\n This API returns event triggers, to list each channel notifications, check messages APIs."
parameters:
- name: channels
required: false
in: query
description: Array of channel types
schema:
type: array
items:
$ref: '#/components/schemas/ChannelTypeEnum'
- name: templates
required: false
in: query
description: Array of template IDs or a single template ID
schema:
type: array
items:
type: string
- name: emails
required: false
in: query
description: Array of email addresses or a single email address
schema:
type: array
items:
type: string
- name: search
required: false
in: query
deprecated: true
description: Search term (deprecated)
schema:
type: string
- name: subscriberIds
required: false
in: query
description: Array of subscriber IDs or a single subscriber ID
schema:
type: array
items:
type: string
- name: severity
required: false
in: query
description: Array of severity levels or a single severity level
schema:
type: array
items:
type: string
- name: page
required: false
in: query
description: Page number for pagination
schema:
minimum: 0
default: 0
type: number
- name: limit
required: false
in: query
description: Limit for pagination
schema:
minimum: 1
maximum: 50
default: 10
type: number
- name: transactionId
required: false
in: query
description: The transaction ID to filter by
schema:
type: string
- name: topicKey
required: false
in: query
description: Topic Key for filtering notifications by topic
schema:
type: string
- name: subscriptionId
required: false
in: query
description: Subscription ID for filtering notifications by subscription
schema:
type: string
- name: contextKeys
required: false
in: query
description: 'Filter by exact context keys, order insensitive (format: "type:id")'
schema:
type: array
items:
type: string
- name: after
required: false
in: query
description: Date filter for records after this timestamp. Defaults to earliest date allowed by subscription plan
schema:
type: string
- name: before
required: false
in: query
description: Date filter for records before this timestamp. Defaults to current time of request (now)
schema:
type: string
responses:
'200':
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/ActivitiesResponseDto'
'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:
- Notifications
security:
- secretKey: []
/v1/notifications/{notificationId}:
get:
operationId: NotificationsController_getNotification
summary: Novu Retrieve an Event
description: "Retrieve an event by its unique key identifier **notificationId**. \n Here **notificationId** is of mongodbId type. \n This API returns the event details - execution logs, status, actual notification (message) generated by each workflow step."
parameters:
- name: notificationId
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/ActivityNotificationResponseDto'
'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:
- Notifications
security:
- secretKey: []
/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: []
/v1/integrations:
get:
operationId: IntegrationsController_listIntegrations
summary: Novu List All Integrations
description: List all the channels integrations created in the organization
parameters: []
responses:
'200':
description: The list of integrations belonging to the organization that are successfully returned.
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:
type: array
items:
$ref: '#/components/schemas/IntegrationResponseDto'
'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:
- Integrations
security:
- secretKey: []
post:
operationId: IntegrationsController_createIntegration
summary: Novu Create an Integration
description: "Create an integration for the current environment the user is based on the API key provided. \n Each provider supports different credentials, check the provider documentation for more details."
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateIntegrationRequestDto'
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/IntegrationResponseDto'
'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:
- Integrations
security:
- secretKey: []
/v1/integrations/active:
get:
operationId: IntegrationsController_getActiveIntegrations
x-speakeasy-name-override: listActive
summary: Novu List Active Integrations
description: List all the active integrations created in the organization
parameters: []
responses:
'200':
description: The list of active integrations belonging to the organization that are successfully returned.
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:
type: array
items:
$ref: '#/components/schemas/IntegrationResponseDto'
'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:
- Integrations
security:
- secretKey: []
/v1/integrations/{integrationId}:
put:
operationId: IntegrationsController_updateIntegrationById
summary: Novu Update an Integration
description: "Update an integration by its unique key identifier **integrationId**. \n Each provider supports different credentials, check the provider documentation for more details."
parameters:
- name: integrationId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateIntegrationRequestDto'
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/IntegrationResponseDto'
'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: The integration with the integrationId provided does not exist in the database.
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'
'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:
- Integrations
security:
- secretKey: []
delete:
operationId: IntegrationsController_removeIntegration
summary: Novu Delete an Integration
description: "Delete an integration by its unique key identifier **integrationId**. \n This action is irreversible."
parameters:
- name: integrationId
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:
type: array
items:
$ref: '#/components/schemas/IntegrationResponseDto'
'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:
- Integrations
security:
- secretKey: []
/v1/integrations/{integrationId}/auto-configure:
post:
operationId: IntegrationsController_autoConfigureIntegration
summary: Novu Auto-configure an Integration for Inbound Webhooks
description: "Auto-configure an integration by its unique key identifier **integrationId** for inbound webhook support. \n This will automatically generate required webhook signing keys and configure webhook endpoints."
parameters:
- name: integrationId
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/AutoConfigureIntegrationResponseDto'
'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: The integration with the integrationId provided does not exist in the database.
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'
'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:
- Integrations
security:
- secretKey: []
/v1/integrations/{integrationId}/set-primary:
post:
operationId: IntegrationsController_setIntegrationAsPrimary
x-speakeasy-name-override: setAsPrimary
summary: Novu Update Integration as Primary
description: "Update an integration as **primary** by its unique key identifier **integrationId**. \n This API will set the integration as primary for that channel in the current environment. \n Primary integration is used to deliver notification for sms and email channels in the workflow."
parameters:
- name: integrationId
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/IntegrationResponseDto'
'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: The integration with the integrationId provided does not exist in the database.
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'
'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:
- Integrations
security:
- secretKey: []
/v1/integrations/chat/oauth:
post:
operationId: IntegrationsController_getChatOAuthUrl
x-speakeasy-name-override: generateChatOAuthUrl
summary: Novu Generate Chat OAuth URL
description: "**Deprecated** — use `POST /integrations/channel-connections/oauth` (connect) or `POST /integrations/channel-endpoints/oauth` (link_user) instead.\n Generate an OAuth URL for chat integrations like Slack and MS Teams. \n This URL allows subscribers to authorize the integration, enabling the system to send messages \n through their chat workspace. The generated URL expires after 5 minutes."
deprecated: true
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateChatOauthUrlRequestDto'
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/GenerateChatOAuthUrlResponseDto'
'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:
- Integrations
security:
- secretKey: []
/v1/integrations/channel-connections/oauth:
post:
operationId: IntegrationsController_generateConnectOAuthUrl
x-speakeasy-name-override: generateConnectOAuthUrl
summary: Novu Generate OAuth URL for a Workspace/tenant Connection
description: "Generate an OAuth URL that creates a workspace or tenant-level channel connection (Slack workspace install or MS Teams admin consent). \n The generated URL expires after 5 minutes."
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateConnectOauthUrlRequestDto'
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/GenerateChatOAuthUrlResponseDto'
'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:
- Integrations
security:
- secretKey: []
/v1/integrations/channel-endpoints/oauth:
post:
operationId: IntegrationsController_generateLinkUserOAuthUrl
x-speakeasy-name-override: generateLinkUserOAuthUrl
summary: Novu Generate OAuth URL to Link a Subscriber User Identity
description: "Generate an OAuth URL that links a specific subscriber to their chat identity (Slack user ID or MS Teams user OID). \n The generated URL expires after 5 minutes."
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/GenerateLinkUserOauthUrlRequestDto'
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/GenerateChatOAuthUrlResponseDto'
'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:
- Integrations
security:
- secretKey: []
/v2/contexts:
post:
operationId: ContextsController_createContext
summary: Novu Create a Context
description: |-
Create a new context with the specified type, id, and data. Returns 409 if context already exists.
**type** and **id** are required fields, **data** is optional, if the context already exists, it returns the 409 response
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateContextRequestDto'
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/GetContextResponseDto'
'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:
- Contexts
security:
- secretKey: []
get:
operationId: ContextsController_listContexts
summary: Novu List All Contexts
description: |-
Retrieve a paginated list of all contexts, optionally filtered by type and key pattern.
**type** and **id** are optional fields, if provided, only contexts with the matching type and id will be returned.
**search** is an optional field, if provided, only contexts with the matching key pattern will be returned.
Checkout all possible parameters in the query section below for more details
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: id
required: false
in: query
description: Filter contexts by id
example: tenant-prod-123
schema:
type: string
- name: search
required: false
in: query
description: Search contexts by type or id (supports partial matching across both fields)
example: tenant
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/ListContextsResponseDto'
'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:
- Contexts
security:
- secretKey: []
/v2/contexts/{type}/{id}:
patch:
operationId: ContextsController_updateContext
summary: Novu Update a Context
description: |-
Update the data of an existing context.
**type** and **id** are required fields, **data** is required. Only the data field is updated, the rest of the context is not affected.
If the context does not exist, it returns the 404 response
parameters:
- name: id
required: true
in: path
description: Context ID
schema:
type: string
- name: type
required: true
in: path
description: Context type
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateContextRequestDto'
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/GetContextResponseDto'
'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:
- Contexts
security:
- secretKey: []
get:
operationId: ContextsController_getContext
summary: Novu Retrieve a Context
description: |-
Retrieve a specific context by its type and id.
**type** and **id** are required fields, if the context does not exist, it returns the 404 response
parameters:
- name: id
required: true
in: path
description: Context ID
schema:
type: string
- name: type
required: true
in: path
description: Context type
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/GetContextResponseDto'
'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:
- Contexts
security:
- secretKey: []
delete:
operationId: ContextsController_deleteContext
summary: Novu Delete a Context
description: |-
Delete a context by its type and id.
**type** and **id** are required fields, if the context does not exist, it returns the 404 response
parameters:
- name: id
required: true
in: path
description: Context ID
schema:
type: string
- name: type
required: true
in: path
description: Context type
schema:
type: string
responses:
'204':
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:
- Contexts
security:
- secretKey: []
/v1/subscribers/bulk:
post:
operationId: SubscribersV1Controller_bulkCreateSubscribers
x-speakeasy-name-override: createBulk
summary: Novu Bulk Create Subscribers
description: "\n Using this endpoint multiple subscribers can be created at once. The bulk API is limited to 500 subscribers per request.\n "
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkSubscriberCreateDto'
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/BulkCreateSubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/credentials:
put:
operationId: SubscribersV1Controller_updateSubscriberChannel
x-speakeasy-group: Subscribers.Credentials
summary: Novu Update Provider Credentials
description: "Update credentials for a provider such as **slack** and **FCM**. \n **providerId** is required field. This API creates the **deviceTokens** or replaces the existing ones."
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSubscriberChannelRequestDto'
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/SubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
patch:
operationId: SubscribersV1Controller_modifySubscriberChannel
x-speakeasy-name-override: append
x-speakeasy-group: Subscribers.Credentials
summary: Novu Upsert Provider Credentials
description: "Upsert credentials for a provider such as **slack** and **FCM**. \n **providerId** is required field. This API creates **deviceTokens** or appends to the existing ones."
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSubscriberChannelRequestDto'
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/SubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/credentials/{providerId}:
delete:
operationId: SubscribersV1Controller_deleteSubscriberCredentials
x-speakeasy-group: Subscribers.Credentials
summary: Novu Delete Provider Credentials
description: "Delete subscriber credentials for a provider such as **slack** and **FCM** by **providerId**. \n This action is irreversible and will remove the credentials for the provider for particular **subscriberId**."
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
- name: providerId
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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/online-status:
patch:
operationId: SubscribersV1Controller_updateSubscriberOnlineFlag
x-speakeasy-name-override: updateOnlineFlag
x-speakeasy-group: Subscribers.properties
summary: Novu Update Subscriber Online Status
description: Update the subscriber online status by its unique key identifier **subscriberId**
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateSubscriberOnlineFlagRequestDto'
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/SubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/notifications/feed:
get:
operationId: SubscribersV1Controller_getNotificationsFeed
x-speakeasy-name-override: feed
x-speakeasy-group: Subscribers.Notifications
summary: Novu Retrieve Subscriber Notifications
description: Retrieve subscriber in-app (inbox) notifications by its unique key identifier **subscriberId**.
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
- name: page
required: false
in: query
example: 0
schema:
minimum: 0
type: number
- name: limit
required: false
in: query
example: 10
schema:
maximum: 100
default: 10
type: number
- name: read
required: false
in: query
schema:
type: boolean
- name: seen
required: false
in: query
schema:
type: boolean
- name: payload
required: false
in: query
description: Base64 encoded string of the partial payload JSON object
example: 'btoa(JSON.stringify({ foo: 123 })) results in base64 encoded string like eyJmb28iOjEyM30='
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/FeedResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/notifications/unseen:
get:
operationId: SubscribersV1Controller_getUnseenCount
x-speakeasy-name-override: unseenCount
x-speakeasy-group: Subscribers.Notifications
summary: Novu Retrieve Unseen Notifications Count
description: Retrieve unseen in-app (inbox) notifications count for a subscriber by its unique key identifier **subscriberId**.
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
- name: seen
required: false
in: query
description: Indicates whether to count seen notifications.
schema:
default: false
type: boolean
- name: limit
required: false
in: query
description: The maximum number of notifications to return.
schema:
default: 100
type: number
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/UnseenCountResponse'
'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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/messages/mark-as:
post:
operationId: SubscribersV1Controller_markMessagesAs
x-speakeasy-name-override: markAllAs
x-speakeasy-group: Subscribers.Messages
summary: Novu Update Notifications State
description: "Update subscriber's multiple in-app (inbox) notifications state such as seen, read, unseen or unread by **subscriberId**. \n **messageId** is of type mongodbId of notifications"
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MessageMarkAsRequestDto'
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:
type: array
items:
$ref: '#/components/schemas/MessageResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/messages/mark-all:
post:
operationId: SubscribersV1Controller_markAllUnreadAsRead
x-speakeasy-name-override: markAll
x-speakeasy-group: Subscribers.Messages
summary: Novu Update All Notifications State
description: Update all subscriber in-app (inbox) notifications state such as read, unread, seen or unseen by **subscriberId**.
parameters:
- name: subscriberId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MarkAllMessageAsRequestDto'
responses:
'201':
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
description: ''
content:
application/json:
schema:
type: number
'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:
- Subscribers
security:
- secretKey: []
/v1/subscribers/{subscriberId}/messages/{messageId}/actions/{type}:
post:
operationId: SubscribersV1Controller_markActionAsSeen
x-speakeasy-name-override: updateAsSeen
x-speakeasy-group: Subscribers.Messages
summary: Novu Update Notification Action Status
description: "Update in-app (inbox) notification's action status by its unique key identifier **messageId** and type field **type**. \n **type** field can be **primary** or **secondary**"
parameters:
- name: messageId
required: true
in: path
schema:
type: string
- name: type
required: true
in: path
schema: {}
- name: subscriberId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MarkMessageActionAsSeenDto'
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/MessageResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers:
get:
operationId: SubscribersController_searchSubscribers
x-speakeasy-name-override: search
summary: Novu Search Subscribers
description: "Search subscribers by their **email**, **phone**, **subscriberId** and **name**. \n The search is case sensitive and supports pagination.Checkout all available filters in the query section."
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: email
required: false
in: query
description: Email address of the subscriber to filter results.
schema:
type: string
- name: name
required: false
in: query
description: Name of the subscriber to filter results.
schema:
type: string
- name: phone
required: false
in: query
description: Phone number of the subscriber to filter results.
schema:
type: string
- name: subscriberId
required: false
in: query
description: Unique identifier of the subscriber to filter results.
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/ListSubscribersResponseDto'
'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:
- Subscribers
security:
- secretKey: []
post:
operationId: SubscribersController_createSubscriber
x-speakeasy-name-override: create
summary: Novu Create a Subscriber
description: "Create a subscriber with the subscriber attributes. \n **subscriberId** is a required field, rest other fields are optional, if the subscriber already exists, it will be updated"
parameters:
- name: failIfExists
required: false
in: query
description: If true, the request will fail if a subscriber with the same subscriberId already exists
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateSubscriberRequestDto'
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/SubscriberResponseDto'
'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: Subscriber already exists (when query param failIfExists=true)
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/SubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}:
get:
operationId: SubscribersController_getSubscriber
x-speakeasy-name-override: retrieve
summary: Novu Retrieve a Subscriber
description: "Retrieve a subscriber by its unique key identifier **subscriberId**. \n **subscriberId** field is required."
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
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/SubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
patch:
operationId: SubscribersController_patchSubscriber
x-speakeasy-name-override: patch
summary: Novu Update a Subscriber
description: "Update a subscriber by its unique key identifier **subscriberId**. \n **subscriberId** is a required field, rest other fields are optional"
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchSubscriberRequestDto'
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/SubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
delete:
operationId: SubscribersController_removeSubscriber
x-speakeasy-name-override: delete
summary: Novu Delete a Subscriber
description: "Deletes a subscriber entity from the Novu platform along with associated messages, preferences, and topic subscriptions. \n **subscriberId** is a required field."
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
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/RemoveSubscriberResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/preferences:
get:
operationId: SubscribersController_getSubscriberPreferences
x-speakeasy-name-override: list
x-speakeasy-group: Subscribers.Preferences
summary: Novu Retrieve Subscriber Preferences
description: "Retrieve subscriber channel preferences by its unique key identifier **subscriberId**. \n This API returns all five channels preferences for all workflows and global preferences."
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: criticality
required: false
in: query
schema:
default: nonCritical
enum:
- critical
- nonCritical
- all
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering preferences (e.g., ["tenant:acme"])
example:
- tenant:acme
schema:
type: array
items:
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/GetSubscriberPreferencesDto'
'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:
- Subscribers
security:
- secretKey: []
patch:
operationId: SubscribersController_updateSubscriberPreferences
x-speakeasy-name-override: update
x-speakeasy-group: Subscribers.Preferences
summary: Novu Update Subscriber Preferences
description: "Update subscriber preferences by its unique key identifier **subscriberId**. \n **workflowId** is optional field, if provided, this API will update that workflow preference, \n otherwise it will update global preferences"
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PatchSubscriberPreferencesDto'
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/GetSubscriberPreferencesDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/preferences/bulk:
patch:
operationId: SubscribersController_bulkUpdateSubscriberPreferences
x-speakeasy-name-override: bulkUpdate
x-speakeasy-group: Subscribers.Preferences
summary: Novu Bulk Update Subscriber Preferences
description: "Bulk update subscriber preferences by its unique key identifier **subscriberId**. \n This API allows updating multiple workflow preferences in a single request."
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkUpdateSubscriberPreferencesDto'
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:
type: array
items:
$ref: '#/components/schemas/GetPreferencesResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/subscriptions:
get:
operationId: SubscribersController_listSubscriberTopics
x-speakeasy-name-override: list
x-speakeasy-group: Subscribers.Topics
summary: Novu Retrieve Subscriber Subscriptions
description: "Retrieve subscriber's topic subscriptions by its unique key identifier **subscriberId**. \n Checkout all available filters in the query section."
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
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 (max 100)
example: 10
schema:
maximum: 100
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: key
required: false
in: query
description: Filter by topic key
schema:
type: string
- name: contextKeys
required: false
in: query
description: 'Filter by exact context keys, order insensitive (format: "type:id")'
example:
- tenant:org-123
- region:us-east-1
schema:
type: array
items:
type: string
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/ListTopicSubscriptionsResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications:
get:
operationId: SubscribersController_getSubscriberNotifications
x-speakeasy-name-override: list
x-speakeasy-group: Subscribers.Notifications
summary: Novu Retrieve Subscriber Notifications
description: "Retrieve in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**. \n Supports filtering by tags, read/archived/snoozed/seen state, data attributes, severity, date range, and context keys."
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: limit
required: false
in: query
example: 10
schema:
maximum: 100
default: 10
type: number
- name: after
required: false
in: query
schema:
type: string
- name: offset
required: false
in: query
example: 0
schema:
type: number
- name: read
required: false
in: query
description: Filter by read/unread state
schema:
type: boolean
- name: archived
required: false
in: query
description: Filter by archived state
schema:
type: boolean
- name: snoozed
required: false
in: query
description: Filter by snoozed state
schema:
type: boolean
- name: seen
required: false
in: query
description: Filter by seen state
schema:
type: boolean
- name: data
required: false
in: query
description: Filter by data attributes (JSON string)
schema:
type: string
- name: severity
required: false
in: query
description: Filter by severity levels
schema:
type: array
items:
type: string
enum:
- high
- medium
- low
- none
- name: createdGte
required: false
in: query
description: Filter notifications created on or after this timestamp (Unix timestamp in milliseconds)
example: 1704067200000
schema:
type: number
- name: createdLte
required: false
in: query
description: Filter notifications created on or before this timestamp (Unix timestamp in milliseconds)
example: 1735689599999
schema:
type: number
- name: contextKeys
required: false
in: query
description: Context keys for filtering notifications in multi-context scenarios
schema:
type: array
items:
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/GetSubscriberNotificationsResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/count:
get:
operationId: SubscribersController_getSubscriberNotificationsCount
x-speakeasy-name-override: count
x-speakeasy-group: Subscribers.Notifications
summary: Novu Retrieve Subscriber Notifications Count
description: "Retrieve count of in-app (inbox) notifications for a subscriber by its unique key identifier **subscriberId**. \n Supports multiple filters to count in-app (inbox) notifications by different criteria, including context keys."
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: filters
required: true
in: query
description: Array of filter objects (max 30) to count notifications by different criteria
example: '[{"read":false,"archived":false},{"tags":["important"]},{"tags":{"and":[{"or":["a","b"]},{"or":["c"]}]}}]'
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:
type: array
items:
$ref: '#/components/schemas/GetSubscriberNotificationsCountResponseDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/read:
patch:
operationId: SubscribersController_markNotificationAsRead
x-speakeasy-name-override: markAsRead
x-speakeasy-group: Subscribers.Notifications
summary: Novu Mark a Notification as Read
description: Mark a specific in-app (inbox) notification as read by its unique identifier **notificationId**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/unread:
patch:
operationId: SubscribersController_markNotificationAsUnread
x-speakeasy-name-override: markAsUnread
x-speakeasy-group: Subscribers.Notifications
summary: Novu Mark a Notification as Unread
description: Mark a specific in-app (inbox) notification as unread by its unique identifier **notificationId**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/archive:
patch:
operationId: SubscribersController_archiveNotification
x-speakeasy-name-override: archive
x-speakeasy-group: Subscribers.Notifications
summary: Novu Archive a Notification
description: Archive a specific in-app (inbox) notification by its unique identifier **notificationId**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/unarchive:
patch:
operationId: SubscribersController_unarchiveNotification
x-speakeasy-name-override: unarchive
x-speakeasy-group: Subscribers.Notifications
summary: Novu Unarchive a Notification
description: Unarchive a specific in-app (inbox) notification by its unique identifier **notificationId**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/snooze:
patch:
operationId: SubscribersController_snoozeNotification
x-speakeasy-name-override: snooze
x-speakeasy-group: Subscribers.Notifications
summary: Novu Snooze a Notification
description: Snooze a specific in-app (inbox) notification by its unique identifier **notificationId** until a specified time.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SnoozeSubscriberNotificationDto'
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/unsnooze:
patch:
operationId: SubscribersController_unsnoozeNotification
x-speakeasy-name-override: unsnooze
x-speakeasy-group: Subscribers.Notifications
summary: Novu Unsnooze a Notification
description: Unsnooze a specific in-app (inbox) notification by its unique identifier **notificationId**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}:
delete:
operationId: SubscribersController_deleteNotification
x-speakeasy-name-override: delete
x-speakeasy-group: Subscribers.Notifications
summary: Novu Delete a Notification
description: Delete a specific in-app (inbox) notification permanently by its unique identifier **notificationId**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
type: string
responses:
'204':
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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/complete:
patch:
operationId: SubscribersController_completeNotificationAction
x-speakeasy-name-override: completeAction
x-speakeasy-group: Subscribers.Notifications
summary: Novu Complete a Notification Action
description: Mark a single in-app (inbox) notification's action (primary or secondary) as completed by its unique identifier **notificationId** and action type **actionType**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: actionType
required: true
in: path
description: The type of action (primary or secondary)
schema:
enum:
- primary
- secondary
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/{notificationId}/actions/{actionType}/revert:
patch:
operationId: SubscribersController_revertNotificationAction
x-speakeasy-name-override: revertAction
x-speakeasy-group: Subscribers.Notifications
summary: Novu Revert a Notification Action
description: Revert a single in-app (inbox) notification's action (primary or secondary) to pending state by its unique identifier **notificationId** and action type **actionType**.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
- name: notificationId
required: true
in: path
description: The identifier of the notification
schema:
type: string
- name: actionType
required: true
in: path
description: The type of action (primary or secondary)
schema:
enum:
- primary
- secondary
type: string
- name: contextKeys
required: false
in: query
description: Context keys for filtering
schema:
type: array
items:
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:
$ref: '#/components/schemas/InboxNotificationDto'
'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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/seen:
post:
operationId: SubscribersController_markNotificationsAsSeen
x-speakeasy-name-override: markAsSeen
x-speakeasy-group: Subscribers.Notifications
summary: Novu Mark Notifications as Seen
description: Mark specific and multiple in-app (inbox) notifications as seen. Supports context-based filtering.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/MarkSubscriberNotificationsAsSeenDto'
responses:
'204':
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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/read:
post:
operationId: SubscribersController_markAllNotificationsAsRead
x-speakeasy-name-override: markAllAsRead
x-speakeasy-group: Subscribers.Notifications
summary: Novu Mark All Notifications as Read
description: Mark all in-app (inbox) notifications matching the specified filters as read. Supports context-based filtering.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAllSubscriberNotificationsDto'
responses:
'204':
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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/archive:
post:
operationId: SubscribersController_archiveAllNotifications
x-speakeasy-name-override: archiveAll
x-speakeasy-group: Subscribers.Notifications
summary: Novu Archive All Notifications
description: Archive all in-app (inbox) notifications matching the specified filters. Supports context-based filtering.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAllSubscriberNotificationsDto'
responses:
'204':
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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/read-archive:
post:
operationId: SubscribersController_archiveAllReadNotifications
x-speakeasy-name-override: archiveAllRead
x-speakeasy-group: Subscribers.Notifications
summary: Novu Archive All Read Notifications
description: Archive all read in-app (inbox) notifications matching the specified filters. Supports context-based filtering.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAllSubscriberNotificationsDto'
responses:
'204':
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:
- Subscribers
security:
- secretKey: []
/v2/subscribers/{subscriberId}/notifications/delete:
post:
operationId: SubscribersController_deleteAllNotifications
x-speakeasy-name-override: deleteAll
x-speakeasy-group: Subscribers.Notifications
summary: Novu Delete All Notifications
description: Permanently delete all in-app (inbox) notifications matching the specified filters. Supports context-based filtering.
parameters:
- name: subscriberId
required: true
in: path
description: The identifier of the subscriber
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateAllSubscriberNotificationsDto'
responses:
'204':
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:
- Subscribers
security:
- secretKey: []
/v2/layouts:
post:
operationId: LayoutsController_create
summary: Novu Create a Layout
description: Creates a new layout in the Novu Cloud environment
parameters: []
requestBody:
required: true
description: Layout creation details
content:
application/json:
schema:
$ref: '#/components/schemas/CreateLayoutDto'
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/LayoutResponseDto'
'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:
- Layouts
security:
- secretKey: []
get:
operationId: LayoutsController_list
summary: Novu List All Layouts
description: Retrieves a list of layouts with optional filtering and pagination
parameters:
- name: limit
required: false
in: query
description: Number of items to return per page
example: 10
schema:
type: number
- name: offset
required: false
in: query
description: Number of items to skip before starting to return results
example: 0
schema:
type: number
- name: orderDirection
required: false
in: query
description: Direction of sorting
schema:
$ref: '#/components/schemas/DirectionEnum'
- name: orderBy
required: false
in: query
description: Field to sort the results by
schema:
$ref: '#/components/schemas/LayoutResponseDtoSortField'
- name: query
required: false
in: query
description: Search query to filter layouts
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/ListLayoutResponseDto'
'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:
- Layouts
security:
- secretKey: []
/v2/layouts/{layoutId}:
put:
operationId: LayoutsController_update
summary: Novu Update a Layout
description: Updates the details of an existing layout, here **layoutId** is the identifier of the layout
parameters:
- name: layoutId
required: true
in: path
schema:
type: string
requestBody:
required: true
description: Layout update details
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateLayoutDto'
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/LayoutResponseDto'
'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:
- Layouts
security:
- secretKey: []
get:
operationId: LayoutsController_get
summary: Novu Retrieve a Layout
description: Fetches details of a specific layout by its unique identifier **layoutId**
parameters:
- name: layoutId
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/LayoutResponseDto'
'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:
- Layouts
security:
- secretKey: []
delete:
operationId: LayoutsController__delete
summary: Novu Delete a Layout
description: Removes a specific layout by its unique identifier **layoutId**
parameters:
- name: layoutId
required: true
in: path
description: The unique identifier of the layout
schema:
type: string
responses:
'204':
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:
- Layouts
security:
- secretKey: []
/v2/layouts/{layoutId}/duplicate:
post:
operationId: LayoutsController_duplicate
x-speakeasy-name-override: duplicate
summary: Novu Duplicate a Layout
description: Duplicates a layout by its unique identifier **layoutId**. This will create a new layout with the content of the original layout.
parameters:
- name: layoutId
required: true
in: path
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DuplicateLayoutDto'
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/LayoutResponseDto'
'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:
- Layouts
security:
- secretKey: []
/v2/layouts/{layoutId}/preview:
post:
operationId: LayoutsController_generatePreview
x-speakeasy-name-override: generatePreview
summary: Novu Generate Layout Preview
description: Generates a preview for a layout by its unique identifier **layoutId**
parameters:
- name: layoutId
required: true
in: path
schema:
type: string
requestBody:
required: true
description: Layout preview generation details
content:
application/json:
schema:
$ref: '#/components/schemas/LayoutPreviewRequestDto'
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/GenerateLayoutPreviewResponseDto'
'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:
- Layouts
security:
- secretKey: []
/v2/layouts/{layoutId}/usage:
get:
operationId: LayoutsController_getUsage
x-speakeasy-name-override: usage
summary: Novu Get Layout Usage
description: Retrieves information about workflows that use the specified layout by its unique identifier **layoutId**
parameters:
- name: layoutId
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/GetLayoutUsageResponseDto'
'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:
- Layouts
security:
- secretKey: []
/v1/messages:
get:
operationId: MessagesController_getMessages
summary: Novu List All Messages
description: "List all messages for the current environment. \n This API supports filtering by **channel**, **subscriberId**, and **transactionId**. \n This API returns a paginated list of messages."
parameters:
- name: channel
required: false
in: query
schema:
$ref: '#/components/schemas/ChannelTypeEnum'
- name: subscriberId
required: false
in: query
schema:
type: string
- name: transactionId
required: false
in: query
schema:
type: array
items:
type: string
- name: contextKeys
required: false
in: query
description: 'Filter by exact context keys, order insensitive (format: "type:id")'
example:
- tenant:org-123
- region:us-east-1
schema:
type: array
items:
type: string
- name: page
required: false
in: query
schema:
default: 0
type: number
- name: limit
required: false
in: query
schema:
default: 10
type: number
responses:
'200':
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/MessagesResponseDto'
'400':
description: Bad Request
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'401':
description: Unauthorized
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'403':
description: Forbidden
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'404':
description: Not Found
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'405':
description: Method Not Allowed
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'409':
description: Conflict
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'413':
description: Payload Too Large
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'414':
description: URI Too Long
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'415':
description: Unsupported Media Type
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'422':
description: Unprocessable Entity
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorDto'
'429':
description: 'The client has sent too many requests in a given amount of time. '
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
Retry-After:
$ref: '#/components/headers/Retry-After'
content:
application/json:
schema:
type: string
example: API rate limit exceeded
'500':
description: Internal Server Error
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'503':
description: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
Retry-After:
$ref: '#/components/headers/Retry-After'
content:
application/json:
schema:
type: string
example: Please wait some time, then try again.
tags:
- Messages
security:
- secretKey: []
/v1/messages/{messageId}:
delete:
operationId: MessagesController_deleteMessage
summary: Novu Delete a Message
description: "Delete a message entity from the Novu platform by **messageId**. \n This action is irreversible. **messageId** is required and of mongodbId type."
parameters:
- name: messageId
required: true
in: path
example: 507f1f77bcf86cd799439011
schema:
type: string
responses:
'200':
description: OK
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
properties:
data:
$ref: '#/components/schemas/DeleteMessageResponseDto'
'400':
description: Bad Request
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'401':
description: Unauthorized
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'403':
description: Forbidden
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'404':
description: Not Found
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'405':
description: Method Not Allowed
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'409':
description: Conflict
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'413':
description: Payload Too Large
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'414':
description: URI Too Long
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'415':
description: Unsupported Media Type
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'422':
description: Unprocessable Entity
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorDto'
'429':
description: 'The client has sent too many requests in a given amount of time. '
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
Retry-After:
$ref: '#/components/headers/Retry-After'
content:
application/json:
schema:
type: string
example: API rate limit exceeded
'500':
description: Internal Server Error
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'503':
description: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
Retry-After:
$ref: '#/components/headers/Retry-After'
content:
application/json:
schema:
type: string
example: Please wait some time, then try again.
tags:
- Messages
security:
- secretKey: []
/v1/messages/transaction/{transactionId}:
delete:
operationId: MessagesController_deleteMessagesByTransactionId
x-speakeasy-name-override: deleteByTransactionId
summary: Novu Delete Messages by TransactionId
description: "Delete multiple messages from the Novu platform using **transactionId** of triggered event. \n This API supports filtering by **channel** and delete all messages associated with the **transactionId**."
parameters:
- name: channel
required: false
in: query
description: The channel of the message to be deleted
schema:
enum:
- in_app
- email
- sms
- chat
- push
type: string
- name: transactionId
required: true
in: path
example: 507f1f77bcf86cd799439011
schema:
type: string
responses:
'204':
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
description: ''
'400':
description: Bad Request
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'401':
description: Unauthorized
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'403':
description: Forbidden
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'404':
description: Not Found
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'405':
description: Method Not Allowed
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'409':
description: Conflict
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'413':
description: Payload Too Large
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'414':
description: URI Too Long
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'415':
description: Unsupported Media Type
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'422':
description: Unprocessable Entity
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ValidationErrorDto'
'429':
description: 'The client has sent too many requests in a given amount of time. '
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
Retry-After:
$ref: '#/components/headers/Retry-After'
content:
application/json:
schema:
type: string
example: API rate limit exceeded
'500':
description: Internal Server Error
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorDto'
'503':
description: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
Retry-After:
$ref: '#/components/headers/Retry-After'
content:
application/json:
schema:
type: string
example: Please wait some time, then try again.
tags:
- Messages
security:
- secretKey: []
/v1/topics/{topicKey}/subscribers/{externalSubscriberId}:
get:
operationId: TopicsV1Controller_getTopicSubscriber
x-speakeasy-group: Topics.Subscribers
summary: Novu Check Topic Subscriber
description: Check if a subscriber belongs to a certain topic
parameters:
- name: externalSubscriberId
required: true
in: path
description: The external subscriber id
schema:
type: string
- name: topicKey
required: true
in: path
description: The topic key
schema:
type: string
responses:
'200':
headers:
Content-Type:
$ref: '#/components/headers/Content-Type'
RateLimit-Limit:
$ref: '#/components/headers/RateLimit-Limit'
RateLimit-Remaining:
$ref: '#/components/headers/RateLimit-Remaining'
RateLimit-Reset:
$ref: '#/components/headers/RateLimit-Reset'
RateLimit-Policy:
$ref: '#/components/headers/RateLimit-Policy'
Idempotency-Key:
$ref: '#/components/headers/Idempotency-Key'
Idempotency-Replay:
$ref: '#/components/headers/Idempotency-Replay'
description: ''
content:
application/json:
schema:
$ref: '#/components/schemas/TopicSubscriberDto'
'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:
- Topics
security:
- secretKey: []
/v2/topics:
get:
operationId: TopicsController_listTopics
x-speakeasy-name-override: list
summary: Novu List All Topics
description: "This api returns a paginated list of topics.\n Topics can be filtered by **key**, **name**, or **includeCursor** to paginate through the list. \n Checkout all available filters in the query section."
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 (max 100)
example: 10
schema:
maximum: 100
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: key
required: false
in: query
description: Key of the topic to filter results.
schema:
type: string
- name: name
required: false
in: query
description: Name of the topic to filter results.
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/ListTopicsResponseDto'
'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:
- Topics
security:
- secretKey: []
post:
operationId: TopicsController_upsertTopic
x-speakeasy-name-override: create
summary: Novu Create a Topic
description: Creates a new topic if it does not exist, or updates an existing topic if it already exists. Use ?failIfExists=true to prevent updates.
parameters:
- name: failIfExists
required: false
in: query
description: If true, the request will fail if a topic with the same key already exists
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUpdateTopicRequestDto'
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/TopicResponseDto'
'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/TopicResponseDto'
'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: Topic already exists (when query param failIfExists=true)
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/TopicResponseDto'
'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:
- Topics
security:
- secretKey: []
/v2/topics/{topicKey}:
get:
operationId: TopicsController_getTopic
x-speakeasy-name-override: get
summary: Novu Retrieve a Topic
description: Retrieve a topic by its unique key identifier **topicKey**
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
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/TopicResponseDto'
'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:
- Topics
security:
- secretKey: []
patch:
operationId: TopicsController_updateTopic
x-speakeasy-name-override: update
summary: Novu Update a Topic
description: Update a topic name by its unique key identifier **topicKey**
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTopicRequestDto'
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/TopicResponseDto'
'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:
- Topics
security:
- secretKey: []
delete:
operationId: TopicsController_deleteTopic
summary: Novu Delete a Topic
description: "Delete a topic by its unique key identifier **topicKey**. \n This action is irreversible and will remove all subscriptions to the topic."
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
schema:
type: string
responses:
'200':
description: Topic deleted successfully
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/DeleteTopicResponseDto'
'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:
- Topics
security:
- secretKey: []
/v2/topics/{topicKey}/subscriptions:
get:
operationId: TopicsController_listTopicSubscriptions
x-speakeasy-group: Topics.Subscriptions
summary: Novu List Topic Subscriptions
description: |-
List all subscriptions of subscribers for a topic.
Checkout all available filters in the query section.
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
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 (max 100)
example: 10
schema:
maximum: 100
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: subscriberId
required: false
in: query
description: Filter by subscriber ID
schema:
type: string
- name: contextKeys
required: false
in: query
description: 'Filter by exact context keys, order insensitive (format: "type:id")'
example:
- tenant:org-123
- region:us-east-1
schema:
type: array
items:
type: string
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/ListTopicSubscriptionsResponseDto'
'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:
- Topics
security:
- secretKey: []
post:
operationId: TopicsController_createTopicSubscriptions
x-speakeasy-name-override: create
x-speakeasy-group: Topics.Subscriptions
summary: Novu Create Topic Subscriptions
description: "This api will create subscription for subscriberIds for a topic. \n Its like subscribing to a common interest group. if topic does not exist, it will be created."
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTopicSubscriptionsRequestDto'
responses:
'201':
description: Subscriptions created successfully
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/CreateSubscriptionsResponseDto'
'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:
- Topics
security:
- secretKey: []
delete:
operationId: TopicsController_deleteTopicSubscriptions
x-speakeasy-name-override: delete
x-speakeasy-group: Topics.Subscriptions
summary: Novu Delete Topic Subscriptions
description: Delete subscriptions for subscriberIds for a topic.
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DeleteTopicSubscriptionsRequestDto'
responses:
'200':
description: Subscriptions deleted successfully
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/DeleteTopicSubscriptionsResponseDto'
'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:
- Topics
security:
- secretKey: []
/v2/topics/{topicKey}/subscriptions/{identifier}:
get:
operationId: TopicsController_getTopicSubscription
x-speakeasy-name-override: getSubscription
x-speakeasy-group: Topics.Subscriptions
summary: Novu Retrieve a Topic Subscription
description: Retrieve a subscription by its unique identifier for a topic.
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
schema:
type: string
- name: identifier
required: true
in: path
description: The unique identifier of the subscription
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/SubscriptionDetailsResponseDto'
'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:
- Topics
security:
- secretKey: []
patch:
operationId: TopicsController_updateTopicSubscription
x-speakeasy-name-override: update
x-speakeasy-group: Topics.Subscriptions
summary: Novu Update a Topic Subscription
description: Update a subscription by its unique identifier for a topic. You can update the preferences and name associated with the subscription.
parameters:
- name: topicKey
required: true
in: path
description: The key identifier of the topic
schema:
type: string
- name: identifier
required: true
in: path
description: The unique identifier of the subscription
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateTopicSubscriptionRequestDto'
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/SubscriptionResponseDto'
'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:
- Topics
security:
- secretKey: []
/v1/environment-variables:
get:
operationId: EnvironmentVariablesController_listEnvironmentVariables
summary: Novu List All Variables
description: Returns all environment variables for the current organization. Secret values are masked.
parameters:
- name: search
required: false
in: query
description: Filter variables by key (case-insensitive partial match)
schema:
maxLength: 256
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:
type: array
items:
$ref: '#/components/schemas/EnvironmentVariableResponseDto'
'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:
- Environment Variables
security:
- secretKey: []
post:
operationId: EnvironmentVariablesController_createEnvironmentVariable
summary: Novu Create a Variable
description: Creates a new environment variable. Keys must be uppercase with underscores only (e.g. BASE_URL). Secret variables are encrypted at rest and masked in API responses.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEnvironmentVariableRequestDto'
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/EnvironmentVariableResponseDto'
'400':
description: A submitted value equals the public secret mask placeholder, which is reserved.
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: An environment variable with the same key already exists.
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:
type: string
example: Request with key 3909d656-d4fe-4e80-ba86-90d3861afcd7 is currently being processed. Please retry after 1 second
'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:
- Environment Variables
security:
- secretKey: []
/v1/environment-variables/{variableKey}/usage:
get:
operationId: EnvironmentVariablesController_getEnvironmentVariableUsage
x-speakeasy-name-override: usage
summary: Novu Retrieve a Variable Usage
description: Returns the workflows that reference this environment variable via `{{env.KEY}}` in their step controls. **variableId** is required.
parameters:
- name: variableKey
required: true
in: path
description: The unique key of the environment variable (e.g. BASE_URL)
example: BASE_URL
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/GetEnvironmentVariableUsageResponseDto'
'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: Environment variable 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'
'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:
- Environment Variables
security:
- secretKey: []
/v1/environment-variables/{variableKey}:
get:
operationId: EnvironmentVariablesController_getEnvironmentVariable
x-speakeasy-name-override: retrieve
summary: Novu Get Environment Variable
description: Returns a single environment variable by key. Secret values are masked.
parameters:
- name: variableKey
required: true
in: path
description: The unique key of the environment variable (e.g. BASE_URL)
example: BASE_URL
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/EnvironmentVariableResponseDto'
'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: Environment variable 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'
'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:
- Environment Variables
security:
- secretKey: []
patch:
operationId: EnvironmentVariablesController_updateEnvironmentVariable
summary: Novu Update a Variable
description: Updates an existing environment variable. Providing `values` merges them into the existing per-environment values by `_environmentId`; envs not present in the request keep their stored value. Submitting the masked secret placeholder (the value returned by read endpoints for secret variables) as a real value is rejected.
parameters:
- name: variableKey
required: true
in: path
description: The unique key of the environment variable (e.g. BASE_URL)
example: BASE_URL
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEnvironmentVariableRequestDto'
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/EnvironmentVariableResponseDto'
'400':
description: A submitted value equals the public secret mask placeholder, or no fields were provided to update.
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: Environment variable 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'
'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:
- Environment Variables
security:
- secretKey: []
delete:
operationId: EnvironmentVariablesController_deleteEnvironmentVariable
summary: Novu Delete Environment Variable
description: Deletes an environment variable by key.
parameters:
- name: variableKey
required: true
in: path
description: The unique key of the environment variable (e.g. BASE_URL)
example: BASE_URL
schema:
type: string
responses:
'204':
description: The environment variable has been deleted.
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'
'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: Environment variable 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'
'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:
- Environment Variables
security:
- secretKey: []
/v2/workflows:
post:
operationId: WorkflowController_create
summary: Novu Create a Workflow
description: Creates a new workflow in the Novu Cloud environment
parameters: []
requestBody:
required: true
description: Workflow creation details
content:
application/json:
schema:
$ref: '#/components/schemas/CreateWorkflowDto'
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/WorkflowResponseDto'
'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:
- Workflows
security:
- secretKey: []
get:
operationId: WorkflowController_searchWorkflows
x-speakeasy-name-override: list
summary: Novu List All Workflows
description: Retrieves a list of workflows with optional filtering and pagination
parameters:
- name: limit
required: false
in: query
description: Number of items to return per page
example: 10
schema:
type: number
- name: offset
required: false
in: query
description: Number of items to skip before starting to return results
example: 0
schema:
type: number
- name: orderDirection
required: false
in: query
description: Direction of sorting
schema:
$ref: '#/components/schemas/DirectionEnum'
- name: orderBy
required: false
in: query
description: Field to sort the results by
schema:
$ref: '#/components/schemas/WorkflowResponseDtoSortField'
- name: query
required: false
in: query
description: Search query to filter workflows
schema:
type: string
- name: tags
required: false
in: query
description: Filter workflows by tags
schema:
type: array
items:
type: string
- name: status
required: false
in: query
description: Filter workflows by status
schema:
type: array
items:
$ref: '#/components/schemas/WorkflowStatusEnum'
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/ListWorkflowResponse'
'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:
- Workflows
security:
- secretKey: []
/v2/workflows/{workflowId}/sync:
put:
operationId: WorkflowController_sync
x-speakeasy-name-override: sync
summary: Novu Sync a Workflow
description: Synchronizes a workflow to the target environment
parameters:
- name: workflowId
required: true
in: path
schema:
type: string
requestBody:
required: true
description: Sync workflow details
content:
application/json:
schema:
$ref: '#/components/schemas/SyncWorkflowDto'
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/WorkflowResponseDto'
'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:
- Workflows
security:
- secretKey: []
/v2/workflows/{workflowId}:
put:
operationId: WorkflowController_update
summary: Novu Update a Workflow
description: Updates the details of an existing workflow, here **workflowId** is the identifier of the workflow
parameters:
- name: workflowId
required: true
in: path
schema:
type: string
requestBody:
required: true
description: Workflow update details
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateWorkflowDto'
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/WorkflowResponseDto'
'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:
- Workflows
security:
- secretKey: []
get:
operationId: WorkflowController_getWorkflow
x-speakeasy-name-override: get
summary: Novu Retrieve a Workflow
description: Fetches details of a specific workflow by its unique identifier **workflowId**
parameters:
- name: workflowId
required: true
in: path
schema:
type: string
- name: environmentId
required: false
in: query
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/WorkflowResponseDto'
'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:
- Workflows
security:
- secretKey: []
delete:
operationId: WorkflowController_removeWorkflow
x-speakeasy-name-override: delete
summary: Novu Delete a Workflow
description: Removes a specific workflow by its unique identifier **workflowId**
parameters:
- name: workflowId
required: true
in: path
schema:
type: string
responses:
'204':
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:
- Workflows
security:
- secretKey: []
patch:
operationId: WorkflowController_patchWorkflow
x-speakeasy-name-override: patch
summary: Novu Update a Workflow
description: Partially updates a workflow by its unique identifier **workflowId**
parameters:
- name: workflowId
required: true
in: path
schema:
type: string
requestBody:
required: true
description: Workflow patch details
content:
application/json:
schema:
$ref: '#/components/schemas/PatchWorkflowDto'
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/WorkflowResponseDto'
'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:
- Workflows
security:
- secretKey: []
/v2/workflows/{workflowId}/step/{stepId}/preview:
post:
operationId: WorkflowController_generatePreview
x-speakeasy-name-override: generatePreview
x-speakeasy-group: Workflows.Steps
summary: Novu Generate a Step Preview
description: Generates a preview for a specific workflow step by its unique identifier **stepId**
parameters:
- name: workflowId
required: true
in: path
schema:
type: string
- name: stepId
required: true
in: path
schema:
type: string
requestBody:
required: true
description: Preview generation details
content:
application/json:
schema:
$ref: '#/components/schemas/GeneratePreviewRequestDto'
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/GeneratePreviewResponseDto'
'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:
- Workflows
security:
- secretKey: []
/v2/workflows/{workflowId}/steps/{stepId}:
get:
operationId: WorkflowController_getWorkflowStepData
x-speakeasy-name-override: retrieve
x-speakeasy-group: Workflows.Steps
summary: Novu Retrieve Workflow Step
description: Retrieves data for a specific step in a workflow
parameters:
- name: workflowId
required: true
in: path
schema:
type: string
- name: stepId
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/StepResponseDto'
'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:
- Workflows
security:
- secretKey: []
/v2/environments/{environmentId}/tags:
get:
operationId: EnvironmentsController_getEnvironmentTags
x-speakeasy-name-override: getTags
summary: Novu List Environment Tags
description: Retrieve all unique tags used in workflows within the specified environment. These tags can be used for filtering workflows.
parameters:
- name: environmentId
required: true
in: path
description: Environment internal ID (MongoDB ObjectId) or identifier
example: 6615943e7ace93b0540ae377
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:
type: array
items:
$ref: '#/components/schemas/GetEnvironmentTagsDto'
'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:
- Environments
security:
- secretKey: []
/v2/environments/{targetEnvironmentId}/publish:
post:
operationId: EnvironmentsController_publishEnvironment
x-speakeasy-name-override: publish
summary: Novu Publish Resources to Target Environment
description: Publishes all workflows and resources from the source environment to the target environment. Optionally specify specific resources to publish or use dryRun mode to preview changes.
parameters:
- name: targetEnvironmentId
required: true
in: path
description: Target environment ID (MongoDB ObjectId) to publish resources to
example: 6615943e7ace93b0540ae377
schema:
type: string
requestBody:
required: true
description: Publish request configuration
content:
application/json:
schema:
$ref: '#/components/schemas/PublishEnvironmentRequestDto'
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/PublishEnvironmentResponseDto'
'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:
- Environments
security:
- secretKey: []
/v2/environments/{targetEnvironmentId}/diff:
post:
operationId: EnvironmentsController_diffEnvironment
x-speakeasy-name-override: diff
summary: Novu Compare Resources Between Environments
description: Compares workflows and other resources between the source and target environments, returning detailed diff information including additions, modifications, and deletions.
parameters:
- name: targetEnvironmentId
required: true
in: path
description: Target environment ID (MongoDB ObjectId) to compare against
example: 6615943e7ace93b0540ae377
schema:
type: string
requestBody:
required: true
description: Diff request configuration
content:
application/json:
schema:
$ref: '#/components/schemas/DiffEnvironmentRequestDto'
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/DiffEnvironmentResponseDto'
'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:
- Environments
security:
- secretKey: []
/v1/channel-connections:
get:
operationId: ChannelConnectionsController_listChannelConnections
x-speakeasy-name-override: list
summary: Novu List All Channel Connections
description: List all channel connections for a resource.
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 (max 100)
example: 10
schema:
maximum: 100
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: subscriberId
required: false
in: query
description: The subscriber ID to filter results by
example: subscriber-123
schema:
type: string
- name: channel
required: false
in: query
description: Filter by channel type (email, sms, push, chat, etc.).
example: chat
schema:
enum:
- in_app
- email
- sms
- chat
- push
type: string
- name: providerId
required: false
in: query
description: Filter by provider identifier (e.g., sendgrid, twilio, slack, etc.).
example: slack
schema:
$ref: '#/components/schemas/ProvidersIdEnum'
- name: integrationIdentifier
required: false
in: query
description: Filter by integration identifier.
example: slack-prod
schema:
type: string
- name: contextKeys
required: false
in: query
description: 'Filter by exact context keys, order insensitive (format: "type:id")'
example:
- tenant:org-123
- region:us-east-1
schema:
type: array
items:
type: string
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/ListChannelConnectionsResponseDto'
'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:
- Channel Connections
security:
- secretKey: []
post:
operationId: ChannelConnectionsController_createChannelConnection
x-speakeasy-name-override: create
summary: Novu Create a Channel Connection
description: Create a new channel connection for a resource for given integration. Only one channel connection is allowed per resource and integration.
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateChannelConnectionRequestDto'
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/GetChannelConnectionResponseDto'
'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:
- Channel Connections
security:
- secretKey: []
/v1/channel-connections/{identifier}:
get:
operationId: ChannelConnectionsController_getChannelConnectionByIdentifier
x-speakeasy-name-override: retrieve
summary: Novu Retrieve a Channel Connection
description: Retrieve a specific channel connection by its unique identifier.
parameters:
- name: identifier
required: true
in: path
description: The unique identifier of the channel connection
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/GetChannelConnectionResponseDto'
'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:
- Channel Connections
security:
- secretKey: []
patch:
operationId: ChannelConnectionsController_updateChannelConnection
x-speakeasy-name-override: update
summary: Novu Update a Channel Connection
description: Update an existing channel connection by its unique identifier.
parameters:
- name: identifier
required: true
in: path
description: The unique identifier of the channel connection
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateChannelConnectionRequestDto'
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/GetChannelConnectionResponseDto'
'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:
- Channel Connections
security:
- secretKey: []
delete:
operationId: ChannelConnectionsController_deleteChannelConnection
x-speakeasy-name-override: delete
summary: Novu Delete a Channel Connection
description: Delete a specific channel connection by its unique identifier.
parameters:
- name: identifier
required: true
in: path
description: The unique identifier of the channel connection
schema:
type: string
responses:
'204':
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:
- Channel Connections
security:
- secretKey: []
/v1/channel-endpoints:
get:
operationId: ChannelEndpointsController_listChannelEndpoints
x-speakeasy-name-override: list
summary: Novu List All Channel Endpoints
description: List all channel endpoints for a resource based on query filters.
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 (max 100)
example: 10
schema:
maximum: 100
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: subscriberId
required: false
in: query
description: The subscriber ID to filter results by
example: subscriber-123
schema:
type: string
- name: contextKeys
required: false
in: query
description: 'Filter by exact context keys, order insensitive (format: "type:id")'
example:
- tenant:org-123
- region:us-east-1
schema:
type: array
items:
type: string
- name: channel
required: false
in: query
description: Channel type to filter results.
schema:
enum:
- in_app
- email
- sms
- chat
- push
type: string
- name: providerId
required: false
in: query
description: Filter by provider identifier (e.g., sendgrid, twilio, slack, etc.).
example: slack
schema:
$ref: '#/components/schemas/ProvidersIdEnum'
- name: integrationIdentifier
required: false
in: query
description: Integration identifier to filter results.
example: slack-prod
schema:
type: string
- name: connectionIdentifier
required: false
in: query
description: Connection identifier to filter results.
example: slack-connection-abc123
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/ListChannelEndpointsResponseDto'
'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:
- Channel Endpoints
security:
- secretKey: []
- secretKey: []
post:
operationId: ChannelEndpointsController_createChannelEndpoint
x-speakeasy-name-override: create
summary: Novu Create a Channel Endpoint
description: Create a new channel endpoint for a resource.
parameters: []
requestBody:
required: true
description: Channel endpoint creation request. The structure varies based on the type field.
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/CreateSlackChannelEndpointDto'
- $ref: '#/components/schemas/CreateSlackUserEndpointDto'
- $ref: '#/components/schemas/CreateWebhookEndpointDto'
- $ref: '#/components/schemas/CreatePhoneEndpointDto'
- $ref: '#/components/schemas/CreateMsTeamsChannelEndpointDto'
- $ref: '#/components/schemas/CreateMsTeamsUserEndpointDto'
- $ref: '#/components/schemas/CreateTelegramChatEndpointDto'
discriminator:
propertyName: type
mapping:
slack_channel: '#/components/schemas/CreateSlackChannelEndpointDto'
slack_user: '#/components/schemas/CreateSlackUserEndpointDto'
webhook: '#/components/schemas/CreateWebhookEndpointDto'
phone: '#/components/schemas/CreatePhoneEndpointDto'
ms_teams_channel: '#/components/schemas/CreateMsTeamsChannelEndpointDto'
ms_teams_user: '#/components/schemas/CreateMsTeamsUserEndpointDto'
telegram_chat: '#/components/schemas/CreateTelegramChatEndpointDto'
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/GetChannelEndpointResponseDto'
'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:
- Channel Endpoints
security:
- secretKey: []
- secretKey: []
/v1/channel-endpoints/{identifier}:
get:
operationId: ChannelEndpointsController_getChannelEndpoint
x-speakeasy-name-override: retrieve
summary: Novu Retrieve a Channel Endpoint
description: Retrieve a specific channel endpoint by its unique identifier.
parameters:
- name: identifier
required: true
in: path
description: The unique identifier of the channel endpoint
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/GetChannelEndpointResponseDto'
'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:
- Channel Endpoints
security:
- secretKey: []
- secretKey: []
patch:
operationId: ChannelEndpointsController_updateChannelEndpoint
x-speakeasy-name-override: update
summary: Novu Update a Channel Endpoint
description: Update an existing channel endpoint by its unique identifier.
parameters:
- name: identifier
required: true
in: path
description: The unique identifier of the channel endpoint
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateChannelEndpointRequestDto'
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/GetChannelEndpointResponseDto'
'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:
- Channel Endpoints
security:
- secretKey: []
- secretKey: []
delete:
operationId: ChannelEndpointsController_deleteChannelEndpoint
x-speakeasy-name-override: delete
summary: Novu Delete a Channel Endpoint
description: Delete a specific channel endpoint by its unique identifier.
parameters:
- name: identifier
required: true
in: path
description: The unique identifier of the channel endpoint
schema:
type: string
responses:
'204':
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:
- Channel Endpoints
security:
- secretKey: []
- secretKey: []
/v2/translations/upload:
post:
operationId: TranslationController_uploadTranslationFiles
x-speakeasy-name-override: upload
summary: Novu Upload Translation Files
description: Upload one or more JSON translation files for a specific workflow. Files name must match the locale, e.g. en_US.json. Supports both "files" and "files[]" field names for backwards compatibility.
parameters: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
resourceId:
type: string
description: The resource ID to associate localizations with. Accepts identifier or slug format
example: welcome-email
resourceType:
type: string
enum:
- workflow
- layout
description: The resource type to associate localizations with
files:
type: array
items:
type: string
format: binary
description: One or more JSON translation files. Filenames must match locale format (e.g., en_US.json, fr_FR.json). Field name can be "files" or "files[]".
required:
- resourceId
- resourceType
- files
responses:
'200':
description: Upload results
content:
application/json:
schema:
$ref: '#/components/schemas/UploadTranslationsResponseDto'
tags:
- Translations
security:
- secretKey: []
- secretKey: []
/v2/translations:
post:
operationId: TranslationController_createTranslationEndpoint
x-speakeasy-name-override: create
summary: Novu Create a Translation
description: Create a translation for a specific workflow and locale, if the translation already exists, it will be updated
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateTranslationRequestDto'
responses:
'200':
description: Translation created or updated successfully
content:
application/json:
schema:
$ref: '#/components/schemas/TranslationResponseDto'
tags:
- Translations
security:
- secretKey: []
- secretKey: []
/v2/translations/master-json:
get:
operationId: TranslationController_getMasterJsonEndpoint
x-speakeasy-name-override: retrieve
x-speakeasy-group: Translations.master
summary: Novu Retrieve Master Translations JSON
description: Retrieve all translations for a locale in master JSON format organized by resourceId (workflowId)
parameters:
- name: locale
required: false
in: query
description: Locale to export. If not provided, exports organization default locale
example: en_US
schema:
type: string
responses:
'200':
description: Master translations JSON retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetMasterJsonResponseDto'
tags:
- Translations
security:
- secretKey: []
- secretKey: []
post:
operationId: TranslationController_importMasterJsonEndpoint
x-speakeasy-name-override: import
x-speakeasy-group: Translations.Master
summary: Novu Import Master Translations JSON
description: Import translations for multiple workflows from master JSON format for a specific locale
parameters: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ImportMasterJsonRequestDto'
responses:
'200':
description: Master translations imported successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ImportMasterJsonResponseDto'
tags:
- Translations
security:
- secretKey: []
- secretKey: []
/v2/translations/master-json/upload:
post:
operationId: TranslationController_uploadMasterJsonEndpoint
x-speakeasy-name-override: upload
x-speakeasy-group: Translations.Master
summary: Novu Upload Master Translations JSON File
description: Upload a master JSON file containing translations for multiple workflows. Locale is automatically detected from filename (e.g., en_US.json)
parameters: []
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
file:
type: string
format: binary
description: Master JSON file with locale as filename (e.g., en_US.json)
required:
- file
responses:
'200':
description: Master translations uploaded successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ImportMasterJsonResponseDto'
tags:
- Translations
security:
- secretKey: []
- secretKey: []
/v2/translations/group/{resourceType}/{resourceId}:
get:
operationId: TranslationController_getTranslationGroupEndpoint
x-speakeasy-name-override: retrieve
x-speakeasy-group: Translations.Groups
summary: Novu Retrieve a Translation Group
description: Retrieves a single translation group by resource type (workflow, layout) and resource ID (workflowId, layoutId)
parameters:
- name: resourceType
required: true
in: path
description: Resource type
example: workflow
schema:
enum:
- workflow
- layout
type: string
- name: resourceId
required: true
in: path
description: Resource ID
example: welcome-email
schema:
type: string
responses:
'200':
description: Translation group details
content:
application/json:
schema:
$ref: '#/components/schemas/TranslationGroupDto'
'404':
description: Translation group not found
tags:
- Translations
security:
- secretKey: []
- secretKey: []
/v2/translations/{resourceType}/{resourceId}/{locale}:
get:
operationId: TranslationController_getSingleTranslation
x-speakeasy-name-override: retrieve
summary: Novu Retrieve a Translation
description: Retrieve a specific translation by resource type, resource ID and locale
parameters:
- name: resourceType
required: true
in: path
description: Resource type
schema:
enum:
- workflow
- layout
type: string
- name: resourceId
required: true
in: path
description: Resource ID
example: welcome-email
schema:
type: string
- name: locale
required: true
in: path
description: Locale code
example: en_US
schema:
type: string
responses:
'200':
description: Translation found
content:
application/json:
schema:
$ref: '#/components/schemas/TranslationResponseDto'
'404':
description: Translation not found
tags:
- Translations
security:
- secretKey: []
- secretKey: []
delete:
operationId: TranslationController_deleteTranslationEndpoint
x-speakeasy-name-override: delete
summary: Novu Delete a Translation
description: Delete a specific translation by resource type, resource ID and locale
parameters:
- name: resourceType
required: true
in: path
description: Resource type
schema:
enum:
- workflow
- layout
type: string
- name: resourceId
required: true
in: path
description: Resource ID
schema:
type: string
- name: locale
required: true
in: path
description: Locale code
schema:
type: string
responses:
'204':
description: Translation deleted successfully
'404':
description: Translation not found
tags:
- Translations
security:
- secretKey: []
- secretKey: []
/v2/translations/{resourceType}/{resourceId}:
delete:
operationId: TranslationController_deleteTranslationGroupEndpoint
x-speakeasy-name-override: delete
x-speakeasy-group: Translations.Groups
summary: Novu Delete a Translation Group
description: Delete an entire translation group and all its translations
parameters:
- name: resourceType
required: true
in: path
description: Resource type
example: workflow
schema:
enum:
- workflow
- layout
type: string
- name: resourceId
required: true
in: path
description: Resource ID
example: welcome-email
schema:
type: string
responses:
'204':
description: Translation group deleted successfully
'404':
description: Translation group not found
tags:
- Translations
security:
- secretKey: []
- secretKey: []
/v2/inbound-webhooks/delivery-providers/{environmentId}/{integrationId}:
post:
operationId: InboundWebhooksController_handleWebhook
x-speakeasy-name-override: track
summary: Novu Track Provider Activity and Engagement Events
description: Track activity and engagement events for a specific delivery provider
parameters:
- name: environmentId
required: true
in: path
description: The environment identifier
schema:
type: string
- name: integrationId
required: true
in: path
description: The integration identifier for the delivery provider
schema:
type: string
requestBody:
required: true
description: Webhook event payload from the delivery provider
content:
application/json:
schema:
type: object
additionalProperties: true
description: Generic webhook payload from delivery providers
responses:
'200':
description: Successfully processed webhook events
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/WebhookResultDto'
tags:
- Activity
info:
title: Novu 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
tags:
- name: Events
description: Events represent a change in state of a subscriber. They are used to trigger workflows, and enable you to send notifications to subscribers based on their actions.
externalDocs:
url: https://docs.novu.co/workflows
- name: Subscribers
description: A subscriber in Novu represents someone who should receive a message. A subscriber's profile information contains important attributes about the subscriber that will be used in messages (name, email). The subscriber object can contain other key-value pairs that can be used to further personalize your messages.
externalDocs:
url: https://docs.novu.co/subscribers/subscribers
- name: Topics
description: Topics are a way to group subscribers together so that they can be notified of events at once. A topic is identified by a custom key. This can be helpful for things like sending out marketing emails or notifying users of new features. Topics can also be used to send notifications to the subscribers who have been grouped together based on their interests, location, activities and much more.
externalDocs:
url: https://docs.novu.co/subscribers/topics
- name: Integrations
description: With the help of the Integration Store, you can easily integrate your favorite delivery provider. During the runtime of the API, the Integrations Store is responsible for storing the configurations of all the providers.
externalDocs:
url: https://docs.novu.co/platform/integrations/overview
- name: Workflows
description: All notifications are sent via a workflow. Each workflow acts as a container for the logic and blueprint that are associated with a type of notification in your system.
externalDocs:
url: https://docs.novu.co/workflows
- name: Messages
description: A message in Novu represents a notification delivered to a recipient on a particular channel. Messages contain information about the request that triggered its delivery, a view of the data sent to the recipient, and a timeline of its lifecycle events. Learn more about messages.
externalDocs:
url: https://docs.novu.co/workflows/messages
- name: Environments
description: Environments allow you to manage different stages of your application development lifecycle. Each environment has its own set of API keys and configurations, enabling you to separate development, staging, and production workflows.
externalDocs:
url: https://docs.novu.co/platform/environments
- name: Layouts
description: Layouts are reusable wrappers for your email notifications.
externalDocs:
url: https://docs.novu.co/platform/workflow/layouts
- name: Translations
description: Used to localize your notifications to different languages.
externalDocs:
url: https://docs.novu.co/platform/workflow/advanced-features/translations
- name: Domains
description: Used to manage your inbound email domains.
externalDocs:
url: https://docs.novu.co/platform/domains
servers:
- url: https://api.novu.co
- url: https://eu.api.novu.co
components:
securitySchemes:
secretKey:
type: apiKey
name: Authorization
in: header
description: 'API key authentication. Allowed headers-- "Authorization: ApiKey ".'
x-speakeasy-example: YOUR_SECRET_KEY_HERE
schemas:
DataWrapperDto:
type: object
properties:
data:
type: object
required:
- data
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
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
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:
fieldName6:
messages:
- Undefined value
required:
- statusCode
- timestamp
- path
- errors
ApiKeyDto:
type: object
properties:
key:
type: string
description: API key
example: sk_test_1234567890abcdef
_userId:
type: string
description: User ID associated with the API key
example: 60d5ecb8b3b3a30015f3e1a4
hash:
type: string
description: Hashed representation of the API key
example: hash_value_here
required:
- key
- _userId
EnvironmentResponseDto:
type: object
properties:
_id:
type: string
description: Unique identifier of the environment
example: 60d5ecb8b3b3a30015f3e1a1
name:
type: string
description: Name of the environment
example: Production Environment
_organizationId:
type: string
description: Organization ID associated with the environment
example: 60d5ecb8b3b3a30015f3e1a2
identifier:
type: string
description: Unique identifier for the environment
example: prod-env-01
type:
enum:
- dev
- prod
type:
- string
- 'null'
description: Type of the environment
example: prod
apiKeys:
description: List of API keys associated with the environment
type: array
items:
$ref: '#/components/schemas/ApiKeyDto'
_parentId:
type: string
description: Parent environment ID
example: 60d5ecb8b3b3a30015f3e1a3
slug:
type: string
description: URL-friendly slug for the environment
example: production
required:
- _id
- name
- _organizationId
- identifier
CreateEnvironmentRequestDto:
type: object
properties:
name:
type: string
description: Name of the environment to be created
example: Production Environment
parentId:
type: string
description: MongoDB ObjectId of the parent environment (optional)
example: 60d5ecb8b3b3a30015f3e1a1
color:
type: string
description: Hex color code for the environment
example: '#3498db'
required:
- name
- color
InBoundParseDomainDto:
type: object
properties:
inboundParseDomain:
type: string
BridgeConfigurationDto:
type: object
properties:
url:
type: string
UpdateEnvironmentRequestDto:
type: object
properties:
name:
type: string
identifier:
type: string
parentId:
type: string
color:
type: string
dns:
$ref: '#/components/schemas/InBoundParseDomainDto'
bridge:
$ref: '#/components/schemas/BridgeConfigurationDto'
PayloadValidationErrorDto:
type: object
properties:
field:
type: string
description: Field path that failed validation
example: user.name
message:
type: string
description: Validation error message
example: must have required property 'name'
value:
description: The actual 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:
age: 25
schemaPath:
type: string
description: JSON Schema path where the validation failed
example: '#/required'
required:
- field
- message
PayloadValidationExceptionDto:
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
type:
type: string
description: Type identifier for payload validation errors
example: PAYLOAD_VALIDATION_ERROR
errors:
description: Array of detailed validation errors
example:
- field: user.name
message: must have required property 'name'
value:
age: 25
schemaPath: '#/required'
type: array
items:
$ref: '#/components/schemas/PayloadValidationErrorDto'
schema:
type: object
description: The JSON schema that was used for validation
example:
type: object
properties:
name:
type: string
age:
type: number
required:
- name
required:
- statusCode
- timestamp
- path
- type
- errors
TriggerEventResponseDto:
type: object
properties:
acknowledged:
type: boolean
description: Indicates whether the trigger was acknowledged or not
status:
enum:
- error
- trigger_not_active
- no_workflow_active_steps_defined
- no_workflow_steps_defined
- processed
- no_tenant_found
- invalid_recipients
type: string
description: Status of the trigger
error:
description: In case of an error, this field will contain the error message(s)
type: array
items:
type: string
transactionId:
type: string
description: The returned transaction ID of the trigger
activityFeedLink:
type: string
description: Link to the activity feed for this trigger event
jobData:
type: object
required:
- acknowledged
- status
ChannelCredentialsDto:
type: object
properties:
webhookUrl:
type: string
description: The URL for the webhook associated with the channel.
deviceTokens:
description: An array of device tokens for push notifications.
type: array
items:
type: string
SubscriberChannelDto:
type: object
properties:
providerId:
type: string
description: The ID of the chat or push provider.
enum:
- slack
- discord
- msteams
- mattermost
- ryver
- zulip
- grafana-on-call
- getstream
- rocket-chat
- whatsapp-business
- chat-webhook
- novu-slack
- telegram
- fcm
- apns
- expo
- one-signal
- pushpad
- push-webhook
- pusher-beams
- appio
integrationIdentifier:
type: string
description: An optional identifier for the integration.
credentials:
description: Credentials for the channel.
allOf:
- $ref: '#/components/schemas/ChannelCredentialsDto'
required:
- providerId
- credentials
SubscriberPayloadDto:
type: object
properties:
firstName:
type:
- string
- 'null'
description: First name of the subscriber
example: John
lastName:
type:
- string
- 'null'
description: Last name of the subscriber
example: Doe
email:
type:
- string
- 'null'
description: Email address of the subscriber
example: john.doe@example.com
phone:
type:
- string
- 'null'
description: Phone number of the subscriber
example: '+1234567890'
avatar:
type:
- string
- 'null'
description: Avatar URL or identifier
example: https://example.com/avatar.jpg
locale:
type:
- string
- 'null'
description: Locale of the subscriber
example: en-US
timezone:
type:
- string
- 'null'
description: Timezone of the subscriber
example: America/New_York
data:
type:
- object
- 'null'
description: Additional custom data associated with the subscriber
additionalProperties: true
subscriberId:
type: string
description: The internal identifier you used to create this subscriber, usually correlates to the id the user in your systems
minLength: 1
channels:
description: An optional array of subscriber channels.
type: array
items:
$ref: '#/components/schemas/SubscriberChannelDto'
required:
- subscriberId
TenantPayloadDto:
type: object
properties:
identifier:
type: string
name:
type: string
data:
type: object
TriggerRecipientsTypeEnum:
type: string
enum:
- Subscriber
- Topic
TopicPayloadDto:
type: object
properties:
topicKey:
type: string
minLength: 1
type:
$ref: '#/components/schemas/TriggerRecipientsTypeEnum'
exclude:
description: Optional array of subscriber IDs to exclude from the topic trigger
type: array
items:
type: string
required:
- topicKey
- type
StepsOverrides:
type: object
properties:
providers:
type: object
description: Passing the provider id and the provider specific configurations
example:
sendgrid:
templateId: '1234567890'
additionalProperties:
type: object
additionalProperties: true
layoutId:
type:
- string
- 'null'
description: Override the or remove the layout for this specific step
example: welcome-email-layout
EmailChannelOverrides:
type: object
properties:
layoutId:
type:
- string
- 'null'
description: Override or remove the layout for all email steps in the workflow
example: promotional-layout-2024
ChannelOverrides:
type: object
properties:
email:
description: Email channel specific overrides
allOf:
- $ref: '#/components/schemas/EmailChannelOverrides'
SeverityLevelEnum:
type: string
description: Severity of the workflow
enum:
- high
- medium
- low
- none
TriggerOverrides:
type: object
properties:
steps:
type: object
description: This could be used to override provider specific configurations or layout at the step level
example:
email-step:
providers:
sendgrid:
templateId: '1234567890'
layoutId: step-specific-layout
additionalProperties:
$ref: '#/components/schemas/StepsOverrides'
channels:
description: Channel-specific overrides that apply to all steps of a particular channel type. Step-level overrides take precedence over channel-level overrides.
example:
email:
layoutId: promotional-layout-2024
allOf:
- $ref: '#/components/schemas/ChannelOverrides'
providers:
type: object
description: Overrides the provider configuration for the entire workflow and all steps
example:
sendgrid:
templateId: '1234567890'
additionalProperties:
type: object
additionalProperties: true
email:
type: object
description: Override the email provider specific configurations for the entire workflow
deprecated: true
additionalProperties: true
push:
type: object
description: Override the push provider specific configurations for the entire workflow
deprecated: true
additionalProperties: true
sms:
type: object
description: Override the sms provider specific configurations for the entire workflow
deprecated: true
additionalProperties: true
chat:
type: object
description: Override the chat provider specific configurations for the entire workflow
deprecated: true
additionalProperties: true
layoutIdentifier:
type: string
description: Override the layout identifier for the entire workflow
deprecated: true
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
TriggerEventRequestDto:
type: object
properties:
name:
type: string
description: The trigger identifier of the workflow you wish to send. This identifier can be found on the workflow page.
example: workflow_identifier
x-speakeasy-name-override: workflowId
payload:
type: object
description: "The payload object is used to pass additional custom information that could be \n used to render the workflow, or perform routing rules based on it. \n This data will also be available when fetching the notifications feed from the API to display certain parts of the UI."
additionalProperties: true
example:
comment_id: string
post:
text: string
overrides:
description: This could be used to override provider specific configurations
example:
fcm:
data:
key: value
allOf:
- $ref: '#/components/schemas/TriggerOverrides'
to:
description: The recipients list of people who will receive the notification. Maximum number of recipients can be 100.
oneOf:
- type: array
items:
oneOf:
- $ref: '#/components/schemas/SubscriberPayloadDto'
- $ref: '#/components/schemas/TopicPayloadDto'
- type: string
minLength: 1
description: Unique identifier of a subscriber in your systems
example: SUBSCRIBER_ID
- type: string
minLength: 1
description: Unique identifier of a subscriber in your systems
example: SUBSCRIBER_ID
- $ref: '#/components/schemas/SubscriberPayloadDto'
- $ref: '#/components/schemas/TopicPayloadDto'
transactionId:
type: string
description: "A unique identifier for deduplication. If the same **transactionId** is sent again, \n the trigger is ignored. Useful to prevent duplicate notifications. The retention period depends on your billing tier."
actor:
description: |-
It is used to display the Avatar of the provided actor's subscriber id or actor object.
If a new actor object is provided, we will create a new subscriber in our system
oneOf:
- type: string
description: Unique identifier of a subscriber in your systems
- $ref: '#/components/schemas/SubscriberPayloadDto'
tenant:
description: |-
It is used to specify a tenant context during trigger event.
Existing tenants will be updated with the provided details.
oneOf:
- type: string
description: Unique identifier of a tenant in your system
- $ref: '#/components/schemas/TenantPayloadDto'
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
required:
- name
- to
BulkTriggerEventDto:
type: object
properties:
events:
type: array
items:
$ref: '#/components/schemas/TriggerEventRequestDto'
required:
- events
TriggerEventToAllRequestDto:
type: object
properties:
name:
type: string
description: The trigger identifier associated for the template you wish to send. This identifier can be found on the template page.
payload:
type: object
example:
comment_id: string
post:
text: string
description: "The payload object is used to pass additional information that \n could be used to render the template, or perform routing rules based on it. \n For In-App channel, payload data are also available in "
additionalProperties: true
overrides:
description: This could be used to override provider specific configurations
example:
fcm:
data:
key: value
additionalProperties:
type: object
additionalProperties: true
allOf:
- $ref: '#/components/schemas/TriggerOverrides'
transactionId:
type: string
description: A unique identifier for this transaction, we will generated a UUID if not provided.
actor:
description: "It is used to display the Avatar of the provided actor's subscriber id or actor object.\n If a new actor object is provided, we will create a new subscriber in our system\n "
oneOf:
- type: string
description: Unique identifier of a subscriber in your systems
- $ref: '#/components/schemas/SubscriberPayloadDto'
tenant:
description: "It is used to specify a tenant context during trigger event.\n If a new tenant object is provided, we will create a new tenant.\n "
oneOf:
- type: string
description: Unique identifier of a tenant in your system
- $ref: '#/components/schemas/TenantPayloadDto'
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
required:
- name
- payload
ChannelTypeEnum:
type: string
description: Channel type through which the message is sent
enum:
- in_app
- email
- sms
- chat
- push
StepTypeEnum:
type: string
description: Type of the step
enum:
- in_app
- email
- sms
- chat
- push
- digest
- trigger
- delay
- throttle
- custom
- http_request
ActivityNotificationSubscriberResponseDto:
type: object
properties:
firstName:
type: string
description: First name of the subscriber
subscriberId:
type: string
description: External unique identifier of the subscriber
_id:
type: string
description: Internal to Novu unique identifier of the subscriber
lastName:
type: string
description: Last name of the subscriber
email:
type: string
description: Email address of the subscriber
phone:
type: string
description: Phone number of the subscriber
required:
- subscriberId
- _id
ResourceOriginEnum:
type: string
description: Origin of the layout
enum:
- novu-cloud
- novu-cloud-v1
- external
NotificationTriggerVariable:
type: object
properties:
name:
type: string
description: Name of the variable
required:
- name
NotificationTriggerDto:
type: object
properties:
type:
type: string
enum:
- event
description: Type of the trigger
identifier:
type: string
description: Identifier of the trigger
variables:
description: Variables of the trigger
type: array
items:
$ref: '#/components/schemas/NotificationTriggerVariable'
subscriberVariables:
description: Subscriber variables of the trigger
type: array
items:
$ref: '#/components/schemas/NotificationTriggerVariable'
required:
- type
- identifier
- variables
ActivityNotificationTemplateResponseDto:
type: object
properties:
_id:
type: string
description: Unique identifier of the template
name:
type: string
description: Name of the template
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
triggers:
description: Triggers of the template
type: array
items:
$ref: '#/components/schemas/NotificationTriggerDto'
required:
- name
- triggers
DigestTypeEnum:
type: string
description: The Digest Type
enum:
- regular
- backoff
- timed
DigestUnitEnum:
type: string
description: 'Regular digest: Unit for backoff'
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
OrdinalEnum:
type: string
description: Ordinal position for the digest
enum:
- '1'
- '2'
- '3'
- '4'
- '5'
- last
OrdinalValueEnum:
type: string
description: Value of the ordinal
enum:
- day
- weekday
- weekend
- sunday
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
MonthlyTypeEnum:
type: string
description: Type of monthly schedule
enum:
- each
- 'on'
DigestTimedConfigDto:
type: object
properties:
atTime:
type: string
description: Time at which the digest is triggered
weekDays:
type: array
items:
type: string
enum:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
description: Days of the week for the digest
monthDays:
description: Specific days of the month for the digest
type: array
items:
type: number
ordinal:
$ref: '#/components/schemas/OrdinalEnum'
ordinalValue:
$ref: '#/components/schemas/OrdinalValueEnum'
monthlyType:
$ref: '#/components/schemas/MonthlyTypeEnum'
cronExpression:
type: string
description: Cron expression for scheduling
untilDate:
type: string
description: Until date for scheduling
DigestMetadataDto:
type: object
properties:
digestKey:
type: string
description: Optional key for the digest
amount:
type: number
description: Amount for the digest
unit:
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
type: string
description: Unit of the digest
type:
$ref: '#/components/schemas/DigestTypeEnum'
events:
type: array
items:
type: object
additionalProperties: true
description: Optional array of events associated with the digest, represented as key-value pairs
backoff:
type: boolean
description: 'Regular digest: Indicates if backoff is enabled for the regular digest'
backoffAmount:
type: number
description: 'Regular digest: Amount for backoff'
backoffUnit:
$ref: '#/components/schemas/DigestUnitEnum'
updateMode:
type: boolean
description: 'Regular digest: Indicates if the digest should update'
timed:
description: Configuration for timed digest
allOf:
- $ref: '#/components/schemas/DigestTimedConfigDto'
required:
- type
ExecutionDetailsStatusEnum:
type: string
description: Status of the execution detail
enum:
- Success
- Warning
- Failed
- Pending
- Queued
- ReadConfirmation
ProvidersIdEnum:
type: string
description: Provider ID of the job
enum:
- emailjs
- mailgun
- mailjet
- mandrill
- nodemailer
- postmark
- sendgrid
- sendinblue
- ses
- netcore
- infobip-email
- resend
- plunk
- mailersend
- mailtrap
- clickatell
- outlook365
- novu-email
- sparkpost
- email-webhook
- braze
- novu-email-agent
- nexmo
- plivo
- sms77
- sms-central
- sns
- telnyx
- twilio
- gupshup
- firetext
- infobip-sms
- burst-sms
- bulk-sms
- isend-sms
- forty-six-elks
- kannel
- maqsam
- termii
- africas-talking
- novu-sms
- sendchamp
- generic-sms
- clicksend
- bandwidth
- messagebird
- simpletexting
- azure-sms
- ring-central
- brevo-sms
- eazy-sms
- mobishastra
- afro-message
- unifonic
- smsmode
- imedia
- sinch
- isendpro-sms
- cm-telecom
- fcm
- apns
- expo
- one-signal
- pushpad
- push-webhook
- pusher-beams
- appio
- novu
- slack
- discord
- msteams
- mattermost
- ryver
- zulip
- grafana-on-call
- getstream
- rocket-chat
- whatsapp-business
- chat-webhook
- novu-slack
- telegram
- anthropic
ExecutionDetailsSourceEnum:
type: string
description: Source of the execution detail
enum:
- Credentials
- Internal
- Payload
- Webhook
ActivityNotificationExecutionDetailResponseDto:
type: object
properties:
_id:
type: string
description: Unique identifier of the execution detail
createdAt:
type: string
description: Creation time of the execution detail
status:
$ref: '#/components/schemas/ExecutionDetailsStatusEnum'
detail:
type: string
description: Detailed information about the execution
isRetry:
type: boolean
description: Whether the execution is a retry or not
isTest:
type: boolean
description: Whether the execution is a test or not
providerId:
$ref: '#/components/schemas/ProvidersIdEnum'
raw:
type:
- string
- 'null'
description: Raw data of the execution
source:
$ref: '#/components/schemas/ExecutionDetailsSourceEnum'
required:
- _id
- status
- detail
- isRetry
- isTest
- source
BuilderFieldTypeEnum:
type: string
enum:
- BOOLEAN
- TEXT
- DATE
- NUMBER
- STATEMENT
- LIST
- MULTI_LIST
- GROUP
FieldFilterPartDto:
type: object
properties:
field:
type: string
value:
type: string
operator:
type: string
enum:
- LARGER
- SMALLER
- LARGER_EQUAL
- SMALLER_EQUAL
- EQUAL
- NOT_EQUAL
- ALL_IN
- ANY_IN
- NOT_IN
- BETWEEN
- NOT_BETWEEN
- LIKE
- NOT_LIKE
- IN
'on':
type: string
enum:
- subscriber
- payload
required:
- field
- value
- operator
- 'on'
StepFilterDto:
type: object
properties:
isNegated:
type: boolean
type:
$ref: '#/components/schemas/BuilderFieldTypeEnum'
value:
type: string
enum:
- AND
- OR
children:
type: array
items:
$ref: '#/components/schemas/FieldFilterPartDto'
required:
- isNegated
- type
- value
- children
MessageTemplateDto:
type: object
properties: {}
ActivityNotificationStepResponseDto:
type: object
properties:
_id:
type: string
description: Unique identifier of the step
active:
type: boolean
description: Whether the step is active or not
replyCallback:
type: object
description: Reply callback settings
controlVariables:
type: object
description: Control variables
metadata:
type: object
description: Metadata for the workflow step
issues:
type: object
description: Step issues
filters:
description: Filter criteria for the step
type: array
items:
$ref: '#/components/schemas/StepFilterDto'
template:
description: Optional template for the step
allOf:
- $ref: '#/components/schemas/MessageTemplateDto'
variants:
description: Variants of the step
type: array
items:
$ref: '#/components/schemas/ActivityNotificationStepResponseDto'
_templateId:
type: string
description: The identifier for the template associated with this step
name:
type: string
description: The name of the step
_parentId:
type:
- string
- 'null'
description: The unique identifier for the parent step
required:
- _id
- active
- filters
- _templateId
ActivityNotificationJobResponseDto:
type: object
properties:
_id:
type: string
description: Unique identifier of the job
type:
enum:
- in_app
- email
- sms
- chat
- push
- digest
- trigger
- delay
- throttle
- custom
- http_request
type: string
description: Type of the job
digest:
description: Optional digest for the job, including metadata and events
allOf:
- $ref: '#/components/schemas/DigestMetadataDto'
executionDetails:
description: Execution details of the job
type: array
items:
$ref: '#/components/schemas/ActivityNotificationExecutionDetailResponseDto'
step:
description: Step details of the job
allOf:
- $ref: '#/components/schemas/ActivityNotificationStepResponseDto'
overrides:
type: object
description: Optional context object for additional error details.
additionalProperties: true
example:
workflowId: some_wf_id
stepId: some_wf_id
payload:
type: object
description: Optional payload for the job
providerId:
$ref: '#/components/schemas/ProvidersIdEnum'
status:
type: string
description: Status of the job
updatedAt:
type: string
description: Updated time of the notification
scheduleExtensionsCount:
type: number
description: The number of times the digest/delay job has been extended to align with the subscribers schedule
required:
- _id
- type
- executionDetails
- step
- providerId
- status
ActivityTopicDto:
type: object
properties:
_topicId:
type: string
description: Internal Topic ID of the notification
topicKey:
type: string
description: Topic Key of the notification
required:
- _topicId
- topicKey
ActivityNotificationResponseDto:
type: object
properties:
_id:
type: string
description: Unique identifier of the notification
_environmentId:
type: string
description: Environment ID of the notification
_organizationId:
type: string
description: Organization ID of the notification
_subscriberId:
type: string
description: Subscriber ID of the notification
transactionId:
type: string
description: Transaction ID of the notification
_templateId:
type: string
description: Template ID of the notification
_digestedNotificationId:
type: string
description: Digested Notification ID
createdAt:
type: string
description: Creation time of the notification
updatedAt:
type: string
description: Last updated time of the notification
channels:
type: array
items:
$ref: '#/components/schemas/StepTypeEnum'
subscriber:
description: Subscriber of the notification
allOf:
- $ref: '#/components/schemas/ActivityNotificationSubscriberResponseDto'
template:
description: Template of the notification
allOf:
- $ref: '#/components/schemas/ActivityNotificationTemplateResponseDto'
jobs:
description: Jobs of the notification
type: array
items:
$ref: '#/components/schemas/ActivityNotificationJobResponseDto'
payload:
type: object
description: Payload of the notification
additionalProperties: true
tags:
description: Tags associated with the notification
type: array
items:
type: string
controls:
type: object
description: Controls associated with the notification
additionalProperties: true
to:
type: object
description: To field for subscriber definition
additionalProperties: true
topics:
description: Topics of the notification
type: array
items:
$ref: '#/components/schemas/ActivityTopicDto'
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
critical:
type: boolean
description: Criticality of the notification
contextKeys:
description: Context (single or multi) in which the notification was sent
type: array
items:
type: string
required:
- _environmentId
- _organizationId
- _subscriberId
- transactionId
ActivitiesResponseDto:
type: object
properties:
hasMore:
type: boolean
description: Indicates if there are more activities in the result set
data:
description: Array of activity notifications
type: array
items:
$ref: '#/components/schemas/ActivityNotificationResponseDto'
pageSize:
type: number
description: Page size of the activities
page:
type: number
description: Current page of the activities
required:
- hasMore
- data
- pageSize
- page
RequestLogResponseDto:
type: object
properties:
id:
type: string
description: Request log identifier
createdAt:
type: string
description: Creation timestamp
url:
type: string
description: Request URL
urlPattern:
type: string
description: URL pattern
method:
type: string
description: HTTP method
statusCode:
type: number
description: HTTP status code
path:
type: string
description: Request path
hostname:
type: string
description: Request hostname
transactionId:
type:
- object
- 'null'
description: Transaction identifier
ip:
type: string
description: Client IP address
userAgent:
type: string
description: User agent string
requestBody:
type: string
description: Request body
responseBody:
type: string
description: Response body
userId:
type: string
description: User identifier
organizationId:
type: string
description: Organization identifier
environmentId:
type: string
description: Environment identifier
authType:
type: string
description: Authentication type
durationMs:
type: number
description: Request duration in milliseconds
required:
- id
- createdAt
- url
- urlPattern
- method
- statusCode
- path
- hostname
- ip
- userAgent
- requestBody
- responseBody
- userId
- organizationId
- environmentId
- authType
- durationMs
GetRequestsResponseDto:
type: object
properties:
data:
description: Request log data
type: array
items:
$ref: '#/components/schemas/RequestLogResponseDto'
total:
type: number
description: Total number of requests
pageSize:
type: number
description: Page size
page:
type: number
description: Current page number
required:
- data
- total
TraceResponseDto:
type: object
properties:
id:
type: string
description: Trace identifier
createdAt:
type: string
description: Creation timestamp
eventType:
type: string
description: Event type (e.g., request_received, workflow_execution_started)
title:
type: string
description: Human readable title/message
message:
type:
- object
- 'null'
description: Detailed message
rawData:
type:
- object
- 'null'
description: Raw data associated with trace
status:
type: string
description: Trace status (success, error, warning, pending)
entityType:
type: string
description: Entity type (request, workflow_run, step_run)
entityId:
type: string
description: Entity identifier
organizationId:
type: string
description: Organization identifier
environmentId:
type: string
description: Environment identifier
userId:
type:
- object
- 'null'
description: User identifier
externalSubscriberId:
type:
- object
- 'null'
description: External subscriber identifier
subscriberId:
type:
- object
- 'null'
description: Subscriber identifier
required:
- id
- createdAt
- eventType
- title
- status
- entityType
- entityId
- organizationId
- environmentId
GetRequestResponseDto:
type: object
properties:
request:
description: Request details
allOf:
- $ref: '#/components/schemas/RequestLogResponseDto'
traces:
description: Associated traces
type: array
items:
$ref: '#/components/schemas/TraceResponseDto'
required:
- request
- traces
TopicResponseDto:
type: object
properties:
_id:
type: string
description: The identifier of the topic
example: 64da692e9a94fb2e6449ad06
key:
type: string
description: The unique key of the topic
example: product-updates
name:
type: string
description: The name of the topic
example: Product Updates
createdAt:
type: string
description: The date the topic was created
example: '2023-08-15T00:00:00.000Z'
updatedAt:
type: string
description: The date the topic was last updated
example: '2023-08-15T00:00:00.000Z'
required:
- _id
- key
WorkflowRunStepsDetailsDto:
type: object
properties:
id:
type: string
description: Step run identifier
stepRunId:
type: string
description: Step identifier
stepId:
type: string
description: Step identifier
stepType:
type: string
description: Step type
providerId:
type: string
description: Provider identifier
status:
type: string
description: Step status
enum:
- pending
- queued
- running
- completed
- failed
- delayed
- canceled
- merged
- skipped
required:
- id
- stepRunId
- stepId
- stepType
- status
GetWorkflowRunsDto:
type: object
properties:
id:
type: string
description: Workflow run id
workflowId:
type: string
description: Workflow identifier
workflowName:
type: string
description: Workflow name
organizationId:
type: string
description: Organization identifier
environmentId:
type: string
description: Environment identifier
internalSubscriberId:
type: string
description: Internal subscriber identifier
subscriberId:
type: string
description: External subscriber identifier
status:
enum:
- processing
- completed
- error
type: string
description: Workflow run status
deliveryLifecycleStatus:
enum:
- pending
- sent
- errored
- skipped
- canceled
- merged
- delivered
- interacted
type: string
description: Workflow run delivery lifecycle status
triggerIdentifier:
type: string
description: Trigger identifier
transactionId:
type: string
description: Transaction identifier
createdAt:
type: string
description: Creation timestamp
updatedAt:
type: string
description: Update timestamp
severity:
enum:
- high
- medium
- low
- none
type: string
description: Severity
critical:
type: boolean
description: Critical flag
contextKeys:
description: Context (single or multi) in which the workflow run was executed
type: array
items:
type: string
topics:
description: Topics
type: array
items:
$ref: '#/components/schemas/TopicResponseDto'
steps:
description: Workflow run steps
type: array
items:
$ref: '#/components/schemas/WorkflowRunStepsDetailsDto'
required:
- id
- workflowId
- workflowName
- organizationId
- environmentId
- internalSubscriberId
- status
- deliveryLifecycleStatus
- triggerIdentifier
- transactionId
- createdAt
- updatedAt
- severity
- critical
- steps
GetWorkflowRunsResponseDto:
type: object
properties:
data:
description: Workflow runs data
type: array
items:
$ref: '#/components/schemas/GetWorkflowRunsDto'
next:
type:
- object
- 'null'
description: Next cursor for pagination
previous:
type:
- object
- 'null'
description: Previous cursor for pagination
required:
- data
StepExecutionDetailDto:
type: object
properties:
_id:
type: string
description: Unique identifier of the execution detail
createdAt:
type: string
description: Creation time of the execution detail
status:
$ref: '#/components/schemas/ExecutionDetailsStatusEnum'
detail:
type: string
description: Detailed information about the execution
providerId:
type: string
description: Provider identifier
raw:
type:
- object
- 'null'
description: Raw data of the execution
required:
- _id
- status
- detail
StepRunDto:
type: object
properties:
stepRunId:
type: string
description: Step run identifier
stepId:
type: string
description: Step identifier
stepType:
type: string
description: Step type
providerId:
type: string
description: Provider identifier
status:
type: string
description: Step status
enum:
- pending
- queued
- running
- completed
- failed
- delayed
- canceled
- merged
- skipped
createdAt:
format: date-time
type: string
description: Creation timestamp
updatedAt:
format: date-time
type: string
description: Update timestamp
executionDetails:
description: Execution details
type: array
items:
$ref: '#/components/schemas/StepExecutionDetailDto'
digest:
description: Optional digest for the job, including metadata and events
allOf:
- $ref: '#/components/schemas/DigestMetadataDto'
scheduleExtensionsCount:
type: number
description: The number of times the digest/delay job has been extended to align with the subscribers schedule
required:
- stepRunId
- stepId
- stepType
- status
- createdAt
- updatedAt
- executionDetails
GetWorkflowRunResponseDto:
type: object
properties:
id:
type: string
description: Workflow run id
workflowId:
type: string
description: Workflow identifier
workflowName:
type: string
description: Workflow name
organizationId:
type: string
description: Organization identifier
environmentId:
type: string
description: Environment identifier
internalSubscriberId:
type: string
description: Internal subscriber identifier
subscriberId:
type: string
description: External subscriber identifier
status:
enum:
- processing
- completed
- error
type: string
description: Workflow run status
deliveryLifecycleStatus:
enum:
- pending
- sent
- errored
- skipped
- canceled
- merged
- delivered
- interacted
type: string
description: Workflow run delivery lifecycle status
triggerIdentifier:
type: string
description: Trigger identifier
transactionId:
type: string
description: Transaction identifier
createdAt:
type: string
description: Creation timestamp
updatedAt:
type: string
description: Update timestamp
severity:
enum:
- high
- medium
- low
- none
type: string
description: Severity
critical:
type: boolean
description: Critical flag
contextKeys:
description: Context (single or multi) in which the workflow run was executed
type: array
items:
type: string
topics:
description: Topics
type: array
items:
$ref: '#/components/schemas/TopicResponseDto'
steps:
description: Step runs
type: array
items:
$ref: '#/components/schemas/StepRunDto'
payload:
type: object
description: Trigger payload
overrides:
type: object
description: Trigger overrides passed to the original workflow trigger
additionalProperties: true
required:
- id
- workflowId
- workflowName
- organizationId
- environmentId
- internalSubscriberId
- status
- deliveryLifecycleStatus
- triggerIdentifier
- transactionId
- createdAt
- updatedAt
- severity
- critical
- steps
- payload
GetChartsResponseDto:
type: object
properties:
data:
type: object
description: Chart sections
required:
- data
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
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
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
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
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
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
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
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
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
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
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
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
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
TestDomainRouteFromDto:
type: object
properties:
address:
type: string
name:
type: string
required:
- address
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
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
DomainConnectApplyUrlResponseDto:
type: object
properties:
applyUrl:
type: string
providerName:
type: string
redirectUri:
type: string
required:
- applyUrl
- providerName
- redirectUri
CreateDomainConnectApplyUrlDto:
type: object
properties:
redirectUri:
type: string
description: Dashboard URL to return to after the DNS provider consent flow completes.
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
CredentialsDto:
type: object
properties:
apiKey:
type: string
user:
type: string
secretKey:
type: string
domain:
type: string
password:
type: string
host:
type: string
port:
type: string
secure:
type: boolean
region:
type: string
accountSid:
type: string
messageProfileId:
type: string
token:
type: string
from:
type: string
senderName:
type: string
projectName:
type: string
applicationId:
type: string
clientId:
type: string
requireTls:
type: boolean
ignoreTls:
type: boolean
tlsOptions:
type: object
baseUrl:
type: string
webhookUrl:
type: string
redirectUrl:
type: string
hmac:
type: boolean
serviceAccount:
type: string
ipPoolName:
type: string
apiKeyRequestHeader:
type: string
secretKeyRequestHeader:
type: string
idPath:
type: string
datePath:
type: string
apiToken:
type: string
authenticateByToken:
type: boolean
authenticationTokenKey:
type: string
instanceId:
type: string
alertUid:
type: string
title:
type: string
imageUrl:
type: string
state:
type: string
externalLink:
type: string
channelId:
type: string
phoneNumberIdentification:
type: string
accessKey:
type: string
appSid:
type: string
senderId:
type: string
tenantId:
type: string
AppIOBaseUrl:
type: string
signingSecret:
type: string
outboundIntegrationId:
type: string
useFromAddressOverride:
type: boolean
fromAddressOverride:
type: string
emailSlugPrefix:
type: string
description: Agent default shared inbox slug prefix used in `{emailSlugPrefix}-{agentId}@`. Only meaningful on the NovuAgent email integration.
externalEnvironmentId:
type: string
description: 'Claude Managed Agents: ID of the Anthropic environment tied to this integration. Hydrated by the API at integration provisioning time.'
externalWorkspaceId:
type: string
description: 'Claude Managed Agents: id of the Anthropic workspace used in console deep links. Defaults to `''default''` (the Default Workspace). Set this when the API key is scoped to a custom workspace (e.g. `wrkspc_…`).'
ConfigurationsDto:
type: object
properties:
inboundWebhookEnabled:
type: boolean
inboundWebhookSigningKey:
type: string
IntegrationResponseDto:
type: object
properties:
_id:
type: string
description: The unique identifier of the integration record in the database. This is automatically generated.
_environmentId:
type: string
description: The unique identifier for the environment associated with this integration. This links to the Environment collection.
_organizationId:
type: string
description: The unique identifier for the organization that owns this integration. This links to the Organization collection.
name:
type: string
description: The name of the integration, which is used to identify it in the user interface.
identifier:
type: string
description: A unique string identifier for the integration, often used for API calls or internal references.
providerId:
type: string
description: The identifier for the provider of the integration (e.g., "mailgun", "twilio").
channel:
type: string
description: The channel type for the integration, which defines how it communicates (e.g., email, SMS). Not set for agent-kind integrations.
enum:
- in_app
- email
- sms
- chat
- push
kind:
type: string
description: Distinguishes delivery integrations from agent-runtime integrations. Defaults to "delivery". Agent integrations do not have a channel.
enum:
- delivery
- agent
credentials:
description: The decrypted credentials required for the integration to function (e.g. provider API keys, signing secrets). Only returned to dashboard/session-token callers; API-key authenticated callers receive the integration metadata without this field to avoid amplifying API-key leaks into provider-credential leaks.
allOf:
- $ref: '#/components/schemas/CredentialsDto'
configurations:
description: The configurations required for enabling the additional configurations of the integration.
allOf:
- $ref: '#/components/schemas/ConfigurationsDto'
active:
type: boolean
description: Indicates whether the integration is currently active. An active integration will process events and messages.
deleted:
type: boolean
description: Indicates whether the integration has been marked as deleted (soft delete).
deletedAt:
type: string
description: The timestamp indicating when the integration was deleted. This is set when the integration is soft deleted.
deletedBy:
type: string
description: The identifier of the user who performed the deletion of this integration. Useful for audit trails.
primary:
type: boolean
description: Indicates whether this integration is marked as primary. A primary integration is often the default choice for processing.
conditions:
description: An array of conditions associated with the integration that may influence its behavior or processing logic.
type: array
items:
$ref: '#/components/schemas/StepFilterDto'
required:
- _environmentId
- _organizationId
- name
- identifier
- providerId
- active
- deleted
- primary
CreateIntegrationRequestDto:
type: object
properties:
name:
type: string
description: The name of the integration
identifier:
type: string
description: The unique identifier for the integration
_environmentId:
type: string
description: The ID of the associated environment
format: uuid
providerId:
type: string
description: The provider ID for the integration
channel:
enum:
- in_app
- email
- sms
- chat
- push
type: string
description: The channel type for the integration. Not required for agent-kind integrations.
kind:
enum:
- delivery
- agent
type: string
description: Distinguishes delivery integrations from agent-runtime integrations. Defaults to "delivery". Agent integrations do not require a channel.
credentials:
description: The credentials for the integration
allOf:
- $ref: '#/components/schemas/CredentialsDto'
active:
type: boolean
description: If the integration is active, the validation on the credentials field will run
check:
type: boolean
description: Flag to check the integration status
conditions:
description: Conditions for the integration
type: array
items:
$ref: '#/components/schemas/StepFilterDto'
configurations:
type: object
description: Configurations for the integration
UpdateIntegrationRequestDto:
type: object
properties:
name:
type: string
identifier:
type: string
_environmentId:
type: string
active:
type: boolean
description: If the integration is active the validation on the credentials field will run
credentials:
$ref: '#/components/schemas/CredentialsDto'
check:
type: boolean
conditions:
type: array
items:
$ref: '#/components/schemas/StepFilterDto'
configurations:
type: object
description: Configurations for the integration
AutoConfigureIntegrationResponseDto:
type: object
properties:
success:
type: boolean
description: Indicates whether the auto-configuration was successful
message:
type: string
description: Optional message describing the result or any errors that occurred
integration:
type: object
description: The updated configurations after auto-configuration
required:
- success
GenerateChatOAuthUrlResponseDto:
type: object
properties:
url:
type: string
description: 'The OAuth authorization URL for the chat provider. For Slack: https://slack.com/oauth/v2/authorize?... For MS Teams: https://login.microsoftonline.com/.../adminconsent?... This URL should be presented to the user to authorize the integration. Expires after 5 minutes.'
example: https://slack.com/oauth/v2/authorize?state=...
required:
- url
GenerateChatOauthUrlRequestDto:
type: object
properties:
subscriberId:
type: string
description: 'The subscriber ID to link the channel connection to. For Slack: Required for incoming webhook endpoints, optional for workspace connections. For MS Teams: Optional. Admin consent is tenant-wide and can be associated with a subscriber for organizational purposes.'
example: subscriber-123
integrationIdentifier:
type: string
description: Integration identifier
connectionIdentifier:
type: string
description: Identifier of the channel connection that will be created. It is generated automatically if not provided.
example: slack-connection-abc123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
scope:
description: '**Slack only**: OAuth scopes to request during authorization. These define the permissions your Slack integration will have. If not specified, default scopes will be used: chat:write, chat:write.public, channels:read, groups:read, users:read, users:read.email. **MS Teams**: This parameter is ignored. MS Teams uses admin consent with pre-configured permissions in Azure AD. Note: The generated OAuth URL expires after 5 minutes.'
example:
- chat:write
- chat:write.public
- channels:read
- groups:read
- users:read
- users:read.email
- incoming-webhook
type: array
items:
type: string
userScope:
description: '**Slack only, link_user mode**: User-level OAuth scopes to request during authorization. Used when mode is "link_user" to identify the Slack user via "Sign in with Slack". If not specified, defaults to: identity.basic.'
example:
- identity.basic
type: array
items:
type: string
mode:
type: string
description: OAuth flow mode. Use "connect" (default) to create a workspace channel connection, or "link_user" to identify the subscriber's Slack user ID without creating a connection.
enum:
- connect
- link_user
example: link_user
connectionMode:
type: string
description: Connection mode that determines how the channel connection is scoped. Use "subscriber" (default) to associate the connection with a specific subscriber. Use "shared" to associate the connection with a context instead of a subscriber — subscriberId will not be stored on the connection.
enum:
- subscriber
- shared
example: shared
autoLinkUser:
type: boolean
description: When true, after the workspace/tenant connection is created the OAuth flow also links the subscriber who clicked "Connect" as a personal endpoint. For Slack, this uses the authed_user.id already returned by oauth.v2.access — no extra redirect. For MS Teams, this triggers a second OAuth redirect for delegated user-identity consent. Defaults to false when omitted; the SlackConnectButton and MsTeamsConnectButton SDK components default this to true.
example: true
required:
- integrationIdentifier
GenerateConnectOauthUrlRequestDto:
type: object
properties:
subscriberId:
type: string
description: 'The subscriber ID to associate with the channel connection. For Slack: optional for workspace connections (required only for incoming-webhook scope). For MS Teams: optional. Admin consent is tenant-wide.'
example: subscriber-123
integrationIdentifier:
type: string
description: Integration identifier
connectionIdentifier:
type: string
description: Identifier of the channel connection that will be created. Generated automatically if not provided.
example: slack-connection-abc123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
scope:
description: '**Slack only**: OAuth scopes to request during authorization. If not specified, default scopes will be used: chat:write, chat:write.public, channels:read, groups:read, users:read, users:read.email. **MS Teams**: ignored — uses admin consent with pre-configured Azure AD permissions.'
example:
- chat:write
- chat:write.public
- channels:read
type: array
items:
type: string
connectionMode:
type: string
description: Connection mode that determines how the channel connection is scoped. "subscriber" (default) associates the connection with a specific subscriber. "shared" associates the connection with a context instead of a subscriber.
enum:
- subscriber
- shared
example: shared
autoLinkUser:
type: boolean
description: When true (default when connectionMode is "subscriber"), after the workspace/tenant connection is created the OAuth flow also links the subscriber who clicked "Connect" as a personal endpoint. For Slack, uses the authed_user.id returned by oauth.v2.access — no extra redirect. For MS Teams, triggers a second OAuth redirect for delegated user-identity consent. Set to false to only create the workspace connection without linking the individual user.
example: true
required:
- integrationIdentifier
GenerateLinkUserOauthUrlRequestDto:
type: object
properties:
subscriberId:
type: string
description: The subscriber ID to link to their chat identity. Required — this operation always binds a specific subscriber to a user identity in the chat provider.
example: subscriber-123
integrationIdentifier:
type: string
description: Integration identifier
connectionIdentifier:
type: string
description: Identifier of the existing channel connection to associate this user endpoint with. Generated automatically if not provided.
example: slack-connection-abc123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
userScope:
description: '**Slack only**: User-level OAuth scopes for "Sign in with Slack". Defaults to: identity.basic. **MS Teams**: ignored — uses delegated OpenID scopes (openid, profile, User.Read).'
example:
- identity.basic
type: array
items:
type: string
required:
- subscriberId
- integrationIdentifier
GetContextResponseDto:
type: object
properties:
type:
type: string
description: Context type (e.g., tenant, app, workspace)
id:
type: string
description: Unique identifier for this context
data:
type: object
description: Custom data associated with this context
additionalProperties: true
createdAt:
type: string
description: Creation timestamp
updatedAt:
type: string
description: Last update timestamp
required:
- type
- id
- data
- createdAt
- updatedAt
CreateContextRequestDto:
type: object
properties:
type:
type: string
minLength: 1
maxLength: 100
pattern: ^[a-zA-Z0-9_-]+$
description: Context type (e.g., tenant, app, workspace). Must be lowercase alphanumeric with optional separators.
example: tenant
id:
type: string
minLength: 1
maxLength: 100
pattern: ^[a-zA-Z0-9_-]+$
description: Unique identifier for this context. Must be lowercase alphanumeric with optional separators.
example: org-acme
data:
type: object
description: Optional custom data to associate with this context.
example:
tenantName: Acme Corp
region: us-east-1
settings:
theme: dark
additionalProperties: true
required:
- type
- id
UpdateContextRequestDto:
type: object
properties:
data:
type: object
description: Custom data to associate with this context. Replaces existing data.
example:
tenantName: Acme Corp
region: us-east-1
settings:
theme: dark
additionalProperties: true
required:
- data
ListContextsResponseDto:
type: object
properties:
data:
description: List of returned Contexts
type: array
items:
$ref: '#/components/schemas/GetContextResponseDto'
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
UpdatedSubscriberDto:
type: object
properties:
subscriberId:
type: string
description: The ID of the subscriber that was updated.
required:
- subscriberId
CreatedSubscriberDto:
type: object
properties:
subscriberId:
type: string
description: The ID of the subscriber that was created.
required:
- subscriberId
FailedOperationDto:
type: object
properties:
message:
type: string
description: The error message associated with the failed operation.
subscriberId:
type: string
description: The subscriber ID associated with the failed operation. This field is optional.
BulkCreateSubscriberResponseDto:
type: object
properties:
updated:
description: An array of subscribers that were successfully updated.
type: array
items:
$ref: '#/components/schemas/UpdatedSubscriberDto'
created:
description: An array of subscribers that were successfully created.
type: array
items:
$ref: '#/components/schemas/CreatedSubscriberDto'
failed:
description: An array of failed operations with error messages and optional subscriber IDs.
type: array
items:
$ref: '#/components/schemas/FailedOperationDto'
required:
- updated
- created
- failed
CreateSubscriberRequestDto:
type: object
properties:
firstName:
type:
- string
- 'null'
description: First name of the subscriber
example: John
lastName:
type:
- string
- 'null'
description: Last name of the subscriber
example: Doe
email:
type:
- string
- 'null'
description: Email address of the subscriber
example: john.doe@example.com
phone:
type:
- string
- 'null'
description: Phone number of the subscriber
example: '+1234567890'
avatar:
type:
- string
- 'null'
description: Avatar URL or identifier
example: https://example.com/avatar.jpg
locale:
type:
- string
- 'null'
description: Locale of the subscriber
example: en-US
timezone:
type:
- string
- 'null'
description: Timezone of the subscriber
example: America/New_York
data:
type:
- object
- 'null'
description: Additional custom data associated with the subscriber
additionalProperties: true
subscriberId:
type: string
description: Unique identifier of the subscriber
required:
- subscriberId
BulkSubscriberCreateDto:
type: object
properties:
subscribers:
description: An array of subscribers to be created in bulk.
type: array
items:
$ref: '#/components/schemas/CreateSubscriberRequestDto'
required:
- subscribers
ChatOrPushProviderEnum:
type: string
description: The provider identifier for the credentials
enum:
- slack
- discord
- msteams
- mattermost
- ryver
- zulip
- grafana-on-call
- getstream
- rocket-chat
- whatsapp-business
- chat-webhook
- novu-slack
- telegram
- fcm
- apns
- expo
- one-signal
- pushpad
- push-webhook
- pusher-beams
- appio
ChannelCredentials:
type: object
properties:
webhookUrl:
type: string
description: Webhook URL used by chat app integrations. The webhook should be obtained from the chat app provider.
example: https://example.com/webhook
channel:
type: string
description: Channel specification for Mattermost chat notifications.
example: general
deviceTokens:
description: Contains an array of the subscriber device tokens for a given provider. Used on Push integrations.
example:
- token1
- token2
- token3
type: array
items:
type: string
alertUid:
type: string
description: Alert UID for Grafana on-call webhook payload.
example: 12345-abcde
title:
type: string
description: Title to be used with Grafana on-call webhook.
example: Critical Alert
imageUrl:
type: string
description: Image URL property for Grafana on-call webhook.
example: https://example.com/image.png
state:
type: string
description: State property for Grafana on-call webhook.
example: resolved
externalUrl:
type: string
description: Link to upstream details property for Grafana on-call webhook.
example: https://example.com/details
ChannelSettingsDto:
type: object
properties:
providerId:
$ref: '#/components/schemas/ChatOrPushProviderEnum'
integrationIdentifier:
type: string
description: The integration identifier
credentials:
description: Credentials payload for the specified provider
allOf:
- $ref: '#/components/schemas/ChannelCredentials'
_integrationId:
type: string
description: The unique identifier of the integration associated with this channel.
required:
- providerId
- credentials
- _integrationId
SubscriberResponseDto:
type: object
properties:
_id:
type: string
description: The internal ID generated by Novu for your subscriber. This ID does not match the `subscriberId` used in your queries. Refer to `subscriberId` for that identifier.
firstName:
type:
- string
- 'null'
description: The first name of the subscriber.
lastName:
type:
- string
- 'null'
description: The last name of the subscriber.
email:
type:
- string
- 'null'
description: The email address of the subscriber.
phone:
type:
- string
- 'null'
description: The phone number of the subscriber.
avatar:
type:
- string
- 'null'
description: The URL of the subscriber's avatar image.
locale:
type:
- string
- 'null'
description: The locale setting of the subscriber, indicating their preferred language or region.
channels:
description: An array of channel settings associated with the subscriber.
type: array
items:
$ref: '#/components/schemas/ChannelSettingsDto'
topics:
description: An array of topics that the subscriber is subscribed to.
deprecated: true
type: array
items:
type: string
isOnline:
type:
- boolean
- 'null'
description: Indicates whether the subscriber is currently online.
lastOnlineAt:
type:
- string
- 'null'
description: The timestamp indicating when the subscriber was last online, in ISO 8601 format.
__v:
type: number
description: The version of the subscriber document.
data:
type:
- object
- 'null'
description: Additional custom data for the subscriber
additionalProperties: true
timezone:
type:
- string
- 'null'
description: Timezone of the subscriber
subscriberId:
type: string
description: The identifier used to create this subscriber, which typically corresponds to the user ID in your system.
_organizationId:
type: string
description: The unique identifier of the organization to which the subscriber belongs.
_environmentId:
type: string
description: The unique identifier of the environment associated with this subscriber.
deleted:
type: boolean
description: Indicates whether the subscriber has been deleted.
createdAt:
type: string
description: The timestamp indicating when the subscriber was created, in ISO 8601 format.
updatedAt:
type: string
description: The timestamp indicating when the subscriber was last updated, in ISO 8601 format.
required:
- subscriberId
- _organizationId
- _environmentId
- deleted
- createdAt
- updatedAt
UpdateSubscriberChannelRequestDto:
type: object
properties:
providerId:
$ref: '#/components/schemas/ChatOrPushProviderEnum'
integrationIdentifier:
type: string
description: The integration identifier
credentials:
description: Credentials payload for the specified provider
allOf:
- $ref: '#/components/schemas/ChannelCredentials'
required:
- providerId
- credentials
UpdateSubscriberOnlineFlagRequestDto:
type: object
properties:
isOnline:
type: boolean
required:
- isOnline
EmailBlockTypeEnum:
type: string
description: Type of the email block
enum:
- button
- text
TextAlignEnum:
type: string
description: Text alignment for the email block
enum:
- center
- left
- right
EmailBlockStyles:
type: object
properties:
textAlign:
$ref: '#/components/schemas/TextAlignEnum'
required:
- textAlign
EmailBlock:
type: object
properties:
type:
$ref: '#/components/schemas/EmailBlockTypeEnum'
content:
type: string
description: Content of the email block
url:
type: string
description: URL associated with the email block, if any
styles:
description: Styles applied to the email block
allOf:
- $ref: '#/components/schemas/EmailBlockStyles'
required:
- type
- content
ChannelCTATypeEnum:
type: string
description: Type of call to action
enum:
- redirect
MessageCTAData:
type: object
properties:
url:
type: string
description: URL for the call to action
MessageActionStatusEnum:
type: string
description: Status of the message action
enum:
- pending
- done
ButtonTypeEnum:
type: string
description: Type of button for the action result
enum:
- primary
- secondary
MessageButton:
type: object
properties:
type:
$ref: '#/components/schemas/ButtonTypeEnum'
content:
type: string
description: Content of the button
resultContent:
type: string
description: Content of the result when the button is clicked
required:
- type
- content
MessageActionResult:
type: object
properties:
payload:
type: object
description: Payload of the action result
additionalProperties: true
type:
$ref: '#/components/schemas/ButtonTypeEnum'
MessageAction:
type: object
properties:
status:
$ref: '#/components/schemas/MessageActionStatusEnum'
buttons:
description: List of buttons associated with the message action
type: array
items:
$ref: '#/components/schemas/MessageButton'
result:
description: Result of the message action
allOf:
- $ref: '#/components/schemas/MessageActionResult'
MessageCTA:
type: object
properties:
type:
$ref: '#/components/schemas/ChannelCTATypeEnum'
data:
description: Data associated with the call to action
allOf:
- $ref: '#/components/schemas/MessageCTAData'
action:
description: Action associated with the call to action
allOf:
- $ref: '#/components/schemas/MessageAction'
ActorTypeEnum:
type: string
description: The type of the actor, indicating the role in the notification process.
enum:
- none
- user
- system_icon
- system_custom
ActorFeedItemDto:
type: object
properties:
data:
type:
- string
- 'null'
description: The data associated with the actor, can be null if not applicable.
example:
type:
$ref: '#/components/schemas/ActorTypeEnum'
required:
- data
- type
SubscriberFeedResponseDto:
type: object
properties:
_id:
type: string
description: The internal ID generated by Novu for your subscriber. This ID does not match the `subscriberId` used in your queries. Refer to `subscriberId` for that identifier.
firstName:
type: string
description: The first name of the subscriber.
lastName:
type: string
description: The last name of the subscriber.
avatar:
type: string
description: The URL of the subscriber's avatar image.
subscriberId:
type: string
description: The identifier used to create this subscriber, which typically corresponds to the user ID in your system.
required:
- subscriberId
NotificationFeedItemDto:
type: object
properties:
_id:
type: string
description: Unique identifier for the notification.
example: 615c1f2f9b0c5b001f8e4e3b
_templateId:
type: string
description: Identifier for the template used to generate the notification.
example: template_12345
_environmentId:
type: string
description: Identifier for the environment where the notification is sent.
example: env_67890
_messageTemplateId:
type: string
description: Identifier for the message template used.
example: message_template_54321
_organizationId:
type: string
description: Identifier for the organization sending the notification.
example: org_98765
_notificationId:
type: string
description: Unique identifier for the notification instance.
example: notification_123456
_subscriberId:
type: string
description: Unique identifier for the subscriber receiving the notification.
example: subscriber_112233
_feedId:
type:
- string
- 'null'
description: Identifier for the feed associated with the notification.
example: feed_445566
_jobId:
type: string
description: Identifier for the job that triggered the notification.
example: job_778899
createdAt:
type:
- string
- 'null'
description: Timestamp indicating when the notification was created.
format: date-time
example: '2024-12-10T10:10:59.639Z'
updatedAt:
type:
- string
- 'null'
description: Timestamp indicating when the notification was last updated.
format: date-time
example: '2024-12-10T10:10:59.639Z'
actor:
description: Actor details related to the notification, if applicable.
allOf:
- $ref: '#/components/schemas/ActorFeedItemDto'
subscriber:
description: Subscriber details associated with this notification.
allOf:
- $ref: '#/components/schemas/SubscriberFeedResponseDto'
transactionId:
type: string
description: Unique identifier for the transaction associated with the notification.
example: transaction_123456
templateIdentifier:
type:
- string
- 'null'
description: Identifier for the template used, if applicable.
example: template_abcdef
providerId:
type:
- string
- 'null'
description: Identifier for the provider that sends the notification.
example: provider_xyz
content:
type: string
description: The main content of the notification.
example: This is a test notification content.
subject:
type:
- string
- 'null'
description: The subject line for email notifications, if applicable.
example: Test Notification Subject
channel:
$ref: '#/components/schemas/ChannelTypeEnum'
read:
type: boolean
description: Indicates whether the notification has been read by the subscriber.
example: false
seen:
type: boolean
description: Indicates whether the notification has been seen by the subscriber.
example: true
archived:
type: boolean
description: Indicates whether the notification has been archived by the subscriber.
example: false
deviceTokens:
description: Device tokens for push notifications, if applicable.
example:
- token1
- token2
type:
- array
- 'null'
items:
type: string
cta:
description: Call-to-action information associated with the notification.
allOf:
- $ref: '#/components/schemas/MessageCTA'
status:
type: string
description: Current status of the notification.
enum:
- sent
- error
- warning
example: sent
payload:
type: object
description: The payload that was used to send the notification trigger.
additionalProperties: true
example:
key: value
data:
type:
- object
- 'null'
description: The data sent with the notification.
example:
key: value
additionalProperties: true
overrides:
type: object
description: Provider-specific overrides used when triggering the notification.
additionalProperties: true
example:
overrideKey: overrideValue
tags:
description: Tags associated with the workflow that triggered the notification.
example:
- tag1
- tag2
type:
- array
- 'null'
items:
type: string
required:
- _id
- _templateId
- _environmentId
- _organizationId
- _notificationId
- _subscriberId
- _jobId
- transactionId
- content
- channel
- read
- seen
- archived
- cta
- status
FeedResponseDto:
type: object
properties:
totalCount:
type: number
description: Total number of notifications available.
example: 5
hasMore:
type: boolean
description: Indicates if there are more notifications to load.
example: true
data:
description: Array of notifications returned in the response.
type: array
items:
$ref: '#/components/schemas/NotificationFeedItemDto'
pageSize:
type: number
description: The number of notifications returned in this response.
example: 2
page:
type: number
description: The current page number of the notifications.
example: 1
required:
- hasMore
- data
- pageSize
- page
UnseenCountResponse:
type: object
properties:
count:
type: number
required:
- count
NotificationGroup:
type: object
properties:
_id:
type: string
name:
type: string
_environmentId:
type: string
_organizationId:
type: string
_parentId:
type: string
required:
- name
- _environmentId
- _organizationId
SubscriberPreferenceChannels:
type: object
properties:
email:
type: boolean
description: Email channel preference
example: true
sms:
type: boolean
description: SMS channel preference
example: false
in_app:
type: boolean
description: In-app channel preference
example: true
chat:
type: boolean
description: Chat channel preference
example: false
push:
type: boolean
description: Push notification channel preference
example: true
DigestRegularMetadata:
type: object
properties:
amount:
type: number
unit:
type: string
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
digestKey:
type: string
type:
type: string
enum:
- regular
- backoff
backoff:
type: boolean
backoffAmount:
type: number
backoffUnit:
type: string
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
updateMode:
type: boolean
required:
- type
TimedConfig:
type: object
properties:
atTime:
type: string
weekDays:
type: array
items:
type: string
enum:
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
- sunday
monthDays:
type: array
items:
type: string
ordinal:
type: string
enum:
- '1'
- '2'
- '3'
- '4'
- '5'
- last
ordinalValue:
type: string
enum:
- day
- weekday
- weekend
- sunday
- monday
- tuesday
- wednesday
- thursday
- friday
- saturday
monthlyType:
type: string
enum:
- each
- 'on'
DigestTimedMetadata:
type: object
properties:
amount:
type: number
unit:
type: string
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
digestKey:
type: string
type:
type: string
enum:
- timed
timed:
$ref: '#/components/schemas/TimedConfig'
required:
- type
DelayRegularMetadata:
type: object
properties:
amount:
type: number
unit:
type: string
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
type:
type: string
enum:
- regular
required:
- type
DelayScheduledMetadata:
type: object
properties:
type:
type: string
enum:
- scheduled
delayPath:
type: string
required:
- type
- delayPath
MessageTemplate:
type: object
properties: {}
ReplyCallback:
type: object
properties:
active:
type: boolean
description: Indicates whether the reply callback is active.
url:
type: string
description: The URL to which replies should be sent.
NotificationStepData:
type: object
properties:
_id:
type: string
description: Unique identifier for the notification step.
uuid:
type: string
description: Universally unique identifier for the notification step.
name:
type: string
description: Name of the notification step.
_templateId:
type: string
description: ID of the template associated with this notification step.
active:
type: boolean
description: Indicates whether the notification step is active.
shouldStopOnFail:
type: boolean
description: Determines if the process should stop on failure.
template:
description: Message template used in this notification step.
allOf:
- $ref: '#/components/schemas/MessageTemplate'
filters:
description: Filters applied to this notification step.
type: array
items:
$ref: '#/components/schemas/StepFilterDto'
_parentId:
type: string
description: ID of the parent notification step, if applicable.
metadata:
description: Metadata associated with the workflow step. Can vary based on the type of step.
oneOf:
- $ref: '#/components/schemas/DigestRegularMetadata'
- $ref: '#/components/schemas/DigestTimedMetadata'
- $ref: '#/components/schemas/DelayRegularMetadata'
- $ref: '#/components/schemas/DelayScheduledMetadata'
replyCallback:
description: Callback information for replies, including whether it is active and the callback URL.
allOf:
- $ref: '#/components/schemas/ReplyCallback'
NotificationStepDto:
type: object
properties:
_id:
type: string
description: Unique identifier for the notification step.
uuid:
type: string
description: Universally unique identifier for the notification step.
name:
type: string
description: Name of the notification step.
_templateId:
type: string
description: ID of the template associated with this notification step.
active:
type: boolean
description: Indicates whether the notification step is active.
shouldStopOnFail:
type: boolean
description: Determines if the process should stop on failure.
template:
description: Message template used in this notification step.
allOf:
- $ref: '#/components/schemas/MessageTemplate'
filters:
description: Filters applied to this notification step.
type: array
items:
$ref: '#/components/schemas/StepFilterDto'
_parentId:
type: string
description: ID of the parent notification step, if applicable.
metadata:
description: Metadata associated with the workflow step. Can vary based on the type of step.
oneOf:
- $ref: '#/components/schemas/DigestRegularMetadata'
- $ref: '#/components/schemas/DigestTimedMetadata'
- $ref: '#/components/schemas/DelayRegularMetadata'
- $ref: '#/components/schemas/DelayScheduledMetadata'
replyCallback:
description: Callback information for replies, including whether it is active and the callback URL.
allOf:
- $ref: '#/components/schemas/ReplyCallback'
variants:
type: array
items:
$ref: '#/components/schemas/NotificationStepData'
NotificationTrigger:
type: object
properties:
type:
type: string
enum:
- event
identifier:
type: string
variables:
type: array
items:
$ref: '#/components/schemas/NotificationTriggerVariable'
subscriberVariables:
type: array
items:
$ref: '#/components/schemas/NotificationTriggerVariable'
required:
- type
- identifier
- variables
WorkflowResponse:
type: object
properties:
_id:
type: string
name:
type: string
description:
type: string
active:
type: boolean
draft:
type: boolean
preferenceSettings:
$ref: '#/components/schemas/SubscriberPreferenceChannels'
critical:
type: boolean
tags:
type: array
items:
type: string
steps:
type: array
items:
$ref: '#/components/schemas/NotificationStepDto'
_organizationId:
type: string
_creatorId:
type: string
_environmentId:
type: string
triggers:
type: array
items:
$ref: '#/components/schemas/NotificationTrigger'
_notificationGroupId:
type: string
_parentId:
type: string
deleted:
type: boolean
deletedAt:
type: string
deletedBy:
type: string
notificationGroup:
$ref: '#/components/schemas/NotificationGroup'
data:
type: object
workflowIntegrationStatus:
type: object
required:
- name
- description
- active
- draft
- preferenceSettings
- critical
- tags
- steps
- _organizationId
- _creatorId
- _environmentId
- triggers
- _notificationGroupId
- deleted
- deletedAt
- deletedBy
MessageStatusEnum:
type: string
description: Status of the message
enum:
- sent
- error
- warning
MessageResponseDto:
type: object
properties:
_id:
type: string
description: Unique identifier for the message
_templateId:
type:
- string
- 'null'
description: Template ID associated with the message
_environmentId:
type: string
description: Environment ID where the message is sent
_messageTemplateId:
type:
- string
- 'null'
description: Message template ID
_organizationId:
type: string
description: Organization ID associated with the message
_notificationId:
type: string
description: Notification ID associated with the message
_subscriberId:
type: string
description: Subscriber ID associated with the message
subscriber:
description: Subscriber details, if available
allOf:
- $ref: '#/components/schemas/SubscriberResponseDto'
template:
description: Workflow template associated with the message
allOf:
- $ref: '#/components/schemas/WorkflowResponse'
templateIdentifier:
type: string
description: Identifier for the message template
createdAt:
type: string
description: Creation date of the message
deliveredAt:
description: Array of delivery dates for the message, if the message has multiple delivery dates, for example after being snoozed
type: array
items:
type: string
lastSeenDate:
type: string
description: Last seen date of the message, if available
lastReadDate:
type: string
description: Last read date of the message, if available
content:
oneOf:
- type: array
items:
$ref: '#/components/schemas/EmailBlock'
- type: string
description: String representation of the content
description: Content of the message, can be an email block or a string
transactionId:
type: string
description: Transaction ID associated with the message
subject:
type: string
description: Subject of the message, if applicable
channel:
$ref: '#/components/schemas/ChannelTypeEnum'
read:
type: boolean
description: Indicates if the message has been read
seen:
type: boolean
description: Indicates if the message has been seen
snoozedUntil:
type: string
description: Date when the message will be unsnoozed
email:
type: string
description: Email address associated with the message, if applicable
phone:
type: string
description: Phone number associated with the message, if applicable
directWebhookUrl:
type: string
description: Direct webhook URL for the message, if applicable
providerId:
type: string
description: Provider ID associated with the message, if applicable
deviceTokens:
description: Device tokens associated with the message, if applicable
type: array
items:
type: string
title:
type: string
description: Title of the message, if applicable
cta:
description: Call to action associated with the message
allOf:
- $ref: '#/components/schemas/MessageCTA'
_feedId:
type:
- string
- 'null'
description: Feed ID associated with the message, if applicable
status:
$ref: '#/components/schemas/MessageStatusEnum'
errorId:
type: string
description: Error ID if the message has an error
errorText:
type: string
description: Error text if the message has an error
payload:
type: object
description: The payload that was used to send the notification trigger
additionalProperties: true
overrides:
type: object
description: Provider specific overrides used when triggering the notification
additionalProperties: true
contextKeys:
description: Context (single or multi) in which the message was sent
example:
- tenant:org-123
- region:us-east-1
type: array
items:
type: string
required:
- _environmentId
- _organizationId
- _notificationId
- _subscriberId
- createdAt
- transactionId
- channel
- read
- seen
- cta
- status
MessageMarkAsRequestDto:
type: object
properties:
messageId:
oneOf:
- type: string
- type: array
items:
type: string
markAs:
enum:
- read
- seen
- unread
- unseen
type: string
required:
- messageId
- markAs
MarkAllMessageAsRequestDto:
type: object
properties:
feedIdentifier:
oneOf:
- type: string
- type: array
items:
type: string
description: Optional feed identifier or array of feed identifiers
markAs:
enum:
- read
- seen
- unread
- unseen
type: string
description: Mark all subscriber messages as read, unread, seen or unseen
required:
- markAs
MarkMessageActionAsSeenDto:
type: object
properties:
status:
enum:
- pending
- done
type: string
description: Message action status
payload:
type: object
description: Message action payload
required:
- status
ListSubscribersResponseDto:
type: object
properties:
data:
description: List of returned Subscribers
type: array
items:
$ref: '#/components/schemas/SubscriberResponseDto'
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
PatchSubscriberRequestDto:
type: object
properties:
firstName:
type:
- string
- 'null'
description: First name of the subscriber
example: John
lastName:
type:
- string
- 'null'
description: Last name of the subscriber
example: Doe
email:
type:
- string
- 'null'
description: Email address of the subscriber
example: john.doe@example.com
phone:
type:
- string
- 'null'
description: Phone number of the subscriber
example: '+1234567890'
avatar:
type:
- string
- 'null'
description: Avatar URL or identifier
example: https://example.com/avatar.jpg
locale:
type:
- string
- 'null'
description: Locale of the subscriber
example: en-US
timezone:
type:
- string
- 'null'
description: Timezone of the subscriber
example: America/New_York
data:
type:
- object
- 'null'
description: Additional custom data associated with the subscriber
additionalProperties: true
RemoveSubscriberResponseDto:
type: object
properties:
acknowledged:
type: boolean
description: Indicates whether the operation was acknowledged by the server
example: true
status:
type: string
description: Status of the subscriber removal operation
example: success
required:
- acknowledged
- status
TimeRangeDto:
type: object
properties:
start:
type: string
description: Start time
example: 09:00 AM
end:
type: string
description: End time
example: 05:00 PM
required:
- start
- end
DayScheduleDto:
type: object
properties:
isEnabled:
type: boolean
description: Day schedule enabled
example: true
hours:
description: Hours
example:
- start: 09:00 AM
end: 05:00 PM
type: array
items:
$ref: '#/components/schemas/TimeRangeDto'
required:
- isEnabled
WeeklyScheduleDto:
type: object
properties:
monday:
description: Monday schedule
example:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/DayScheduleDto'
tuesday:
description: Tuesday schedule
example:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/DayScheduleDto'
wednesday:
description: Wednesday schedule
example:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/DayScheduleDto'
thursday:
description: Thursday schedule
example:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/DayScheduleDto'
friday:
description: Friday schedule
example:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/DayScheduleDto'
saturday:
description: Saturday schedule
example:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/DayScheduleDto'
sunday:
description: Sunday schedule
example:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/DayScheduleDto'
ScheduleDto:
type: object
properties:
isEnabled:
type: boolean
description: Schedule enabled
example: true
weeklySchedule:
description: Weekly schedule
example:
monday:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
tuesday:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
wednesday:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
thursday:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
friday:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
saturday:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
sunday:
isEnabled: true
hours:
- start: 09:00 AM
end: 05:00 PM
allOf:
- $ref: '#/components/schemas/WeeklyScheduleDto'
required:
- isEnabled
SubscriberGlobalPreferenceDto:
type: object
properties:
enabled:
type: boolean
description: Whether notifications are enabled globally
channels:
description: Channel-specific preference settings
allOf:
- $ref: '#/components/schemas/SubscriberPreferenceChannels'
schedule:
description: Subscriber schedule
allOf:
- $ref: '#/components/schemas/ScheduleDto'
required:
- enabled
- channels
PreferenceOverrideSourceEnum:
type: string
description: The source of overrides
enum:
- subscriber
- template
- workflowOverride
SubscriberPreferenceOverrideDto:
type: object
properties:
channel:
$ref: '#/components/schemas/ChannelTypeEnum'
source:
$ref: '#/components/schemas/PreferenceOverrideSourceEnum'
required:
- channel
- source
SubscriberPreferencesWorkflowInfoDto:
type: object
properties:
slug:
type: string
description: Workflow slug
identifier:
type: string
description: Unique identifier of the workflow
name:
type: string
description: Display name of the workflow
updatedAt:
type: string
description: last updated date
required:
- slug
- identifier
- name
SubscriberWorkflowPreferenceDto:
type: object
properties:
enabled:
type: boolean
description: Whether notifications are enabled for this workflow
channels:
description: Channel-specific preference settings for this workflow
allOf:
- $ref: '#/components/schemas/SubscriberPreferenceChannels'
overrides:
description: List of preference overrides
type: array
items:
$ref: '#/components/schemas/SubscriberPreferenceOverrideDto'
workflow:
description: Workflow information
allOf:
- $ref: '#/components/schemas/SubscriberPreferencesWorkflowInfoDto'
updatedAt:
type: string
description: Timestamp when the subscriber last updated their preference. Only present if subscriber explicitly set preferences.
required:
- enabled
- channels
- overrides
- workflow
GetSubscriberPreferencesDto:
type: object
properties:
global:
description: Global preference settings
allOf:
- $ref: '#/components/schemas/SubscriberGlobalPreferenceDto'
workflows:
description: Workflow-specific preference settings
type: array
items:
$ref: '#/components/schemas/SubscriberWorkflowPreferenceDto'
required:
- global
- workflows
PreferenceLevelEnum:
type: string
description: The level of the preference (global or template)
enum:
- global
- template
WorkflowDto:
type: object
properties:
id:
type: string
description: Unique identifier of the workflow
example: 64a1b2c3d4e5f6g7h8i9j0k1
identifier:
type: string
description: Workflow identifier used for triggering
example: welcome-email
name:
type: string
description: Human-readable name of the workflow
example: Welcome Email Workflow
critical:
type: boolean
description: Whether this workflow is marked as critical
example: false
tags:
description: Tags associated with the workflow
example:
- user-onboarding
- email
type: array
items:
type: string
data:
type: object
description: Custom data associated with the workflow
example:
category: onboarding
priority: high
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
required:
- id
- identifier
- name
- critical
- severity
GetPreferencesResponseDto:
type: object
properties:
level:
$ref: '#/components/schemas/PreferenceLevelEnum'
workflow:
description: Workflow information if this is a template-level preference
allOf:
- $ref: '#/components/schemas/WorkflowDto'
enabled:
type: boolean
description: Whether the preference is enabled
example: true
channels:
description: Channel-specific preference settings
allOf:
- $ref: '#/components/schemas/SubscriberPreferenceChannels'
condition:
type:
- object
- 'null'
description: Condition using JSON Logic rules
required:
- level
- enabled
- channels
PatchPreferenceChannelsDto:
type: object
properties:
email:
type: boolean
description: Email channel preference
sms:
type: boolean
description: SMS channel preference
in_app:
type: boolean
description: In-app channel preference
push:
type: boolean
description: Push channel preference
chat:
type: boolean
description: Chat channel preference
BulkUpdateSubscriberPreferenceItemDto:
type: object
properties:
channels:
description: Channel-specific preference settings
allOf:
- $ref: '#/components/schemas/PatchPreferenceChannelsDto'
workflowId:
type: string
description: Workflow internal _id, identifier or slug
required:
- channels
- workflowId
BulkUpdateSubscriberPreferencesDto:
type: object
properties:
preferences:
description: Array of workflow preferences to update (maximum 100 items)
maxItems: 100
type: array
items:
$ref: '#/components/schemas/BulkUpdateSubscriberPreferenceItemDto'
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
required:
- preferences
PatchSubscriberPreferencesDto:
type: object
properties:
channels:
description: Channel-specific preference settings
allOf:
- $ref: '#/components/schemas/PatchPreferenceChannelsDto'
workflowId:
type: string
description: Workflow internal _id, identifier or slug. If provided, update workflow specific preferences, otherwise update global preferences
schedule:
description: Subscriber schedule
allOf:
- $ref: '#/components/schemas/ScheduleDto'
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
SubscriberDto:
type: object
properties:
_id:
type: string
description: The identifier of the subscriber
example: 64da692e9a94fb2e6449ad07
subscriberId:
type: string
description: The external identifier of the subscriber
example: user-123
avatar:
type:
- string
- 'null'
description: The avatar URL of the subscriber
example: https://example.com/avatar.png
firstName:
type:
- string
- 'null'
description: The first name of the subscriber
example: John
lastName:
type:
- string
- 'null'
description: The last name of the subscriber
example: Doe
email:
type:
- string
- 'null'
description: The email of the subscriber
example: john@example.com
required:
- _id
- subscriberId
TopicSubscriptionResponseDto:
type: object
properties:
_id:
type: string
description: The identifier of the subscription
example: 64da692e9a94fb2e6449ad08
identifier:
type: string
description: The identifier of the subscription
example: tk=product-updates:si=subscriber-123
createdAt:
type: string
description: The date and time the subscription was created
example: '2021-01-01T00:00:00.000Z'
topic:
description: Topic information
allOf:
- $ref: '#/components/schemas/TopicResponseDto'
subscriber:
description: Subscriber information
allOf:
- $ref: '#/components/schemas/SubscriberDto'
contextKeys:
description: Context keys that scope this subscription (e.g., tenant:org-a, project:proj-123)
example:
- tenant:org-a
- project:proj-123
type: array
items:
type: string
required:
- _id
- identifier
- createdAt
- topic
- subscriber
ListTopicSubscriptionsResponseDto:
type: object
properties:
data:
description: List of returned Topic Subscriptions
type: array
items:
$ref: '#/components/schemas/TopicSubscriptionResponseDto'
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
InboxSubscriberResponseDto:
type: object
properties:
id:
type: string
description: Unique identifier of the subscriber
firstName:
type: string
description: First name of the subscriber
lastName:
type: string
description: Last name of the subscriber
avatar:
type: string
description: Avatar URL of the subscriber
subscriberId:
type: string
description: External subscriber identifier
required:
- id
- subscriberId
RedirectDto:
type: object
properties:
url:
type: string
description: URL to redirect to
target:
type: string
description: Target attribute for the redirect link
enum:
- _self
- _blank
- _parent
- _top
- _unfencedTop
required:
- url
InboxActionDto:
type: object
properties:
label:
type: string
description: Label of the action button
isCompleted:
type: boolean
description: Whether the action has been completed
redirect:
description: Redirect configuration for the action
allOf:
- $ref: '#/components/schemas/RedirectDto'
required:
- label
- isCompleted
NotificationWorkflowDto:
type: object
properties:
id:
type: string
description: Unique identifier of the workflow
identifier:
type: string
description: Workflow identifier used for triggering
name:
type: string
description: Human-readable name of the workflow
critical:
type: boolean
description: Whether this workflow is marked as critical
tags:
description: Tags associated with the workflow
type: array
items:
type: string
data:
type: object
additionalProperties: true
description: Custom data associated with the workflow
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
required:
- id
- identifier
- name
- critical
- severity
InboxNotificationDto:
type: object
properties:
id:
type: string
description: Unique identifier of the notification
transactionId:
type: string
description: Transaction identifier of the notification
subject:
type: string
description: Subject of the notification
body:
type: string
description: Body content of the notification
to:
description: Subscriber this notification was sent to
allOf:
- $ref: '#/components/schemas/InboxSubscriberResponseDto'
isRead:
type: boolean
description: Whether the notification has been read
isSeen:
type: boolean
description: Whether the notification has been seen
isArchived:
type: boolean
description: Whether the notification has been archived
isSnoozed:
type: boolean
description: Whether the notification is snoozed
snoozedUntil:
type:
- string
- 'null'
description: ISO timestamp when the notification will be unsnoozed
deliveredAt:
description: Timestamps when the notification was delivered
type: array
items:
type: string
createdAt:
type: string
description: ISO timestamp when the notification was created
readAt:
type:
- string
- 'null'
description: ISO timestamp when the notification was read
firstSeenAt:
type:
- string
- 'null'
description: ISO timestamp when the notification was first seen
archivedAt:
type:
- string
- 'null'
description: ISO timestamp when the notification was archived
avatar:
type: string
description: Avatar URL for the notification
primaryAction:
description: Primary action button for the notification
allOf:
- $ref: '#/components/schemas/InboxActionDto'
secondaryAction:
description: Secondary action button for the notification
allOf:
- $ref: '#/components/schemas/InboxActionDto'
channelType:
$ref: '#/components/schemas/ChannelTypeEnum'
tags:
description: Tags associated with the notification
type: array
items:
type: string
data:
type: object
additionalProperties: true
description: Custom data payload of the notification
redirect:
description: Redirect configuration for the notification
allOf:
- $ref: '#/components/schemas/RedirectDto'
workflow:
description: Workflow associated with the notification
allOf:
- $ref: '#/components/schemas/NotificationWorkflowDto'
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
required:
- id
- transactionId
- body
- to
- isRead
- isSeen
- isArchived
- isSnoozed
- createdAt
- channelType
- severity
GetSubscriberNotificationsResponseDto:
type: object
properties:
data:
description: Array of notifications
type: array
items:
$ref: '#/components/schemas/InboxNotificationDto'
hasMore:
type: boolean
description: Indicates if there are more notifications available
filter:
type: object
description: The filter applied to the notifications
required:
- data
- hasMore
- filter
GetSubscriberNotificationsCountResponseDto:
type: object
properties:
count:
type: number
description: The count of notifications matching the filter
filter:
type: object
description: The filter applied
additionalProperties: true
required:
- count
- filter
SnoozeSubscriberNotificationDto:
type: object
properties:
snoozeUntil:
format: date-time
type: string
description: The date and time until which the notification should be snoozed
example: '2026-03-01T10:00:00Z'
required:
- snoozeUntil
MarkSubscriberNotificationsAsSeenDto:
type: object
properties:
notificationIds:
description: Specific notification IDs to mark as seen
type: array
items:
type: string
tags:
type: object
description: 'Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups).'
data:
type: string
description: Filter notifications by data attributes (JSON string)
contextKeys:
description: Context keys for filtering notifications
type: array
items:
type: string
UpdateAllSubscriberNotificationsDto:
type: object
properties:
tags:
type: object
description: 'Filter notifications by workflow tags (OR for string[], or { and: [{ or: string[] }, ...] } for AND of OR-groups).'
data:
type: string
description: Filter notifications by data attributes (JSON string)
contextKeys:
description: Context keys for filtering notifications
type: array
items:
type: string
UserResponseDto:
type: object
properties:
_id:
type: string
description: User ID
firstName:
type:
- string
- 'null'
description: User first name
lastName:
type:
- string
- 'null'
description: User last name
externalId:
type:
- string
- 'null'
description: User external ID
required:
- _id
ResourceTypeEnum:
type: string
description: Type of the layout
enum:
- REGULAR
- ECHO
- BRIDGE
UiComponentEnum:
type: string
description: Component type for the UI Schema Property
enum:
- EMAIL_EDITOR_SELECT
- LAYOUT_SELECT
- BLOCK_EDITOR
- EMAIL_BODY
- TEXT_FULL_LINE
- TEXT_INLINE_LABEL
- IN_APP_BODY
- IN_APP_AVATAR
- IN_APP_PRIMARY_SUBJECT
- IN_APP_BUTTON_DROPDOWN
- IN_APP_DISABLE_SANITIZATION_SWITCH
- DISABLE_SANITIZATION_SWITCH
- URL_TEXT_BOX
- DIGEST_AMOUNT
- DIGEST_UNIT
- DIGEST_TYPE
- DIGEST_KEY
- DIGEST_CRON
- DELAY_AMOUNT
- DELAY_UNIT
- DELAY_TYPE
- DELAY_CRON
- DELAY_DYNAMIC_KEY
- THROTTLE_TYPE
- THROTTLE_WINDOW
- THROTTLE_UNIT
- THROTTLE_DYNAMIC_KEY
- THROTTLE_THRESHOLD
- THROTTLE_KEY
- EXTEND_TO_SCHEDULE
- SMS_BODY
- CHAT_BODY
- PUSH_BODY
- PUSH_SUBJECT
- QUERY_EDITOR
- DATA
- LAYOUT_EMAIL
- DESTINATION_METHOD
- DESTINATION_URL
- DESTINATION_HEADERS
- DESTINATION_BODY
- DESTINATION_RESPONSE_BODY_SCHEMA
- DESTINATION_ENFORCE_SCHEMA_VALIDATION
- DESTINATION_CONTINUE_ON_FAILURE
- DESTINATION_TIMEOUT
UiSchemaProperty:
type: object
properties:
placeholder:
description: Placeholder for the UI Schema Property
anyOf:
- type: string
- type: number
- type: boolean
- type: object
additionalProperties: true
- type: array
items:
anyOf:
- type: string
- type: number
- type: boolean
- type: object
additionalProperties: true
component:
$ref: '#/components/schemas/UiComponentEnum'
properties:
type: object
description: Properties of the UI Schema
additionalProperties:
$ref: '#/components/schemas/UiSchemaProperty'
required:
- component
UiSchemaGroupEnum:
type: string
description: Group of the UI Schema
enum:
- IN_APP
- EMAIL
- DIGEST
- DELAY
- THROTTLE
- SMS
- CHAT
- PUSH
- SKIP
- LAYOUT
- HTTP_REQUEST
UiSchema:
type: object
properties:
group:
$ref: '#/components/schemas/UiSchemaGroupEnum'
properties:
type: object
description: Properties of the UI Schema
additionalProperties:
$ref: '#/components/schemas/UiSchemaProperty'
EmailControlsDto:
type: object
properties:
body:
type: string
description: Body of the layout.
editorType:
type: string
description: Editor type of the layout.
enum:
- html
- block
required:
- body
- editorType
LayoutControlValuesDto:
type: object
properties:
email:
description: Email layout controls
allOf:
- $ref: '#/components/schemas/EmailControlsDto'
LayoutControlsDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Email layout controls
allOf:
- $ref: '#/components/schemas/LayoutControlValuesDto'
required:
- values
LayoutResponseDto:
type: object
properties:
_id:
type: string
description: Unique internal identifier of the layout
layoutId:
type: string
description: Unique identifier for the layout
slug:
type: string
description: Slug of the layout
name:
type: string
description: Name of the layout
isDefault:
type: boolean
description: Whether the layout is the default layout
isTranslationEnabled:
type: boolean
description: Whether the layout translations are enabled
updatedAt:
type: string
description: Last updated timestamp
updatedBy:
description: User who last updated the layout
allOf:
- $ref: '#/components/schemas/UserResponseDto'
createdAt:
type: string
description: Creation timestamp
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
type:
$ref: '#/components/schemas/ResourceTypeEnum'
variables:
type:
- object
- 'null'
description: The variables JSON Schema for the layout
additionalProperties: true
controls:
description: Controls metadata for the layout
allOf:
- $ref: '#/components/schemas/LayoutControlsDto'
required:
- _id
- layoutId
- slug
- name
- isDefault
- isTranslationEnabled
- updatedAt
- createdAt
- origin
- type
- controls
LayoutCreationSourceEnum:
type: string
description: Source of layout creation
default: dashboard
enum:
- dashboard
CreateLayoutDto:
type: object
properties:
layoutId:
type: string
description: Unique identifier for the layout
name:
type: string
description: Name of the layout
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this layout
default: false
__source:
$ref: '#/components/schemas/LayoutCreationSourceEnum'
required:
- layoutId
- name
UpdateLayoutDto:
type: object
properties:
name:
type: string
description: Name of the layout
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this layout
default: false
controlValues:
description: Control values for the layout. Omit to leave unchanged, or set to null to clear stored control values.
allOf:
- $ref: '#/components/schemas/LayoutControlValuesDto'
required:
- name
DuplicateLayoutDto:
type: object
properties:
name:
type: string
description: Name of the layout
layoutId:
type: string
description: Identifier for the duplicated layout. When omitted, it is derived from the name.
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this layout
default: false
required:
- name
ListLayoutResponseDto:
type: object
properties:
layouts:
description: List of layouts
type: array
items:
$ref: '#/components/schemas/LayoutResponseDto'
totalCount:
type: number
description: Total number of layouts
required:
- layouts
- totalCount
DirectionEnum:
type: string
enum:
- ASC
- DESC
LayoutResponseDtoSortField:
type: string
enum:
- createdAt
- updatedAt
- name
EmailLayoutRenderOutput:
type: object
properties:
body:
type: string
description: Content of the email
required:
- body
SubscriberResponseDtoOptional:
type: object
properties:
_id:
type: string
description: The internal ID generated by Novu for your subscriber. This ID does not match the `subscriberId` used in your queries. Refer to `subscriberId` for that identifier.
firstName:
type:
- string
- 'null'
description: The first name of the subscriber.
lastName:
type:
- string
- 'null'
description: The last name of the subscriber.
email:
type:
- string
- 'null'
description: The email address of the subscriber.
phone:
type:
- string
- 'null'
description: The phone number of the subscriber.
avatar:
type:
- string
- 'null'
description: The URL of the subscriber's avatar image.
locale:
type:
- string
- 'null'
description: The locale setting of the subscriber, indicating their preferred language or region.
channels:
description: An array of channel settings associated with the subscriber.
type: array
items:
$ref: '#/components/schemas/ChannelSettingsDto'
topics:
description: An array of topics that the subscriber is subscribed to.
deprecated: true
type: array
items:
type: string
isOnline:
type:
- boolean
- 'null'
description: Indicates whether the subscriber is currently online.
lastOnlineAt:
type:
- string
- 'null'
description: The timestamp indicating when the subscriber was last online, in ISO 8601 format.
__v:
type: number
description: The version of the subscriber document.
data:
type:
- object
- 'null'
description: Additional custom data for the subscriber
additionalProperties: true
timezone:
type:
- string
- 'null'
description: Timezone of the subscriber
LayoutPreviewPayloadDto:
type: object
properties:
subscriber:
description: Partial subscriber information
allOf:
- $ref: '#/components/schemas/SubscriberResponseDtoOptional'
GenerateLayoutPreviewResponseDto:
type: object
properties:
previewPayloadExample:
description: Preview payload example
allOf:
- $ref: '#/components/schemas/LayoutPreviewPayloadDto'
schema:
type:
- object
- 'null'
description: The payload schema that was used to generate the preview payload example
additionalProperties: true
result:
description: Preview result
oneOf:
- properties:
type:
enum:
- email
preview:
$ref: '#/components/schemas/EmailLayoutRenderOutput'
required:
- previewPayloadExample
- result
LayoutPreviewRequestDto:
type: object
properties:
controlValues:
type: object
description: Optional control values for layout preview
additionalProperties: true
previewPayload:
description: Optional payload for layout preview
allOf:
- $ref: '#/components/schemas/LayoutPreviewPayloadDto'
WorkflowInfoDto:
type: object
properties:
name:
type: string
description: The name of the workflow
example: Welcome Email
workflowId:
type: string
description: The unique identifier of the workflow
example: welcome-email
required:
- name
- workflowId
GetLayoutUsageResponseDto:
type: object
properties:
workflows:
description: Array of workflows that use this layout
type: array
items:
$ref: '#/components/schemas/WorkflowInfoDto'
required:
- workflows
MessagesResponseDto:
type: object
properties:
totalCount:
type: number
description: Total number of messages available
hasMore:
type: boolean
description: Indicates if there are more messages available
data:
description: List of messages
type: array
items:
$ref: '#/components/schemas/MessageResponseDto'
pageSize:
type: number
description: Number of messages per page
page:
type: number
description: Current page number
required:
- hasMore
- data
- pageSize
- page
DeleteMessageResponseDto:
type: object
properties:
acknowledged:
type: boolean
description: A boolean stating the success of the action
status:
type: string
description: The status enum for the performed action
enum:
- deleted
required:
- acknowledged
- status
TopicSubscriberDto:
type: object
properties:
_organizationId:
type: string
description: Unique identifier for the organization
example: org_123456789
_environmentId:
type: string
description: Unique identifier for the environment
example: env_123456789
_subscriberId:
type: string
description: Unique identifier for the subscriber
example: sub_123456789
_topicId:
type: string
description: Unique identifier for the topic
example: topic_123456789
topicKey:
type: string
description: Key associated with the topic
example: my_topic_key
externalSubscriberId:
type: string
description: External identifier for the subscriber
example: external_subscriber_123
required:
- _organizationId
- _environmentId
- _subscriberId
- _topicId
- topicKey
- externalSubscriberId
ListTopicsResponseDto:
type: object
properties:
data:
description: List of returned Topics
type: array
items:
$ref: '#/components/schemas/TopicResponseDto'
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
CreateUpdateTopicRequestDto:
type: object
properties:
key:
type: string
minLength: 1
maxLength: 100
description: The unique key identifier for the topic. The key must contain only alphanumeric characters (a-z, A-Z, 0-9), hyphens (-), underscores (_), colons (:), or be a valid email address.
example: task:12345
name:
type: string
minLength: 0
maxLength: 100
description: The display name for the topic
example: Task Title
required:
- key
UpdateTopicRequestDto:
type: object
properties:
name:
type: string
description: The display name for the topic
example: Updated Topic Name
required:
- name
DeleteTopicResponseDto:
type: object
properties:
acknowledged:
type: boolean
description: Indicates if the operation was acknowledged
example: true
required:
- acknowledged
TopicDto:
type: object
properties:
_id:
type: string
description: The internal unique identifier of the topic
example: 64f5e95d3d7946d80d0cb677
key:
type: string
description: The key identifier of the topic used in your application. Should be unique on the environment level.
example: product-updates
name:
type: string
description: The name of the topic
example: Product Updates
required:
- _id
- key
SubscriptionPreferenceDto:
type: object
properties:
subscriptionId:
type: string
description: The unique identifier of the subscription
example: 64f5e95d3d7946d80d0cb679
workflow:
description: Workflow information if this is a template-level preference
allOf:
- $ref: '#/components/schemas/WorkflowDto'
enabled:
type: boolean
description: Whether the preference is enabled
example: true
condition:
type: object
description: Optional condition using JSON Logic rules
additionalProperties: true
example:
and:
- ===:
- var: tier
- premium
required:
- subscriptionId
- enabled
SubscriptionResponseDto:
type: object
properties:
_id:
type: string
description: The unique identifier of the subscription
example: 64f5e95d3d7946d80d0cb679
identifier:
type: string
description: The identifier of the subscription
example: tk=product-updates:si=subscriber-123
name:
type: string
description: The name of the subscription
example: My Subscription
topic:
description: The topic information
allOf:
- $ref: '#/components/schemas/TopicDto'
subscriber:
description: The subscriber information
allOf:
- $ref: '#/components/schemas/SubscriberDto'
preferences:
description: The preferences for workflows in this subscription
type: array
items:
$ref: '#/components/schemas/SubscriptionPreferenceDto'
contextKeys:
description: Context keys that scope this subscription (e.g., tenant:org-a, project:proj-123)
example:
- tenant:org-a
- project:proj-123
type: array
items:
type: string
createdAt:
type: string
description: The creation date of the subscription
example: '2025-04-24T05:40:21Z'
updatedAt:
type: string
description: The last update date of the subscription
example: '2025-04-24T05:40:21Z'
required:
- _id
- topic
- subscriber
- createdAt
- updatedAt
MetaDto:
type: object
properties:
totalCount:
type: number
description: The total count of subscriber IDs provided
example: 3
successful:
type: number
description: The count of successfully created subscriptions
example: 2
failed:
type: number
description: The count of failed subscription attempts
example: 1
required:
- totalCount
- successful
- failed
SubscriptionErrorDto:
type: object
properties:
subscriberId:
type: string
description: The subscriber ID that failed
example: invalid-subscriber-id
code:
type: string
description: The error code
example: SUBSCRIBER_NOT_FOUND
message:
type: string
description: The error message
example: Subscriber with ID invalid-subscriber-id could not be found
required:
- subscriberId
- code
- message
CreateSubscriptionsResponseDto:
type: object
properties:
data:
description: The list of successfully created subscriptions
type: array
items:
$ref: '#/components/schemas/SubscriptionResponseDto'
meta:
description: Metadata about the operation
allOf:
- $ref: '#/components/schemas/MetaDto'
errors:
description: The list of errors for failed subscription attempts
type: array
items:
$ref: '#/components/schemas/SubscriptionErrorDto'
required:
- data
- meta
WorkflowPreferenceRequestDto:
type: object
properties:
enabled:
type: boolean
description: Whether the preference is enabled. Used when condition is not provided.
example: true
condition:
type: object
description: Optional condition using JSON Logic rules
additionalProperties: true
example:
and:
- ===:
- var: tier
- premium
workflowId:
type: string
description: The workflow identifier
example: workflow-123
required:
- workflowId
GroupPreferenceFilterDetailsDto:
type: object
properties:
workflowIds:
description: List of workflow identifiers
example:
- workflow-1
- workflow-2
type: array
items:
type: string
tags:
description: List of tags
example:
- tag1
- tag2
type: array
items:
type: string
GroupPreferenceFilterDto:
type: object
properties:
enabled:
type: boolean
description: Whether the preference is enabled. Used when condition is not provided.
example: true
condition:
type: object
description: Optional condition using JSON Logic rules
additionalProperties: true
example:
and:
- ===:
- var: tier
- premium
filter:
description: Filter criteria for workflow IDs and tags
allOf:
- $ref: '#/components/schemas/GroupPreferenceFilterDetailsDto'
required:
- filter
TopicSubscriberIdentifierDto:
type: object
properties:
identifier:
type: string
description: Unique identifier for this subscription
example: subscriber-123-subscription-a
subscriberId:
type: string
description: The subscriber ID
example: subscriber-123
name:
type: string
description: The name of the subscription
example: My Subscription
required:
- identifier
- subscriberId
CreateTopicSubscriptionsRequestDto:
type: object
properties:
subscriberIds:
description: 'List of subscriber IDs to subscribe to the topic (max: 100). @deprecated Use the "subscriptions" property instead.'
example:
- subscriberId1
- subscriberId2
deprecated: true
type: array
items:
type: string
subscriptions:
type: array
description: 'List of subscriptions to subscribe to the topic (max: 100). Can be either a string array of subscriber IDs or an array of objects with identifier and subscriberId'
items:
oneOf:
- type: string
- $ref: '#/components/schemas/TopicSubscriberIdentifierDto'
example:
- identifier: subscriber-123-subscription-a
subscriberId: subscriber-123
- identifier: subscriber-456-subscription-b
subscriberId: subscriber-456
name:
type: string
description: The name of the topic
example: My Topic
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
preferences:
type: array
description: The preferences of the topic. Can be a simple workflow ID string, workflow preference object, or group filter object
items:
oneOf:
- type: string
- $ref: '#/components/schemas/WorkflowPreferenceRequestDto'
- $ref: '#/components/schemas/GroupPreferenceFilterDto'
example:
- workflowId: workflow-123
condition:
===:
- var: tier
- premium
SubscriptionDto:
type: object
properties:
_id:
type: string
description: The unique identifier of the subscription
example: 64f5e95d3d7946d80d0cb679
identifier:
type: string
description: The identifier of the subscription
example: tk=product-updates:si=subscriber-123
topic:
description: The topic information
allOf:
- $ref: '#/components/schemas/TopicDto'
subscriber:
description: The subscriber information
allOf:
- $ref: '#/components/schemas/SubscriberDto'
contextKeys:
description: Context keys that scope this subscription (e.g., tenant:org-a, project:proj-123)
example:
- tenant:org-a
- project:proj-123
type: array
items:
type: string
createdAt:
type: string
description: The creation date of the subscription
example: '2025-04-24T05:40:21Z'
updatedAt:
type: string
description: The last update date of the subscription
example: '2025-04-24T05:40:21Z'
required:
- _id
- topic
- subscriber
- createdAt
- updatedAt
SubscriptionsDeleteErrorDto:
type: object
properties:
subscriberId:
type: string
description: The subscriber ID that failed
example: invalid-subscriber-id
code:
type: string
description: The error code
example: SUBSCRIBER_NOT_FOUND
message:
type: string
description: The error message
example: Subscriber with ID invalid-subscriber-id could not be found
required:
- subscriberId
- code
- message
DeleteTopicSubscriptionsResponseDto:
type: object
properties:
data:
description: The list of successfully deleted subscriptions
type: array
items:
$ref: '#/components/schemas/SubscriptionDto'
meta:
description: Metadata about the operation
allOf:
- $ref: '#/components/schemas/MetaDto'
errors:
description: The list of errors for failed deletion attempts
type: array
items:
$ref: '#/components/schemas/SubscriptionsDeleteErrorDto'
required:
- data
- meta
DeleteTopicSubscriberIdentifierDto:
type: object
properties:
identifier:
type: string
description: Unique identifier for this subscription. If provided, deletes only this specific subscription.
example: subscriber-123-subscription-a
subscriberId:
type: string
description: The subscriber ID. If provided without identifier, deletes all subscriptions for this subscriber within the topic.
example: subscriber-123
DeleteTopicSubscriptionsRequestDto:
type: object
properties:
subscriberIds:
description: 'List of subscriber identifiers to unsubscribe from the topic (max: 100). @deprecated Use the "subscriptions" property instead.'
example:
- subscriberId1
- subscriberId2
deprecated: true
type: array
items:
type: string
subscriptions:
type: array
description: 'List of subscriptions to unsubscribe from the topic (max: 100). Can be either a string array of subscriber IDs or an array of objects with identifier and/or subscriberId. If only subscriberId is provided, all subscriptions for that subscriber within the topic will be deleted.'
items:
oneOf:
- type: string
- $ref: '#/components/schemas/DeleteTopicSubscriberIdentifierDto'
example:
- identifier: subscriber-123-subscription-a
subscriberId: subscriber-123
- subscriberId: subscriber-456
- identifier: subscriber-789-subscription-b
SubscriptionDetailsResponseDto:
type: object
properties:
id:
type: string
description: The unique identifier of the subscription
example: 64f5e95d3d7946d80d0cb679
identifier:
type: string
description: The identifier of the subscription
example: subscription-identifier
name:
type: string
description: The name of the subscription
example: My Subscription
preferences:
description: The preferences/rules for the subscription
type: array
items:
$ref: '#/components/schemas/SubscriptionPreferenceDto'
contextKeys:
description: Context keys that scope this subscription (e.g., tenant:org-a, project:proj-123)
example:
- tenant:org-a
- project:proj-123
type: array
items:
type: string
required:
- id
UpdateTopicSubscriptionRequestDto:
type: object
properties:
name:
type: string
description: The name of the subscription
example: My Subscription
preferences:
type: array
description: The preferences of the topic. Can be a simple workflow ID string, workflow preference object, or group filter object
items:
oneOf:
- type: string
- $ref: '#/components/schemas/WorkflowPreferenceRequestDto'
- $ref: '#/components/schemas/GroupPreferenceFilterDto'
example:
- workflowId: workflow-123
condition:
===:
- var: tier
- premium
EnvironmentVariableValueResponseDto:
type: object
properties:
_environmentId:
type: string
value:
type: string
description: Value is masked (••••••••) for secret variables
required:
- _environmentId
- value
EnvironmentVariableResponseDto:
type: object
properties:
_id:
type: string
_organizationId:
type: string
key:
type: string
type:
type: string
enum:
- string
isSecret:
type: boolean
values:
type: array
items:
$ref: '#/components/schemas/EnvironmentVariableValueResponseDto'
createdAt:
type: string
updatedAt:
type: string
required:
- _id
- _organizationId
- key
- type
- isSecret
- values
- createdAt
- updatedAt
EnvironmentVariableWorkflowInfoDto:
type: object
properties:
name:
type: string
description: The name of the workflow
example: Welcome Email
workflowId:
type: string
description: The unique identifier of the workflow
example: welcome-email
required:
- name
- workflowId
GetEnvironmentVariableUsageResponseDto:
type: object
properties:
workflows:
description: Array of workflows that reference this environment variable
type: array
items:
$ref: '#/components/schemas/EnvironmentVariableWorkflowInfoDto'
required:
- workflows
EnvironmentVariableValueDto:
type: object
properties:
_environmentId:
type: string
value:
type: string
maxLength: 256
required:
- _environmentId
- value
CreateEnvironmentVariableRequestDto:
type: object
properties:
key:
type: string
maxLength: 256
pattern: /^[A-Za-z][A-Za-z0-9_]*$/
description: Unique key for the variable. Must start with a letter and contain only letters, digits, and underscores.
type:
type: string
enum:
- string
description: The type of the variable
isSecret:
type: boolean
description: Whether this variable is a secret (encrypted at rest, masked in responses)
values:
type: array
items:
$ref: '#/components/schemas/EnvironmentVariableValueDto'
required:
- key
UpdateEnvironmentVariableRequestDto:
type: object
properties:
key:
type: string
maxLength: 256
pattern: /^[A-Za-z][A-Za-z0-9_]*$/
description: Unique key for the variable. Must start with a letter and contain only letters, digits, and underscores.
type:
type: string
enum:
- string
description: The type of the variable
isSecret:
type: boolean
values:
type: array
items:
$ref: '#/components/schemas/EnvironmentVariableValueDto'
RuntimeIssueDto:
type: object
properties: {}
ControlsMetadataDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
ContentIssueEnum:
type: string
description: Type of step content issue
enum:
- ILLEGAL_VARIABLE_IN_CONTROL_VALUE
- INVALID_FILTER_ARG_IN_VARIABLE
- INVALID_URL
- MISSING_VALUE
- TIER_LIMIT_EXCEEDED
StepContentIssueDto:
type: object
properties:
issueType:
$ref: '#/components/schemas/ContentIssueEnum'
variableName:
type: string
description: Name of the variable related to the issue
message:
type: string
description: Detailed message describing the issue
required:
- issueType
- message
IntegrationIssueEnum:
type: string
description: Type of integration issue
enum:
- MISSING_INTEGRATION
- INBOX_NOT_CONNECTED
StepIntegrationIssue:
type: object
properties:
issueType:
$ref: '#/components/schemas/IntegrationIssueEnum'
variableName:
type: string
description: Name of the variable related to the issue
message:
type: string
description: Detailed message describing the issue
required:
- issueType
- message
StepIssuesDto:
type: object
properties:
controls:
type: object
description: Controls-related issues
additionalProperties:
type: array
items:
$ref: '#/components/schemas/StepContentIssueDto'
integration:
type: object
description: Integration-related issues
additionalProperties:
type: array
items:
$ref: '#/components/schemas/StepIntegrationIssue'
StepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the step
allOf:
- $ref: '#/components/schemas/ControlsMetadataDto'
controlValues:
type: object
description: Control values for the step (alias for controls.values)
additionalProperties: true
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
EmailControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
subject:
type: string
description: Subject of the email.
minLength: 1
body:
type: string
description: Body content of the email, either a valid Maily JSON object, or html string.
default: ''
editorType:
type: string
description: Type of editor to use for the body.
enum:
- block
- html
default: block
disableOutputSanitization:
type: boolean
description: Disable sanitization of the output.
default: false
layoutId:
type:
- string
- 'null'
description: Layout ID to use for the email. Null means no layout, undefined means default layout.
required:
- subject
- body
EmailControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to Email
allOf:
- $ref: '#/components/schemas/EmailControlDto'
required:
- values
EmailStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the email step
allOf:
- $ref: '#/components/schemas/EmailControlsMetadataResponseDto'
controlValues:
description: Control values for the email step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/EmailControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
SmsControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
body:
type: string
description: Content of the SMS message.
SmsControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to SMS
allOf:
- $ref: '#/components/schemas/SmsControlDto'
required:
- values
SmsStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the SMS step
allOf:
- $ref: '#/components/schemas/SmsControlsMetadataResponseDto'
controlValues:
description: Control values for the SMS step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/SmsControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
PushControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
subject:
type: string
description: Subject/title of the push notification.
body:
type: string
description: Body content of the push notification.
PushControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to Push
allOf:
- $ref: '#/components/schemas/PushControlDto'
required:
- values
PushStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the push step
allOf:
- $ref: '#/components/schemas/PushControlsMetadataResponseDto'
controlValues:
description: Control values for the push step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/PushControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
ChatControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
body:
type: string
description: Content of the chat message.
ChatControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to Chat
allOf:
- $ref: '#/components/schemas/ChatControlDto'
required:
- values
ChatStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the chat step
allOf:
- $ref: '#/components/schemas/ChatControlsMetadataResponseDto'
controlValues:
description: Control values for the chat step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/ChatControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
DelayControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
type:
type: string
description: Type of the delay. Currently only 'regular' is supported by the schema.
enum:
- regular
- timed
default: regular
amount:
type: number
description: Amount of time to delay.
minimum: 1
unit:
type: string
description: Unit of time for the delay amount.
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
cron:
type: string
description: Cron expression for the delay. Min length 1.
required:
- type
DelayControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to Delay
allOf:
- $ref: '#/components/schemas/DelayControlDto'
required:
- values
DelayStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the delay step
allOf:
- $ref: '#/components/schemas/DelayControlsMetadataResponseDto'
controlValues:
description: Control values for the delay step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/DelayControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
LookBackWindowDto:
type: object
properties:
amount:
type: number
description: Amount of time for the look-back window.
minimum: 1
unit:
type: string
description: Unit of time for the look-back window.
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
required:
- amount
- unit
DigestControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
type:
type: string
description: The type of digest strategy. Determines which fields are applicable.
enum:
- regular
- timed
amount:
type: number
description: The amount of time for the digest interval (for REGULAR type). Min 1.
minimum: 1
unit:
type: string
description: The unit of time for the digest interval (for REGULAR type).
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
lookBackWindow:
description: Configuration for look-back window (for REGULAR type).
allOf:
- $ref: '#/components/schemas/LookBackWindowDto'
cron:
type: string
description: Cron expression for TIMED digest. Min length 1.
digestKey:
type: string
description: Specify a custom key for digesting events instead of the default event key.
DigestControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to Digest
allOf:
- $ref: '#/components/schemas/DigestControlDto'
required:
- values
DigestStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the digest step
allOf:
- $ref: '#/components/schemas/DigestControlsMetadataResponseDto'
controlValues:
description: Control values for the digest step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/DigestControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
ThrottleControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
type:
type: string
description: The type of throttle window.
enum:
- fixed
- dynamic
default: fixed
amount:
type: number
description: The amount of time for the throttle window (required for fixed type).
minimum: 1
unit:
type: string
description: The unit of time for the throttle window (required for fixed type).
enum:
- minutes
- hours
- days
dynamicKey:
type: string
description: Key path to retrieve dynamic window value (required for dynamic type).
example: payload.timestamp
threshold:
type: number
description: The maximum number of executions allowed within the window. Defaults to 1.
minimum: 1
default: 1
throttleKey:
type: string
description: Optional key for grouping throttle rules. If not provided, defaults to workflow and subscriber combination.
required:
- type
ThrottleControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to Throttle
allOf:
- $ref: '#/components/schemas/ThrottleControlDto'
required:
- values
ThrottleStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the throttle step
allOf:
- $ref: '#/components/schemas/ThrottleControlsMetadataResponseDto'
controlValues:
description: Control values for the throttle step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/ThrottleControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
CustomControlDto:
type: object
properties:
custom:
type: object
description: Custom control values for the step.
additionalProperties: true
CustomControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to Custom step
allOf:
- $ref: '#/components/schemas/CustomControlDto'
required:
- values
CustomStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the custom step
allOf:
- $ref: '#/components/schemas/CustomControlsMetadataResponseDto'
controlValues:
description: Control values for the custom step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/CustomControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
HttpMethodEnum:
type: string
description: HTTP method
enum:
- GET
- POST
- PUT
- DELETE
- PATCH
HttpRequestKeyValuePairDto:
type: object
properties:
key:
type: string
description: Key of the key-value pair
value:
type: string
description: Value of the key-value pair
required:
- key
- value
HttpRequestControlDto:
type: object
properties:
method:
$ref: '#/components/schemas/HttpMethodEnum'
url:
type: string
description: Target URL for the HTTP request
headers:
description: Request headers as key-value pairs
type: array
items:
$ref: '#/components/schemas/HttpRequestKeyValuePairDto'
body:
description: Request body as a raw JSON string. Key-value arrays are supported for legacy workflows.
oneOf:
- type: string
- type: array
items:
$ref: '#/components/schemas/HttpRequestKeyValuePairDto'
responseBodySchema:
type: object
description: JSON schema to validate response body against
additionalProperties: true
enforceSchemaValidation:
type: boolean
description: Whether to enforce response body schema validation
continueOnFailure:
type: boolean
description: Whether to continue workflow execution on failure
required:
- method
- url
HttpRequestControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to HTTP Request step
allOf:
- $ref: '#/components/schemas/HttpRequestControlDto'
required:
- values
HttpRequestStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the HTTP request step
allOf:
- $ref: '#/components/schemas/HttpRequestControlsMetadataResponseDto'
controlValues:
description: Control values for the HTTP request step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/HttpRequestControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
ActionDto:
type: object
properties:
label:
type: string
description: Label for the action button.
redirect:
description: Redirect configuration for the action.
allOf:
- $ref: '#/components/schemas/RedirectDto'
InAppControlDto:
type: object
properties:
skip:
type: object
description: JSONLogic filter conditions for conditionally skipping the step execution. Supports complex logical operations with AND, OR, and comparison operators. See https://jsonlogic.com/ for full typing reference.
example:
and:
- ==:
- var: payload.tier
- pro
- ==:
- var: subscriber.data.role
- admin
- '>':
- var: payload.amount
- '4'
additionalProperties: true
body:
type: string
description: Content/body of the in-app message. Required if subject is empty.
minLength: 1
subject:
type: string
description: Subject/title of the in-app message. Required if body is empty.
minLength: 1
avatar:
type: string
description: URL for an avatar image. Must be a valid URL or start with / or {{ variable }}.
primaryAction:
description: Primary action button details.
allOf:
- $ref: '#/components/schemas/ActionDto'
secondaryAction:
description: Secondary action button details.
allOf:
- $ref: '#/components/schemas/ActionDto'
redirect:
description: Redirection URL configuration for the main content click (if no actions defined/clicked)..
allOf:
- $ref: '#/components/schemas/RedirectDto'
disableOutputSanitization:
type: boolean
description: Disable sanitization of the output.
default: false
data:
type: object
description: Additional data payload for the step.
additionalProperties: true
InAppControlsMetadataResponseDto:
type: object
properties:
dataSchema:
type: object
description: JSON Schema for data
additionalProperties: true
uiSchema:
description: UI Schema for rendering
allOf:
- $ref: '#/components/schemas/UiSchema'
values:
description: Control values specific to In-App
allOf:
- $ref: '#/components/schemas/InAppControlDto'
required:
- values
InAppStepResponseDto:
type: object
properties:
controls:
description: Controls metadata for the in-app step
allOf:
- $ref: '#/components/schemas/InAppControlsMetadataResponseDto'
controlValues:
description: Control values for the in-app step
additionalProperties: true
allOf:
- $ref: '#/components/schemas/InAppControlDto'
variables:
type: object
description: JSON Schema for variables, follows the JSON Schema standard
additionalProperties: true
stepId:
type: string
description: Unique identifier of the step
_id:
type: string
description: Database identifier of the step
name:
type: string
description: Name of the step
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
workflowId:
type: string
description: Workflow identifier
workflowDatabaseId:
type: string
description: Workflow database identifier
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
stepResolverHash:
type: string
description: Hash identifying the deployed Cloudflare Worker for this step
required:
- controls
- variables
- stepId
- _id
- name
- slug
- type
- origin
- workflowId
- workflowDatabaseId
WorkflowPreferenceDto:
type: object
properties:
enabled:
type: boolean
description: A flag specifying if notification delivery is enabled for the workflow. If true, notification delivery is enabled by default for all channels. This setting can be overridden by the channel preferences.
default: true
readOnly:
type: boolean
description: A flag specifying if the preference is read-only. If true, the preference cannot be changed by the Subscriber.
default: false
required:
- enabled
- readOnly
ChannelPreferenceDto:
type: object
properties:
enabled:
type: boolean
description: A flag specifying if notification delivery is enabled for the channel. If true, notification delivery is enabled.
default: true
required:
- enabled
WorkflowPreferencesDto:
type: object
properties:
all:
description: A preference for the workflow. The values specified here will be used if no preference is specified for a channel.
oneOf:
- $ref: '#/components/schemas/WorkflowPreferenceDto'
allOf:
- $ref: '#/components/schemas/WorkflowPreferenceDto'
channels:
type: object
description: Preferences for different communication channels
additionalProperties:
$ref: '#/components/schemas/ChannelPreferenceDto'
example:
email:
enabled: true
sms:
enabled: false
required:
- all
- channels
WorkflowPreferencesResponseDto:
type: object
properties:
user:
description: User-specific workflow preferences
allOf:
- $ref: '#/components/schemas/WorkflowPreferencesDto'
default:
description: Default workflow preferences
allOf:
- $ref: '#/components/schemas/WorkflowPreferencesDto'
required:
- default
WorkflowStatusEnum:
type: string
description: Status of the workflow
enum:
- ACTIVE
- INACTIVE
- ERROR
WorkflowResponseDto:
type: object
properties:
name:
type: string
description: Name of the workflow
description:
type: string
description: Description of the workflow
tags:
description: Tags associated with the workflow
type: array
items:
type: string
active:
type: boolean
description: Whether the workflow is active
default: false
validatePayload:
type: boolean
description: Enable or disable payload schema validation
payloadSchema:
type:
- object
- 'null'
description: The payload JSON Schema for the workflow
additionalProperties: true
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this workflow
default: false
_id:
type: string
description: Database identifier of the workflow
workflowId:
type: string
description: Workflow identifier
slug:
type: string
description: Slug of the workflow
updatedAt:
type: string
description: Last updated timestamp
createdAt:
type: string
description: Creation timestamp
updatedBy:
description: User who last updated the workflow
allOf:
- $ref: '#/components/schemas/UserResponseDto'
lastPublishedAt:
type:
- string
- 'null'
description: Timestamp of the last workflow publication
lastPublishedBy:
description: User who last published the workflow
allOf:
- $ref: '#/components/schemas/UserResponseDto'
steps:
type: array
description: Steps of the workflow
items:
oneOf:
- $ref: '#/components/schemas/InAppStepResponseDto'
- $ref: '#/components/schemas/EmailStepResponseDto'
- $ref: '#/components/schemas/SmsStepResponseDto'
- $ref: '#/components/schemas/PushStepResponseDto'
- $ref: '#/components/schemas/ChatStepResponseDto'
- $ref: '#/components/schemas/DelayStepResponseDto'
- $ref: '#/components/schemas/DigestStepResponseDto'
- $ref: '#/components/schemas/CustomStepResponseDto'
- $ref: '#/components/schemas/ThrottleStepResponseDto'
- $ref: '#/components/schemas/HttpRequestStepResponseDto'
discriminator:
propertyName: type
mapping:
in_app: '#/components/schemas/InAppStepResponseDto'
email: '#/components/schemas/EmailStepResponseDto'
sms: '#/components/schemas/SmsStepResponseDto'
push: '#/components/schemas/PushStepResponseDto'
chat: '#/components/schemas/ChatStepResponseDto'
delay: '#/components/schemas/DelayStepResponseDto'
digest: '#/components/schemas/DigestStepResponseDto'
custom: '#/components/schemas/CustomStepResponseDto'
throttle: '#/components/schemas/ThrottleStepResponseDto'
http_request: '#/components/schemas/HttpRequestStepResponseDto'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
preferences:
description: Preferences for the workflow
allOf:
- $ref: '#/components/schemas/WorkflowPreferencesResponseDto'
status:
$ref: '#/components/schemas/WorkflowStatusEnum'
issues:
type: object
description: Runtime issues for workflow creation and update
additionalProperties:
$ref: '#/components/schemas/RuntimeIssueDto'
lastTriggeredAt:
type:
- string
- 'null'
description: Timestamp of the last workflow trigger
payloadExample:
type:
- object
- 'null'
description: Generated payload example based on the payload schema
additionalProperties: true
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
required:
- name
- _id
- workflowId
- slug
- updatedAt
- createdAt
- steps
- origin
- preferences
- status
- severity
InAppStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the In-App step.
oneOf:
- $ref: '#/components/schemas/InAppControlDto'
- type: object
additionalProperties: true
required:
- name
- type
EmailStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the Email step.
oneOf:
- $ref: '#/components/schemas/EmailControlDto'
- type: object
additionalProperties: true
required:
- name
- type
SmsStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the SMS step.
oneOf:
- $ref: '#/components/schemas/SmsControlDto'
- type: object
additionalProperties: true
required:
- name
- type
PushStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the Push step.
oneOf:
- $ref: '#/components/schemas/PushControlDto'
- type: object
additionalProperties: true
required:
- name
- type
ChatStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the Chat step.
oneOf:
- $ref: '#/components/schemas/ChatControlDto'
- type: object
additionalProperties: true
required:
- name
- type
DelayStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the Delay step.
oneOf:
- $ref: '#/components/schemas/DelayControlDto'
- type: object
additionalProperties: true
required:
- name
- type
DigestStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the Digest step.
oneOf:
- $ref: '#/components/schemas/DigestControlDto'
- type: object
additionalProperties: true
required:
- name
- type
ThrottleStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the Throttle step.
oneOf:
- $ref: '#/components/schemas/ThrottleControlDto'
- type: object
additionalProperties: true
required:
- name
- type
CustomStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the Custom step.
oneOf:
- $ref: '#/components/schemas/CustomControlDto'
- type: object
additionalProperties: true
required:
- name
- type
HttpRequestStepUpsertDto:
type: object
properties:
_id:
type: string
description: Database identifier of the step. Used for updating the step.
stepId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the step
name:
type: string
description: Name of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
controlValues:
description: Control values for the HTTP Request step.
oneOf:
- $ref: '#/components/schemas/HttpRequestControlDto'
- type: object
additionalProperties: true
required:
- name
- type
WorkflowCreationSourceEnum:
type: string
description: Source of workflow creation
default: editor
enum:
- template_store
- editor
- notification_directory
- onboarding_digest_demo
- onboarding_in_app
- empty_state
- dropdown
- onboarding_get_started
- bridge
- dashboard
- ai
PreferencesRequestDto:
type: object
properties:
user:
description: User workflow preferences
oneOf:
- $ref: '#/components/schemas/WorkflowPreferencesDto'
workflow:
description: Workflow-specific preferences
allOf:
- $ref: '#/components/schemas/WorkflowPreferencesDto'
CreateWorkflowDto:
type: object
properties:
name:
type: string
description: Name of the workflow
description:
type: string
description: Description of the workflow
tags:
description: Tags associated with the workflow
type: array
items:
type: string
active:
type: boolean
description: Whether the workflow is active
default: false
validatePayload:
type: boolean
description: Enable or disable payload schema validation
payloadSchema:
type:
- object
- 'null'
description: The payload JSON Schema for the workflow
additionalProperties: true
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this workflow
default: false
workflowId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Unique identifier for the workflow
steps:
type: array
description: Steps of the workflow
items:
oneOf:
- $ref: '#/components/schemas/InAppStepUpsertDto'
- $ref: '#/components/schemas/EmailStepUpsertDto'
- $ref: '#/components/schemas/SmsStepUpsertDto'
- $ref: '#/components/schemas/PushStepUpsertDto'
- $ref: '#/components/schemas/ChatStepUpsertDto'
- $ref: '#/components/schemas/DelayStepUpsertDto'
- $ref: '#/components/schemas/DigestStepUpsertDto'
- $ref: '#/components/schemas/ThrottleStepUpsertDto'
- $ref: '#/components/schemas/CustomStepUpsertDto'
- $ref: '#/components/schemas/HttpRequestStepUpsertDto'
discriminator:
propertyName: type
mapping:
in_app: '#/components/schemas/InAppStepUpsertDto'
email: '#/components/schemas/EmailStepUpsertDto'
sms: '#/components/schemas/SmsStepUpsertDto'
push: '#/components/schemas/PushStepUpsertDto'
chat: '#/components/schemas/ChatStepUpsertDto'
delay: '#/components/schemas/DelayStepUpsertDto'
digest: '#/components/schemas/DigestStepUpsertDto'
throttle: '#/components/schemas/ThrottleStepUpsertDto'
custom: '#/components/schemas/CustomStepUpsertDto'
http_request: '#/components/schemas/HttpRequestStepUpsertDto'
__source:
$ref: '#/components/schemas/WorkflowCreationSourceEnum'
preferences:
description: Workflow preferences
allOf:
- $ref: '#/components/schemas/PreferencesRequestDto'
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
required:
- name
- workflowId
- steps
SyncWorkflowDto:
type: object
properties:
targetEnvironmentId:
type: string
description: Target environment identifier to sync the workflow to
required:
- targetEnvironmentId
UpdateWorkflowDto:
type: object
properties:
name:
type: string
description: Name of the workflow
description:
type: string
description: Description of the workflow
tags:
description: Tags associated with the workflow
type: array
items:
type: string
active:
type: boolean
description: Whether the workflow is active
default: false
validatePayload:
type: boolean
description: Enable or disable payload schema validation
payloadSchema:
type:
- object
- 'null'
description: The payload JSON Schema for the workflow
additionalProperties: true
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this workflow
default: false
workflowId:
type: string
description: Workflow ID (allowed only for code-first workflows)
steps:
type: array
description: Steps of the workflow
items:
oneOf:
- $ref: '#/components/schemas/InAppStepUpsertDto'
- $ref: '#/components/schemas/EmailStepUpsertDto'
- $ref: '#/components/schemas/SmsStepUpsertDto'
- $ref: '#/components/schemas/PushStepUpsertDto'
- $ref: '#/components/schemas/ChatStepUpsertDto'
- $ref: '#/components/schemas/DelayStepUpsertDto'
- $ref: '#/components/schemas/DigestStepUpsertDto'
- $ref: '#/components/schemas/CustomStepUpsertDto'
- $ref: '#/components/schemas/HttpRequestStepUpsertDto'
discriminator:
propertyName: type
mapping:
in_app: '#/components/schemas/InAppStepUpsertDto'
email: '#/components/schemas/EmailStepUpsertDto'
sms: '#/components/schemas/SmsStepUpsertDto'
push: '#/components/schemas/PushStepUpsertDto'
chat: '#/components/schemas/ChatStepUpsertDto'
delay: '#/components/schemas/DelayStepUpsertDto'
digest: '#/components/schemas/DigestStepUpsertDto'
custom: '#/components/schemas/CustomStepUpsertDto'
http_request: '#/components/schemas/HttpRequestStepUpsertDto'
preferences:
description: Workflow preferences
allOf:
- $ref: '#/components/schemas/PreferencesRequestDto'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
severity:
$ref: '#/components/schemas/SeverityLevelEnum'
required:
- name
- steps
- preferences
- origin
StepListResponseDto:
type: object
properties:
slug:
type: string
description: Slug of the step
type:
$ref: '#/components/schemas/StepTypeEnum'
issues:
description: Issues associated with the step
allOf:
- $ref: '#/components/schemas/StepIssuesDto'
required:
- slug
- type
WorkflowListResponseDto:
type: object
properties:
name:
type: string
description: Name of the workflow
tags:
type: array
description: Tags associated with the workflow
items:
type: string
updatedAt:
type: string
description: Last updated timestamp
createdAt:
type: string
description: Creation timestamp
updatedBy:
description: User who last updated the workflow
allOf:
- $ref: '#/components/schemas/UserResponseDto'
lastPublishedAt:
type:
- string
- 'null'
description: Timestamp of the last workflow publication
lastPublishedBy:
description: User who last published the workflow
allOf:
- $ref: '#/components/schemas/UserResponseDto'
_id:
type: string
description: Unique database identifier
workflowId:
type: string
description: Workflow identifier
slug:
type: string
description: Workflow slug
status:
$ref: '#/components/schemas/WorkflowStatusEnum'
origin:
$ref: '#/components/schemas/ResourceOriginEnum'
lastTriggeredAt:
type:
- string
- 'null'
description: Timestamp of the last workflow trigger
stepTypeOverviews:
type: array
description: Overview of step types in the workflow
items:
$ref: '#/components/schemas/StepTypeEnum'
isTranslationEnabled:
type: boolean
description: Is translation enabled for the workflow
steps:
description: Steps of the workflow
type: array
items:
$ref: '#/components/schemas/StepListResponseDto'
required:
- name
- updatedAt
- createdAt
- _id
- workflowId
- slug
- status
- origin
- stepTypeOverviews
- steps
ListWorkflowResponse:
type: object
properties:
workflows:
description: List of workflows
type: array
items:
$ref: '#/components/schemas/WorkflowListResponseDto'
totalCount:
type: number
description: Total number of workflows
required:
- workflows
- totalCount
WorkflowResponseDtoSortField:
type: string
enum:
- createdAt
- updatedAt
- name
- lastTriggeredAt
DuplicateWorkflowDto:
type: object
properties:
name:
type: string
description: Name of the workflow
workflowId:
type: string
pattern: SLUG_IDENTIFIER_REGEX
description: Custom workflow identifier for the duplicated workflow
tags:
description: Tags associated with the workflow
type: array
items:
type: string
description:
type: string
description: Description of the workflow
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this workflow
default: false
EmailRenderOutput:
type: object
properties:
subject:
type: string
description: Subject of the email
body:
type: string
description: Body of the email
required:
- subject
- body
InAppRenderOutput:
type: object
properties:
subject:
type: string
description: Subject of the in-app notification
body:
type: string
description: Body of the in-app notification
avatar:
type: string
description: Avatar for the in-app notification
primaryAction:
description: Primary action details
allOf:
- $ref: '#/components/schemas/ActionDto'
secondaryAction:
description: Secondary action details
allOf:
- $ref: '#/components/schemas/ActionDto'
data:
type: object
description: Additional data
additionalProperties: true
redirect:
description: Redirect details
allOf:
- $ref: '#/components/schemas/RedirectDto'
required:
- body
SmsRenderOutput:
type: object
properties:
body:
type: string
description: Body of the SMS message
required:
- body
PushRenderOutput:
type: object
properties:
subject:
type: string
description: Subject of the push notification
body:
type: string
description: Body of the push notification
required:
- subject
- body
ChatRenderOutput:
type: object
properties:
body:
type: string
description: Body of the chat message
required:
- body
TimeUnitEnum:
type: string
description: Time unit
enum:
- seconds
- minutes
- hours
- days
- weeks
- months
DigestRegularOutput:
type: object
properties:
amount:
type: number
description: Amount of time units
unit:
$ref: '#/components/schemas/TimeUnitEnum'
digestKey:
type: string
description: Optional digest key
lookBackWindow:
type: object
description: Look back window configuration
required:
- amount
- unit
DigestTimedOutput:
type: object
properties:
cron:
type: string
description: Cron expression
digestKey:
type: string
description: Optional digest key
required:
- cron
DelayRenderOutput:
type: object
properties:
type:
type: string
description: Type of delay
amount:
type: number
description: Amount of time units
unit:
$ref: '#/components/schemas/TimeUnitEnum'
required:
- type
- amount
- unit
PreviewErrorDto:
type: object
properties:
title:
type: string
description: Short error title
message:
type: string
description: Detailed error message
hint:
type: string
description: Actionable hint for the user
required:
- title
- message
- hint
PreviewPayloadDto:
type: object
properties:
subscriber:
description: Partial subscriber information
allOf:
- $ref: '#/components/schemas/SubscriberResponseDtoOptional'
payload:
type: object
description: Payload data
additionalProperties: true
steps:
type: object
description: Steps data
additionalProperties: true
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
env:
type: object
description: Environment variables data
additionalProperties: true
GeneratePreviewResponseDto:
type: object
properties:
previewPayloadExample:
description: Preview payload example
allOf:
- $ref: '#/components/schemas/PreviewPayloadDto'
schema:
type:
- object
- 'null'
description: The payload schema that was used to generate the preview payload example
additionalProperties: true
novuSignature:
type: string
description: Sample novu-signature header value for HTTP request steps
result:
description: Preview result
oneOf:
- type: object
additionalProperties: true
- properties:
type:
enum:
- email
preview:
$ref: '#/components/schemas/EmailRenderOutput'
error:
$ref: '#/components/schemas/PreviewErrorDto'
- properties:
type:
enum:
- email
preview:
$ref: '#/components/schemas/EmailRenderOutput'
error:
$ref: '#/components/schemas/PreviewErrorDto'
- properties:
type:
enum:
- in_app
preview:
$ref: '#/components/schemas/InAppRenderOutput'
error:
$ref: '#/components/schemas/PreviewErrorDto'
- properties:
type:
enum:
- sms
preview:
$ref: '#/components/schemas/SmsRenderOutput'
error:
$ref: '#/components/schemas/PreviewErrorDto'
- properties:
type:
enum:
- push
preview:
$ref: '#/components/schemas/PushRenderOutput'
error:
$ref: '#/components/schemas/PreviewErrorDto'
- properties:
type:
enum:
- chat
preview:
$ref: '#/components/schemas/ChatRenderOutput'
error:
$ref: '#/components/schemas/PreviewErrorDto'
- properties:
type:
enum:
- delay
preview:
$ref: '#/components/schemas/DigestRegularOutput'
- properties:
type:
enum:
- digest
preview:
$ref: '#/components/schemas/DigestRegularOutput'
required:
- previewPayloadExample
- result
GeneratePreviewRequestDto:
type: object
properties:
controlValues:
type: object
description: Optional control values
additionalProperties: true
previewPayload:
description: Optional payload for preview generation
allOf:
- $ref: '#/components/schemas/PreviewPayloadDto'
PatchWorkflowDto:
type: object
properties:
active:
type: boolean
description: Activate or deactivate the workflow
name:
type: string
description: New name for the workflow
description:
type: string
description: Updated description of the workflow
tags:
type: array
description: Tags associated with the workflow
items:
type: string
payloadSchema:
type:
- object
- 'null'
description: The payload JSON Schema for the workflow
additionalProperties: true
validatePayload:
type: boolean
description: Enable or disable payload schema validation
isTranslationEnabled:
type: boolean
description: Enable or disable translations for this workflow
GetEnvironmentTagsDto:
type: object
properties:
name:
type: string
required:
- name
SyncActionEnum:
type: string
description: Sync action performed
enum:
- created
- updated
- skipped
- deleted
SyncedWorkflowDto:
type: object
properties:
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
resourceId:
type: string
description: Resource ID
resourceName:
type: string
description: Resource name
action:
$ref: '#/components/schemas/SyncActionEnum'
required:
- resourceType
- resourceId
- resourceName
- action
FailedWorkflowDto:
type: object
properties:
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
resourceId:
type: string
description: Resource ID
resourceName:
type: string
description: Resource name
error:
type: string
description: Error message
stack:
type: string
description: Error stack trace
required:
- resourceType
- resourceId
- resourceName
- error
SkippedWorkflowDto:
type: object
properties:
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
resourceId:
type: string
description: Resource ID
resourceName:
type: string
description: Resource name
reason:
type: string
description: Reason for skipping
required:
- resourceType
- resourceId
- resourceName
- reason
SyncResultDto:
type: object
properties:
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
successful:
description: Successfully synced resources
type: array
items:
$ref: '#/components/schemas/SyncedWorkflowDto'
failed:
description: Failed resource syncs
type: array
items:
$ref: '#/components/schemas/FailedWorkflowDto'
skipped:
description: Skipped resources
type: array
items:
$ref: '#/components/schemas/SkippedWorkflowDto'
totalProcessed:
type: number
description: Total number of resources processed
required:
- resourceType
- successful
- failed
- skipped
- totalProcessed
PublishSummaryDto:
type: object
properties:
resources:
type: number
description: Number of resources processed
successful:
type: number
description: Number of successful syncs
failed:
type: number
description: Number of failed syncs
skipped:
type: number
description: Number of skipped resources
required:
- resources
- successful
- failed
- skipped
PublishEnvironmentResponseDto:
type: object
properties:
results:
description: Sync results by resource type
type: array
items:
$ref: '#/components/schemas/SyncResultDto'
summary:
description: Summary of the sync operation
allOf:
- $ref: '#/components/schemas/PublishSummaryDto'
required:
- results
- summary
ResourceToPublishDto:
type: object
properties:
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
resourceId:
type: string
description: Unique identifier of the resource to publish
example: workflow-id-1
required:
- resourceType
- resourceId
PublishEnvironmentRequestDto:
type: object
properties:
sourceEnvironmentId:
type: string
description: Source environment ID to sync from. Defaults to the Development environment if not provided.
example: 507f1f77bcf86cd799439011
dryRun:
type: boolean
description: Perform a dry run without making actual changes
default: false
resources:
description: Array of specific resources to publish. If not provided, all resources will be published.
type: array
items:
$ref: '#/components/schemas/ResourceToPublishDto'
UserInfoDto:
type: object
properties:
_id:
type: string
description: User ID
firstName:
type: string
description: User first name
lastName:
type:
- string
- 'null'
description: User last name
externalId:
type: string
description: User external ID
required:
- _id
- firstName
ResourceInfoDto:
type: object
properties:
id:
type:
- string
- 'null'
description: Resource ID (workflow ID or step ID)
name:
type:
- string
- 'null'
description: Resource name (workflow name or step name)
updatedBy:
description: User who last updated the resource
allOf:
- $ref: '#/components/schemas/UserInfoDto'
updatedAt:
type:
- string
- 'null'
description: When the resource was last updated
format: date-time
example: '2024-01-15T10:30:00.000Z'
DiffActionEnum:
type: string
description: Type of change
enum:
- added
- modified
- deleted
- unchanged
- moved
ResourceDiffDto:
type: object
properties:
sourceResource:
description: Source resource information
allOf:
- $ref: '#/components/schemas/ResourceInfoDto'
targetResource:
description: Target resource information
allOf:
- $ref: '#/components/schemas/ResourceInfoDto'
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
action:
$ref: '#/components/schemas/DiffActionEnum'
diffs:
type: object
description: Detailed changes (only for modified resources)
properties:
previous:
type:
- object
- 'null'
description: Previous state of the resource (null for added resources)
additionalProperties: true
new:
type:
- object
- 'null'
description: New state of the resource (null for deleted resources)
additionalProperties: true
stepType:
type: string
description: Step type (only for step resources)
previousIndex:
type: number
description: Previous index in steps array (for moved/deleted steps)
newIndex:
type: number
description: New index in steps array (for moved/added steps)
required:
- resourceType
- action
DiffSummaryDto:
type: object
properties:
added:
type: number
description: Number of added resources (workflows and steps)
modified:
type: number
description: Number of modified resources (workflows and steps)
deleted:
type: number
description: Number of deleted resources (workflows and steps)
unchanged:
type: number
description: Number of unchanged resources (workflows and steps)
required:
- added
- modified
- deleted
- unchanged
DependencyReasonEnum:
type: string
description: Reason for the dependency
enum:
- LAYOUT_REQUIRED_FOR_WORKFLOW
- LAYOUT_EXISTS_IN_TARGET
ResourceDependencyDto:
type: object
properties:
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
resourceId:
type: string
description: ID of the dependent resource
resourceName:
type: string
description: Name of the dependent resource
isBlocking:
type: boolean
description: Whether this dependency blocks the operation
reason:
$ref: '#/components/schemas/DependencyReasonEnum'
required:
- resourceType
- resourceId
- resourceName
- isBlocking
- reason
ResourceDiffResultDto:
type: object
properties:
resourceType:
$ref: '#/components/schemas/ResourceTypeEnum'
sourceResource:
description: Source resource information
allOf:
- $ref: '#/components/schemas/ResourceInfoDto'
targetResource:
description: Target resource information
allOf:
- $ref: '#/components/schemas/ResourceInfoDto'
changes:
description: List of specific changes for this resource
type: array
items:
$ref: '#/components/schemas/ResourceDiffDto'
summary:
description: Summary of changes for this resource
allOf:
- $ref: '#/components/schemas/DiffSummaryDto'
dependencies:
description: Dependencies that affect this resource
type: array
items:
$ref: '#/components/schemas/ResourceDependencyDto'
required:
- resourceType
- changes
- summary
EnvironmentDiffSummaryDto:
type: object
properties:
totalEntities:
type: number
description: Total number of entities compared
totalChanges:
type: number
description: Total number of changes detected
hasChanges:
type: boolean
description: Whether any changes were detected
required:
- totalEntities
- totalChanges
- hasChanges
DiffEnvironmentResponseDto:
type: object
properties:
sourceEnvironmentId:
type: string
description: Source environment ID
targetEnvironmentId:
type: string
description: Target environment ID
resources:
description: Diff resources by resource type
type: array
items:
$ref: '#/components/schemas/ResourceDiffResultDto'
summary:
description: Overall summary
allOf:
- $ref: '#/components/schemas/EnvironmentDiffSummaryDto'
required:
- sourceEnvironmentId
- targetEnvironmentId
- resources
- summary
DiffEnvironmentRequestDto:
type: object
properties:
sourceEnvironmentId:
type: string
description: Source environment ID to compare from. Defaults to the Development environment if not provided.
example: 507f1f77bcf86cd799439011
WorkspaceDto:
type: object
properties:
id:
type: string
example: T123456
name:
type: string
example: Acme HQ
required:
- id
AuthDto:
type: object
properties:
accessToken:
type: string
example: Workspace access token
required:
- accessToken
GetChannelConnectionResponseDto:
type: object
properties:
identifier:
type: string
description: The unique identifier of the channel endpoint.
channel:
enum:
- in_app
- email
- sms
- chat
- push
type:
- string
- 'null'
description: The channel type (email, sms, push, chat, etc.).
providerId:
type:
- string
- 'null'
description: The provider identifier (e.g., sendgrid, twilio, slack, etc.).
enum:
- emailjs
- mailgun
- mailjet
- mandrill
- nodemailer
- postmark
- sendgrid
- sendinblue
- ses
- netcore
- infobip-email
- resend
- plunk
- mailersend
- mailtrap
- clickatell
- outlook365
- novu-email
- sparkpost
- email-webhook
- braze
- novu-email-agent
- nexmo
- plivo
- sms77
- sms-central
- sns
- telnyx
- twilio
- gupshup
- firetext
- infobip-sms
- burst-sms
- bulk-sms
- isend-sms
- forty-six-elks
- kannel
- maqsam
- termii
- africas-talking
- novu-sms
- sendchamp
- generic-sms
- clicksend
- bandwidth
- messagebird
- simpletexting
- azure-sms
- ring-central
- brevo-sms
- eazy-sms
- mobishastra
- afro-message
- unifonic
- smsmode
- imedia
- sinch
- isendpro-sms
- cm-telecom
- fcm
- apns
- expo
- one-signal
- pushpad
- push-webhook
- pusher-beams
- appio
- novu
- slack
- discord
- msteams
- mattermost
- ryver
- zulip
- grafana-on-call
- getstream
- rocket-chat
- whatsapp-business
- chat-webhook
- novu-slack
- telegram
- anthropic
example: slack
integrationIdentifier:
type:
- string
- 'null'
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
subscriberId:
type:
- string
- 'null'
description: The subscriber ID to which the channel connection is linked
example: subscriber-123
contextKeys:
description: The context of the channel connection
example:
- tenant:org-123
- region:us-east-1
type: array
items:
type: string
workspace:
$ref: '#/components/schemas/WorkspaceDto'
auth:
$ref: '#/components/schemas/AuthDto'
createdAt:
type: string
description: The timestamp indicating when the channel endpoint was created, in ISO 8601 format.
updatedAt:
type: string
description: The timestamp indicating when the channel endpoint was last updated, in ISO 8601 format.
required:
- identifier
- channel
- providerId
- integrationIdentifier
- subscriberId
- contextKeys
- workspace
- auth
- createdAt
- updatedAt
ListChannelConnectionsResponseDto:
type: object
properties:
data:
description: List of returned Channel Connections
type: array
items:
$ref: '#/components/schemas/GetChannelConnectionResponseDto'
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
CreateChannelConnectionRequestDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel connection. If not provided, one will be generated automatically.
example: slack-prod-user123-abc4
subscriberId:
type: string
description: The subscriber ID to link the channel connection to
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
connectionMode:
type: string
description: Connection mode that determines how the channel connection is scoped. Use "subscriber" (default) to associate the connection with a specific subscriber. Use "shared" to associate the connection with a context instead of a subscriber — subscriberId will not be stored on the connection.
enum:
- subscriber
- shared
example: shared
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel connection.
example: slack-prod
workspace:
$ref: '#/components/schemas/WorkspaceDto'
auth:
$ref: '#/components/schemas/AuthDto'
required:
- integrationIdentifier
- workspace
- auth
UpdateChannelConnectionRequestDto:
type: object
properties:
workspace:
$ref: '#/components/schemas/WorkspaceDto'
auth:
$ref: '#/components/schemas/AuthDto'
required:
- workspace
- auth
SlackChannelEndpointDto:
type: object
properties:
channelId:
type: string
description: Slack channel ID
example: C123456789
required:
- channelId
CreateSlackChannelEndpointDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel endpoint. If not provided, one will be generated automatically.
example: slack-channel-user123-abc4
subscriberId:
type: string
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type: string
description: The identifier of the channel connection to use for this channel endpoint.
example: slack-connection-abc123
type:
type: string
description: Type of channel endpoint
enum:
- slack_channel
example: slack_channel
endpoint:
description: Slack channel endpoint data
allOf:
- $ref: '#/components/schemas/SlackChannelEndpointDto'
required:
- subscriberId
- integrationIdentifier
- type
- endpoint
SlackUserEndpointDto:
type: object
properties:
userId:
type: string
description: Slack user ID
example: U123456789
required:
- userId
CreateSlackUserEndpointDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel endpoint. If not provided, one will be generated automatically.
example: slack-channel-user123-abc4
subscriberId:
type: string
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type: string
description: The identifier of the channel connection to use for this channel endpoint.
example: slack-connection-abc123
type:
type: string
description: Type of channel endpoint
enum:
- slack_user
example: slack_user
endpoint:
description: Slack user endpoint data
allOf:
- $ref: '#/components/schemas/SlackUserEndpointDto'
required:
- subscriberId
- integrationIdentifier
- type
- endpoint
WebhookEndpointDto:
type: object
properties:
url:
type: string
description: Webhook URL
example: https://example.com/webhook
channel:
type: string
description: Optional channel identifier
required:
- url
CreateWebhookEndpointDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel endpoint. If not provided, one will be generated automatically.
example: slack-channel-user123-abc4
subscriberId:
type: string
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type: string
description: The identifier of the channel connection to use for this channel endpoint.
example: slack-connection-abc123
type:
type: string
description: Type of channel endpoint
enum:
- webhook
example: webhook
endpoint:
description: Webhook endpoint data
allOf:
- $ref: '#/components/schemas/WebhookEndpointDto'
required:
- subscriberId
- integrationIdentifier
- type
- endpoint
PhoneEndpointDto:
type: object
properties:
phoneNumber:
type: string
description: Phone number in E.164 format
example: '+1234567890'
required:
- phoneNumber
CreatePhoneEndpointDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel endpoint. If not provided, one will be generated automatically.
example: slack-channel-user123-abc4
subscriberId:
type: string
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type: string
description: The identifier of the channel connection to use for this channel endpoint.
example: slack-connection-abc123
type:
type: string
description: Type of channel endpoint
enum:
- phone
example: phone
endpoint:
description: Phone endpoint data
allOf:
- $ref: '#/components/schemas/PhoneEndpointDto'
required:
- subscriberId
- integrationIdentifier
- type
- endpoint
MsTeamsChannelEndpointDto:
type: object
properties:
teamId:
type: string
description: MS Teams team ID
example: 19:abc123...@thread.tacv2
channelId:
type: string
description: MS Teams channel ID
example: 19:def456...@thread.tacv2
required:
- teamId
- channelId
CreateMsTeamsChannelEndpointDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel endpoint. If not provided, one will be generated automatically.
example: slack-channel-user123-abc4
subscriberId:
type: string
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type: string
description: The identifier of the channel connection to use for this channel endpoint.
example: slack-connection-abc123
type:
type: string
description: Type of channel endpoint
enum:
- ms_teams_channel
example: ms_teams_channel
endpoint:
description: MS Teams channel endpoint data
allOf:
- $ref: '#/components/schemas/MsTeamsChannelEndpointDto'
required:
- subscriberId
- integrationIdentifier
- type
- endpoint
MsTeamsUserEndpointDto:
type: object
properties:
userId:
type: string
description: MS Teams user ID
example: 29:1234567890abcdef
required:
- userId
CreateMsTeamsUserEndpointDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel endpoint. If not provided, one will be generated automatically.
example: slack-channel-user123-abc4
subscriberId:
type: string
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type: string
description: The identifier of the channel connection to use for this channel endpoint.
example: slack-connection-abc123
type:
type: string
description: Type of channel endpoint
enum:
- ms_teams_user
example: ms_teams_user
endpoint:
description: MS Teams user endpoint data
allOf:
- $ref: '#/components/schemas/MsTeamsUserEndpointDto'
required:
- subscriberId
- integrationIdentifier
- type
- endpoint
TelegramChatEndpointDto:
type: object
properties:
chatId:
type: string
description: Telegram chat ID
example: '123456789'
required:
- chatId
CreateTelegramChatEndpointDto:
type: object
properties:
identifier:
type: string
description: The unique identifier for the channel endpoint. If not provided, one will be generated automatically.
example: slack-channel-user123-abc4
subscriberId:
type: string
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
context:
type: object
additionalProperties:
oneOf:
- type: string
description: Simple context id
example: org-acme
- type: object
description: Rich context object with id and optional data
properties:
id:
type: string
example: org-acme
data:
type: object
description: Optional additional context data
additionalProperties: true
example:
name: Acme Corp
region: us-east-1
required:
- id
integrationIdentifier:
type: string
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type: string
description: The identifier of the channel connection to use for this channel endpoint.
example: slack-connection-abc123
type:
type: string
description: Type of channel endpoint
enum:
- telegram_chat
example: telegram_chat
endpoint:
description: Telegram chat endpoint data
allOf:
- $ref: '#/components/schemas/TelegramChatEndpointDto'
required:
- subscriberId
- integrationIdentifier
- type
- endpoint
GetChannelEndpointResponseDto:
type: object
properties:
identifier:
type: string
description: The unique identifier of the channel endpoint.
channel:
enum:
- in_app
- email
- sms
- chat
- push
type:
- string
- 'null'
description: The channel type (email, sms, push, chat, etc.).
providerId:
type:
- string
- 'null'
description: The provider identifier (e.g., sendgrid, twilio, slack, etc.).
enum:
- emailjs
- mailgun
- mailjet
- mandrill
- nodemailer
- postmark
- sendgrid
- sendinblue
- ses
- netcore
- infobip-email
- resend
- plunk
- mailersend
- mailtrap
- clickatell
- outlook365
- novu-email
- sparkpost
- email-webhook
- braze
- novu-email-agent
- nexmo
- plivo
- sms77
- sms-central
- sns
- telnyx
- twilio
- gupshup
- firetext
- infobip-sms
- burst-sms
- bulk-sms
- isend-sms
- forty-six-elks
- kannel
- maqsam
- termii
- africas-talking
- novu-sms
- sendchamp
- generic-sms
- clicksend
- bandwidth
- messagebird
- simpletexting
- azure-sms
- ring-central
- brevo-sms
- eazy-sms
- mobishastra
- afro-message
- unifonic
- smsmode
- imedia
- sinch
- isendpro-sms
- cm-telecom
- fcm
- apns
- expo
- one-signal
- pushpad
- push-webhook
- pusher-beams
- appio
- novu
- slack
- discord
- msteams
- mattermost
- ryver
- zulip
- grafana-on-call
- getstream
- rocket-chat
- whatsapp-business
- chat-webhook
- novu-slack
- telegram
- anthropic
example: slack
integrationIdentifier:
type:
- string
- 'null'
description: The identifier of the integration to use for this channel endpoint.
example: slack-prod
connectionIdentifier:
type:
- string
- 'null'
description: The identifier of the channel connection used for this endpoint.
example: slack-connection-abc123
subscriberId:
type:
- string
- 'null'
description: The subscriber ID to which the channel endpoint is linked
example: subscriber-123
contextKeys:
description: The context of the channel connection
example:
- tenant:org-123
- region:us-east-1
type: array
items:
type: string
type:
type: string
description: Type of channel endpoint
enum:
- slack_channel
- slack_user
- webhook
- phone
- ms_teams_channel
- ms_teams_user
- telegram_chat
example: slack_channel
endpoint:
description: Endpoint data specific to the channel type
oneOf:
- $ref: '#/components/schemas/SlackChannelEndpointDto'
- $ref: '#/components/schemas/SlackUserEndpointDto'
- $ref: '#/components/schemas/WebhookEndpointDto'
- $ref: '#/components/schemas/PhoneEndpointDto'
- $ref: '#/components/schemas/MsTeamsChannelEndpointDto'
- $ref: '#/components/schemas/MsTeamsUserEndpointDto'
- $ref: '#/components/schemas/TelegramChatEndpointDto'
createdAt:
type: string
description: The timestamp indicating when the channel endpoint was created, in ISO 8601 format.
updatedAt:
type: string
description: The timestamp indicating when the channel endpoint was last updated, in ISO 8601 format.
required:
- identifier
- channel
- providerId
- integrationIdentifier
- connectionIdentifier
- subscriberId
- contextKeys
- type
- endpoint
- createdAt
- updatedAt
ListChannelEndpointsResponseDto:
type: object
properties:
data:
description: List of returned Channel Endpoints
type: array
items:
$ref: '#/components/schemas/GetChannelEndpointResponseDto'
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
UpdateChannelEndpointRequestDto:
type: object
properties:
endpoint:
description: Updated endpoint data. The structure must match the existing channel endpoint type.
oneOf:
- $ref: '#/components/schemas/SlackChannelEndpointDto'
- $ref: '#/components/schemas/SlackUserEndpointDto'
- $ref: '#/components/schemas/WebhookEndpointDto'
- $ref: '#/components/schemas/PhoneEndpointDto'
required:
- endpoint
UploadTranslationsResponseDto:
type: object
properties:
totalFiles:
type: number
description: Total number of files processed
example: 3
successfulUploads:
type: number
description: Number of files successfully uploaded
example: 2
failedUploads:
type: number
description: Number of files that failed to upload
example: 1
errors:
description: List of error messages for failed uploads
example:
- 'Invalid JSON in file: es-ES.json'
type: array
items:
type: string
required:
- totalFiles
- successfulUploads
- failedUploads
- errors
CreateTranslationRequestDto:
type: object
properties:
resourceId:
type: string
description: The resource ID to associate translation with. Accepts identifier or slug format
example: welcome-email
resourceType:
type: string
description: The resource type to associate translation with
enum:
- workflow
- layout
locale:
type: string
description: Locale code (e.g., en_US, es_ES)
example: en_US
content:
type: object
description: Translation content as JSON object
example:
welcome.title: Welcome
welcome.message: Hello there!
additionalProperties: true
required:
- resourceId
- resourceType
- locale
- content
TranslationResponseDto:
type: object
properties:
resourceId:
type: string
description: Resource identifier
example: welcome-email
resourceType:
type: string
description: Resource type
example: workflow
enum:
- workflow
- layout
locale:
type: string
description: Locale code
example: en_US
content:
type: object
description: Translation content as JSON object
example:
welcome.title: Welcome
welcome.message: Hello there!
additionalProperties: true
createdAt:
type: string
description: Creation timestamp
example: '2024-01-01T00:00:00.000Z'
updatedAt:
type: string
description: Last update timestamp
example: '2024-01-01T00:00:00.000Z'
required:
- resourceId
- resourceType
- locale
- content
- createdAt
- updatedAt
GetMasterJsonResponseDto:
type: object
properties:
workflows:
type: object
description: All translations for given locale organized by workflow identifier
example:
welcome-email:
welcome.title: Welcome to our platform
welcome.message: Hello there!
password-reset:
reset.title: Reset your password
reset.message: Click the link to reset
additionalProperties: true
layouts:
type: object
description: All translations for given locale organized by layout identifier
example:
default-layout:
layout.title: Default layout
layout.message: Hello there!
additionalProperties: true
required:
- workflows
- layouts
ImportMasterJsonRequestDto:
type: object
properties:
locale:
type: string
description: The locale for which translations are being imported
example: en_US
masterJson:
type: object
description: Master JSON object containing all translations organized by workflow identifier
example:
workflows:
welcome-email:
welcome.title: Welcome to our platform
welcome.message: Hello there!
password-reset:
reset.title: Reset your password
reset.message: Click the link to reset
additionalProperties: true
required:
- locale
- masterJson
ImportMasterJsonResponseDto:
type: object
properties:
success:
type: boolean
description: Overall success status of the import operation
example: true
message:
type: string
description: Human-readable message describing the import result
example: 'Successfully imported translations for 2 resources: welcome-email, password-reset'
successful:
description: List of resource IDs that were successfully imported
example:
- welcome-email
- password-reset
type: array
items:
type: string
failed:
description: List of resource IDs that failed to import
example:
- missing-workflow
type: array
items:
type: string
required:
- success
- message
TranslationGroupDto:
type: object
properties:
resourceId:
type: string
description: Resource identifier (slugified ID)
example: welcome-email
resourceType:
type: string
description: Resource type
example: workflow
enum:
- workflow
- layout
resourceName:
type: string
description: Resource name (e.g., workflow name)
example: Welcome Email Workflow
locales:
description: Array of available locales for this resource
example:
- en_US
- es_ES
- fr_FR
type: array
items:
type: string
outdatedLocales:
description: Locales that are outdated compared to the default locale (only present when there are outdated locales)
example:
- es_ES
- fr_FR
type: array
items:
type: string
createdAt:
type: string
description: Creation timestamp
example: '2024-01-01T00:00:00.000Z'
updatedAt:
type: string
description: Last update timestamp
example: '2024-01-01T00:00:00.000Z'
required:
- resourceId
- resourceType
- resourceName
- locales
- createdAt
- updatedAt
EventBody:
type: object
properties:
status:
type: string
description: Status of the event
enum:
- opened
- rejected
- sent
- deferred
- delivered
- bounced
- dropped
- clicked
- blocked
- spam
- unsubscribed
- delayed
- complaint
- created
- delivered
- accepted
- queued
- sending
- sent
- failed
- undelivered
- rejected
- delivered
- opened
- dismissed
- clicked
- failed
date:
type: string
description: Date of the event
externalId:
type: string
description: External ID from the provider
attempts:
type: number
description: Number of attempts
response:
type: string
description: Response from the provider
row:
type: string
description: Raw content from the provider webhook
additionalProperties: true
required:
- status
- date
WebhookResultDto:
type: object
properties:
id:
type: string
description: Unique identifier for the webhook result
event:
description: Event body containing the webhook event data
allOf:
- $ref: '#/components/schemas/EventBody'
required:
- id
- event
WebhookMessageDto:
type: object
properties:
object:
type: object
description: Current message state
required:
- object
MessageFailedPushDto:
type: object
properties:
isInvalidToken:
type: boolean
description: Is invalid token
deviceToken:
type: string
description: Device token
required:
- isInvalidToken
- deviceToken
MessageFailedErrorDto:
type: object
properties:
message:
type: string
description: Error message
push:
description: Push error
allOf:
- $ref: '#/components/schemas/MessageFailedPushDto'
required:
- message
- push
WebhookMessageFailedDto:
type: object
properties:
object:
type: object
description: Current message state
error:
description: Error message
allOf:
- $ref: '#/components/schemas/MessageFailedErrorDto'
required:
- object
- error
WebhookCreatedWorkflowDto:
type: object
properties:
object:
description: Current workflow state
allOf:
- $ref: '#/components/schemas/WorkflowResponseDto'
required:
- object
WebhookUpdatedWorkflowDto:
type: object
properties:
object:
description: Current workflow state
allOf:
- $ref: '#/components/schemas/WorkflowResponseDto'
previousObject:
description: Previous state of the workflow
allOf:
- $ref: '#/components/schemas/WorkflowResponseDto'
required:
- object
- previousObject
WebhookDeletedWorkflowDto:
type: object
properties:
object:
description: Current workflow state
allOf:
- $ref: '#/components/schemas/WorkflowResponseDto'
required:
- object
WebhookPreferenceDto:
type: object
properties:
object:
type: object
description: Current preference state
subscriberId:
type: string
description: Subscriber ID
required:
- object
- subscriberId
WebhookInboundEmailDomainDto:
type: object
properties:
id:
type: string
description: Domain ID
name:
type: string
description: Domain name
required:
- id
- name
WebhookInboundEmailRouteDto:
type: object
properties:
address:
type: string
description: Route address (local part of the email address)
required:
- address
WebhookInboundEmailAddressDto:
type: object
properties:
name:
type: string
description: Display name
address:
type: string
description: Email address
required:
- name
- address
WebhookInboundEmailMailDto:
type: object
properties:
from:
description: Sender address info
allOf:
- $ref: '#/components/schemas/WebhookInboundEmailAddressDto'
to:
description: Recipient address info
type: array
items:
$ref: '#/components/schemas/WebhookInboundEmailAddressDto'
subject:
type: string
description: Email subject
html:
type: string
description: HTML body
text:
type: string
description: Plain text body
messageId:
type: string
description: Message ID header
required:
- from
- to
- subject
- messageId
WebhookInboundEmailDto:
type: object
properties:
domain:
description: Domain that received the email
allOf:
- $ref: '#/components/schemas/WebhookInboundEmailDomainDto'
route:
description: Matched route info
allOf:
- $ref: '#/components/schemas/WebhookInboundEmailRouteDto'
mail:
description: Inbound email details
allOf:
- $ref: '#/components/schemas/WebhookInboundEmailMailDto'
required:
- domain
- mail
WebhookMessageDtoWebhookPayloadWrapper:
type: object
properties:
id:
type: string
description: Unique identifier of the webhook event (evt_✱).
type:
type: string
enum:
- message.sent
description: The type of the webhook event.
data:
description: The actual event data payload.
allOf:
- $ref: '#/components/schemas/WebhookMessageDto'
timestamp:
type: string
format: date-time
description: ISO timestamp of when the event occurred.
environmentId:
type: string
description: The ID of the environment associated with the event.
object:
type: string
enum:
- message
description: The type of object the event relates to.
required:
- type
- data
- timestamp
- environmentId
- object
WebhookMessageFailedDtoWebhookPayloadWrapper:
type: object
properties:
id:
type: string
description: Unique identifier of the webhook event (evt_✱).
type:
type: string
enum:
- message.failed
description: The type of the webhook event.
data:
description: The actual event data payload.
allOf:
- $ref: '#/components/schemas/WebhookMessageFailedDto'
timestamp:
type: string
format: date-time
description: ISO timestamp of when the event occurred.
environmentId:
type: string
description: The ID of the environment associated with the event.
object:
type: string
enum:
- message
description: The type of object the event relates to.
required:
- type
- data
- timestamp
- environmentId
- object
WebhookCreatedWorkflowDtoWebhookPayloadWrapper:
type: object
properties:
id:
type: string
description: Unique identifier of the webhook event (evt_✱).
type:
type: string
enum:
- workflow.created
description: The type of the webhook event.
data:
description: The actual event data payload.
allOf:
- $ref: '#/components/schemas/WebhookCreatedWorkflowDto'
timestamp:
type: string
format: date-time
description: ISO timestamp of when the event occurred.
environmentId:
type: string
description: The ID of the environment associated with the event.
object:
type: string
enum:
- workflow
description: The type of object the event relates to.
required:
- type
- data
- timestamp
- environmentId
- object
WebhookUpdatedWorkflowDtoWebhookPayloadWrapper:
type: object
properties:
id:
type: string
description: Unique identifier of the webhook event (evt_✱).
type:
type: string
enum:
- workflow.updated
description: The type of the webhook event.
data:
description: The actual event data payload.
allOf:
- $ref: '#/components/schemas/WebhookUpdatedWorkflowDto'
timestamp:
type: string
format: date-time
description: ISO timestamp of when the event occurred.
environmentId:
type: string
description: The ID of the environment associated with the event.
object:
type: string
enum:
- workflow
description: The type of object the event relates to.
required:
- type
- data
- timestamp
- environmentId
- object
WebhookDeletedWorkflowDtoWebhookPayloadWrapper:
type: object
properties:
id:
type: string
description: Unique identifier of the webhook event (evt_✱).
type:
type: string
enum:
- workflow.deleted
description: The type of the webhook event.
data:
description: The actual event data payload.
allOf:
- $ref: '#/components/schemas/WebhookDeletedWorkflowDto'
timestamp:
type: string
format: date-time
description: ISO timestamp of when the event occurred.
environmentId:
type: string
description: The ID of the environment associated with the event.
object:
type: string
enum:
- workflow
description: The type of object the event relates to.
required:
- type
- data
- timestamp
- environmentId
- object
WebhookPreferenceDtoWebhookPayloadWrapper:
type: object
properties:
id:
type: string
description: Unique identifier of the webhook event (evt_✱).
type:
type: string
enum:
- preference.updated
description: The type of the webhook event.
data:
description: The actual event data payload.
allOf:
- $ref: '#/components/schemas/WebhookPreferenceDto'
timestamp:
type: string
format: date-time
description: ISO timestamp of when the event occurred.
environmentId:
type: string
description: The ID of the environment associated with the event.
object:
type: string
enum:
- preference
description: The type of object the event relates to.
required:
- type
- data
- timestamp
- environmentId
- object
WebhookInboundEmailDtoWebhookPayloadWrapper:
type: object
properties:
id:
type: string
description: Unique identifier of the webhook event (evt_✱).
type:
type: string
enum:
- email.received
description: The type of the webhook event.
data:
description: The actual event data payload.
allOf:
- $ref: '#/components/schemas/WebhookInboundEmailDto'
timestamp:
type: string
format: date-time
description: ISO timestamp of when the event occurred.
environmentId:
type: string
description: The ID of the environment associated with the event.
object:
type: string
enum:
- email_inbound
description: The type of object the event relates to.
required:
- type
- data
- timestamp
- environmentId
- object
headers:
Content-Type:
required: true
description: The MIME type of the response body.
schema:
type: string
example: application/json
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-Remaining:
required: false
description: The number of requests remaining until the next window.
schema:
type: string
example: '93'
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"
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'
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'
Link:
required: false
description: A link to the documentation.
schema:
type: string
example: https://docs.novu.co/
externalDocs:
description: Novu Documentation
url: https://docs.novu.co
security:
- secretKey: []
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