Netomi · AsyncAPI Specification
Netomi Events
Version
View Spec
View on GitHub
CompanyArtificial IntelligenceAgentic AICustomer ExperienceCustomer ServiceCustomer SupportConversational AIChatbotsChatVoiceTelephonySDKsMobileAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-08-01'
method: searched
source: openapi/netomi-agentdesk-openapi.json + https://github.com/msgai/netomi-chat-ios/blob/main/docs/events-and-auth.md
spec_type: null
asyncapi_published: false
note: |
Netomi publishes no AsyncAPI document — /asyncapi.yaml, /asyncapi.json and the
GitHub org were all checked and none exists. It does have a large, real event
surface in three parts, captured below: (1) sixteen INBOUND channel webhook
endpoints enumerated in the live AgentDesk OpenAPI at
https://api.netomi.com/v3/api-docs, (2) a webhook-event trigger and history API, and
(3) a bidirectional client event bus in the first-party Mobile Chat SDKs. Nothing
here is fabricated; every endpoint below is a verified operationId in the harvested
spec. There is still no public catalogue of OUTBOUND platform webhooks (payload
schemas, signing, retries) — that surface, if it exists, lives behind the gated
Agentic Studio documentation.
webhooks:
inbound:
description: Netomi exposes a per-partner inbound webhook endpoint that a helpdesk
platform calls to hand conversation events to the Netomi AI agent. The Gladly
integration is the publicly documented instance.
endpoints:
- partner: Gladly
url: https://api.netomi.com/v1/gladly/webhook
direction: partner -> netomi
events: [conversation open, conversation close, conversation status change,
contact update]
configured_in: Gladly admin — create a webhook named for the Netomi instance and
point it at the URL above
source: https://help.gladly.com/docs/set-up-netomi-integration
pattern: /v1/{partner}/webhook
pattern_confidence: high
pattern_note: Confirmed against the harvested OpenAPI — sixteen partner webhook
endpoints follow this shape. Enumerated below with verified operationIds.
catalog:
- {partner: gladly, path: /v1/gladly/webhook, methods: [GET, POST],
operations: [ping, conversationEngineAsync_7]}
- {partner: zendesk, path: /v1/zendesk/webhook, methods: [POST],
operations: [conversationEngineAsync_2]}
- {partner: zendesk-chat, path: /v1/zendesk-chat/response, methods: [POST],
operations: [getStructuredResponse],
lifecycle_ops: [activate, deActivate, reActivate, checkStatusAll, pollResponse,
publishToSocialOutbound]}
- {partner: zoho, path: /v1/zoho/webhook, methods: [GET, POST],
operations: [subscribe, conversationEngineAsync_1],
scoped_path: '/v1/zoho/webhook/{botRefId}'}
- {partner: salesforce, path: /v1/salesforce/webhook, methods: [POST],
operations: [conversationEngineAsync_5, getResponse_6, postResponse_1]}
- {partner: freshdesk, path: /v1/freshdesk/webhook, methods: [POST],
operations: [conversationEngineAsync_8]}
- {partner: helpshift, path: /v1/helpshift/webhook, methods: [POST],
operations: [conversationEngineAsync_6, helpShiftQuickReply]}
- {partner: sprinklr, path: /v1/sprinklr/webhook, methods: [POST],
operations: [conversationEngineAsync_4, postResponse]}
- {partner: sunshine-conversations, path: /v1/sunshine-conversations/webhook,
methods: [POST], operations: [conversationEngineAsync_3]}
- {partner: facebook, path: /v1/facebook/webhook, methods: [GET, POST],
operations: [subscribe_2, messagesPost_3],
verification_params: ['hub.mode', 'hub.challenge']}
- {partner: twitter, path: '/v1/twitter/webhook/{appId}', methods: [GET, POST],
operations: [subscribe_1, messagesPost_2], verification_params: [crc_token]}
- {partner: google-assistant, path: /v1/google/assistant/webhook, methods: [POST],
operations: [googleAssistantPost]}
- {partner: firebase, path: /v1/firebase/messages, methods: [GET, POST],
operations: [getResponse_2, conversationEngineAsync_9]}
- {partner: agentdesk, path: /v1/agentdesk/webhook, methods: [POST],
operations: [conversationEngineAsync_11, submitForm, getResponse_7, postResponse_2]}
- {partner: singtel, path: /v1/facebook/webhook/singtelRoamingActivation/updateTolerancePriorityCost,
methods: [POST], operations: [updateTolerancePriorityCost]}
- {partner: generic, path: /v1/webhook, methods: [POST],
operations: [messagesPost, messagesPost_1, event, message]}
verification_note: The Facebook (hub.mode / hub.challenge) and Twitter (crc_token)
subscription handshakes are declared as query parameters, matching those
platforms' standard webhook verification. No signature-verification scheme is
declared for Netomi's own inbound endpoints.
outbound:
published: false
trigger_api:
operation: triggerWebHookEvent
http: POST /v2/webhook/event
body: 'WebHookEventRequest {linkId, payload}'
note: Netomi exposes an API to TRIGGER a webhook event on a link, but publishes
no catalogue of the resulting outbound event types, no payload schemas, no
signing scheme and no retry policy.
history:
operations: [getConversationHistory, getConversationHistory_1]
http: 'GET /v2/webhook/history/{conversationId}, GET /v1/webhook/history/{conversationId}'
params: [numberOfDays, numberOfMessages, timestamp]
retry_schema: RetryHistory
retry_note: A RetryHistory component schema exists in the spec, implying delivery
retry, but no retry policy is documented.
sdk_event_bus:
transport: in-process (native SDK callback bridge)
platforms: [ios, android, react-native]
sdk_to_app:
api: getEventUpdatesFromSDK
envelope:
eventType: string (NCWPublicEvent raw value)
eventData: object
note: For customEvent the real event name is nested inside eventData under the
same eventType key, not on the outer envelope.
events:
- name: chatSdkInitialised
description: SDK finished initialising.
- name: chatOpened
description: The chat UI was presented to the user.
- name: reauthorizationRequest
description: The session's JWT needs refreshing; the host app must re-authenticate
and answer with reauthorizationSuccess or reauthorizationFailure.
- name: reauthorizationResponse
description: Acknowledgement that a reauthorization answer was received.
- name: error
description: Runtime SDK failure. Detail is carried under the error_details key
inside eventData.
- name: customEvent
description: Bot-driven custom event raised from a Netomi bot flow (documented
example, CALLBACK_EVENT).
app_to_sdk:
api: sendEventToSdk(type:eventName:jwt:data:)
events:
- name: reauthorizationSuccess
jwt: required
payload_example: {conversation_id: '12345'}
description: Reauthorization completed; supply a fresh JWT.
- name: reauthorizationFailure
jwt: optional
payload_example: {reason: user_cancelled}
description: Reauthorization failed.
- name: custom
jwt: optional
requires: non-empty eventName
reserved_names: [reauthorization_success, reauthorization_failure, custom]
payload_example: {status: submitted, custom_attributes: {formId: feedback_form}}
description: Vendor or app-specific event. Payload must be JSON-serializable.
push_notifications:
supported: true
transports: [FCM, APNs]
api: setPushToken(_:) — call after initialize(...) and on every token refresh
source: https://github.com/msgai/netomi-chat-ios/blob/main/docs/push-notifications.md
status_feeds:
atom: https://status.netomi.com/history.atom
rss: https://status.netomi.com/history.rss
json: https://status.netomi.com/api/v2/summary.json
note: Incident/maintenance event stream for the platform, served by Atlassian
Statuspage.
gaps:
- No AsyncAPI document published.
- No outbound webhook catalogue, payload schemas, signature verification or retry
semantics published.
- No message schemas for the SDK event bus beyond the documented key names.