Novu · Schema

CreateWorkflowDto

JSON Schema for Novu CreateWorkflowDto.

NotificationMessagingIn-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

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/novu-create-workflow-dto"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.