Env0 · AsyncAPI Specification

Env0 Webhooks

Version

View Spec View on GitHub FinOpsInfrastructure as CodeDevOpsCloudTerraformOpenTofuPlatform EngineeringCloud GovernanceDrift DetectionAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-09-06'
method: searched
source: https://docs.envzero.com/guides/integrations/notifications/webhooks
reference: https://docs.envzero.com/api-reference (Webhooks section, 16 documented events)
spec_type: none
asyncapi_published: false
asyncapi_note: >-
  env zero publishes no AsyncAPI document. It DOES publish a first-class webhook surface - 16
  named events, each with its own page in the API reference carrying the payload schema, plus a
  documented envelope, delivery headers and HMAC signature verification. Captured here as a
  webhook catalog. No AsyncAPI has been authored on env zero's behalf.
transport: https
method: POST
requirement: HTTPS endpoint required
envelope:
  format: CloudEvents 1.0 structured JSON (shape, not a declared conformance)
  fields:
  - {name: type, description: 'the event type, e.g. com.env-zero.deploy.succeeded'}
  - {name: source, description: 'URI identifying the source of the event, e.g. https://env0.com'}
  - {name: id, description: globally unique id identifying the request}
  - {name: time, description: ISO 8601 timestamp}
  - {name: datacontenttype, description: application/json}
  - {name: data, description: event data, JSON encoded; schema defined by the event type}
headers:
- {name: User-Agent, value: env0-webhook}
- {name: x-env-zero-notification-target-id, description: id of the notification target the request was sent to}
- {name: x-env-zero-event, description: 'the event type, e.g. com.env-zero.deploy.succeeded'}
- {name: x-env-zero-event-id, description: globally unique id identifying the delivery}
- {name: x-env-zero-signature, description: HMAC hash signature, present only when a secret is configured}
headers_note: >-
  env zero's own documentation still shows the LEGACY x-env0-* header names in its worked request
  example while the header table above it lists x-env-zero-*. Both appear on the same page as of
  2026-09-06. An integrator should be prepared for either; this is a documentation defect worth
  reporting to the provider.
signature:
  supported: true
  optional: true
  mechanism: HMAC hash over the delivery, keyed by a per-target secret
  header: x-env-zero-signature
  guidance: choose a random high-entropy string and store it where it can be retrieved for
    verification
delivery_targets:
  types: [Webhook, Slack, Microsoft Teams, Email]
  scope: notification targets are created at organization level and associated with projects
  management_operations:
  - 'POST /notifications/endpoints/{endpointId}/test - send a test event and inspect the request and response'
  test_response_envelope: 'request{url,method,headers,body}, response{headers,statusCode,body}, error{type: timeout|ssl-error|unknown, message}'
events:
- {name: com.env0.deploy.succeeded, title: Deploy succeeded, description: fired when a deploy has finished successfully}
- {name: deploy.failed, title: Deploy failed, description: fired when a deploy has failed}
- {name: deployment.started, title: Deployment started, description: fired when a deployment has started}
- {name: deployment.cancelled, title: Deployment cancelled, description: fired when a deployment has been cancelled}
- {name: deployment.resumed, title: Deployment resumed, description: fired when a deployment has been resumed after an approval}
- {name: deployment.waiting-for-user, title: Deployment waiting for user, description: fired when a deployment requires an approval}
- {name: destroy.started, title: Destroy started, description: fired when a destroy has started}
- {name: destroy.succeeded, title: Destroy succeeded, description: fired when a destroy has finished successfully}
- {name: destroy.failed, title: Destroy failed, description: fired when a destroy has failed}
- {name: destroy.resumed, title: Destroy resumed, description: fired when a destroy has been resumed after an approval}
- {name: pr-plan.failed, title: PR plan failed, description: fired when a PR plan has failed}
- {name: drift.detected, title: Drift detected, description: fired when env zero detects drift in an environment}
- {name: drift.undetected, title: Drift undetected, description: fired when a drift has been reconciled}
- {name: drift.failed, title: Drift failed, description: fired when drift detection fails to complete}
- {name: environment.marked-for-auto-destroy, title: Environment marked for auto destroy, description: fired when an environment is marked for auto destroy by a TTL policy}
- {name: budget.exceeded, title: Budget exceeded, description: fired when a Budget Exceeded event has been triggered}
- {name: com.env0.webhook.test, title: Test event, description: sent by the 'Send test event' button and the test endpoint}
events_note: >-
  Only two full event-type strings are published verbatim in the guide
  (com.env0.deploy.succeeded, com.env0.webhook.test) alongside one in the header table using the
  newer reverse-DNS prefix (com.env-zero.deploy.succeeded). The remaining rows carry env zero's
  own event TITLES and descriptions from its reference; the `name` values for those are
  API-Evangelist shorthand, NOT provider-published strings, and must not be used as literals.
  Each event's payload schema is published on its own page under
  https://docs.envzero.com/api-reference/webhooks/.
event_count: 16
streaming:
  present: false
  note: no websocket, SSE, Kafka or event-stream surface. The one server-sent-events channel on
    the estate is the Mintlify docs MCP transport, which is not an env zero event surface.
log_forwarding:
  present: true
  note: deployment and audit logs can be forwarded to Amazon CloudWatch, Amazon S3 and Dynatrace
    via OIDC. A push data channel, though not a webhook.
  docs: https://docs.envzero.com/guides/integrations/logs-forwarding/cloudwatch

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/env0-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.