{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "TaskSettings",
  "type": "object",
  "properties": {
    "task_key": {
      "type": "string",
      "description": "A unique key for the task within the job. Used to reference the task in dependencies and logging."
    },
    "description": {
      "type": "string",
      "description": "A description of the task."
    },
    "depends_on": {
      "type": "array",
      "description": "An array of objects specifying the task dependencies. Each dependency is identified by its task_key."
    },
    "existing_cluster_id": {
      "type": "string",
      "description": "An existing cluster to run the task on."
    },
    "job_cluster_key": {
      "type": "string",
      "description": "Reference to a job_clusters entry."
    },
    "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 to run this task."
    },
    "timeout_seconds": {
      "type": "integer",
      "description": "Timeout for this individual task."
    },
    "max_retries": {
      "type": "integer",
      "description": "Maximum number of retries for a failed task."
    },
    "min_retry_interval_millis": {
      "type": "integer",
      "description": "Minimum interval between retry attempts."
    },
    "retry_on_timeout": {
      "type": "boolean",
      "description": "Whether to retry when the task times out."
    },
    "libraries": {
      "type": "array",
      "description": "Libraries to install on the cluster running this task."
    }
  }
}