Unqork · AsyncAPI Specification
Unqork Webhooks
Version
View Spec
View on GitHub
CompanyNo-CodeLow-CodeApplication DevelopmentEnterprise SoftwarePlatform as a ServiceWorkflowFinancial ServicesInsuranceGovernmentApplication ModernizationAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-07-31'
method: searched
source: >-
https://docs.unqork.io/docs/consuming-payloads-using-webhooks,
https://docs.unqork.io/docs/webhook-api-snippet,
openapi/unqork-customer-api-openapi.yml
spec_type: none
asyncapi_published: false
description: >-
Unqork publishes NO AsyncAPI document and NO outbound event catalog. Its event
surface runs in the opposite direction from most API providers: Unqork does not
emit webhooks to you — it RECEIVES them. A Creator turns an Unqork module into a
webhook endpoint, hands that module URL to an external service (DocuSign,
Stripe, …), and the module executes when the external service posts to it. This
is a real, documented, first-class event surface with dedicated API operations,
so it is captured here as a Webhooks artifact — but the direction is recorded
explicitly so nobody mistakes it for a subscribe-to-Unqork-events product.
direction: inbound
direction_note: >-
Unqork is the LISTENER. There is no event catalog to subscribe to, no event
types enumerated, no signature-verification scheme, no delivery-retry policy
and no webhook-management API — because Unqork is not the producer.
surface:
mechanism: Unqork module acting as a webhook receiver
endpoint_shape: >-
The receiving module's own URL in the customer's environment. The generic
"Execute via Proxy" operations on the Customer API are what accept the
inbound call.
operations:
- operationId: apiProxySSEPost
method: POST
path: /modules/{moduleId}/api
note: >-
The primary webhook receiver. Webhooks usually arrive as POST. "SSE" in
the operationId is Server-Side Execution, not Server-Sent Events.
- operationId: apiProxySSEGet
method: GET
path: /modules/{moduleId}/api
- operationId: apiProxySSEPut
method: PUT
path: /modules/{moduleId}/api
- operationId: apiProxySSEPatch
method: PATCH
path: /modules/{moduleId}/api
- operationId: apiProxySSEDelete
method: DELETE
path: /modules/{moduleId}/api
content_types:
inbound: >-
Any. Execute via Proxy accepts arbitrary request formats including XML,
which is why it exists — the rest of the Unqork API is JSON-only.
outbound: >-
Always JSON, sourced from `data.resolved`. An external service that
requires an XML response cannot be served by an Unqork webhook module; that
integration must be built as an outbound API call instead.
failure_response: >-
412 with a FailedExecuteResponse envelope (validationErrors[],
invalidNavigationPanels, executionError) when the module runs but fails
validation or execution. API modules with server-side execution may also
return Creator-defined 4XX/5XX statuses.
security:
model: >-
An external service is an anonymous user to Unqork. To receive a webhook the
Creator must grant anonymous-user RBAC permissions on the receiving module,
which makes the module URL publicly callable.
signature_verification: null
shared_secret: null
risk_note: >-
Unqork documents this openly: "sharing a URL will make it publicly
accessible. While discovering the URL and using it maliciously is unlikely,
the risk does exist." Unqork's own recommended mitigation is to use an
outbound API call instead of a webhook. There is no built-in HMAC signature
check, timestamp/replay window, or allow-list documented for the receiver.
conventions:
naming: >-
Unqork's best practice is to include `postback` in the receiving module's
ID and title, e.g. `postbackDocuSign`.
documented_integrations:
- {partner: DocuSign, use_case: 'DocuSign Connect envelope-status callback',
docs: 'https://docs.unqork.io/docs/how-to-consume-a-docusign-connect-webhook'}
- {partner: Stripe, use_case: 'invoice payment failures, payments needing further authorization, subscription status and changes'}
other_event_mechanisms:
- name: Workflow timer-start nodes
kind: scheduled trigger
description: >-
Time-based workflow triggers the Customer API can list, start, stop and
test-run. The nearest thing Unqork has to an internal event producer.
operations: [listTimerStartNodes, startTimerStartNode, stopTimerStartNode, runTimerStartNodeOnce]
- name: Timed events
kind: scheduled per-submission event
description: Pending timed events attached to a workflow submission.
operations: [listTimedEventsBySubmissionId]
- name: Email notifications
kind: outbound email (not webhooks)
description: >-
`shouldNotify` query parameters on createUser / updateUser control
"New Account (Token Invitation)" and "User Changed" emails. This is the only
outbound notification the Customer API triggers.
- name: Audit logs
kind: pull-based event log
description: Environment audit trail, polled rather than pushed.
operations: [listAuditLogs]
gaps:
- No AsyncAPI document — nothing to harvest, nothing fabricated.
- >-
No outbound event catalog: an integrator cannot subscribe to
"submission.created" or "workflow.completed". Change detection requires
polling getAllSubmissions or listAuditLogs.
- >-
No signature verification on the inbound receiver, and receiving a webhook
requires opening the module to anonymous users.
- No webhook delivery/retry semantics, because Unqork is not the sender.