Groundcover · AsyncAPI Specification
Groundcover Webhooks
Version
View Spec
View on GitHub
AIOpsObservabilityKuberneteseBPFMonitoringLogsTracesMetricsOpenTelemetryMCPAsyncAPIEvents
AsyncAPI Specification
generated: '2026-08-29'
method: searched
source: https://docs.groundcover.com/integrations/connected-apps/generic-webhook
provider: Groundcover
providerId: groundcover
type: Webhooks
asyncapi_published: false
description: >-
groundcover publishes no AsyncAPI document, but it does have a real outbound event surface: when a
monitor issue changes state, Notification Routes deliver a templated payload to one or more
Destinations, one of which is a fully user-defined Generic Webhook. The payload is not a fixed
schema — the customer authors it with Jinja2 over a published variable set — so the contract worth
capturing is that variable set plus the state machine that fires it. Nothing here is fabricated
into an AsyncAPI shape it does not have.
event_model:
producer: groundcover monitors
trigger: monitor issue state change
states:
- name: alerting
description: The monitor is firing.
- name: resolved
description: The monitor has recovered.
- name: test
description: >-
Emitted by the Test button in the Destination configuration UI; {{ status }} returns "test"
and value/threshold may carry placeholder values.
routing:
mechanism: Notification Routes
scope_language: gcQL (e.g. 'env:prod AND severity:S1')
rules: per-state rules (Firing and/or Resolved) selecting one or more Destinations
docs: https://docs.groundcover.com/use-groundcover/monitors/notification-routes
renotification:
field: renotification_count
description: Counter starting at 0, incremented on each re-notification.
destinations:
- name: Generic Webhook
docs: https://docs.groundcover.com/integrations/connected-apps/generic-webhook
payload: user-defined custom payload with Jinja2 templating
- name: Slack App
docs: https://docs.groundcover.com/integrations/connected-apps/slack-app
- name: Slack Webhook
docs: https://docs.groundcover.com/integrations/connected-apps/slack-webhook
- name: Jira
docs: https://docs.groundcover.com/integrations/workflow-integrations/jira-webhook-integration
- name: MS Teams
docs: https://docs.groundcover.com/use-groundcover/workflows/full-webhook-examples/ms-teams
- name: incident.io
docs: https://docs.groundcover.com/use-groundcover/workflows/full-webhook-examples/incident.io
- name: Email via Zapier
docs: https://docs.groundcover.com/integrations/connected-apps/generic-webhook/email-via-zapier
payload_variables:
syntax: '{{ variable }}'
templating: Jinja2 (conditionals, macros supported)
variables:
- name: summary
description: The monitor title from the issue details.
- name: description
description: The monitor description; may contain nested variables based on monitor definitions.
- name: monitor_name
description: The name of the monitor.
- name: monitor_id
description: Internal unique ID of the monitor.
- name: fingerprint
description: Unique ID for the specific issue — the deduplication key.
- name: severity
description: Monitor severity (S1, S2, S3, S4).
- name: status
description: Alert state — "alerting", "resolved" or "test".
- name: value
description: The monitor value that triggered the alert.
- name: threshold
description: The threshold configured in the monitor.
- name: timestamp
description: The firing time, UTC.
- name: renotification_count
description: Counter starting at 0, incremented with each re-notification.
- name: alertname
description: The alert name.
- name: urls.issue
description: URL to the issue for investigation.
- name: urls.monitor
description: URL to the monitor definition.
- name: urls.silence
description: URL to silence the monitor.
- name: urls.notification_route
description: URL to the notification route.
labels:
syntax: '{{ labels.<label> }}'
description: >-
Any monitor label — custom labels and group-by labels. Common examples in the docs:
labels.workload, labels.namespace, labels.env, labels.traceID. A label must be in the
monitor's group-by clause or set as a custom label to be available in a notification.
legacy_surface:
name: Workflows
status: deprecated
variable_syntax_old: '{{ alert.labels.workload }}, {{ alert.annotations._gc_severity }}, {{ alert.alertname }}, {{ alert.fingerprint }}'
variable_syntax_new: '{{ labels.workload }}, {{ severity }}, {{ alertname }}, {{ fingerprint }}'
compatibility: The old alert.labels.* form is still accepted by Destinations.
docs: https://docs.groundcover.com/use-groundcover/workflows
inbound_events:
note: >-
groundcover also CONSUMES events — OTLP, Prometheus scrape, AWS S3 log ingestion, Google Cloud
Pub/Sub, Datadog, FluentBit/FluentD and others — but those are ingestion integrations, not a
published event contract, and are catalogued as integrations in apis.yml.
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/groundcover-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.