{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://catalog.lintel.tools/schemas/schemastore/concord/latest.json",
  "title": "Process Definition",
  "x-lintel": {
    "source": "https://repo1.maven.org/maven2/com/walmartlabs/concord/runtime/v2/concord-runtime-model-v2/2.14.0/concord-runtime-model-v2-2.14.0-schema.json",
    "sourceSha256": "3cf8976a6f83c9f812d376cc1a1454d9bf840e312235c9bcda1f6ceb1f4c846c",
    "fileMatch": [
      "*.concord.yaml",
      "*.concord.yml",
      ".concord.yml",
      ".concord.yaml",
      "concord.yml",
      "concord.yaml",
      "**/*.concord.yaml",
      "**/*.concord.yml"
    ],
    "parsers": [
      "yaml"
    ]
  },
  "type": "object",
  "properties": {
    "flows": {
      "type": "object",
      "additionalProperties": {
        "type": "array",
        "items": {
          "oneOf": [
            {
              "$ref": "#/$defs/TaskCall"
            },
            {
              "$ref": "#/$defs/ThrowStep"
            },
            {
              "$ref": "#/$defs/ScriptCall"
            },
            {
              "$ref": "#/$defs/SetStep"
            },
            {
              "$ref": "#/$defs/ReturnStep"
            },
            {
              "$ref": "#/$defs/LogStep"
            },
            {
              "$ref": "#/$defs/SuspendStep"
            },
            {
              "$ref": "#/$defs/ParallelStep"
            },
            {
              "$ref": "#/$defs/CheckpointStep"
            },
            {
              "$ref": "#/$defs/ExpressionFullStep"
            },
            {
              "$ref": "#/$defs/ExitStep"
            },
            {
              "$ref": "#/$defs/FormCallStep"
            },
            {
              "$ref": "#/$defs/SwitchStep"
            },
            {
              "$ref": "#/$defs/IfStep"
            },
            {
              "$ref": "#/$defs/LogYamlStep"
            },
            {
              "$ref": "#/$defs/FlowCallStep"
            },
            {
              "$ref": "#/$defs/BlockStep"
            },
            {
              "$ref": "#/$defs/ExpressionShortStep"
            },
            {
              "$ref": "#/$defs/TryStep"
            }
          ]
        }
      }
    },
    "publicFlows": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "triggers": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/GenericTrigger"
          },
          {
            "$ref": "#/$defs/CronTrigger"
          },
          {
            "$ref": "#/$defs/ManualTrigger"
          },
          {
            "$ref": "#/$defs/GithubTrigger"
          },
          {
            "$ref": "#/$defs/OneOpsTrigger"
          }
        ]
      }
    },
    "resources": {
      "$ref": "#/$defs/Resources"
    },
    "configuration": {
      "$ref": "#/$defs/ProcessDefinitionConfiguration"
    },
    "forms": {
      "type": "object"
    },
    "imports": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "$ref": "#/$defs/MvnImport"
          },
          {
            "$ref": "#/$defs/DirImport"
          },
          {
            "$ref": "#/$defs/GitImport"
          }
        ]
      }
    },
    "profiles": {
      "type": "object",
      "additionalProperties": {
        "$ref": "#/$defs/Profile"
      }
    }
  },
  "$defs": {
    "TaskCall": {
      "type": "object",
      "required": [
        "task"
      ],
      "properties": {
        "ignoreErrors": {
          "type": "boolean"
        },
        "error": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          }
        },
        "out": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object"
            }
          ]
        },
        "loop": {
          "$ref": "#/$defs/Loop"
        },
        "in": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object"
            }
          ]
        },
        "task": {
          "type": "string"
        },
        "retry": {
          "$ref": "#/$defs/Retry"
        },
        "meta": {
          "type": "object"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "Task call",
      "additionalProperties": false
    },
    "ReturnStep": {
      "type": "string",
      "enum": [
        "return"
      ],
      "default": "return",
      "title": "Return step"
    },
    "ExitStep": {
      "type": "string",
      "enum": [
        "exit"
      ],
      "default": "exit",
      "title": "Exit step"
    },
    "CheckpointStep": {
      "type": "object",
      "required": [
        "checkpoint"
      ],
      "properties": {
        "checkpoint": {
          "type": "string",
          "title": "Checkpoint step"
        },
        "meta": {
          "type": "object"
        }
      },
      "title": "Checkpoint",
      "additionalProperties": false
    },
    "Object": {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    },
    "ExpressionShortStep": {
      "type": "string",
      "pattern": "^\\$\\{.*\\}",
      "title": "Expression step (short form)"
    },
    "ExpressionFullStep": {
      "type": "object",
      "required": [
        "expr"
      ],
      "properties": {
        "out": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object"
            }
          ]
        },
        "error": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              }
            ]
          }
        },
        "expr": {
          "type": "string",
          "title": "Expression step (full form)"
        },
        "meta": {
          "type": "object"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "Expression (full form)",
      "additionalProperties": false
    },
    "ThrowStep": {
      "type": "object",
      "required": [
        "throw"
      ],
      "properties": {
        "throw": {
          "type": "string"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "Throw step",
      "additionalProperties": false
    },
    "ScriptCall": {
      "type": "object",
      "required": [
        "script"
      ],
      "properties": {
        "error": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          }
        },
        "out": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object"
            }
          ]
        },
        "loop": {
          "$ref": "#/$defs/Loop"
        },
        "in": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object"
            }
          ]
        },
        "body": {
          "type": "string"
        },
        "script": {
          "type": "string",
          "title": "Script Call step"
        },
        "retry": {
          "$ref": "#/$defs/Retry"
        },
        "meta": {
          "type": "object"
        }
      },
      "title": "Script call",
      "additionalProperties": false
    },
    "LogStep": {
      "type": "object",
      "required": [
        "log"
      ],
      "properties": {
        "log": {
          "type": "string",
          "title": "Log step"
        },
        "meta": {
          "type": "object"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "Log",
      "additionalProperties": false
    },
    "LogYamlStep": {
      "type": "object",
      "required": [
        "logYaml"
      ],
      "properties": {
        "logYaml": {
          "type": "string",
          "title": "Log yaml step"
        },
        "meta": {
          "type": "object"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "LogYaml",
      "additionalProperties": false
    },
    "FlowCallStep": {
      "type": "object",
      "required": [
        "call"
      ],
      "properties": {
        "out": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "object"
            },
            {
              "type": "string"
            }
          ]
        },
        "loop": {
          "$ref": "#/$defs/Loop"
        },
        "in": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object"
            }
          ]
        },
        "error": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              }
            ]
          }
        },
        "call": {
          "type": "string",
          "title": "Flow Call step"
        },
        "retry": {
          "$ref": "#/$defs/Retry"
        },
        "meta": {
          "type": "object"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "Flow call",
      "additionalProperties": false
    },
    "Loop": {
      "type": "object",
      "properties": {
        "mode": {
          "type": "string",
          "enum": [
            "SERIAL",
            "PARALLEL"
          ]
        },
        "parallelism": {
          "type": "integer"
        },
        "items": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "object"
            },
            {
              "type": "array"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "SetStep": {
      "type": "object",
      "required": [
        "set"
      ],
      "properties": {
        "set": {
          "type": "object",
          "title": "Set step"
        },
        "meta": {
          "type": "object"
        }
      },
      "title": "Set step",
      "additionalProperties": false
    },
    "SuspendStep": {
      "type": "object",
      "required": [
        "suspend"
      ],
      "properties": {
        "suspend": {
          "type": "string",
          "title": "Suspend step"
        },
        "meta": {
          "type": "object"
        }
      },
      "title": "Suspend step",
      "additionalProperties": false
    },
    "ParallelStep": {
      "type": "object",
      "required": [
        "parallel"
      ],
      "properties": {
        "out": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "object"
            }
          ]
        },
        "parallel": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          },
          "title": "Parallel step"
        },
        "meta": {
          "type": "object"
        }
      },
      "title": "Parallel step",
      "additionalProperties": false
    },
    "FormCallStep": {
      "type": "object",
      "required": [
        "form"
      ],
      "properties": {
        "saveSubmittedBy": {
          "type": "boolean"
        },
        "runAs": {
          "type": "object"
        },
        "values": {
          "type": "object"
        },
        "fields": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "yield": {
          "type": "boolean",
          "title": "yield"
        },
        "form": {
          "type": "string",
          "title": "Form Call step"
        }
      },
      "title": "Form call",
      "additionalProperties": false
    },
    "IfStep": {
      "type": "object",
      "required": [
        "then",
        "if"
      ],
      "properties": {
        "then": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          }
        },
        "else": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          }
        },
        "if": {
          "type": "string",
          "title": "IF step"
        },
        "meta": {
          "type": "object"
        }
      },
      "title": "IF step",
      "additionalProperties": false
    },
    "SwitchStep": {
      "type": "object",
      "required": [
        "switch"
      ],
      "properties": {
        "default": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          }
        },
        "switch": {
          "type": "string",
          "title": "Switch step"
        },
        "meta": {
          "type": "object"
        }
      },
      "title": "Suspend step",
      "additionalProperties": {
        "type": "array",
        "items": {
          "oneOf": [
            {
              "$ref": "#/$defs/TaskCall"
            },
            {
              "$ref": "#/$defs/ReturnStep"
            },
            {
              "$ref": "#/$defs/ExitStep"
            },
            {
              "$ref": "#/$defs/CheckpointStep"
            },
            {
              "$ref": "#/$defs/ExpressionShortStep"
            },
            {
              "$ref": "#/$defs/ExpressionFullStep"
            },
            {
              "$ref": "#/$defs/LogStep"
            },
            {
              "$ref": "#/$defs/LogYamlStep"
            },
            {
              "$ref": "#/$defs/FlowCallStep"
            },
            {
              "$ref": "#/$defs/FormCallStep"
            },
            {
              "$ref": "#/$defs/IfStep"
            },
            {
              "$ref": "#/$defs/ParallelStep"
            },
            {
              "$ref": "#/$defs/ScriptCall"
            },
            {
              "$ref": "#/$defs/SetStep"
            },
            {
              "$ref": "#/$defs/SuspendStep"
            },
            {
              "$ref": "#/$defs/SwitchStep"
            },
            {
              "$ref": "#/$defs/ThrowStep"
            },
            {
              "$ref": "#/$defs/TryStep"
            },
            {
              "$ref": "#/$defs/BlockStep"
            }
          ]
        }
      }
    },
    "TryStep": {
      "type": "object",
      "required": [
        "try"
      ],
      "properties": {
        "try": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          },
          "title": "Try step"
        },
        "error": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          }
        },
        "out": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "string"
            }
          ]
        },
        "loop": {
          "$ref": "#/$defs/Loop"
        },
        "meta": {
          "type": "object"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "Try step",
      "additionalProperties": false
    },
    "BlockStep": {
      "type": "object",
      "required": [
        "block"
      ],
      "properties": {
        "block": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          },
          "title": "Block step"
        },
        "error": {
          "type": "array",
          "items": {
            "oneOf": [
              {
                "$ref": "#/$defs/TaskCall"
              },
              {
                "$ref": "#/$defs/ReturnStep"
              },
              {
                "$ref": "#/$defs/ExitStep"
              },
              {
                "$ref": "#/$defs/CheckpointStep"
              },
              {
                "$ref": "#/$defs/ExpressionShortStep"
              },
              {
                "$ref": "#/$defs/ExpressionFullStep"
              },
              {
                "$ref": "#/$defs/LogStep"
              },
              {
                "$ref": "#/$defs/LogYamlStep"
              },
              {
                "$ref": "#/$defs/FlowCallStep"
              },
              {
                "$ref": "#/$defs/FormCallStep"
              },
              {
                "$ref": "#/$defs/IfStep"
              },
              {
                "$ref": "#/$defs/ParallelStep"
              },
              {
                "$ref": "#/$defs/ScriptCall"
              },
              {
                "$ref": "#/$defs/SetStep"
              },
              {
                "$ref": "#/$defs/SuspendStep"
              },
              {
                "$ref": "#/$defs/SwitchStep"
              },
              {
                "$ref": "#/$defs/ThrowStep"
              },
              {
                "$ref": "#/$defs/TryStep"
              },
              {
                "$ref": "#/$defs/BlockStep"
              }
            ]
          }
        },
        "out": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "string"
            }
          ]
        },
        "loop": {
          "$ref": "#/$defs/Loop"
        },
        "meta": {
          "type": "object"
        },
        "name": {
          "type": "string"
        }
      },
      "title": "Block step",
      "additionalProperties": false
    },
    "Retry": {
      "type": "object",
      "properties": {
        "delay": {
          "type": "string"
        },
        "in": {
          "type": "object",
          "additionalProperties": {
            "$ref": "#/$defs/Serializable"
          }
        },
        "times": {
          "oneOf": [
            {
              "type": "string"
            },
            {
              "type": "integer"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "Serializable": {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    },
    "GenericTrigger": {
      "type": "object",
      "title": "Generic Trigger",
      "additionalProperties": false,
      "properties": {},
      "patternProperties": {
        "^(?!(manual|cron|github)$).*$": {
          "$ref": "#/$defs/GenericTriggerParams"
        }
      }
    },
    "GenericTriggerParams": {
      "type": "object",
      "required": [
        "version",
        "entryPoint"
      ],
      "properties": {
        "conditions": {
          "type": "object"
        },
        "version": {
          "type": "integer",
          "enum": [
            2
          ]
        },
        "arguments": {
          "type": "object"
        },
        "activeProfiles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "entryPoint": {
          "type": "string"
        },
        "exclusive": {
          "$ref": "#/$defs/ExclusiveMode"
        }
      },
      "additionalProperties": false
    },
    "ExclusiveMode": {
      "type": "object",
      "required": [
        "group"
      ],
      "properties": {
        "group": {
          "type": "string"
        },
        "mode": {
          "type": "string",
          "enum": [
            "cancel",
            "cancelOld",
            "wait"
          ]
        }
      },
      "additionalProperties": false
    },
    "CronTrigger": {
      "type": "object",
      "title": "Cron Trigger",
      "properties": {
        "cron": {
          "$ref": "#/$defs/CronTriggerParams"
        }
      },
      "additionalProperties": false
    },
    "CronTriggerParams": {
      "type": "object",
      "required": [
        "spec",
        "entryPoint"
      ],
      "properties": {
        "runAs": {
          "$ref": "#/$defs/RunAs"
        },
        "spec": {
          "type": "string"
        },
        "timezone": {
          "type": "string"
        },
        "exclusive": {
          "$ref": "#/$defs/ExclusiveMode"
        },
        "arguments": {
          "type": "object"
        },
        "activeProfiles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "entryPoint": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "RunAs": {
      "type": "object",
      "required": [
        "withSecret"
      ],
      "properties": {
        "withSecret": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "ManualTrigger": {
      "type": "object",
      "title": "Manual Trigger",
      "properties": {
        "manual": {
          "$ref": "#/$defs/ManualTriggerParams"
        },
        "exclusive": {
          "$ref": "#/$defs/ExclusiveMode"
        }
      },
      "additionalProperties": false
    },
    "ManualTriggerParams": {
      "type": "object",
      "required": [
        "entryPoint"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "arguments": {
          "type": "object"
        },
        "activeProfiles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "entryPoint": {
          "type": "string"
        },
        "exclusive": {
          "$ref": "#/$defs/ExclusiveMode"
        }
      },
      "additionalProperties": false
    },
    "GithubTrigger": {
      "type": "object",
      "title": "Github Trigger",
      "properties": {
        "github": {
          "$ref": "#/$defs/GithubTriggerParams"
        }
      },
      "additionalProperties": false
    },
    "GithubTriggerParams": {
      "type": "object",
      "required": [
        "version",
        "entryPoint"
      ],
      "properties": {
        "conditions": {
          "$ref": "#/$defs/GithubTriggerConditions"
        },
        "useInitiator": {
          "type": "boolean"
        },
        "ignoreEmptyPush": {
          "type": "boolean"
        },
        "useEventCommitId": {
          "type": "boolean"
        },
        "version": {
          "type": "integer",
          "enum": [
            2
          ]
        },
        "exclusive": {
          "$ref": "#/$defs/ExclusiveMode"
        },
        "arguments": {
          "type": "object"
        },
        "activeProfiles": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "entryPoint": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "GithubTriggerConditions": {
      "type": "object",
      "required": [
        "type"
      ],
      "properties": {
        "githubOrg": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "string"
            }
          ]
        },
        "githubRepo": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "string"
            }
          ]
        },
        "githubHost": {
          "type": "string"
        },
        "sender": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "string"
            }
          ]
        },
        "repositoryInfo": {
          "type": "array",
          "items": {
            "type": "object"
          }
        },
        "payload": {
          "type": "object"
        },
        "type": {
          "type": "string"
        },
        "status": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "string"
            }
          ]
        },
        "branch": {
          "oneOf": [
            {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            {
              "type": "string"
            }
          ]
        },
        "queryParams": {
          "type": "object"
        }
      },
      "additionalProperties": false
    },
    "OneOpsTrigger": {
      "type": "object",
      "title": "OneOps Trigger",
      "properties": {
        "oneops": {
          "type": "object"
        }
      },
      "additionalProperties": false
    },
    "Resources": {
      "type": "object",
      "properties": {
        "concord": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "ProcessDefinitionConfiguration": {
      "type": "object",
      "properties": {
        "runtime": {
          "type": "string",
          "enum": [
            "concord-v2"
          ]
        },
        "debug": {
          "type": "boolean"
        },
        "entryPoint": {
          "type": "string"
        },
        "dependencies": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "arguments": {
          "type": "object"
        },
        "meta": {
          "type": "object"
        },
        "events": {
          "$ref": "#/$defs/EventConfiguration"
        },
        "requirements": {
          "type": "object"
        },
        "processTimeout": {
          "type": "string"
        },
        "suspendTimeout": {
          "type": "string"
        },
        "exclusive": {
          "$ref": "#/$defs/ExclusiveMode"
        },
        "out": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "template": {
          "type": "string"
        },
        "parallelLoopParallelism": {
          "type": "integer"
        }
      },
      "additionalProperties": false
    },
    "EventConfiguration": {
      "type": "object",
      "properties": {
        "recordEvents": {
          "type": "boolean"
        },
        "recordTaskInVars": {
          "type": "boolean"
        },
        "truncateInVars": {
          "type": "boolean"
        },
        "truncateMaxStringLength": {
          "type": "integer"
        },
        "truncateMaxArrayLength": {
          "type": "integer"
        },
        "truncateMaxDepth": {
          "type": "integer"
        },
        "recordTaskOutVars": {
          "type": "boolean"
        },
        "truncateOutVars": {
          "type": "boolean"
        },
        "inVarsBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "outVarsBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "recordTaskMeta": {
          "type": "boolean"
        },
        "truncateMeta": {
          "type": "boolean"
        },
        "metaBlacklist": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "MvnImport": {
      "type": "object",
      "title": "MVN Import",
      "properties": {
        "mvn": {
          "oneOf": [
            {
              "$ref": "#/$defs/ImmutableMvnDefinition"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "ImmutableMvnDefinition": {
      "type": "object",
      "required": [
        "url"
      ],
      "properties": {
        "url": {
          "type": "string"
        },
        "dest": {
          "type": "string"
        }
      },
      "title": "mvn",
      "additionalProperties": false
    },
    "DirImport": {
      "type": "object",
      "title": "Dir Import",
      "properties": {
        "dir": {
          "oneOf": [
            {
              "$ref": "#/$defs/ImmutableDirectoryDefinition"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "ImmutableDirectoryDefinition": {
      "type": "object",
      "required": [
        "src"
      ],
      "properties": {
        "src": {
          "type": "string"
        },
        "dest": {
          "type": "string"
        }
      },
      "title": "dir",
      "additionalProperties": false
    },
    "GitImport": {
      "type": "object",
      "title": "GIT Import",
      "properties": {
        "git": {
          "oneOf": [
            {
              "$ref": "#/$defs/ImmutableGitDefinition"
            }
          ]
        }
      },
      "additionalProperties": false
    },
    "ImmutableGitDefinition": {
      "type": "object",
      "title": "git",
      "properties": {
        "name": {
          "type": "string"
        },
        "url": {
          "type": "string"
        },
        "version": {
          "type": "string"
        },
        "path": {
          "type": "string"
        },
        "dest": {
          "type": "string"
        },
        "secret": {
          "$ref": "#/$defs/SecretDefinition"
        },
        "exclude": {
          "type": "array",
          "items": {
            "type": "string"
          }
        }
      },
      "additionalProperties": false
    },
    "SecretDefinition": {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "org": {
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "password": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "Profile": {
      "type": "object",
      "properties": {
        "configuration": {
          "$ref": "#/$defs/ProcessDefinitionConfiguration"
        },
        "publicFlows": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "flows": {
          "type": "object",
          "additionalProperties": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/$defs/TaskCall"
                },
                {
                  "$ref": "#/$defs/ThrowStep"
                },
                {
                  "$ref": "#/$defs/ScriptCall"
                },
                {
                  "$ref": "#/$defs/SetStep"
                },
                {
                  "$ref": "#/$defs/ReturnStep"
                },
                {
                  "$ref": "#/$defs/LogStep"
                },
                {
                  "$ref": "#/$defs/SuspendStep"
                },
                {
                  "$ref": "#/$defs/ParallelStep"
                },
                {
                  "$ref": "#/$defs/CheckpointStep"
                },
                {
                  "$ref": "#/$defs/ExpressionFullStep"
                },
                {
                  "$ref": "#/$defs/ExitStep"
                },
                {
                  "$ref": "#/$defs/FormCallStep"
                },
                {
                  "$ref": "#/$defs/SwitchStep"
                },
                {
                  "$ref": "#/$defs/IfStep"
                },
                {
                  "$ref": "#/$defs/LogYamlStep"
                },
                {
                  "$ref": "#/$defs/FlowCallStep"
                },
                {
                  "$ref": "#/$defs/BlockStep"
                },
                {
                  "$ref": "#/$defs/ExpressionShortStep"
                },
                {
                  "$ref": "#/$defs/TryStep"
                }
              ]
            }
          }
        },
        "forms": {
          "type": "object"
        }
      },
      "additionalProperties": false
    }
  },
  "additionalProperties": false
}
