connector.outage_opened

A platform refused a project's live installation — token revoked or regenerated, bot deleted — and the connector entered an outage.

When this fires

The hourly health probe recorded a platform-caused refusal of a project's live installation: the platform says the credentials are revoked or regenerated, or that the bot or app no longer exists. Rate limits, unclassified errors, standby installations and a creator's own Disconnect never open an outage. A probe that repeats the same verdict does not fire this again; one outage stays open until connector.outage_closed.

While the outage is open, every plan that unlocks a place on that connector is off sale on the portal, in the bot, through access codes and trials and through the REST checkout, and the installation object reads sales_paused: true with an outage block. See Connector outages for what members and creators see.

Required ability

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

Payload

{
  "id": "evt_01HX...",
  "type": "connector.outage_opened",
  "created_at": "2026-09-13T10:05:00Z",
  "api_version": "2026-05-01",
  "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
  "data": {
    "connector": "telegram",
    "installation_id": "3b8f0c6e-2d41-4a97-9e5f-1c7d6b2a8e40",
    "outage_id": "9c1e4d2a-7b3f-4e8a-a2d1-5f6b7c8d9e0f",
    "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13",
    "reason": "connector_api_unauthorized",
    "started_at": "2026-09-13T10:05:00Z"
  }
}

Field reference

FieldTypeNotes
idstring ULIDUnique event id, prefixed evt_. Use for idempotent processing.
typestringAlways connector.outage_opened for this event.
created_atISO 8601 timestampServer-side emission time.
api_versionstringWebhook API contract version.
project_idstring UUIDProject this event belongs to.
data.connectorstringThe connector key.
data.installation_idstring UUIDThe refused installation.
data.outage_idstring UUIDThe outage row; the same id closes in connector.outage_closed.
data.project_idstring UUIDMirrors top-level project_id.
data.reasonstringThe connector's reason code for the refusal, the same code state_reason carries.
data.started_atISO 8601 timestampWhen the refusal was recorded, which is where the outage's length is measured from.

Caveats

  • connector.status_changed fires beside this event with state: degraded; this event is the narrower signal that sales froze.
  • A Disaster Recovery incident opens too when the refusal warrants a replacement; see recovery.incident_opened.

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