Novu · Schema
UpdateWorkflowDto
JSON Schema for Novu UpdateWorkflowDto.
NotificationsMessagingIn AppEmailSMSPushChatWorkflowsOpen SourceSubscribersTopicsInboxWorkflow OrchestrationMulti ChannelDigestMCPFrameworkReact
Properties
| Name | Type | Description |
|---|---|---|
| name | string | Name of the workflow |
| description | string | Description of the workflow |
| tags | array | Tags associated with the workflow |
| active | boolean | Whether the workflow is active |
| validatePayload | boolean | Enable or disable payload schema validation |
| payloadSchema | objectnull | The payload JSON Schema for the workflow |
| isTranslationEnabled | boolean | Enable or disable translations for this workflow |
| workflowId | string | Workflow ID (allowed only for code-first workflows) |
| steps | array | Steps of the workflow |
| preferences | object | Workflow preferences |
| origin | string | Origin of the layout |
| severity | string | Severity of the workflow |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/novu/main/json-schema/novu-update-workflow-dto-schema.json",
"title": "UpdateWorkflowDto",
"description": "JSON Schema for Novu 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": [
{
"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": {
"type": "string",
"description": "Type of the step",
"enum": [
"in_app",
"email",
"sms",
"chat",
"push",
"digest",
"trigger",
"delay",
"throttle",
"custom",
"http_request"
]
},
"controlValues": {
"description": "Control values for the In-App step.",
"oneOf": [
{
"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": [
{
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Label for the action button."
},
"redirect": {
"description": "Redirect configuration for the action.",
"allOf": [
{
"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"
]
}
]
}
}
}
]
},
"secondaryAction": {
"description": "Secondary action button details.",
"allOf": [
{
"type": "object",
"properties": {
"label": {
"type": "string",
"description": "Label for the action button."
},
"redirect": {
"description": "Redirect configuration for the action.",
"allOf": [
{
"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"
]
}
]
}
}
}
]
},
"redirect": {
"description": "Redirection URL configuration for the main content click (if no actions defined/clicked)..",
"allOf": [
{
"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"
]
}
]
},
"disableOutputSanitization": {
"type": "boolean",
"description": "Disable sanitization of the output.",
"default": false
},
"data": {
"type": "object",
"description": "Additional data payload for the step.",
"additionalProperties": true
}
}
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": [
"name",
"type"
]
},
{
"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": {
"type": "string",
"description": "Type of the step",
"enum": [
"in_app",
"email",
"sms",
"chat",
"push",
"digest",
"trigger",
"delay",
"throttle",
"custom",
"http_request"
]
},
"controlValues": {
"description": "Control values for the Email step.",
"oneOf": [
{
"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"
]
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": [
"name",
"type"
]
},
{
"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": {
"type": "string",
"description": "Type of the step",
"enum": [
"in_app",
"email",
"sms",
"chat",
"push",
"digest",
"trigger",
"delay",
"throttle",
"custom",
"http_request"
]
},
"controlValues": {
"description": "Control values for the SMS step.",
"oneOf": [
{
"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."
}
}
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": [
"name",
"type"
]
},
{
"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": {
"type": "string",
"description": "Type of the step",
"enum": [
"in_app",
"email",
"sms",
"chat",
"push",
"digest",
"trigger",
"delay",
"throttle",
"custom",
"http_request"
]
},
"controlValues": {
"description": "Control values for the Push step.",
"oneOf": [
{
"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."
}
}
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": [
"name",
"type"
]
},
{
"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": {
"type": "string",
"description": "Type of the step",
"enum": [
"in_app",
"email",
"sms",
"chat",
"push",
"digest",
"trigger",
"delay",
"throttle",
"custom",
"http_request"
]
},
"controlValues": {
"description": "Control values for the Chat step.",
"oneOf": [
{
"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."
}
}
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": [
"name",
"type"
]
},
{
"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": {
"type": "string",
"description": "Type of the step",
"enum": [
"in_app",
"email",
"sms",
"chat",
"push",
"digest",
"trigger",
"delay",
"throttle",
"custom",
"http_request"
]
},
"controlValues": {
"description": "Control values for the Delay step.",
"oneOf": [
{
"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"
]
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"required": [
"name",
"type"
]
},
{
"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": {
"type": "string",
"description": "Type of the step",
"enum": [
"in_app",
"email",
"sms",
"chat",
"push",
"digest",
"trigger",
"delay",
"throttle",
"custom",
"http_request"
]
},
"controlValues": {
"description": "Control values for the Digest step.",
"oneOf": [
{
"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 ty
# --- truncated at 32 KB (49 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/novu/refs/heads/main/json-schema/novu-update-workflow-dto-schema.json