Doodles · AsyncAPI Specification
Doodles Webhooks
Version
View Spec
View on GitHub
CompanyNFTWeb3BlockchainEntertainmentMediaDigital CollectiblesAnimationConsumerWebhooksAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-12'
method: searched
source: https://github.com/Doodles/webhook-example
spec_type: none
note: >-
Doodles publishes no AsyncAPI document. It does publish a first-party, signed
outbound-webhook integration contract as a reference receiver on its own GitHub
organization (Doodles/webhook-example, TypeScript/Express, last updated
2025-06-26). Doodles POSTs an event to a URL you host; your receiver verifies the
signature and returns a JSON body that Doodles consumes back — an interception /
transform contract for chat request and response events, not a fire-and-forget
notification. Everything below is transcribed from that repository's README and
src/server.ts; nothing is inferred. There is no published subscription/registration
API for these webhooks — the endpoint and secret are configured out of band.
direction: outbound
transport: https
method_verb: POST
content_type: application/json
security:
scheme: hmac
algorithm: HMAC-SHA256
encoding: base64
header: x-signature
signed_payload: raw JSON request body
secret: shared webhook secret, configured out of band (WEBHOOK_SECRET)
verification: constant-time comparison (crypto.timingSafeEqual)
reference: https://github.com/Doodles/webhook-example#signature-verification
events:
- name: request
field: eventType
value: request
description: >-
Fired for an inbound chat request before it is processed. The receiver may return
modified text; saveModified controls whether the modified text is written to chat
history.
- name: response
field: eventType
value: response
description: >-
Fired for an outbound chat response before it is delivered. Same modify-and-return
contract as the request event.
payload:
discriminator: eventType
fields:
- {name: eventType, type: string, enum: [request, response], description: Which side of the chat exchange this event represents.}
- {name: text, type: string, description: The message text; the receiver returns its (optionally modified) value.}
- {name: saveModified, type: boolean, description: Whether Doodles should persist the receiver's modified text to chat history. Defaults by event type; the receiver may override it explicitly.}
note: >-
The receiver echoes the original payload back with `text` and `saveModified` set.
The published example does not enumerate any further payload fields, so none are
recorded here.
receiver_responses:
- {status: 200, meaning: Signature valid; modified payload returned to Doodles.}
- {status: 403, meaning: Invalid or missing x-signature.}
- {status: 500, meaning: Receiver misconfigured (no webhook secret set).}
reference_implementation:
repository: https://github.com/Doodles/webhook-example
language: typescript
framework: express
license: null
last_updated: '2025-06-26'
local_testing: ngrok HTTPS tunnel, documented in the repository README
gaps:
- No AsyncAPI or OpenAPI document is published for this surface.
- No public event catalog beyond the two eventType values above.
- No delivery/retry, ordering, or timeout semantics are documented.
- No public webhook registration or management API; endpoint + secret are set out of band.