spad.site-deletion-cloudflare ​
Delete Cloudflare infrastructure (domains, Worker, R2) and soft-delete site (parallel DAG)
DAG-based site deletion for Cloudflare-backed SPAD sites.
Leaf workflow types are spad.cloudflare.site-deletion-* — see site_deletion_cloudflare_dag/steps/.
Overview ​
| Property | Value |
|---|---|
| Workflow type | Dag |
| Library | App-spad |
| Version | 1.0 |
Input Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
site_uuid | string | Yes | — | SpadSite.id to delete |
organization_uuid | string | No | — | Organization that owns the site |
delete_resources | boolean | No | True | When false, skip provider resource deletion (DB-only soft delete) |
Output Schema ​
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
site_uuid | string | Yes | — | Site that was soft-deleted |
organization_uuid | string | No | — | Organization that owned the site |
cloud_connection_uuid | string | No | — | Cloudflare CloudConnection.id used to delete resources |
worker_script_name | string | No | — | Worker script name snapshotted before deletion |
r2_bucket_name | string | No | — | R2 bucket name snapshotted before deletion |
delete_resources | boolean | No | — | Whether provider resources were deleted (False = soft delete only) |
domains_deleted_count | integer | No | — | Number of custom domains DNS records were removed for |
worker_deleted | boolean | No | — | True when the Worker script deletion was attempted and succeeded |
r2_deleted | boolean | No | — | True when the R2 bucket deletion was attempted and succeeded |
soft_deleted | boolean | No | — | True once site.cached_status was set to 'deleted' |
failure_reason | string | No | — | Reason recorded on the failure path |
error | string | No | — | Engine-stamped failure metadata |
error_type | string | No | — | Engine-stamped failure metadata |
failed_at_state | json | No | — | Engine-stamped failure metadata |
failed_layer | json | No | — | Engine-stamped failure metadata |
failed_step | json | No | — | Engine-stamped failure metadata |
init | json | No | — | DAG step terminal state data |
delete_domains | json | No | — | DAG step terminal state data |
delete_worker | json | No | — | DAG step terminal state data |
delete_r2 | json | No | — | DAG step terminal state data |
finalize | json | No | — | DAG step terminal state data |
DAG Layers ​
| # | Layer | Steps | Compensation |
|---|---|---|---|
| 1 | init | spad.cloudflare.site-deletion-init | spad.compensation.noop |
| 2 | delete_domains | spad.cloudflare.site-deletion-delete-domains | spad.compensation.noop |
| 3 | delete_parallel | spad.cloudflare.site-deletion-delete-worker, spad.cloudflare.site-deletion-delete-r2 | spad.compensation.noop |
| 4 | finalize | spad.cloudflare.site-deletion-finalize | — |
Execution Flow ​
Compensation ​
When any layer fails, its compensation steps run in reverse order to roll back the work completed so far.
Sub-workflows ​
| Sub-workflow | Step name |
|---|---|
spad.cloudflare.site-deletion-init | init |
spad.cloudflare.site-deletion-delete-domains | delete_domains |
spad.cloudflare.site-deletion-delete-worker | delete_worker |
spad.cloudflare.site-deletion-delete-r2 | delete_r2 |
spad.cloudflare.site-deletion-finalize | finalize |
spad.compensation.noop | ack_no_compensation_init |
API Usage ​
bash
POST /api/workflows/start
Content-Type: application/json
{
"workflow_type": "spad.site-deletion-cloudflare",
"initial_data": {
"site_uuid": "value"
}
}