California Privacy Protection Agency · AsyncAPI Specification

California Privacy Protection Agency Drop Webhooks

Version

View Spec View on GitHub GovernmentPrivacyData BrokersRegulatory ComplianceData DeletionConsumer RightsCaliforniaWebhookAsyncAPIEvents

AsyncAPI Specification

Raw ↑
generated: '2026-09-17'
method: searched
source: https://privacy.ca.gov/drop-for-data-brokers/technical-specifications/reference/#notifications
docs: https://privacy.ca.gov/drop-for-data-brokers/technical-specifications/reference/
also_in: openapi/california-privacy-protection-agency-drop-data-broker-api-openapi.yml (info.description "Notifications" section)
asyncapi_published: false
asyncapi_note: >-
  CalPrivacy publishes no AsyncAPI document and the OpenAPI declares no top-level `webhooks` object
  or callbacks. The webhook surface is documented in prose on the DROP technical reference page and
  repeated verbatim in the OpenAPI info block. Nothing below is invented; it is the published catalog.
surface: Optional outbound HTTPS notifications from DROP to a data broker's configured endpoint
direction: DROP -> data broker
enablement:
  where: Data Broker Portal -> Notification settings
  steps:
  - Toggle Webhook to Active.
  - Enter your HTTPS endpoint URL.
  - Save changes.
  default_channel: email to the primary and secondary contact addresses on the DROP account (always on)
  webhook_channel: optional; a per-broker signing secret is generated and shown in the portal when enabled
signing:
  algorithm: HMAC-SHA256
  signed_content: '<X-Webhook-Timestamp>.<raw request body>'
  header: X-Webhook-Signature
  format: 'sha256=<hex digest>'
  secret: per-broker webhook signing secret from the portal; rotate as needed
  replay_guidance: reject timestamps older than five minutes (recommended by the docs)
headers:
- name: X-Webhook-Event-Id
  description: Unique ID for the logical event
- name: X-Webhook-Event-Type
  description: Event type (see events below)
- name: X-Webhook-Delivery-Id
  description: Unique ID for this delivery attempt
- name: X-Webhook-Timestamp
  description: UTC timestamp for the request (example 2026-07-02T18:30:00.0000000Z)
- name: X-Webhook-Version
  description: Webhook version (example 1.0)
- name: X-Webhook-Signature
  description: HMAC-SHA256 signature, sha256= prefixed
body:
  content_type: application/json
  schema:
    type: object
    properties:
      message:
        type: string
        description: Human-readable message text
  example:
    message: download ready
events:
- type: download.ready
  name: List Download Ready
  when: Download package is ready
  email: default
  webhook: optional
  related_operation: downloadData
- type: upload.received
  name: Upload Confirmation
  when: Upload was received and is being processed
  email: default
  webhook: optional
  related_operation: uploadData
- type: upload.processed
  name: List Upload Processed
  when: Upload processing completed; responses available for review
  email: default
  webhook: optional
  related_operation: uploadData
- type: amendment.received
  name: Amendment Confirmation
  when: Amendment upload was received and is being processed
  email: default
  webhook: optional
  related_operation: uploadAmend
- type: amendment.processed
  name: Amendment Upload Processed
  when: Amendment processing completed and is ready for review
  email: default
  webhook: optional
  related_operation: uploadAmend
email_only_events:
- name: API Key Issued
  when: An API key has been issued for your account
- name: API Key Changed
  when: A new API key has been issued; all previous keys have been deactivated
verification_steps:
- Read the raw request body exactly as received.
- Read X-Webhook-Timestamp.
- Build the signing string "<timestamp>.<raw request body>".
- Compute HMAC-SHA256 using the webhook signing secret.
- Compare the hex digest to X-Webhook-Signature after removing the "sha256=" prefix, using a constant-time compare.
- Reject the request if the signature is invalid.
expected_response:
  success: any 2xx; preferred HTTP/1.1 204 No Content
  failure: DROP treats non-2xx responses as failed delivery and may retry
retries:
  behavior: may retry failed (non-2xx) deliveries
  event_id: X-Webhook-Event-Id identifies the logical event; X-Webhook-Delivery-Id is unique per attempt — deduplicate on the event id
event_catalog:
  published: true
  count: 5
  payload_schemas: message-only (no per-event payload schema is published)

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/california-privacy-protection-agency-drop-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.