All Downloads are FREE. Search and download functionalities are using the official Maven repository.

schema.workflow.json Maven / Gradle / Ivy

There is a newer version: 7.0.0-alpha5.1
Show newest version
{
  "$id": "https://wg-serverless.org/workflow.schema.json",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "description": "Serverless Workflow is a vendor-neutral specification for defining the model of workflows responsible for orchestrating event-driven serverless applications.",
  "type": "object",
  "extendsJavaClass": "io.serverlessworkflow.api.workflow.BaseWorkflow",
  "javaType": "io.serverlessworkflow.api.Workflow",
  "javaInterfaces": [
    "java.io.Serializable"
  ],
  "properties": {
    "id": {
      "type": "string",
      "description": "Workflow unique identifier",
      "minLength": 1
    },
    "name": {
      "type": "string",
      "description": "Workflow name",
      "minLength": 1
    },
    "description": {
      "type": "string",
      "description": "Workflow description"
    },
    "version": {
      "type": "string",
      "description": "Workflow version"
    },
    "annotations": {
      "type": "array",
      "description": "List of helpful terms describing the workflows intended purpose, subject areas, or other important qualities",
      "minItems": 1,
      "items": {
        "type": "string"
      }
    },
    "dataInputSchema": {
      "$ref": "datainputschema/datainputschema.json",
      "description": "Workflow data input schema"
    },
    "start": {
      "$ref": "start/start.json",
      "description": "Defines workflow start"
    },
    "specVersion": {
      "type": "string",
      "description": "Serverless Workflow schema version"
    },
    "expressionLang": {
      "type": "string",
      "description": "Identifies the expression language used for workflow expressions. Default is 'jq'",
      "default": "jq",
      "minLength": 1
    },
    "keepActive": {
      "type": "boolean",
      "default": false,
      "description": "If 'true', workflow instances is not terminated when there are no active execution paths. Instance can be terminated via 'terminate end definition' or reaching defined 'execTimeout'"
    },
    "autoRetries": {
      "type": "boolean",
      "default": false,
      "description": "If set to true, actions should automatically be retried on unchecked errors. Default is false"
    },
    "metadata": {
      "$ref": "metadata/metadata.json"
    },
    "events": {
      "type": "object",
      "existingJavaType": "io.serverlessworkflow.api.workflow.Events",
      "description": "Workflow event definitions"
    },
    "functions": {
      "type": "object",
      "existingJavaType": "io.serverlessworkflow.api.workflow.Functions",
      "description": "Workflow function definitions"
    },
    "errors": {
      "type": "object",
      "existingJavaType": "io.serverlessworkflow.api.workflow.Errors",
      "description": "Workflow error definitions"
    },
    "retries": {
      "type": "object",
      "existingJavaType": "io.serverlessworkflow.api.workflow.Retries",
      "description": "Workflow retry definitions"
    },
    "secrets": {
      "type": "object",
      "existingJavaType": "io.serverlessworkflow.api.workflow.Secrets",
      "description": "Workflow secrets definitions"
    },
    "constants": {
      "type": "object",
      "existingJavaType": "io.serverlessworkflow.api.workflow.Constants",
      "description": "Workflow constants definitions"
    },
    "timeouts": {
      "$ref": "timeouts/timeoutsdef.json"
    },
    "auth": {
      "$ref": "auth/auth.json"
    },
    "states": {
      "type": "array",
      "description": "State Definitions",
      "items": {
        "type": "object",
        "existingJavaType": "io.serverlessworkflow.api.interfaces.State",
        "anyOf": [
          {
            "title": "Sleep State",
            "$ref": "states/sleepstate.json"
          },
          {
            "title": "Event State",
            "$ref": "states/eventstate.json"
          },
          {
            "title": "Operation State",
            "$ref": "states/operationstate.json"
          },
          {
            "title": "Parallel State",
            "$ref": "states/parallelstate.json"
          },
          {
            "title": "Switch State",
            "$ref": "states/switchstate.json"
          },
          {
            "title": "Relay State",
            "$ref": "states/injectstate.json"
          },
          {
            "title": "ForEach State",
            "$ref": "states/foreachstate.json"
          },
          {
            "title": "Callback State",
            "$ref": "states/callbackstate.json"
          }
        ]
      }
    },
    "extensions": {
      "type": "array",
      "description": "Workflow Extensions",
      "items": {
        "type": "object",
        "existingJavaType": "io.serverlessworkflow.api.interfaces.Extension"
      }
    }
  },
  "required": [
    "id",
    "name",
    "version",
    "states"
  ]
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy