{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/hatchet/json-schema/hatchet-v1-task-schema.json",
  "title": "V1TaskSummary",
  "description": "Hatchet V1TaskSummary entity, derived from the Hatchet OpenAPI spec.",
  "properties": {
    "metadata": {
      "type": "object",
      "properties": {
        "id": {
          "type": "string",
          "description": "the id of this resource, in UUID format",
          "example": "bb214807-246e-43a5-a25d-41761d1cff9e",
          "minLength": 0,
          "maxLength": 36
        },
        "createdAt": {
          "type": "string",
          "description": "the time that this resource was created",
          "format": "date-time",
          "example": "2022-12-13T15:06:48.888358-05:00"
        },
        "updatedAt": {
          "type": "string",
          "description": "the time that this resource was last updated",
          "format": "date-time",
          "example": "2022-12-13T15:06:48.888358-05:00"
        }
      },
      "required": [
        "id",
        "createdAt",
        "updatedAt"
      ]
    },
    "actionId": {
      "type": "string",
      "description": "The action ID of the task."
    },
    "retryCount": {
      "type": "integer",
      "description": "The number of retries of the task."
    },
    "attempt": {
      "type": "integer",
      "description": "The attempt number of the task."
    },
    "additionalMetadata": {
      "type": "object",
      "description": "Additional metadata for the task run."
    },
    "children": {
      "type": "array",
      "items": {
        "properties": {
          "metadata": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "description": "the id of this resource, in UUID format",
                "example": "bb214807-246e-43a5-a25d-41761d1cff9e",
                "minLength": 0,
                "maxLength": 36
              },
              "createdAt": {
                "type": "string",
                "description": "the time that this resource was created",
                "format": "date-time",
                "example": "2022-12-13T15:06:48.888358-05:00"
              },
              "updatedAt": {
                "type": "string",
                "description": "the time that this resource was last updated",
                "format": "date-time",
                "example": "2022-12-13T15:06:48.888358-05:00"
              }
            },
            "required": [
              "id",
              "createdAt",
              "updatedAt"
            ]
          },
          "actionId": {
            "type": "string",
            "description": "The action ID of the task."
          },
          "retryCount": {
            "type": "integer",
            "description": "The number of retries of the task."
          },
          "attempt": {
            "type": "integer",
            "description": "The attempt number of the task."
          },
          "additionalMetadata": {
            "type": "object",
            "description": "Additional metadata for the task run."
          },
          "children": {
            "type": "array",
            "items": {
              "$ref": "#/$defs/V1TaskSummary"
            },
            "description": "The list of children tasks"
          },
          "createdAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the task was created."
          },
          "displayName": {
            "type": "string",
            "description": "The display name of the task run."
          },
          "duration": {
            "type": "integer",
            "description": "The duration of the task run, in milliseconds."
          },
          "isDurable": {
            "type": "boolean",
            "description": "Whether this task was created as a durable task."
          },
          "errorMessage": {
            "type": "string",
            "description": "The error message of the task run (for the latest run)"
          },
          "finishedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the task run finished."
          },
          "input": {
            "type": "object",
            "x-go-type": "openapi.NonNullableJSON",
            "x-go-type-import": {
              "path": "github.com/hatchet-dev/hatchet/api/v1/server/oas",
              "name": "NonNullableJSON"
            },
            "x-nullable": false,
            "description": "The input of the task run."
          },
          "numSpawnedChildren": {
            "type": "integer",
            "description": "The number of spawned children tasks"
          },
          "output": {
            "type": "object",
            "x-go-type": "openapi.NonNullableJSON",
            "x-go-type-import": {
              "path": "github.com/hatchet-dev/hatchet/api/v1/server/oas",
              "name": "NonNullableJSON"
            },
            "x-nullable": false,
            "description": "The output of the task run (for the latest run)"
          },
          "status": {
            "type": "string",
            "enum": [
              "QUEUED",
              "RUNNING",
              "COMPLETED",
              "CANCELLED",
              "FAILED"
            ]
          },
          "isEvicted": {
            "type": "boolean",
            "description": "Whether the task has been evicted from a worker (still counts as RUNNING)."
          },
          "startedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the task run started."
          },
          "stepId": {
            "type": "string",
            "description": "The step ID of the task.",
            "format": "uuid",
            "minLength": 36,
            "maxLength": 36
          },
          "taskExternalId": {
            "type": "string",
            "description": "The external ID of the task.",
            "format": "uuid",
            "minLength": 36,
            "maxLength": 36
          },
          "taskId": {
            "type": "integer",
            "description": "The ID of the task."
          },
          "taskInsertedAt": {
            "type": "string",
            "format": "date-time",
            "description": "The timestamp the task was inserted."
          },
          "tenantId": {
            "type": "string",
            "description": "The ID of the tenant.",
            "example": "bb214807-246e-43a5-a25d-41761d1cff9e",
            "minLength": 36,
            "maxLength": 36,
            "format": "uuid"
          },
          "type": {
            "$ref": "#/components/schemas/V1WorkflowType",
            "description": "The type of the workflow (whether it's a DAG or a task)"
          },
          "workflowId": {
            "type": "string",
            "format": "uuid"
          },
          "workflowName": {
            "type": "string"
          },
          "workflowRunExternalId": {
            "type": "string",
            "format": "uuid",
            "description": "The external ID of the workflow run"
          },
          "workflowVersionId": {
            "type": "string",
            "format": "uuid",
            "description": "The version ID of the workflow"
          },
          "workflowConfig": {
            "type": "object"
          },
          "parentTaskExternalId": {
            "type": "string",
            "description": "The external ID of the parent task.",
            "format": "uuid"
          }
        },
        "required": [
          "metadata",
          "createdAt",
          "displayName",
          "id",
          "input",
          "numSpawnedChildren",
          "output",
          "status",
          "taskExternalId",
          "taskId",
          "taskInsertedAt",
          "tenantId",
          "type",
          "workflowId",
          "workflowRunExternalId"
        ]
      },
      "description": "The list of children tasks"
    },
    "createdAt": {
      "type": "string",
      "format": "date-time",
      "description": "The timestamp the task was created."
    },
    "displayName": {
      "type": "string",
      "description": "The display name of the task run."
    },
    "duration": {
      "type": "integer",
      "description": "The duration of the task run, in milliseconds."
    },
    "isDurable": {
      "type": "boolean",
      "description": "Whether this task was created as a durable task."
    },
    "errorMessage": {
      "type": "string",
      "description": "The error message of the task run (for the latest run)"
    },
    "finishedAt": {
      "type": "string",
      "format": "date-time",
      "description": "The timestamp the task run finished."
    },
    "input": {
      "type": "object",
      "x-go-type": "openapi.NonNullableJSON",
      "x-go-type-import": {
        "path": "github.com/hatchet-dev/hatchet/api/v1/server/oas",
        "name": "NonNullableJSON"
      },
      "x-nullable": false,
      "description": "The input of the task run."
    },
    "numSpawnedChildren": {
      "type": "integer",
      "description": "The number of spawned children tasks"
    },
    "output": {
      "type": "object",
      "x-go-type": "openapi.NonNullableJSON",
      "x-go-type-import": {
        "path": "github.com/hatchet-dev/hatchet/api/v1/server/oas",
        "name": "NonNullableJSON"
      },
      "x-nullable": false,
      "description": "The output of the task run (for the latest run)"
    },
    "status": {
      "type": "string",
      "enum": [
        "QUEUED",
        "RUNNING",
        "COMPLETED",
        "CANCELLED",
        "FAILED"
      ]
    },
    "isEvicted": {
      "type": "boolean",
      "description": "Whether the task has been evicted from a worker (still counts as RUNNING)."
    },
    "startedAt": {
      "type": "string",
      "format": "date-time",
      "description": "The timestamp the task run started."
    },
    "stepId": {
      "type": "string",
      "description": "The step ID of the task.",
      "format": "uuid",
      "minLength": 36,
      "maxLength": 36
    },
    "taskExternalId": {
      "type": "string",
      "description": "The external ID of the task.",
      "format": "uuid",
      "minLength": 36,
      "maxLength": 36
    },
    "taskId": {
      "type": "integer",
      "description": "The ID of the task."
    },
    "taskInsertedAt": {
      "type": "string",
      "format": "date-time",
      "description": "The timestamp the task was inserted."
    },
    "tenantId": {
      "type": "string",
      "description": "The ID of the tenant.",
      "example": "bb214807-246e-43a5-a25d-41761d1cff9e",
      "minLength": 36,
      "maxLength": 36,
      "format": "uuid"
    },
    "type": {
      "$ref": "#/components/schemas/V1WorkflowType",
      "description": "The type of the workflow (whether it's a DAG or a task)"
    },
    "workflowId": {
      "type": "string",
      "format": "uuid"
    },
    "workflowName": {
      "type": "string"
    },
    "workflowRunExternalId": {
      "type": "string",
      "format": "uuid",
      "description": "The external ID of the workflow run"
    },
    "workflowVersionId": {
      "type": "string",
      "format": "uuid",
      "description": "The version ID of the workflow"
    },
    "workflowConfig": {
      "type": "object"
    },
    "parentTaskExternalId": {
      "type": "string",
      "description": "The external ID of the parent task.",
      "format": "uuid"
    }
  },
  "required": [
    "metadata",
    "createdAt",
    "displayName",
    "id",
    "input",
    "numSpawnedChildren",
    "output",
    "status",
    "taskExternalId",
    "taskId",
    "taskInsertedAt",
    "tenantId",
    "type",
    "workflowId",
    "workflowRunExternalId"
  ]
}