recovery.operation_completed

A recovery finished and its changes stand; when it can be undone, the window is open from now.

When this fires

When the recovery's changes are in place: the creator signs in with the new account, the project's bot answers under the new token, the resource points at its replacement and re-admission has been queued. For a channel recovery this fires once, when the first swap completes; later swaps absorbed into the same operation fire recovery.resource_replaced only.

Required ability

project-recovery:view — token must carry this at mint time to subscribe an endpoint to this event.

Payload

{
  "id": "evt_01HX...",
  "type": "recovery.operation_completed",
  "created_at": "2026-09-12T03:19:42Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "operation_id": "9a4d2e71-5b38-4c6f-8e12-3d7c9b0a5f21",
    "kind": "resources",
    "connector": "telegram",
    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
    "automatic": true,
    "on_demand": false,
    "started_at": "2026-09-12T03:19:10Z",
    "completed_at": "2026-09-12T03:19:42Z",
    "revert_window_ends_at": "2026-09-13T03:19:42Z"
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways recovery.operation_completed for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUID | nullProject this event belongs to; null for an account recovery.
data.operation_idstring UUIDThe operation.
data.kindstringaccount, bot or resources.
data.connectorstring | nullThe connector the recovery acted on.
data.project_idstring UUID | nullThe project, or null for an account recovery.
data.automaticbooleanTrue when the platform ran it without the creator.
data.on_demandbooleanTrue for a Swap & Grant of a healthy resource.
data.started_atISO 8601 timestampWhen it began.
data.completed_atISO 8601 timestampWhen its changes were in place.
data.revert_window_ends_atISO 8601 timestamp | nullWhen the undo closes; null for a bot replacement, which cannot be undone.

Caveats

  • Completion means the changes stand, not that every member is back in. Read the roll call at GET /v1/recovery/operations/{operation}/roll-call for that.
  • The creator also receives the recovery report by email a few minutes later, once the first re-admissions have landed.

How is this guide?

On this page

Subscriby is a product designed by you — for you.

No boardroom full of executives deciding what we ships next. Our roadmap always shaped by you with your feedback.

Share feedback or a request