Webhook Integration Guide
Modified on: 2026-10-13 10:55
TABLE OF CONTENTS
Flight GDN Seller API v2.0 introduces real-time Webhook Notifications to push critical post-booking flight and order event updates directly to downstream buyer endpoints. This event-driven architecture eliminates the need for frequent orderRetrieve polling, optimizing network overhead and processing latency.
When order servicing events occur, GDN automatically pushes real-time event notification payloads to the callbackUrl configured by the Buyer.
Integration Scope & Prerequisites
Active Buyer Endpoints
Buyers only need to invoke two management APIs to control subscriptions:
- POST /api/webhook/createWebhook: Creates a new Webhook subscription configuration.
- POST /api/webhook/updateWebhook: Updates an existing Webhook subscription configuration.
Integration Prerequisites
Downstream Buyers must prepare the following before setup:
- Public HTTPS Callback URL: Provide an accessible HTTPS endpoint (callbackUrl).
- Request Handler: Endpoint must accept HTTP POST application/json requests.
- Idempotency Logic: Endpoint must implement duplicate check logic based on the eventId in the push payload.
- Secret Key Storage: Securely store the webhookId and secret returned during initial creation.
Important Operational Notes: • One-Time Secret Exposure: The secret is returned in plain text ONLY ONCEupon successful invocation of createWebhook. It will NOT be returned in plain text in subsequent query or update requests. • Environment Handling: The environment is automatically detected by the GDN server context and should NOT be passed in requests. • Single Subscription Policy: Only ONE active Webhook configuration is allowed per Buyer account per environment.
Supported Event Types
The event array defines the subscription targets. The allowed event enumeration includes:
| Event Type | Description |
|---|---|
| ticketing.result | Ticket freshbooking processing result |
| refund.result | Ticket refund processing result |
| updatePassengerName.result | Passenger name modification result |
| flightTimeChange.result | Flight time change result |
| addPostAncillary.result | Post-booking ancillary purchase result |
Webhook Management APIs
Create Webhook Configuration (createWebhook)
Creates a new webhook endpoint configuration for the current Seller in the current environment.
| Version | Date | Description of Edit |
|---|---|---|
| V1.0 | 2026/08/15 | Initial Commit |
| Request Details | ||
|---|---|---|
| Path | v1.0 | /api/webhook/createWebhook |
Request Body
| Key | Parent | Type | Mandatory/Optional | Description |
|---|---|---|---|---|
| callbackUrl | root | String | M | The webhook callback URL that will receive asynchronous event notifications from GDN via HTTP POST. Must be a valid HTTPS URL |
| apiVersion | root | String | O | API version identifier (e.g., "v1.0") |
| timeStamp | root | String | M | The Unix timestamp in milliseconds when the webhook request was generated. |
| events | root | Array | M | The list of webhook event types to subscribe to. Must contain at least one valid event, with no duplicates. |
Request Payload Example
{
"callbackUrl": "https://procurement.example.com/gdn/webhook",
"apiVersion": "1.0",
"timeStamp": "1713607500123",
"events": [
"ticketing.result",
"refund.result"
]
}Response
| Key | Parent | Type | Description |
|---|---|---|---|
| webhookId | root | String | The unique identifier of the webhook configuration used in subsequent operations (update, delete, ping, query). |
| callbackUrl | root | String | The callback URL configured for this webhook endpoint. |
| events | root | Array | The list of event types currently subscribed to by this webhook configuration |
| environment | root | String | The environment to which the webhook belongs ("test" or "production"). |
| active | root | Boolean | Indicates whether the webhook is currently active (true/false). Active immediately after creation. |
| secret | root | String | The webhook signing secret generated by GDN. Returned ONLY ONCE at creation time. |
| createdAt | root | String | The UTC ISO 8601 timestamp when the webhook was created. |
| updatedAt | root | String | The UTC ISO 8601 timestamp when the webhook was last updated. |
| timeStamp | root | String | The Unix timestamp in milliseconds when the response was generated. |
Response Payload Example
{
"webhookId": "whk_202604200001",
"callbackUrl": "https://procurement.example.com/gdn/webhook",
"events": [
"ticketing.result",
"refund.result"
],
"environment": "test",
"active": true,
"secret": "generated-secret-value",
"createdAt": "2026-04-20T10:00:00Z",
"updatedAt": "2026-04-20T10:00:00Z",
"timeStamp": "1713607500123"
}Update Webhook Configuration (updateWebhook)
Updates the subscribed event list for an existing webhook configuration without re-creating the webhook or changing the secret.
| Version | Date | Description of Edit |
|---|---|---|
| V1.0 | 2026/08/15 | Initial Commit |
| Request Details | ||
|---|---|---|
| Path | v1.0 | /api/webhook/updateWebhook |
Request Body
| Key | Parent | Type | Mandatory/Optional | Description |
|---|---|---|---|---|
| webhookId | root | String | M | The webhook callback URL that will receive asynchronous event notifications from GDN via HTTP POST. Must be a valid HTTPS URL |
| apiVersion | root | String | O | API version identifier (e.g., "v1.0") |
| timeStamp | root | String | M | The Unix timestamp in milliseconds when the webhook request was generated. |
| events | root | Array | M | The list of webhook event types to subscribe to. Must contain at least one valid event, with no duplicates. |
| callbackUrl | root | String | O | To update callbackUrl |
| active | root | Boolean | O |
Request Payload Example
{
"webhookId": "whk_202604200001",
"apiVersion": "1.0",
"timeStamp": "1713607800123",
"events": [
"ticketing.result",
"refund.result",
"flightTimeChange.result"
]
}Response
| Key | Parent | Type | Description |
|---|---|---|---|
| webhookId | root | String | The unique identifier of the webhook configuration used in subsequent operations (update, delete, ping, query). |
| callbackUrl | root | String | The callback URL configured for this webhook endpoint. |
| events | root | Array | The list of event types currently subscribed to by this webhook configuration |
| environment | root | String | The environment to which the webhook belongs ("test" or "production"). |
| active | root | Boolean | Indicates whether the webhook is currently active (true/false). Active immediately after creation. |
| secret | root | String | The webhook signing secret generated by GDN. Returned ONLY ONCE at creation time. |
| createdAt | root | String | The UTC ISO 8601 timestamp when the webhook was created. |
| updatedAt | root | String | The UTC ISO 8601 timestamp when the webhook was last updated. |
| timeStamp | root | String | The Unix timestamp in milliseconds when the response was generated. |
Response Payload Example
{
"webhookId": "whk_202604200001",
"callbackUrl": "https://procurement.example.com/gdn/webhook",
"events": [
"ticketing.result",
"refund.result",
"flightTimeChange.result"
],
"environment": "test",
"active": true,
"secret": null,
"createdAt": "2026-04-20T10:00:00Z",
"updatedAt": "2026-04-20T10:05:00Z",
"timeStamp": "1713607800123"
}Error Codes
| Error Code | Message | Description |
|---|---|---|
| 90001 | callbackUrl is invalid | Returned when the callbackUrl field is not a valid URL format, for example when it is malformed, incomplete, or cannot be parsed as a valid URL. |
| 90002 | events cannot be empty | Returned when the events field is missing, null, or contains an empty array. At least one subscribed event must be provided when creating a webhook. |
| 90003 | unsupported event type | Returned when one or more values in the events array are not part of the GDN-supported webhook event catalog. |
| 90004 | duplicate event type is not allowed | Returned when the events array contains duplicated values. Each subscribed event type must appear only once. |
| 90005 | active webhook already exists for current seller and environment | Returned when the current Seller already has an active webhook configuration in the current environment, and the platform does not allow creating another active webhook under the same Seller and environment. |
| 90006 | request timestamp is invalid | Returned when the request timestamp is missing, malformed, or fails timestamp validation according to platform rules, such as being outside the accepted time window. |
| 90007 | webhookId is required | Returned when the update request does not provide the webhookId field, and the system cannot identify which webhook configuration should be updated. |
| 90008 | webhook does not exist | Returned when the provided webhookId cannot be found in the system. |
| 90009 | webhook is inactive and cannot be updated | Returned when the target webhook is in a status that is not allowed for this update operation according to platform rules. |
| 90010 | callbackUrl cannot be empty | Returned when the callbackUrl field is missing, null, or empty. |
Did you find it helpful? Yes No
Send feedback