# Catalog Tasks

## Domain Types

### Task

- `type Task struct{…}`

  - `ID string`

  - `CreatedAt Time`

  - `Operation TaskOperation`

    - `const TaskOperationCreate TaskOperation = "create"`

    - `const TaskOperationDelete TaskOperation = "delete"`

  - `Status TaskStatus`

    - `const TaskStatusPending TaskStatus = "pending"`

    - `const TaskStatusRunning TaskStatus = "running"`

    - `const TaskStatusCompleted TaskStatus = "completed"`

    - `const TaskStatusFailed TaskStatus = "failed"`

  - `UpdatedAt Time`

  - `ErrorMessage string`

  - `InstallID string`

  - `Links []TaskLink`

    - `Href string`

      Target reference.

      Fragment URIs (`#name`) reference other entities in the same graph by
      their local name (the key in the entity map). Absolute paths and URLs reference
      external resources outside the graph.

    - `Rel string`

      Link relation type.

    - `Properties map[string, any]`

      Additional metadata keyed by property name.

    - `Titles map[string, string]`

      Human-readable titles keyed by BCP 47 language tag.

    - `Type string`

      Media type of the target resource (per RFC 7033 section 4.4.4.3).
      Applies to external `href`s; typically omitted for intra-graph references.

  - `PackageID string`

  - `PackageSlug string`

  - `PackageVersion int64`

  - `Warnings []TaskWarning`

    Informational warnings about the task outcome. For delete tasks,
    warns when adopted entities (pre-existing resources not created by
    the catalog) will be preserved rather than deleted.

    - `Code string`

      - `const TaskWarningCodeValidationError TaskWarningCode = "validation_error"`

      - `const TaskWarningCodeBadRequest TaskWarningCode = "bad_request"`

      - `const TaskWarningCodeUnauthorized TaskWarningCode = "unauthorized"`

      - `const TaskWarningCodeForbidden TaskWarningCode = "forbidden"`

      - `const TaskWarningCodeNotFound TaskWarningCode = "not_found"`

      - `const TaskWarningCodeConflict TaskWarningCode = "conflict"`

      - `const TaskWarningCodeRateLimitExceeded TaskWarningCode = "rate_limit_exceeded"`

      - `const TaskWarningCodeInternalError TaskWarningCode = "internal_error"`

      - `const TaskWarningCodeServiceUnavailable TaskWarningCode = "service_unavailable"`

    - `Details []TaskWarningDetail`

      - `Code string`

        - `const TaskWarningDetailCodeValidationError TaskWarningDetailCode = "validation_error"`

        - `const TaskWarningDetailCodeBadRequest TaskWarningDetailCode = "bad_request"`

        - `const TaskWarningDetailCodeUnauthorized TaskWarningDetailCode = "unauthorized"`

        - `const TaskWarningDetailCodeForbidden TaskWarningDetailCode = "forbidden"`

        - `const TaskWarningDetailCodeNotFound TaskWarningDetailCode = "not_found"`

        - `const TaskWarningDetailCodeConflict TaskWarningDetailCode = "conflict"`

        - `const TaskWarningDetailCodeRateLimitExceeded TaskWarningDetailCode = "rate_limit_exceeded"`

        - `const TaskWarningDetailCodeInternalError TaskWarningDetailCode = "internal_error"`

        - `const TaskWarningDetailCodeServiceUnavailable TaskWarningDetailCode = "service_unavailable"`

      - `Field string`

        valid json path for request body

      - `Message string`

        error message for specific error

    - `Message string`

      summary of the error

    - `Path string`

    - `RequestID string`

    - `Status int64`

      HTTP Status Code

    - `Timestamp Time`

### Task Operation

- `type TaskOperation string`

  - `const TaskOperationCreate TaskOperation = "create"`

  - `const TaskOperationDelete TaskOperation = "delete"`

### Task Status

- `type TaskStatus string`

  - `const TaskStatusPending TaskStatus = "pending"`

  - `const TaskStatusRunning TaskStatus = "running"`

  - `const TaskStatusCompleted TaskStatus = "completed"`

  - `const TaskStatusFailed TaskStatus = "failed"`
