{
  "$id": "http://asl-validator.cloud/parallel.json#",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "properties": {
    "Type": {
      "type": "string",
      "enum": ["Parallel"]
    },
    "Parameters": {
      "$ref": "paths.json#/definitions/asl_payload_template"
    },
    "ResultSelector": {
      "$ref": "paths.json#/definitions/asl_payload_template"
    },
    "Next": {
      "type": "string"
    },
    "End": {
      "enum": [true]
    },
    "Comment": {
      "type": "string"
    },
    "OutputPath": {
      "$ref": "paths.json#/definitions/asl_path"
    },
    "InputPath": {
      "$ref": "paths.json#/definitions/asl_path"
    },
    "ResultPath": {
      "$ref": "paths.json#/definitions/asl_result_path"
    },
    "Branches": {
      "type": "array",
      "items": {
        "$ref": "state-machine.json#"
      }
    },
    "Retry": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "ErrorEquals": {
            "type": "array",
            "items": {
              "$ref": "errors.json#"
            }
          },
          "IntervalSeconds": {
            "type": "number",
            "minimum": 0
          },
          "MaxAttempts": {
            "type": "number",
            "minimum": 0
          },
          "BackoffRate": {
            "type": "number",
            "minimum": 0
          }
        },
        "required": ["ErrorEquals"]
      }
    },
    "Catch": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "ErrorEquals": {
            "type": "array",
            "items": {
              "$ref": "errors.json#"
            }
          },
          "Next": {
            "type": "string"
          },
          "ResultPath": {
            "$ref": "paths.json#/definitions/asl_result_path"
          }
        },
        "required": ["ErrorEquals", "Next"]
      }
    },
    "Output": {
      "$ref": "jsonata.json#/definitions/output"
    },
    "Assign": {
      "$ref": "jsonata.json#/definitions/assign"
    },
    "Arguments": {
      "$ref": "jsonata.json#/definitions/arguments"
    },
    "QueryLanguage": {
      "$ref": "jsonata.json#/definitions/queryLanguage"
    }
  },
  "required": ["Type", "Branches"],
  "additionalProperties": false
}
