Env0 · AsyncAPI Specification
Env0 Webhooks
Version
View Spec
View on GitHub
FinOpsInfrastructure as CodeDevOpsCloudTerraformOpenTofuPlatform EngineeringCloud GovernanceDrift DetectionAsyncAPIEvents
AsyncAPI Specification
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.
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.