Download OpenAPI specification:
Order API
required | object (CommonRequestHeader) Standard GGT request header |
required | object request body (This field requires AES encryption during transmission) |
{- "header": {
- "accountId": "CHANNEL_ID",
- "serviceName": "CreatePreOrder",
- "requestTime": "2025-05-07 14:23:59",
- "version": "1.0",
- "sign": "abcdef1234567890"
}, - "body": {
- "sequenceId": "20250507A1B2C3D4E5F6G7H8",
- "otaOrderId": "OTA1234567890",
- "contacts": [
- {
- "name": "Michal Scott",
- "mobile": "13800000000",
- "intlCode": "91",
- "optionalMobile": "string",
- "optionalIntlCode": "string",
- "email": "user@example.com"
}
], - "items": [
- {
- "PLU": "PLU12345",
- "locale": "en-US",
- "distributionChannel": "Channel_name",
- "useStartDate": "2025-06-15",
- "useEndDate": "2025-06-15",
- "remark": "Window seat requested",
- "price": 150,
- "priceCurrency": "KRW",
- "salePrice": 180,
- "salePriceCurrency": "KRW",
- "quantity": 2,
- "passengers": [
- {
- "passengerId": "P1",
- "name": "Michal Scott",
- "firstName": "San",
- "lastName": "Zhang",
- "mobile": "13800000000",
- "intlCode": "91",
- "cardType": "ID",
- "cardNo": "123456789012345678",
- "birthDate": "1985-10-20",
- "ageType": "ADU",
- "gender": "M",
- "nationalityCode": "CN",
- "nationalityName": "China",
- "cardIssueCountry": "CN",
- "cardIssuePlace": "Beijing",
- "cardIssueDate": "2000-01-01",
- "cardValidDate": "2030-01-01",
- "cardIssueNumber": 1,
- "birthPlace": "Shanghai",
- "height": 170,
- "weight": 65,
- "myopiaDegreeL": 0,
- "myopiaDegreeR": 0,
- "shoeSize": 42
}
]
}
], - "adjunctions": [
- {
- "name": "SpecialRequest",
- "nameCode": "REQ01",
- "content": "Vegetarian meal",
- "contentCode": "ENC01"
}
], - "deposit": {
- "type": 1,
- "amount": 50,
- "amountCurrency": "CNY"
}, - "expressDelivery": {
- "type": "1",
- "name": "张三",
- "mobile": "13800000000",
- "intlCode": "86",
- "country": "China",
- "province": "Beijing",
- "city": "Beijing",
- "district": "Chaoyang",
- "address": "No.1 Park Road"
}
}
}{- "header": {
- "resultCode": "0000",
- "resultMessage": "Success"
}, - "body": {
- "otaOrderId": "OTA1234567890",
- "supplierOrderId": "SUP0987654321",
- "items": [
- {
- "PLU": "PLU12345",
- "inventories": [
- {
- "useDate": "2025-06-15",
- "quantity": 5
}
]
}
]
}
}required | object (CommonRequestHeader) Standard GGT request header |
required | object request body (AES-encrypted) |
{- "header": {
- "accountId": "CHANNEL_ID",
- "serviceName": "CreatePreOrder",
- "requestTime": "2025-05-07 14:23:59",
- "version": "1.0",
- "sign": "abcdef1234567890"
}, - "body": {
- "sequenceId": "20250507A1B2C3D4E5F6G7H8",
- "otaOrderId": "OTA1234567890",
- "supplierOrderId": "SUP0987654321",
- "confirmResultCode": 0,
- "confirmResultMessage": "Confirmation succeeded",
- "voucherSender": 1,
- "vouchers": [
- {
- "itemId": "LI123456",
- "voucherId": "VCH123456",
- "voucherType": 3,
- "voucherCode": "string",
- "voucherData": "string",
- "voucherSeatInfo": "string"
}
], - "orderExtendMessage": "Please present this voucher at the entrance.",
- "items": [
- {
- "itemId": "LI123456",
- "isCredentialVouchers": 1,
- "passengerVouchers": [
- {
- "passengerId": "P1",
- "voucherId": "VCH123456"
}
], - "inventories": [
- {
- "useDate": "2025-06-15",
- "quantity": 5
}
]
}
]
}
}{- "header": {
- "resultCode": "0000",
- "resultMessage": "Success"
}, - "body": { }
}required | object (CommonRequestHeader) Standard GGT request header |
required | object request body (AES-encrypted) |
{- "header": {
- "accountId": "CHANNEL_ID",
- "serviceName": "CreatePreOrder",
- "requestTime": "2025-05-07 14:23:59",
- "version": "1.0",
- "sign": "abcdef1234567890"
}, - "body": {
- "sequenceId": "20250507A1B2C3D4E5F6G7H8",
- "otaOrderId": "OTA1234567890",
- "supplierOrderId": "SUP0987654321",
- "confirmResultCode": "0000",
- "confirmResultMessage": "Cancellation accepted",
- "items": [
- {
- "itemId": "LI123456",
- "vouchers": [
- {
- "voucherId": "VCH123456"
}
]
}
]
}
}{- "header": {
- "resultCode": "0000",
- "resultMessage": "Success"
}
}required | object (CommonRequestHeader) Standard GGT request header |
required | object request body (This field requires AES encryption during transmission) |
{- "header": {
- "accountId": "CHANNEL_ID",
- "serviceName": "CreatePreOrder",
- "requestTime": "2025-05-07 14:23:59",
- "version": "1.0",
- "sign": "abcdef1234567890"
}, - "body": {
- "sequenceId": "20250507A1B2C3D4E5F6G7H8",
- "otaOrderId": "OTA1234567890",
- "supplierOrderId": "SUP0987654321",
- "items": [
- {
- "itemId": "LI123456",
- "useStartDate": "2025-06-15",
- "useEndDate": "2025-06-15",
- "quantity": 3,
- "useQuantity": 2,
- "passengers": [
- {
- "passengerId": "P1"
}
], - "vouchers": [
- {
- "voucherId": "VCH123456"
}
], - "remark": "string",
- "discount": {
- "policyList": [
- {
- "date": "2025-06-15",
- "quantity": 1
}
]
}, - "lostAmount": 10.5,
- "lostAmountCurrency": "CNY"
}
]
}
}{- "header": {
- "resultCode": "0000",
- "resultMessage": "Success"
}
}required | object (CommonRequestHeader) Standard GGT request header |
required | object Request body (AES-encrypted) |
{- "header": {
- "accountId": "CHANNEL_ID",
- "serviceName": "CreatePreOrder",
- "requestTime": "2025-05-07 14:23:59",
- "version": "1.0",
- "sign": "abcdef1234567890"
}, - "body": {
- "sequenceId": "20250507A1B2C3D4E5F6G7H8",
- "otaOptionId": 12345,
- "supplierOptionId": "PLU98765",
- "dateType": "DATE_REQUIRED",
- "prices": [
- {
- "date": "2025-06-15",
- "salePrice": 120.5,
- "costPrice": 100
}
]
}
}{- "header": {
- "resultCode": "0000",
- "resultMessage": "Success"
}
}required | object (CommonRequestHeader) Standard GGT request header |
required | object request body (AES-encrypted) |
{- "header": {
- "accountId": "CHANNEL_ID",
- "serviceName": "CreatePreOrder",
- "requestTime": "2025-05-07 14:23:59",
- "version": "1.0",
- "sign": "abcdef1234567890"
}, - "body": {
- "sequenceId": "20250507A1B2C3D4E5F6G7H8",
- "otaOptionId": 12345,
- "supplierOptionId": "PLU98765",
- "dateType": "DATE_REQUIRED",
- "inventories": [
- {
- "date": "2025-06-15",
- "quantity": 50
}
]
}
}{- "header": {
- "resultCode": "0000",
- "resultMessage": "Success"
}
}GGT will upload an image to channels and receive back an ID that can be used as imageId for products.
| imageUrl required | string <= 1000 characters The image URL to upload |
{
}{- "resultCode": "0000",
- "resultMessage": "Upload succeeded",
- "data": {
- "imageId": "IMG_123456789"
}
}GGT will create or update the product information and sends it to channels. After asynchronous processing, channels will inform GGT of the result.
| supplierProductId required | string <= 40 characters The supplier product id. |
| reference required | 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) |
required | Array of objects (ProductTag) |
| title required | string <= 100 characters Supplier product name. |
required | Array of objects or objects (ProductPoi) |
required | Array of objects or objects (SupplierDestination) |
required | Array of objects or objects (SupplierDeparture) |
required | object (TicketInfo) Ticket delivery method information |
required | object (RedemptionInfo) Ticket redemption information |
required | Array of objects (ServiceLanguage) |
required | Array of objects (ProductImage) <= 20 items |
| inclusions required | Array of strings <= 20 items [ items <= 500 characters ] Free-text fees included. |
| exclusions required | Array of strings <= 20 items [ items <= 500 characters ] Free-text fees excluded. |
| highlight required | Array of strings <= 3 items [ items <= 200 characters ] |
| description required | string <= 8000 characters Rich-text product description. |
| howToUse required | Array of strings <= 20 items [ items <= 4000 characters ] |
| additionalInfo required | string <= 4000 characters |
required | object (TravelDuration) Duration of the product or itinerary segment |
required | Array of objects (Itinerary) <= 1 items |
Array of objects (ItineraryDay) <= 1 items Itinerary information for every day. Total items per day cannot exceed 20. Only single-day itineraries are supported. | |
| rawDescription required | string <= 8000 characters Unstructured free-text itinerary description. Required when |
required | object (GuestInformation) Guest information needed when booking an order. |
required | object (BookingSettings) Booking rules of the product. |
| paymentConfirmationTime required | integer Enum: 5 10 15 30 40 60 120 Minutes allowed for customer to complete payment after order creation. |
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 |
{- "supplierProductId": "string",
- "reference": "string",
- "contractId": 0,
- "primaryLanguage": "zh-CN",
- "status": "active",
- "category": [
- {
- "code": "ATTRACTION_TICKET"
}
], - "tags": [
- {
- "id": "TAG1234",
- "tagName": "Wi-Fi available"
}
], - "title": "string",
- "poi": [
- {
- "supplierPOI": {
- "supplierId": "POI_12345",
- "mappingElements": {
- "name": "Eiffel Tower",
- "addressDetail": "Champ de Mars, 5 Avenue Anatole France, 75007 Paris",
- "latitude": 48.8584,
- "longitude": 2.2945
}
}
}
], - "destination": [
- {
- "supplierDestination": {
- "supplierId": "DEST_1001",
- "mappingElements": {
- "name": "Paris",
- "addressDetail": "Île de la Cité",
- "latitude": 48.8566,
- "longitude": 2.3522
}
}
}
], - "departure": [
- {
- "supplierDeparture": {
- "supplierId": "DEPT_2002",
- "mappingElements": {
- "name": "Lyon",
- "addressDetail": "Place Bellecour",
- "latitude": 45.764,
- "longitude": 4.8357
}
}
}
], - "ticketInfo": {
- "deliveryMethods": "DIGITAL"
}, - "redemptionInfo": {
- "redemptionType": "Direct_Entry",
- "redemptionLocation": [
- {
- "supplierLocation": {
- "supplierId": "LOC_5001",
- "mappingElements": {
- "name": "string",
- "addressDetail": "string",
- "latitude": 0,
- "longitude": 0
}
}
}
], - "description": "string"
}, - "serviceLanguage": [
- {
- "languageCode": "en"
}
], - "gallery": [
- {
- "channelImageId": "IMG_123456789"
}
], - "inclusions": [
- "string"
], - "exclusions": [
- "string"
], - "highlight": [
- "string"
], - "description": "string",
- "howToUse": [
- "string"
], - "additionalInfo": "string",
- "duration": {
- "unit": "Hour",
- "value": 2
}, - "itinerary": [
- {
- "start": [
- {
- "startTime": "09:00",
- "startType": "Meet_at_Start_Point",
- "location": [
- {
- "supplierPOI": {
- "supplierId": "POI_12345",
- "mappingElements": {
- "name": "Eiffel Tower",
- "addressDetail": "Champ de Mars, 5 Avenue Anatole France, 75007 Paris",
- "latitude": 48.8584,
- "longitude": 2.2945
}
}
}
]
}
], - "duration": {
- "unit": "Hour",
- "value": 2
}, - "description": "string",
- "end": [
- {
- "endTime": "18:00",
- "endType": "End_After_Return",
- "location": [
- {
- "supplierPOI": {
- "supplierId": "POI_12345",
- "mappingElements": {
- "name": "Eiffel Tower",
- "addressDetail": "Champ de Mars, 5 Avenue Anatole France, 75007 Paris",
- "latitude": 48.8584,
- "longitude": 2.2945
}
}
}
]
}
]
}
], - "days": [
- {
- "dayNumber": 1,
- "items": [
- {
- "time": "10:30",
- "location": [
- {
- "supplierPOI": {
- "supplierId": "POI_12345",
- "mappingElements": {
- "name": "Eiffel Tower",
- "addressDetail": "Champ de Mars, 5 Avenue Anatole France, 75007 Paris",
- "latitude": 48.8584,
- "longitude": 2.2945
}
}
}
]
}
]
}
], - "rawDescription": "string",
- "guestInformation": {
- "type": "PER_PERSON",
- "code": [
- "GUEST_NAME"
]
}, - "bookingSettings": {
- "bookingType": {
- "dateType": "DATE_REQUIRED",
- "dateLimit": {
- "dateLimitType": "Single_Date",
- "multiDateDuration": 2,
- "customizedDateRange": {
- "fromDate": "2019-08-24",
- "toDate": "2019-08-24"
}
}
}
}, - "paymentConfirmationTime": 5,
- "cancellationPolicy": {
- "type": "Non_Cancellable",
- "rateList": [
- {
- "dayBeforeVisitDate": 100,
- "time": "string",
- "unit": "PERCENTAGE",
- "value": 100
}
], - "confirmationTime": 8
}, - "ticketType": [
- {
- "code": "Adult",
- "customCode": "string",
- "customName": "string",
- "restrictions": {
- "minAge": 1,
- "maxAge": 0
}, - "description": "string"
}
], - "option": [
- {
- "optionCode": "Option"
}
], - "metaData": "string"
}{- "resultCode": "0000",
- "resultMessage": "Operation succeeded"
}GGT will create or update the package information and sends it to Channels. After asynchronous processing, Channels will inform GGT of the result. GGT can also query the job status.
| supplierProductId required | string <= 40 characters The supplier product id. |
required | Array of objects (PackageOptionList) Option list of this package. |
{- "supplierProductId": "string",
- "optionList": [
- {
- "option": [
- {
- "optionCode": "string",
- "valueCode": "string",
- "valueName": "string"
}
], - "optionStatus": "active",
- "optionDescription": "string",
- "bookingCutOffTime": {
- "dayBeforeVisitDate": "string",
- "time": "string"
}, - "bookingQuestions": [
- {
- "code": "string",
- "name": "string",
- "answerType": "Single_Selection",
- "allowedAnswers": {
- "code": "string",
- "name": "string"
}, - "description": "string"
}
], - "unit": [
- {
- "PLU": "string",
- "reference": "string",
- "ticketTypeCode": "Adult",
- "customCode": "string",
- "restrictions": {
- "minUnits": "string",
- "maxUnits": "string",
- "unitPax": "string",
- "companionRequired": "Not_Required"
}, - "currency": {
- "netPriceCurrency": "string",
- "retailPriceCurrency": "string"
}, - "netPriceCurrency": "string",
- "retailPriceCurrency": "string"
}
]
}
]
}{- "resultCode": "string",
- "resultMessage": "string"
}