# Operation

> A long-running unit of work.

A long-running unit of work. Durable; each step is idempotent and re-runnable.

## Fields

| Field | Type | Description |
| --- | --- | --- |
| `id` * | string |  |
| `kind` * | string | What the operation does. |
| `status` * | [OperationStatus](/docs/api/objects/operation-status/) |  |
| `summary` | string |  |
| `workspace_id` | string |  |
| `project_id` | string or null |  |
| `environment_id` | string or null |  |
| `resource` | [ResourceRef](/docs/api/objects/resource-ref/) or any or null | The resource this operation creates or changes. |
| `progress` | object |  |
| `steps` | array of [OperationStep](/docs/api/objects/operation-step/) |  |
| `result` | object or null | Kind-specific result once succeeded. |
| `error` | [Problem](/docs/api/objects/problem/) or any or null |  |
| `approval` | [ApprovalRef](/docs/api/objects/approval-ref/) or any or null |  |
| `created_by` | [Actor](/docs/api/objects/actor/) |  |
| `created_at` * | string (date-time) |  |
| `started_at` | string (date-time) or null |  |
| `finished_at` | string (date-time) or null |  |
| `links` | object |  |

\* always present

## Example

```json
{
  "id": "op_01jbx2m9k7q4r8t5v6w3y0z1op",
  "kind": "deployment.create",
  "status": "running",
  "summary": "Deploying web to production",
  "workspace_id": "ws_01jbx2m9k7q4r8t5v6w3y0z1ws",
  "project_id": "prj_01jbx2m9k7q4r8t5v6w3y0z1pr",
  "environment_id": "env_01jbx2m9k7q4r8t5v6w3y0z1en",
  "resource": {
    "type": "deployment",
    "id": "dep_01jbx2m9k7q4r8t5v6w3y0z1dp",
    "url": "/v1/deployments/dep_01jbx2m9k7q4r8t5v6w3y0z1dp"
  },
  "progress": {
    "current_step": "build",
    "completed_steps": 1,
    "total_steps": 6,
    "percent": 20
  },
  "steps": [
    {
      "name": "resolve",
      "title": "Reading your settings",
      "status": "succeeded",
      "attempt": 1,
      "started_at": "2026-10-23T14:02:00Z",
      "finished_at": "2026-10-23T14:02:01Z"
    },
    {
      "name": "build",
      "title": "Building your app",
      "status": "running",
      "attempt": 1,
      "started_at": "2026-10-23T14:02:01Z",
      "finished_at": null
    }
  ],
  "created_by": {
    "type": "user",
    "id": "usr_01jbx2m9k7q4r8t5v6w3y0z1us",
    "display": "Stewart Webb"
  },
  "created_at": "2026-10-23T14:02:00Z",
  "links": {
    "self": "/v1/operations/op_01jbx2m9k7q4r8t5v6w3y0z1op",
    "events": "/v1/operations/op_01jbx2m9k7q4r8t5v6w3y0z1op/events",
    "resource": "/v1/deployments/dep_01jbx2m9k7q4r8t5v6w3y0z1dp"
  }
}
```

## Used by

- [Close a workspace](/docs/api/workspaces/#close-a-workspace)
- [Delete a project](/docs/api/projects/#delete-a-project)
- [Create an environment](/docs/api/environments/#create-an-environment)
- [Delete an environment](/docs/api/environments/#delete-an-environment)
- [Delete a service from every environment](/docs/api/services/#delete-a-service-from-every-environment)
- [Restart the running deployment](/docs/api/services/#restart-the-running-deployment)
- [Deploy](/docs/api/deployments/#deploy)
- [Roll back to this deployment](/docs/api/deployments/#roll-back-to-this-deployment)
- [Create a database](/docs/api/databases/#create-a-database)
- [Change plan, storage, extensions, masking or access](/docs/api/databases/#change-plan-storage-extensions-masking-or-access)
- [Delete a database (7-day soft delete)](/docs/api/databases/#delete-a-database-7-day-soft-delete)
- [Cancel a pending deletion](/docs/api/databases/#cancel-a-pending-deletion)
- [Rotate credentials (rolling, dual-password window)](/docs/api/databases/#rotate-credentials-rolling-dual-password-window)
- [Branch a database (copy-on-write clone, masked)](/docs/api/databases/#branch-a-database-copy-on-write-clone-masked)
- [Delete a branch](/docs/api/databases/#delete-a-branch)
- [Take a backup now](/docs/api/databases/#take-a-backup-now)
- [Restore from a backup or point in time](/docs/api/databases/#restore-from-a-backup-or-point-in-time)
- [Create a volume](/docs/api/volumes/#create-a-volume)
- [Grow, change HA, or attach to a service](/docs/api/volumes/#grow-change-ha-or-attach-to-a-service)
- [Delete a volume (7-day soft delete)](/docs/api/volumes/#delete-a-volume-7-day-soft-delete)
- [Apply a plan](/docs/api/manifest/#apply-a-plan)
- [Re-run every safety check now](/docs/api/safety/#re-run-every-safety-check-now)
- [Apply a finding's one-click fix (or open an AI fix PR)](/docs/api/safety/#apply-a-findings-one-click-fix-or-open-an-ai-fix-pr)
- [Get an operation](/docs/api/operations/#get-an-operation)
- [Request cancellation](/docs/api/operations/#request-cancellation)
- [Create a project from a template and deploy it](/docs/api/templates/#create-a-project-from-a-template-and-deploy-it)
