{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "TaskSettings",
  "type": "object",
  "properties": {
    "task_key": {
      "type": "string",
      "description": "Unique key for the task within the job. Must be unique among all tasks in the same job."
    },
    "description": {
      "type": "string",
      "description": "Optional description for the task"
    },
    "depends_on": {
      "type": "array",
      "description": "Tasks this task depends on. The task will not start until all dependent tasks complete successfully."
    },
    "existing_cluster_id": {
      "type": "string",
      "description": "ID of an existing cluster to use for this task"
    },
    "job_cluster_key": {
      "type": "string",
      "description": "Key of a job cluster specification to use. Refers to a cluster defined in the job's job_clusters field."
    },
    "notebook_task": {
      "type": "object"
    },
    "spark_jar_task": {
      "type": "object"
    },
    "spark_python_task": {
      "type": "object"
    },
    "spark_submit_task": {
      "type": "object"
    },
    "pipeline_task": {
      "type": "object"
    },
    "python_wheel_task": {
      "type": "object"
    },
    "sql_task": {
      "type": "object"
    },
    "dbt_task": {
      "type": "object"
    },
    "run_if": {
      "type": "string",
      "description": "Condition for running this task based on dependencies"
    },
    "timeout_seconds": {
      "type": "integer",
      "description": "Timeout in seconds for this individual task"
    },
    "max_retries": {
      "type": "integer",
      "description": "Maximum number of retries for this task"
    },
    "min_retry_interval_millis": {
      "type": "integer",
      "description": "Minimum interval between retries in milliseconds"
    },
    "retry_on_timeout": {
      "type": "boolean",
      "description": "Whether to retry the task if it times out"
    },
    "libraries": {
      "type": "array",
      "description": "Libraries to install on the task cluster"
    }
  }
}