Klook · AsyncAPI Specification
Klook Notifications Webhooks
Version
View Spec
View on GitHub
CompanyMarketplacesTravelTours and ActivitiesBookingExperiencesDistributionOCTOHospitalityAsyncAPIWebhooksEvents
AsyncAPI Specification
generated: '2026-07-19'
method: searched
source: https://klook.gitbook.io/openapi/capabilities/nofifications.md
docs: https://klook.gitbook.io/openapi/capabilities/nofifications.md
spec_type: Webhooks
asyncapi_published: false
asyncapi_note: >-
Klook publishes no AsyncAPI document. This is a captured webhook catalog
derived verbatim from the documented Notifications capability, not a generated
AsyncAPI spec.
status: coming-soon
status_note: >-
The Notifications capability is labelled "Coming Soon" in Klook's
documentation, as is the separate octo/webhooks capability listed on the
Endpoints and Capabilities page. The subscription endpoints, event types and
payload shapes below are fully documented but should be treated as announced
rather than generally available.
description: >-
Klook's event surface is a subscription-based webhook system delivered through
the OCTO Notifications capability. Subscribers register a callback URL and a
set of notification types; Klook POSTs a thin envelope naming the changed
resource, and the subscriber then re-fetches the full object through the core
OCTO endpoints with whatever capabilities it wants applied. Payloads
deliberately do not carry the serialized resource.
capability:
id: notifications
activation_header: 'Octo-Capabilities: notifications'
subscription_management:
base_path: /notifications/subscriptions
path_note: >-
The Create Subscription operation is documented at
"/notifications/subcriptions" (sic — misspelled in Klook's documentation);
every other operation uses "/notifications/subscriptions". Recorded verbatim.
required_headers:
- name: Content-Type
value: application/json
- name: Authorization
value: Bearer <token>
- name: Octo-Capabilities
value: notifications
operations:
- name: Create Subscription
method: POST
path: /notifications/subcriptions
request_fields:
- name: url
type: string
description: The URL where notifications should be sent.
- name: notificationTypes
type: array
description: The notification types to subscribe to.
- name: headers
type: object
description: >-
HTTP headers to include on the delivered request, e.g. for
authenticating the callback.
response_fields:
- id
- notificationTypes
- url
- headers
- name: Update Subscription
method: PATCH
path: /notifications/subscriptions/{id}
- name: Delete Subscription
method: DELETE
path: /notifications/subscriptions/{id}
- name: Get Subscription
method: GET
path: /notifications/subscriptions/{id}
- name: List Subscriptions
method: GET
path: /notifications/subscriptions
auth: Bearer token
events:
- type: PRODUCT_UPDATE
description: >-
Changes to a product object, including any option, ticket or other nested
entity within it.
payload_data_fields:
- productId
refetch_with: GET /products/{id}
example:
id: 503eac5-bfab-4465-aad1-fc023b23cdc6
subscriptionId: 5c7d6dbb-cd4c-48fd-9709-0ebaa14d7a00
notificationType: PRODUCT_UPDATE
utcCreatedAt: '2024-05-07T15:47:32Z'
data:
productId: ff53a321-a07b-4428-b8b3-086c94fb4147
- type: AVAILABILITY_UPDATE
description: Changes to availabilities.
refetch_with: POST /availability/calendar
- type: BOOKING_UPDATE
description: Changes to bookings.
refetch_with: GET /bookings/{uuid}
delivery:
transport: HTTP
method: POST
envelope:
subscriptionId: The id of the subscription that produced this notification.
notificationType: One of PRODUCT_UPDATE, AVAILABILITY_UPDATE, BOOKING_UPDATE.
data: Object carrying only the identifiers needed to re-fetch the resource.
envelope_example:
subscriptionId: 5c7d6dbb-cd4c-48fd-9709-0ebaa14d7a00
notificationType: PRODUCT_UPDATE
data: {}
design_rationale: >-
"The request body will not include the fully serialized object... Instead
it'll simply provide you with the parameters needed to fetch that updated
resource if you choose to. This is to reduce the volume of data sent in the
request and allow the receiver of the notification to choose which
capabilities they want to include when fetching the updated resource."
security:
callback_auth: >-
Subscriber-defined. The `headers` object on the subscription lets the
subscriber specify arbitrary headers (the documented example uses an
"Api-Key" header) that Klook will include when delivering the notification.
signature_verification: not documented
replay_protection: >-
Not documented. The envelope carries utcCreatedAt and a per-notification id,
which could support deduplication.
gaps:
- No AsyncAPI document published.
- No signing secret or signature header documented for verifying deliveries.
- No documented retry policy, backoff or delivery guarantee.
- No documented expected response status from the subscriber endpoint.
- No dead-letter or failed-delivery inspection surface.
related:
conventions: conventions/klook-conventions.yml
data_model: data-model/klook-data-model.yml
openapi: openapi/klook-octo-openapi-original.json