Novu · Schema

CreateWorkflowDto

JSON Schema for Novu CreateWorkflowDto.

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 Unique identifier for the workflow
steps array Steps of the workflow
__source string Source of workflow creation
preferences object Workflow preferences
severity string Severity of the workflow
View JSON Schema on GitHub

JSON Schema

novu-create-workflow-dto-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/novu/main/json-schema/novu-create-workflow-dto-schema.json",
  "title": "CreateWorkflowDto",
  "description": "JSON Schema for Novu 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": [
          {
            "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

# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/novu/refs/heads/main/json-schema/novu-create-workflow-dto-schema.json