recovery.resource_replaced

The creator pointed a resource at a replacement channel or group — in a recovery after a ban, or on demand for a healthy resource.

When this fires

The creator swaps a resource onto another chat: a replacement channel after a ban, the standby in one click, or a healthy resource moved to a new supergroup on demand (Swap & Grant, which spends no allowance). The resource is re-pointed, the old links revoked and every active member's re-admission queued. One event per resource swapped, each under the operation_id of the recovery absorbing it.

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.resource_replaced",
  "created_at": "2026-06-20T18:04:11Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "operation_id": "d4b7a2c9-1e58-4f36-8a0d-6c2e9b7f1a45",
    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
    "resource_id": "b73c5f21-9d80-4a6e-8215-4f70ce13a9d6",
    "resource_title": "Members",
    "connector": "telegram",
    "replaced_at": "2026-06-20T18:04:11Z",
    "on_demand": true
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways recovery.resource_replaced for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDProject this event belongs to.
data.operation_idstring UUIDThe recovery the swap ran under; several swaps inside the grace period share one.
data.project_idstring UUIDThe project.
data.resource_idstring UUIDThe resource, now pointing at the replacement.
data.resource_titlestring | nullThe resource's title, as plans show it.
data.connectorstring | nullThe connector the chats live on.
data.replaced_atISO 8601 timestampWhen the resource was re-pointed.
data.on_demandbooleanTrue for a Swap & Grant of a healthy resource with no open incident, which spends no allowance.

Caveats

  • A swap onto the standby chat also fires recovery.standby_removed with reason: used.
  • project.resource.updated fires for the same resource with changes.space_id, as it does for any swap.

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