Axiom · AsyncAPI Specification

Axiom Custom Webhook Notifier

Version 1.0.0

Axiom delivers monitor-triggered alerts to user-configured HTTP endpoints via the Custom Webhook Notifier. A monitor (match, threshold, or anomaly) runs a periodic query over event data, and when its condition is met (or resolved, for threshold monitors) Axiom POSTs a JSON payload rendered from a Go-template body to the customer's webhook URL. This AsyncAPI document models the outgoing webhook surface that Axiom publishes to subscribers. Live Stream, the in-product real-time inspector at axiom.co's Stream tab, is documented only as a UI feature; the public Axiom docs do not specify a customer-callable streaming API (SSE, WebSocket, or long-poll) for it, so it is intentionally not modelled here.

View Spec View on GitHub AnalyticsLog ManagementLoggingObservabilityReal-TimeServerlessAsyncAPIWebhooksEvents

Channels

/webhook
publish receiveAxiomNotification
Receive a monitor notification from Axiom
Outbound delivery channel. Axiom POSTs a JSON body rendered from the notifier's template to the configured URL whenever a monitor fires or (for threshold monitors) resolves. The default template emits an envelope with an action field and an event object; operators may customise this template using Go template syntax, so receivers should treat the schema below as the default contract.

Messages

MonitorOpen
Monitor Opened
Sent when a match monitor matches an event, when a threshold monitor enters its alert state, or when an anomaly monitor detects a deviation. The default template sets action to "Open".
MonitorClosed
Monitor Closed
Sent when a threshold monitor exits its alert state. The default template sets action to "Closed".

Servers

https
external {webhookUrl}
The customer-owned HTTPS endpoint configured on an Axiom Custom Webhook notifier. Axiom sends an HTTP POST with Content-Type application/json plus any custom headers configured on the notifier.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Axiom Custom Webhook Notifier
  description: >-
    Axiom delivers monitor-triggered alerts to user-configured HTTP endpoints
    via the Custom Webhook Notifier. A monitor (match, threshold, or anomaly)
    runs a periodic query over event data, and when its condition is met (or
    resolved, for threshold monitors) Axiom POSTs a JSON payload rendered from
    a Go-template body to the customer's webhook URL. This AsyncAPI document
    models the outgoing webhook surface that Axiom publishes to subscribers.
    Live Stream, the in-product real-time inspector at axiom.co's Stream tab,
    is documented only as a UI feature; the public Axiom docs do not specify a
    customer-callable streaming API (SSE, WebSocket, or long-poll) for it, so
    it is intentionally not modelled here.
  version: '1.0.0'
  contact:
    name: Axiom
    url: https://axiom.co/docs
  license:
    name: Proprietary
  externalDocs:
    description: Axiom Custom Webhook Notifier documentation
    url: https://axiom.co/docs/monitor-data/custom-webhook-notifier
servers:
  external:
    url: '{webhookUrl}'
    protocol: https
    description: >-
      The customer-owned HTTPS endpoint configured on an Axiom Custom Webhook
      notifier. Axiom sends an HTTP POST with Content-Type application/json
      plus any custom headers configured on the notifier.
    variables:
      webhookUrl:
        description: >-
          The URL of the endpoint configured on the Custom Webhook notifier
          in the Axiom Console.
channels:
  /webhook:
    description: >-
      Outbound delivery channel. Axiom POSTs a JSON body rendered from the
      notifier's template to the configured URL whenever a monitor fires or
      (for threshold monitors) resolves. The default template emits an
      envelope with an action field and an event object; operators may
      customise this template using Go template syntax, so receivers should
      treat the schema below as the default contract.
    publish:
      operationId: receiveAxiomNotification
      summary: Receive a monitor notification from Axiom
      description: >-
        Axiom publishes a notification whenever an associated monitor
        condition is met. Match monitors deliver one notification per matched
        event. Threshold monitors deliver a notification when entering the
        alert state (action "Open") and another when exiting it (action
        "Closed").
      message:
        oneOf:
          - $ref: '#/components/messages/MonitorOpen'
          - $ref: '#/components/messages/MonitorClosed'
components:
  messages:
    MonitorOpen:
      name: monitorOpen
      title: Monitor Opened
      summary: >-
        Sent when a match monitor matches an event, when a threshold monitor
        enters its alert state, or when an anomaly monitor detects a deviation.
        The default template sets action to "Open".
      contentType: application/json
      payload:
        $ref: '#/components/schemas/NotificationEnvelope'
    MonitorClosed:
      name: monitorClosed
      title: Monitor Closed
      summary: >-
        Sent when a threshold monitor exits its alert state. The default
        template sets action to "Closed".
      contentType: application/json
      payload:
        $ref: '#/components/schemas/NotificationEnvelope'
  schemas:
    NotificationEnvelope:
      type: object
      description: >-
        Default JSON envelope rendered by the Custom Webhook notifier
        template. Fields map one-to-one to Go template variables documented
        by Axiom; templates are customisable so receivers should treat
        unknown fields gracefully.
      properties:
        action:
          type: string
          description: >-
            Rendered from .Action. "Open" indicates a match or a threshold
            trigger. "Closed" indicates a threshold resolution.
          enum:
            - Open
            - Closed
        event:
          $ref: '#/components/schemas/NotificationEvent'
      required:
        - action
        - event
    NotificationEvent:
      type: object
      description: >-
        The inner event object exposed by the default notifier template.
      properties:
        monitorID:
          type: string
          description: >-
            Rendered from .MonitorID. Unique identifier of the monitor that
            generated the notification.
        body:
          type: string
          description: >-
            Rendered from .Body. Message body containing matching event data
            (match monitors) or trigger/resolve information (threshold
            monitors).
        description:
          type: string
          description: >-
            Rendered from .Description. The monitor's description as
            configured in Axiom.
        queryStartTime:
          type: string
          format: date-time
          description: >-
            Rendered from .QueryStartTime. Start of the query window
            evaluated by the monitor.
        queryEndTime:
          type: string
          format: date-time
          description: >-
            Rendered from .QueryEndTime. End of the query window evaluated by
            the monitor.
        timestamp:
          type: string
          format: date-time
          description: >-
            Rendered from .Timestamp. Time the notification was generated.
        title:
          type: string
          description: >-
            Rendered from .Title. Name of the monitor associated with the
            notification.
        value:
          type: number
          description: >-
            Rendered from .Value. Numeric value that caused the monitor to
            trigger or resolve. Populated for threshold monitors.
        matchedEvent:
          type: object
          additionalProperties: true
          description: >-
            Rendered from .MatchedEvent via jsonObject. The matching event
            for match monitors; absent for threshold and anomaly monitors.
        groupKeys:
          type: array
          description: >-
            Rendered from .GroupKeys via jsonArray. Group-by attribute names
            from the monitor query, when group-based notifications are
            enabled.
          items:
            type: string
        groupValues:
          type: array
          description: >-
            Rendered from .GroupValues via jsonArray. Group-by attribute
            values aligned with groupKeys.
          items:
            type: string
      required:
        - monitorID
        - title
        - timestamp