{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "WorkflowTask",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Name of the task"
    },
    "taskReferenceName": {
      "type": "string",
      "description": "Unique reference name for the task within the workflow"
    },
    "type": {
      "type": "string",
      "description": "The type of task"
    },
    "description": {
      "type": "string",
      "description": "Task description"
    },
    "inputParameters": {
      "type": "object",
      "description": "Input parameter mappings"
    },
    "optional": {
      "type": "boolean",
      "description": "Whether this task is optional"
    },
    "startDelay": {
      "type": "integer",
      "description": "Delay in seconds before starting the task"
    },
    "asyncComplete": {
      "type": "boolean",
      "description": "Whether the task is completed asynchronously"
    },
    "retryCount": {
      "type": "integer",
      "description": "Number of retries"
    },
    "sink": {
      "type": "string",
      "description": "Sink for EVENT tasks"
    },
    "subWorkflowParam": {
      "type": "object",
      "description": "Sub workflow parameters"
    },
    "joinOn": {
      "type": "array",
      "description": "List of task reference names to join on"
    },
    "forkTasks": {
      "type": "array",
      "description": "List of forked task lists"
    },
    "decisionCases": {
      "type": "object",
      "description": "Decision cases for SWITCH/DECISION tasks"
    },
    "defaultCase": {
      "type": "array",
      "description": "Default case tasks for SWITCH/DECISION"
    },
    "loopCondition": {
      "type": "string",
      "description": "Loop condition for DO_WHILE tasks"
    },
    "loopOver": {
      "type": "array",
      "description": "Tasks to loop over in DO_WHILE"
    }
  }
}