NOL API Documentation (1.1.0)

Download OpenAPI specification:

License: LicenseRef-Proprietary

Order API and outbound channel integration contracts.

Request and response bodies are intentionally displayed as decrypted JSON objects so integrating channels can see the complete field structure and examples. During actual transmission, bodies identified as encrypted must be JSON serialized and encrypted according to the security specification.

Order API

Encrypted order operations accepted by Swallow Channel.

Submit an encrypted order operation

Dispatches the decrypted payload according to header.serviceName.

For integration clarity, the request and response selectors below show the decrypted JSON body. The actual transmitted body is encrypted.

serviceName Decrypted request Decrypted success response
CreatePreOrder CreatePreOrderRequestBody CreatePreOrderResponseBody
PayPreOrder PayPreOrderRequestBody PayPreOrderResponseBody
CancelPreOrder CancelPreOrderRequestBody Header only
CancelOrder CancelOrderRequestBody CancelOrderResponseBody
QueryOrder QueryOrderRequestBody QueryOrderResponseBody
QueryProduct ProductListRequestBody array of ProductInquiryBody

Authentication is performed with the account ID and signature fields in the envelope header. The endpoint does not use HTTP Bearer authentication.

Request Body schema: application/json
required
One of
required
object (CommonRequestHeader)

Standard NOL request header

required
object

request body (This field requires AES encryption during transmission)

Responses

Request samples

Content type
application/json
Example
{
  • "header": {
    },
  • "body": {
    }
}

Response samples

Content type
application/json
Example
{
  • "header": {
    },
  • "body": {
    }
}

Callback API

Encrypted order notifications sent by Swallow Channel to a configured channel URL.

Pay pre-order confirmation

Placeholder for the callback endpoint supplied by the external channel. The decrypted body conforms to PaymentConfirmRequest.body.

Request Body schema: application/json
required
required
object (CommonRequestHeader)

Standard NOL request header

required
object

request body (AES-encrypted)

Responses

Request samples

Content type
application/json
{
  • "header": {
    },
  • "body": {
    }
}

Response samples

Content type
application/json
{
  • "header": {
    }
}

Order cancellation confirmation

Placeholder for the callback endpoint supplied by the external channel. The decrypted body conforms to CancelConfirmRequest.body.

Request Body schema: application/json
required
required
object (CommonRequestHeader)

Standard NOL request header

required
object

request body (AES-encrypted)

Responses

Request samples

Content type
application/json
{
  • "header": {
    },
  • "body": {
    }
}

Response samples

Content type
application/json
{
  • "header": {
    }
}

Order consumed notification

Placeholder for the notification endpoint supplied by the external channel. The decrypted body conforms to OrderConsumedNotificationRequest.body.

Request Body schema: application/json
required
required
object (CommonRequestHeader)

Standard NOL request header

required
object

Responses

Request samples

Content type
application/json
{
  • "header": {
    },
  • "body": {
    }
}

Response samples

Content type
application/json
{
  • "header": {
    }
}

Availability API

Encrypted price and inventory updates sent to a configured channel URL.

Resource price sync

Placeholder for the price-sync endpoint supplied by the external channel. The decrypted body conforms to ResourcePriceSyncRequest.body.

Request Body schema: application/json
required
required
object (CommonRequestHeader)

Standard NOL request header

required
object

Request body (AES-encrypted)

Responses

Request samples

Content type
application/json
{
  • "header": {
    },
  • "body": {
    }
}

Response samples

Content type
application/json
{
  • "header": {
    }
}

Resource inventory sync

Placeholder for the inventory-sync endpoint supplied by the external channel. The decrypted body conforms to ResourceInventorySyncRequest.body.

Request Body schema: application/json
required
required
object (CommonRequestHeader)

Standard NOL request header

required
object

request body (AES-encrypted)

Responses

Request samples

Content type
application/json
{
  • "header": {
    },
  • "body": {
    }
}

Response samples

Content type
application/json
{
  • "header": {
    }
}

Content API

Encrypted image, product, and package synchronization sent to configured channel URLs.

Upload image

Placeholder for the image-upload endpoint supplied by the external channel. The decrypted body is the image URL string.

Request Body schema: application/json
required
string <uri> (UploadImageRequest)

Decrypted image URL string sent in the content-sync envelope body.

Responses

Request samples

Content type
application/json

Response samples

Content type
application/json
{
  • "header": {
    },
  • "data": {
    }
}

Sync product

Placeholder for the product-sync endpoint supplied by the external channel. The decrypted body conforms to SyncProductRequest.

Request Body schema: application/json
required
supplierProductId
required
string <= 40 characters

The supplier product id.

reference
string

Optional supplier identifier.

contractId
required
integer

Contract ID between supplier and channel

primaryLanguage
required
string
Enum: "zh-CN" "zh-HK" "en-US" "ko-KR" "ja-JP" "th-TH"

Language code of the primary product content.

status
required
string
Enum: "active" "inactive"

Product status (active=valid, inactive=not valid).

required
Array of objects (ProductCategory)
Array of objects (ProductTag)
title
required
string <= 100 characters

Supplier product name.

Array of objects or objects (ProductPoi)
Array of objects or objects (SupplierDestination)
Array of objects or objects (SupplierDeparture)
required
object (TicketInfo)

Ticket delivery method information

required
object (RedemptionInfo)

Ticket redemption information.

Array of objects (ServiceLanguage)
required
Array of objects (ProductImage) <= 20 items
inclusions
Array of strings <= 20 items [ items <= 500 characters ]

Free-text fees included.

exclusions
Array of strings <= 20 items [ items <= 500 characters ]

Free-text fees excluded.

highlight
Array of strings <= 3 items [ items <= 200 characters ]
description
required
string <= 8000 characters

Rich-text product description.

howToUse
Array of strings <= 20 items [ items <= 4000 characters ]
additionalInfo
string <= 4000 characters
object (TravelDuration)

Duration of the product or itinerary segment

Array of objects (Itinerary) <= 1 items
rawDescription
string <= 8000 characters

Unstructured free-text itinerary description. Required when itinerary is not provided for Day-tour category products.

required
object (GuestInformation)

Guest information collected during booking.

required
object (BookingSettings)

Booking rules emitted by Swallow Channel.

required
object (CancellationPolicy)

Cancellation policy.

required
Array of objects (TicketType) <= 10 items

Ticket type information per product unit.

Array of objects (ProductOption) <= 4 items

Option objects when product requires option or time slot selection.

metaData
string <= 8000 characters

Extended information in JSON or free text

sync_status
required
string
Enum: "active" "inactive"

Synchronization status emitted by Swallow Channel.

Responses

Request samples

Content type
application/json
{
  • "supplierProductId": "string",
  • "reference": "string",
  • "contractId": 0,
  • "primaryLanguage": "zh-CN",
  • "status": "active",
  • "category": [
    ],
  • "tags": [
    ],
  • "title": "string",
  • "poi": [
    ],
  • "destination": [
    ],
  • "departure": [
    ],
  • "ticketInfo": {
    },
  • "redemptionInfo": {
    },
  • "serviceLanguage": [
    ],
  • "gallery": [
    ],
  • "inclusions": [
    ],
  • "exclusions": [
    ],
  • "highlight": [
    ],
  • "description": "string",
  • "howToUse": [
    ],
  • "additionalInfo": "string",
  • "duration": {
    },
  • "itinerary": [
    ],
  • "rawDescription": "string",
  • "guestInformation": {
    },
  • "bookingSettings": {
    },
  • "cancellationPolicy": {
    },
  • "ticketType": [
    ],
  • "option": [
    ],
  • "metaData": "string",
  • "sync_status": "active"
}

Response samples

Content type
application/json
{
  • "header": {
    }
}

Sync package

Placeholder for the package-sync endpoint supplied by the external channel. The decrypted body conforms to SyncPackageRequest.

Request Body schema: application/json
required
supplierProductId
required
string <= 40 characters

The supplier product id.

required
Array of objects (PackageOptionList)

Option list of this package.

Responses

Request samples

Content type
application/json
{
  • "supplierProductId": "string",
  • "optionList": [
    ]
}

Response samples

Content type
application/json
{
  • "header": {
    }
}