Amperity · AsyncAPI Specification

Amperity Webhooks

Version

View Spec View on GitHub CompanyEnterpriseCustomer Data PlatformCDPIdentity ResolutionCustomer 360MarketingDataProfilesAnalyticsMCPAgentsRetailIdentityAsyncAPIWebhooksEvents

AsyncAPI Specification

Raw ↑
generated: '2026-08-13'
method: searched
source: https://docs.amperity.com/operator/destination_webhook.md
docs:
- https://docs.amperity.com/operator/destination_webhook.html
- https://github.com/amperity/amperity-lambda-runner
checked: '2026-08-13'
spec_type: null
spec_note: >-
  Amperity publishes NO AsyncAPI document. Searched the docs site, the llms.txt index set, the
  github.com/amperity organization and /asyncapi.yaml on every host - nothing. Recorded as absent, not
  fabricated.
surface: webhook-destination
surface_note: >-
  Amperity's event surface is outbound-only and destination-shaped. There is no subscribe-to-events
  webhook catalog in the usual sense: an operator configures a WEBHOOK DESTINATION, and when a query's
  results are published Amperity writes an NDJSON file to S3, mints a presigned download URL, and then
  calls a customer-hosted AWS Lambda endpoint with a fixed JSON payload. The customer's function pulls
  the data and reports back to a public Amperity endpoint so the run can be tracked. That is a real,
  documented, contract-bearing callback - but it is one generic delivery event, not a catalog of typed
  business events (no customer.created, no segment.updated, no workflow.completed).
inbound_events:
  supported: false
  note: >-
    Inbound real-time ingestion is the Streaming API (POST JSON/XML up to 1 MB), which is a plain REST
    ingest endpoint, not an event/pub-sub contract. See apis.yml -> Amperity Streaming API.
webhooks:
- name: webhook-destination-delivery
  direction: outbound
  trigger: >-
    A campaign or query orchestration publishes results to a configured webhook destination.
  transport: 'HTTPS request to a customer-owned AWS Lambda endpoint outside the Amperity VPC'
  data_delivery: >-
    Results are serialized to NDJSON, published to Amazon S3, and exposed through a presigned URL. The
    payload carries the URL; it does not carry the rows.
  payload_fields:
  - {name: settings, description: 'Destination/data-template settings, as a JSON object'}
  - {name: label_name, description: The label associated with the delivery}
  - {name: access_token, description: Token used by the receiving function when calling back to Amperity}
  - {name: webhook_id, description: Identifier of the configured webhook destination}
  - {name: callback_url, description: Public Amperity endpoint the Lambda function reports progress and success to}
  - {name: data_url, description: Presigned URL from which the NDJSON result file is downloaded}
  payload_source: https://docs.amperity.com/operator/destination_webhook.html
  callback:
    required: true
    note: >-
      Amperity tracks the Lambda run and monitors it for success using the same tooling as its
      first-party integrations, so the receiving function MUST post regular updates back to
      callback_url. The webhook is a two-way handshake, not fire-and-forget.
  toolkit:
    name: amperity-lambda-runner
    url: https://github.com/amperity/amperity-lambda-runner
    language: python
    note: >-
      Amperity's open-source reference template, helper class and local-environment tooling for
      building the receiving function. Last pushed 2023-09-08.
  security_note: >-
    No signature, HMAC or timestamp verification scheme is documented for the inbound request to the
    customer's Lambda; the published contract is a bearer access_token inside the JSON body. Recorded
    as documented, not endorsed.
gaps:
- 'No AsyncAPI document.'
- 'No typed event catalog - one generic delivery callback covers the whole surface.'
- 'No documented signing/verification scheme for the outbound request.'
- 'No event schemas or examples beyond the six-field payload above.'