Novu · Schema

WorkflowResponseDto

JSON Schema for Novu WorkflowResponseDto.

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
_id string Database identifier of the workflow
workflowId string Workflow identifier
slug string Slug of the workflow
updatedAt string Last updated timestamp
createdAt string Creation timestamp
updatedBy object User who last updated the workflow
lastPublishedAt stringnull Timestamp of the last workflow publication
lastPublishedBy object User who last published the workflow
steps array Steps of the workflow
origin string Origin of the layout
preferences object Preferences for the workflow
status string Status of the workflow
issues object Runtime issues for workflow creation and update
lastTriggeredAt stringnull Timestamp of the last workflow trigger
payloadExample objectnull Generated payload example based on the payload schema
severity string Severity of the workflow
View JSON Schema on GitHub

JSON Schema

novu-workflow-response-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-workflow-response-dto-schema.json",
  "title": "WorkflowResponseDto",
  "description": "JSON Schema for Novu 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": [
        {
          "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"
          ]
        }
      ]
    },
    "lastPublishedAt": {
      "type": [
        "string",
        "null"
      ],
      "description": "Timestamp of the last workflow publication"
    },
    "lastPublishedBy": {
      "description": "User who last published the workflow",
      "allOf": [
        {
          "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"
          ]
        }
      ]
    },
    "steps": {
      "type": "array",
      "description": "Steps of the workflow",
      "items": {
        "oneOf": [
          {
            "type": "object",
            "properties": {
              "controls": {
                "description": "Controls metadata for the in-app step",
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "dataSchema": {
                        "type": "object",
                        "description": "JSON Schema for data",
                        "additionalProperties": true
                      },
                      "uiSchema": {
                        "description": "UI Schema for rendering",
                        "allOf": [
                          {
                            "type": "object",
                            "properties": {
                              "group": {
                                "type": "string",
                                "description": "Group of the UI Schema",
                                "enum": [
                                  "IN_APP",
                                  "EMAIL",
                                  "DIGEST",
                                  "DELAY",
                                  "THROTTLE",
                                  "SMS",
                                  "CHAT",
                                  "PUSH",
                                  "SKIP",
                                  "LAYOUT",
                                  "HTTP_REQUEST"
                                ]
                              },
                              "properties": {
                                "type": "object",
                                "description": "Properties of the UI Schema",
                                "additionalProperties": {
                                  "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": {
                                      "type": "object"
                                    },
                                    "properties": {
                                      "type": "object",
                                      "description": "Properties of the UI Schema",
                                      "additionalProperties": {
                                        "type": "object",
                                        "description": "Reference to UiSchemaProperty"
                                      }
                                    }
                                  },
                                  "required": [
                                    "component"
                                  ]
                                }
                              }
                            }
                          }
                        ]
                      },
                      "values": {
                        "description": "Control values specific to In-App",
                        "allOf": [
                          {
                            "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"
                                          }
                                        ]
                                      }
                                    }
                                  }
                                ]
                              },
                              "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"
                                          }
                                        ]
                                      }
                                    }
                                  }
                                ]
                              },
                              "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
                              }
                            }
                          }
                        ]
                      }
                    },
                    "required": [
                      "values"
                    ]
                  }
                ]
              },
              "controlValues": {
                "description": "Control values for the in-app step",
                "additionalProperties": true,
                "allOf": [
                  {
                    "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
                      }
                    }
                  }
                ]
              },
              "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": {
                "type": "string",
                "description": "Type of the step",
                "enum": [
                  "in_app",
                  "email",
                  "sms",
                  "chat",
                  "push",
                  "digest",
                  "trigger",
                  "delay",
                  "throttle",
                  "custom",
                  "http_request"
                ]
              },
              "origin": {
                "type": "string",
                "description": "Origin of the layout",
                "enum": [
                  "novu-cloud",
                  "novu-cloud-v1",
                  "external"
                ]
              },
              "workflowId": {
                "type": "string",
                "description": "Workflow identifier"
              },
              "workflowDatabaseId": {
                "type": "string",
                "description": "Workflow database identifier"
              },
              "issues": {
                "description": "Issues associated with the step",
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "controls": {
                        "type": "object",
                        "description": "Controls-related issues",
                        "additionalProperties": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "issueType": {
                                "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"
                                ]
                              },
                              "variableName": {
                                "type": "string",
                                "description": "Name of the variable related to the issue"
                              },
                              "message": {
                                "type": "string",
                                "description": "Detailed message describing the issue"
                              }
                            },
                            "required": [
                              "issueType",
                              "message"
                            ]
                          }
                        }
                      },
                      "integration": {
                        "type": "object",
                        "description": "Integration-related issues",
                        "additionalProperties": {
                          "type": "array",
                          "items": {
                            "type": "object",
                            "properties": {
                              "issueType": {
                                "type": "string",
                                "description": "Type of integration issue",
                                "enum": [
                                  "MISSING_INTEGRATION",
                                  "INBOX_NOT_CONNECTED"
                                ]
                              },
                              "variableName": {
                                "type": "string",
                                "description": "Name of the variable related to the issue"
                              },
                              "message": {
                                "type": "string",
                                "description": "Detailed message describing the issue"
                              }
                            },
                            "required": [
                              "issueType",
                              "message"
                            ]
                          }
                        }
                      }
                    }
                  }
                ]
              },
              "stepResolverHash": {
                "type": "string",
                "description": "Hash identifying the deployed Cloudflare Worker for this step"
              }
            },
            "required": [
              "controls",
              "variables",
              "stepId",
              "_id",
              "name",
              "slug",
              "type",
              "origin",
              "workflowId",
              "workflowDatabaseId"
            ]
          },
          {
            "type": "object",
            "properties": {
              "controls": {
                "description": "Controls metadata for the email step",
                "allOf": [
                  {
                    "type": "object",
                    "properties": {
                      "dataSchema": {
                        "type": "object",
                        "description": "JSON Schema for data",
                        "additionalProperties": true
                      },
                      "uiSchema": {
                        "description": "UI Schema for rendering",
                        "allOf": [
                          {
                            "type": "object",
                            "properties": {
                              "group": {
                                "type": "string",
                                "description": "Group of the UI Schema",
                                "enum": [
                                  "IN_APP",
                                  "EMAIL",
                                  "DIGEST",
                                  "DELAY",
                                  "THROTTLE",
                                  "SMS",
                                  "CHAT",
                                  "PUSH",
                                  "SKIP",
                                  "LAYOUT",
                                  "HTTP_REQUEST"
                                ]
                              },
                              "properties": {
                                "type": "object",
                                "description": "Properties of the UI Schema",
                                "additionalProperties": {
                                  "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": [
                                              {
                                       

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