---
title: "CleanupTask"
description: "The `CleanupTask` entity."
section: "Reference"
group: "Types"
order: 44
---

## Definition

```ts
interface CleanupTask {
  id: string;
  parentId: string | null;
  workspaceId: string | null;
  sourceEventId: string;
  resourceType:
    | "delete_workspace"
    | "delete_app"
    | "delete_element"
    | "delete_database"
    | "delete_file"
    | "delete_email"
    | "r2_object"
    | "r2_prefix"
    | "r2_bucket"
    | "d1"
    | "pages_project"
    | "cf_image"
    | "cf_stream";
  resourceId: string;
  metadata: Record<string, unknown> | null;
  status: "pending" | "failed" | "completed" | "in_progress";
  attempts: number;
  lastError: string | null;
  createdAt: string;
  completedAt: string | null;
}
```

## Fields

| Field           | Type                                                                                                                                                                                                                  | Notes                                                                                   |
| --------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------- |
| `id`            | `string`                                                                                                                                                                                                              | `readonly` `required`                                                                   |
| `parentId`      | `string \| null`                                                                                                                                                                                                      | `required` — Parent cleanup task this one was fanned out from, if any.                  |
| `workspaceId`   | `string \| null`                                                                                                                                                                                                      | `required` — Workspace the resource being cleaned up belongs to.                        |
| `sourceEventId` | `string`                                                                                                                                                                                                              | `required` — Event that spawned this cleanup task (typically an entity.deleted).        |
| `resourceType`  | `"delete_workspace" \| "delete_app" \| "delete_element" \| "delete_database" \| "delete_file" \| "delete_email" \| "r2_object" \| "r2_prefix" \| "r2_bucket" \| "d1" \| "pages_project" \| "cf_image" \| "cf_stream"` | `required` — Kind of resource being cleaned up (parent delete\_\* or leaf CF resource). |
| `resourceId`    | `string`                                                                                                                                                                                                              | `required` — Identifier of the resource (entity ID, R2 key, bucket name, etc.).         |
| `metadata`      | `Record<string, unknown> \| null`                                                                                                                                                                                     | `required` — Free-form context needed by the handler to perform the cleanup.            |
| `status`        | `"pending" \| "failed" \| "completed" \| "in_progress"`                                                                                                                                                               | `required` — Lifecycle: pending → in_progress → completed, or failed after retries.     |
| `attempts`      | `number`                                                                                                                                                                                                              | `required` — Number of times the task has been attempted.                               |
| `lastError`     | `string \| null`                                                                                                                                                                                                      | `required` — Most recent error message, if any attempt failed.                          |
| `createdAt`     | `string`                                                                                                                                                                                                              | `readonly` `required` — ISO-8601 timestamp of creation.                                 |
| `completedAt`   | `string \| null`                                                                                                                                                                                                      | `required` — ISO-8601 timestamp when the task finished successfully.                    |
