ObservePoint · AsyncAPI Specification

Observepoint Webhooks

Version

View Spec View on GitHub CompanyWeb GovernanceTag ManagementAnalytics ValidationPrivacy ComplianceConsent ManagementWeb AccessibilityData QualityMarketing TechnologyWebsite AuditingDigital AnalyticsWebhooksAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-26'
method: searched
source: https://api-docs.observepoint.com/sections/webhook
docs: https://api-docs.observepoint.com/sections/webhook
asyncapi_published: false
note: >-
  ObservePoint publishes NO AsyncAPI document and no event-catalog spec — a full probe of the docs host,
  the API host and the GitHub org found nothing (/asyncapi.yaml, /asyncapi.json and the org repo list all
  miss). It DOES publish a real, well-specified webhook surface with HMAC-SHA256 request signing, so this
  file captures the webhook catalog and apis.yml carries `type: Webhooks` (not `type: AsyncAPI`). The
  catalog below is transcribed verbatim from the provider's own webhook page; nothing here is inferred.
transport: HTTPS POST to a customer-supplied URL
delivery: at-completion, fire-and-forget
retry_policy_published: false
event_count: 2
events:
- name: audit.run.completed
  published_name: null
  note: >-
    ObservePoint does not name its events. There is ONE payload shape, discriminated by the `itemType`
    field; the two rows here are that discriminator's values, not two published event names.
  trigger: An audit run finishes, successfully or not
  discriminator:
    field: itemType
    value: audit
  payload:
    itemId: The ID of the audit
    runId: The run ID of the completed audit
    itemType: '"audit"'
  example: '{"itemId": 12345, "itemType": "audit", "runId": 98765}'
- name: web-journey.run.completed
  published_name: null
  trigger: A web journey run finishes, successfully or not
  discriminator:
    field: itemType
    value: web-journey
  payload:
    itemId: The ID of the journey
    runId: The run ID of the completed journey
    itemType: '"web-journey"'
  example: '{"runId": 873230, "itemType": "web-journey", "itemId": 748316}'
payload_shape:
  media_type: application/json
  fields:
  - name: itemId
    type: integer
    description: The ID of the audit or journey.
  - name: runId
    type: integer
    description: The run ID of the completed audit or journey.
  - name: itemType
    type: string
    enum: [audit, web-journey]
    description: Indicates whether the run is an "audit" or "web-journey".
  note: >-
    The payload is a pointer, not a result. It carries no findings — the consumer is expected to call
    back into the API with itemId + runId to pull the report.
subscription:
  api:
    field: webHookUrl
    operations:
    - method: POST
      path: /v2/web-audits
      note: set the webhook URL when creating an audit
    - method: POST
      path: /v2/web-journeys
      note: set the webhook URL when creating a journey
    - method: PUT
      path: /v2/web-audits/{auditId}
      note: assign or change the webhook URL on an existing audit
    - method: PUT
      path: /v2/web-journeys/{journeyId}
      note: assign or change the webhook URL on an existing journey
    spec_coverage: >-
      The `webHookUrl` field IS present in the request/response schemas of both the v2 and v3 OpenAPI
      documents, so the subscription surface is machine-readable even though the event surface is not.
  ui: app.observepoint.com > Data Sources > Edit an audit or journey > webhook URL > Save
  scope: per-audit and per-journey (optional; there is no account-wide subscription)
security:
  signing: true
  header: ObservePoint-Signature
  header_example: t=1693325764,sigv1=3eae1baf0f7f9ed8f9db7e88f27c2f3f3fbb0a73e839b6e10b0d8bb1a71a449d
  algorithm: HMAC-SHA256
  canonical_payload: '<timestamp> + "." + <raw webhook body>'
  key_encoding: the shared secret is base64; decode it before use as the HMAC key
  signature_encoding: base64
  verification_steps:
  - Extract the timestamp (t) and signature (sigv1) from the ObservePoint-Signature header.
  - Concatenate the timestamp, a period (.), and the raw webhook payload body.
  - Compute an HMAC SHA-256 signature using your stored sharedSecret.
  - Compare your computed signature to the value of sigv1 (constant-time).
  on_failure: Reject the request with 403 (or another error status).
  replay_protection:
    timestamp_present: true
    tolerance_published: false
    note: >-
      The timestamp is signed, which makes replay detection POSSIBLE, but ObservePoint publishes no
      recommended tolerance window and its own sample verifiers do not check the timestamp age. A
      consumer copying the published Python/JavaScript snippet verbatim gets no replay protection.
  secret_provisioning:
    endpoint: POST https://api.observepoint.com/v3/webhooks/rotate-secret
    permission: Admin
    response: '{ "sharedSecret": "string", "accountId": number }'
    shown_once: true
    account_wide: true
    spec_coverage: none
    note: >-
      Documented in prose only — no /v3/webhooks path exists in any published OpenAPI document, so an
      agent working from the spec alone cannot discover, provision or rotate the signing secret.
  reference_implementations:
  - language: Python
    source: https://api-docs.observepoint.com/sections/webhook
  - language: JavaScript (Node.js)
    source: https://api-docs.observepoint.com/sections/webhook
documented_use_cases:
- Check for unapproved cookies or tags and record them in an issue tracker, like Jira
- Trigger a script to pull the page details report and email the results to recipients listed in the notifications field
- Ingest results into a BI system such as Tableau by triggering a data import when an audit or journey completes
- Integrate with Teams or Slack — trigger a message notifying of rule failures
gaps:
- No AsyncAPI (or CloudEvents) document, so the event surface is not machine-readable.
- No published event names; the payload is discriminated by a string field.
- No documented retry, backoff or dead-letter behaviour on delivery failure.
- No published timestamp-tolerance guidance, and the sample verifiers do not implement replay checks.
- The secret-rotation endpoint is absent from all three OpenAPI documents.
probes:
- url: https://api-docs.observepoint.com/sections/webhook
  status: 200
- url: https://api-docs.observepoint.com/asyncapi.yaml
  status: 404

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/observepoint-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 email required.

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