veeva · AsyncAPI Specification
Veeva Spark Messaging Webhooks
Version
View Spec
View on GitHub
Life SciencesPharmaceuticalsClinical TrialsRegulatoryQuality ManagementDocument-ManagementContent ManagementHealthcareSoftware-as-a-ServiceEnterpriseMCPAgentsAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-15'
method: searched
source: https://general.veevavault.dev/vault-sdk/sdk-integrations/spark-messaging
spec_published: false
note: >-
Veeva publishes NO AsyncAPI document. It does publish a real, signed, outbound event surface —
Spark Messaging — with a documented wire format, signature headers, delivery queues and an
allowlist. That is captured here as a webhook catalogue rather than fabricated into an
AsyncAPI. Emitting type Webhooks, not type AsyncAPI.
surface:
name: Spark Messaging
kind: outbound-signed-http-message
description: >-
Loosely coupled, asynchronous, near real-time integration between Vaults or from a Vault to
an external application. Messages are small and signed; if the receiver needs more data it is
expected to call back into Vault API (or use HTTP Callout) to fetch it.
transport: "HTTPS POST from Vault's outbound proxy (regionxyz.its.proxy.veevavault.com)"
user_agent: Veeva Vault Spark Message Agent
content_type: application/json
delivery: >-
Queue-based for reliable delivery. Outbound messages sit in an outbound queue; delivered
messages enter the receiver's inbound queue and are handled by a Spark message processor.
producer: 'Vault Java SDK QueueService.putMessage(Message)'
docs: https://general.veevavault.dev/vault-sdk/sdk-integrations/spark-messaging
security:
signing: true
scheme: >-
Each message is signed with Vault's private key. The receiver retrieves the matching public
key with the Retrieve Signing Certificate endpoint using X-VaultAPISignature-CertificateId,
then verifies X-VaultAPI-SignatureV2 (X-VaultAPI-Signature for 20R1.0 only).
replay_window: X-VaultAPISignature-RequestNotBefore / -RequestNotAfter bound the validity window.
allowlist: Message Delivery Allowlist restricts the destinations Vault will deliver to.
verification_docs: https://general.veevavault.dev/vault-sdk/sdk-integrations/spark-messaging/message-signing-verification
certificate_endpoint: 'GET /api/{version}/services/certificate/{cert_id} — Retrieve Signing Certificate. Unauthenticated: no Authorization header required, so a receiver can verify without Vault credentials.'
headers:
- {name: Host, meaning: "Vault's outbound proxy host name."}
- {name: User-Agent, meaning: 'Always: Veeva Vault Spark Message Agent'}
- {name: X-VaultAPISignature-CertificateId, meaning: Certificate ID used to retrieve the public key for verification.}
- {name: X-VaultAPISignature-ExecutionId, meaning: Unique ID identifying the execution thread.}
- {name: X-VaultAPISignature-RequestId, meaning: Unique request ID, such as the message ID.}
- {name: X-VaultAPISignature-RequestDateTime, meaning: Time the message was sent.}
- {name: X-VaultAPISignature-RequestNotBefore, meaning: Earliest time the message is valid.}
- {name: X-VaultAPISignature-RequestNotAfter, meaning: Time after which the message is invalid.}
- {name: X-VaultAPISignature-RequestType, meaning: 'Either `spark_message` or `http_callout`.'}
- {name: X-VaultAPISignature-URL, meaning: Intended recipient URL from the putMessage call.}
- {name: X-VaultAPISignature-VaultId, meaning: ID of the Vault that sent the message.}
- {name: X-VaultAPI-Signature, meaning: Message signature (Vault 20R1.0 only).}
- {name: X-VaultAPI-SignatureV2, meaning: Message signature (Vault 20R1.2+).}
- {note: 'Headers may arrive in different case depending on the receiving host; treat them case-insensitively.'}
payload:
fields:
- {name: vault_name, meaning: Name of the sending Vault.}
- {name: vault_host_name, meaning: DNS host name of the sending Vault.}
- {name: queue_name, meaning: The configured queue the message came from.}
- {name: enter_queue_timestamp, meaning: When the message entered the outbound queue.}
- {name: send_message_timestamp, meaning: When the message was sent.}
- {name: send_attempt, meaning: Delivery attempt number.}
- {name: message_id, meaning: UUID for this message.}
- {name: message.attributes, meaning: 'Developer-defined attributes (object, has_related, related_count, authorization).'}
- {name: message.items, meaning: Array of record or document IDs the message refers to.}
docs: https://general.veevavault.dev/vault-sdk/sdk-integrations/spark-messaging/message-format
management_api:
base: '/api/{version}/services/queues'
operations:
- Retrieve All Queues
- Retrieve Queue Status
- Enable Delivery
- Disable Delivery
- Reset Queue
- Retrieve Signing Certificate
docs: https://general.veevavault.dev/vault-api/api-reference/26.2/managing-vault-java-sdk/queues
related:
- name: HTTP Callout
detail: Outbound HTTP from Vault Java SDK code, signed with the same X-VaultAPISignature-* scheme (RequestType http_callout).
docs: https://general.veevavault.dev/vault-sdk/sdk-integrations/http-callout
- name: Document Events
detail: Vault records document events, retrievable over REST and queryable in VQL — a pull-side event log rather than a push surface.
docs: https://general.veevavault.dev/vault-api/api-reference/26.2/documents/document-events