@mongoui/skills 0.1.8 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/products/index.js +6 -5
- package/package.json +26 -26
- package/skills/flink-flight-api/SKILL.md +63 -63
- package/skills/flink-flight-api/agents/openai.yaml +4 -4
- package/skills/flink-flight-api/references/api-workflows.md +104 -104
- package/skills/flink-flight-api/references/auth-and-credentials.md +136 -136
- package/skills/flink-flight-api/references/endpoint-index.md +92 -92
- package/skills/flink-flight-api/scripts/flink_signed_request.py +188 -188
- package/skills/glink-hotel-api/SKILL.md +153 -152
- package/skills/glink-hotel-api/agents/openai.yaml +4 -4
- package/skills/glink-hotel-api/references/api-workflows.md +168 -158
- package/skills/glink-hotel-api/references/auth-and-credentials.md +144 -144
- package/skills/glink-hotel-api/references/endpoint-index.md +148 -129
- package/skills/glink-hotel-api/references/field-and-enum-notes.md +161 -0
- package/skills/glink-hotel-api/scripts/glink_signed_request.py +199 -199
- package/skills/tmc-api/SKILL.md +63 -0
- package/skills/tmc-api/agents/openai.yaml +4 -0
- package/skills/tmc-api/references/api-workflows.md +365 -0
- package/skills/tmc-api/references/auth-and-calling.md +47 -0
- package/skills/tmc-api/references/endpoint-details.md +25964 -0
- package/skills/tmc-api/references/endpoint-index.md +116 -0
- package/skills/tmc-api/scripts/tmc_signed_request.py +199 -0
- package/skills/tmc-whitelabel/SKILL.md +0 -8
|
@@ -1,129 +1,148 @@
|
|
|
1
|
-
# Glink Endpoint Index
|
|
2
|
-
|
|
3
|
-
Source of truth: current DHub / `docs/swagger/glink-api.json`.
|
|
4
|
-
|
|
5
|
-
All routes below are customer-facing short interface paths. For actual gateway calls and signing, prefix them with `/openapi/v1/glink`.
|
|
6
|
-
|
|
7
|
-
Customer-facing explanations should use only short interface paths such as `/search/destination`.
|
|
8
|
-
|
|
9
|
-
Integration mode shortcuts:
|
|
10
|
-
|
|
11
|
-
- Standard API Integration: prefer `/search/hotelIdList` -> `/hotel/detail` -> `/hotel/increment` and maintain local saleable hotel mappings.
|
|
12
|
-
- Lightweight Integration Flow: prefer `/search/destination` -> `/search/hotelFilters` -> `/search/hotelList` -> `/hotel/detail`/`/hotel/images` -> `/booking/productDetails` for faster launch.
|
|
13
|
-
|
|
14
|
-
## Region Static Data
|
|
15
|
-
|
|
16
|
-
- `/region/countries`
|
|
17
|
-
- Method: `POST`
|
|
18
|
-
- Required body fields: none.
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
-
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
|
|
25
|
-
-
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
- `/region/
|
|
29
|
-
- Method: `POST`
|
|
30
|
-
- Common body fields: `cityCode`, `language`.
|
|
31
|
-
- `/region/
|
|
32
|
-
- Method: `POST`
|
|
33
|
-
- Common body fields: `cityCode`, `
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
-
|
|
45
|
-
-
|
|
46
|
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
49
|
-
|
|
50
|
-
-
|
|
51
|
-
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
|
|
65
|
-
-
|
|
66
|
-
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
- `/
|
|
75
|
-
- Method: `POST`
|
|
76
|
-
-
|
|
77
|
-
- `/
|
|
78
|
-
- Method: `POST`
|
|
79
|
-
- Common body fields: `
|
|
80
|
-
-
|
|
81
|
-
|
|
82
|
-
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
89
|
-
- `/
|
|
90
|
-
- Method: `POST`
|
|
91
|
-
-
|
|
92
|
-
-
|
|
93
|
-
|
|
94
|
-
-
|
|
95
|
-
-
|
|
96
|
-
|
|
97
|
-
-
|
|
98
|
-
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
-
|
|
104
|
-
-
|
|
105
|
-
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
-
|
|
111
|
-
-
|
|
112
|
-
|
|
113
|
-
-
|
|
114
|
-
-
|
|
115
|
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
118
|
-
|
|
119
|
-
-
|
|
120
|
-
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
-
|
|
129
|
-
-
|
|
1
|
+
# Glink Endpoint Index
|
|
2
|
+
|
|
3
|
+
Source of truth: current DHub / `docs/swagger/glink-api.json`.
|
|
4
|
+
|
|
5
|
+
All routes below are customer-facing short interface paths. For actual gateway calls and signing, prefix them with `/openapi/v1/glink`.
|
|
6
|
+
|
|
7
|
+
Customer-facing explanations should use only short interface paths such as `/search/destination`.
|
|
8
|
+
|
|
9
|
+
Integration mode shortcuts:
|
|
10
|
+
|
|
11
|
+
- Standard API Integration: prefer `/search/hotelIdList` -> `/hotel/detail` -> `/hotel/increment` and maintain local saleable hotel mappings.
|
|
12
|
+
- Lightweight Integration Flow: prefer `/search/destination` -> `/search/hotelFilters` -> `/search/hotelList` -> `/hotel/detail`/`/hotel/images` -> `/booking/productDetails` for faster launch.
|
|
13
|
+
|
|
14
|
+
## Region Static Data
|
|
15
|
+
|
|
16
|
+
- `/region/countries`
|
|
17
|
+
- Method: `POST`
|
|
18
|
+
- Required body fields: none.
|
|
19
|
+
- Response `data` is an array of country objects directly; there is no `countries` wrapper.
|
|
20
|
+
- `/region/cities`
|
|
21
|
+
- Method: `POST`
|
|
22
|
+
- Common body fields: `countryCode`, `language`.
|
|
23
|
+
- Response `data` is an array of province/city-group objects directly; there is no `provinces` wrapper.
|
|
24
|
+
- `/region/popularCities`
|
|
25
|
+
- Method: `POST`
|
|
26
|
+
- Required body fields: none.
|
|
27
|
+
- Response `data` is an array directly; fields include `latBaidu`, `lngBaidu`, `timeZone`, and `areaType`.
|
|
28
|
+
- `/region/businesses`
|
|
29
|
+
- Method: `POST`
|
|
30
|
+
- Common body fields: `cityCode`, `language`.
|
|
31
|
+
- `/region/districts`
|
|
32
|
+
- Method: `POST`
|
|
33
|
+
- Common body fields: `cityCode`, `language`.
|
|
34
|
+
- `/region/pois`
|
|
35
|
+
- Method: `POST`
|
|
36
|
+
- Common body fields: `cityCode`, `keyword`, `language`.
|
|
37
|
+
|
|
38
|
+
## Hotel Info
|
|
39
|
+
|
|
40
|
+
- `/search/hotelIdList`
|
|
41
|
+
- Method: `POST`
|
|
42
|
+
- Common body fields: `cityCode`, `pageNo`, `pageSize`.
|
|
43
|
+
- Use `pageNo >= 1` and `pageSize >= 1`; examples default to `pageNo=1`, `pageSize=1000`.
|
|
44
|
+
- Response pagination uses `totalCount`, not `total`; pagination fields may be absent.
|
|
45
|
+
- Use for saleable hotel ID bootstrap and cache refresh.
|
|
46
|
+
- `/hotel/popularIdList`
|
|
47
|
+
- Method: `POST`
|
|
48
|
+
- Common body fields: `pageNo`, `pageSize`.
|
|
49
|
+
- `/hotel/detail`
|
|
50
|
+
- Method: `POST`
|
|
51
|
+
- Required body fields: `hotelIds`.
|
|
52
|
+
- Current response uses `facility`, `popularFacility`, `applicableRoomTypes`, `openingDate`, `groupId`, `groupName`, `brandId`, `brandName`, `latBaidu`, `lngBaidu`, `wiredBroadband`, `wirelessBroadband`, `comment.averageScore`, and `comment.source`.
|
|
53
|
+
- Meeting images are under `hotelMeetingInfos[].meetingImages`; do not expect derived size URLs in that node.
|
|
54
|
+
- Room bed info under both `roomBeds` and `livingRoomBeds` uses object `bedInfos[]` with `bedTypeCode`, `bedName`, `bedWidth`, and `bedNum`.
|
|
55
|
+
- `/hotel/increment`
|
|
56
|
+
- Method: `POST`
|
|
57
|
+
- Common body fields: `startTime`, `endTime`, `maxId`, `pageSize`.
|
|
58
|
+
- `/hotel/lowestPrice`
|
|
59
|
+
- Method: `POST`
|
|
60
|
+
- Common body fields: `hotelIds`, `checkInDate`, `checkOutDate`, `checkInType`.
|
|
61
|
+
- `/hotel/images`
|
|
62
|
+
- Method: `POST`
|
|
63
|
+
- Common body fields: `hotelIds` or `hotelId`; verify the current swagger example before strict DTO generation.
|
|
64
|
+
- `/hotel/groupBrand`
|
|
65
|
+
- Method: `POST`
|
|
66
|
+
- Required body fields: none.
|
|
67
|
+
|
|
68
|
+
## Search And Booking
|
|
69
|
+
|
|
70
|
+
- `/search/destination`
|
|
71
|
+
- Method: `POST`
|
|
72
|
+
- Common body fields: `keyWord`, `cityCode`, `destinationType`, `source`.
|
|
73
|
+
- Response `data` is an array directly. Destination item fields are flat and include `destinationId`, `destinationType`, `source`, name/code fields, `hotelId`, `latGoogle`, `lngGoogle`, `latBaidu`, and `lngBaidu`.
|
|
74
|
+
- `/search/hotelFilters`
|
|
75
|
+
- Method: `POST`
|
|
76
|
+
- Common body fields: `destinationId`, `language`, `lngGoogle`, `latGoogle`, `distance`.
|
|
77
|
+
- `/search/hotelList`
|
|
78
|
+
- Method: `POST`
|
|
79
|
+
- Common body fields: `destinationId`, `lngGoogle`, `latGoogle`, `checkInDate`, `checkOutDate`, filters, `distance`, `currentPage`, `pageSize`.
|
|
80
|
+
- Response list items use `latBaidu` and `lngBaidu`; items may include `groupName` and `brandName`.
|
|
81
|
+
- `/booking/productDetails`
|
|
82
|
+
- Method: `POST`
|
|
83
|
+
- Required body fields: `hotelId`, `checkInDate`, `checkOutDate`, `roomNum`, `numberOfAdults`.
|
|
84
|
+
- Product response removed `reminder`. `taxAndFeeDetails` and `feeItems` are objects, not arrays. `priceItems[].taxDetail` includes numeric `roomPrice`, `taxFee`, `salesTax`, and `otherTax`.
|
|
85
|
+
- `/booking/availabilityCheck`
|
|
86
|
+
- Method: `POST`
|
|
87
|
+
- Required body fields: `hotelId`, `roomId`, `ratePlanId`, `checkInDate`, `checkOutDate`, `roomNum`, `supplyCode`.
|
|
88
|
+
- Response-level `breakfastNum` and `breakfastType` are outside `priceItems`. `roomTaxDetail` is an object. `priceItems[].taxDetail` contains room and tax breakdown. `roomStatus` is not exposed.
|
|
89
|
+
- `/booking/createOrder`
|
|
90
|
+
- Method: `POST`
|
|
91
|
+
- Required body fields: `hotelId`, `roomId`, `ratePlanId`, `checkInDate`, `checkOutDate`, `roomNum`, `supplyCode`, `totalAmount`, `coOrderCode`, `priceItems`, `guestInfos`, `linkMan`, `linkPhone`, `arriveTime`, `latestArriveTime`.
|
|
92
|
+
- Use `guestInfos[].guestType` for guest type; do not send `guestInfos[].nationality`.
|
|
93
|
+
- `/booking/payOrder`
|
|
94
|
+
- Method: `POST`
|
|
95
|
+
- Common body fields: `coOrderCode`, `fcOrderCode`.
|
|
96
|
+
- `/search/creditBalance`
|
|
97
|
+
- Method: `POST`
|
|
98
|
+
- Required body fields: none; send `{}` or omit body according to the SDK/runtime caller.
|
|
99
|
+
|
|
100
|
+
## Order Info
|
|
101
|
+
|
|
102
|
+
- `/order/orderDetail`
|
|
103
|
+
- Method: `POST`
|
|
104
|
+
- Common body fields: `coOrderCode`, `fcOrderCode`.
|
|
105
|
+
- Response uses `roomGuestNumbers[]` for room-level adult/child counts. It may include `originalAmount`, top-level `nationality`, and `guestInfos[].guestType`.
|
|
106
|
+
- `/order/cancelOrder`
|
|
107
|
+
- Method: `POST`
|
|
108
|
+
- Common body fields: `coOrderCode`, `fcOrderCode`, `cancelReason`.
|
|
109
|
+
- `/order/checkInDetail`
|
|
110
|
+
- Method: `POST`
|
|
111
|
+
- Common body fields: `coOrderCode`, `fcOrderCode`.
|
|
112
|
+
- `/order/invoiceRequest`
|
|
113
|
+
- Method: `POST`
|
|
114
|
+
- Business fields to focus on: `orderCode`, `invoiceTypeInteger`, `invoiceHeader`, `amount`, `applyId`, `invoiceTitleType`, `getMethod`.
|
|
115
|
+
- `/order/invoiceInfo`
|
|
116
|
+
- Method: `POST`
|
|
117
|
+
- Common body fields: `coOrderCode` or `fcOrderCode`.
|
|
118
|
+
- `/order/checkoutRequest`
|
|
119
|
+
- Method: `POST`
|
|
120
|
+
- Required body fields: `fcOrderCode`, `supplierRefundNumber`, `checkoutReason`, `refundType`, `checkoutRooms`.
|
|
121
|
+
- `/order/checkoutDetail`
|
|
122
|
+
- Method: `POST`
|
|
123
|
+
- Common body fields: `taskOrderCode`.
|
|
124
|
+
- Response includes hotel/product context, `paymentType`, `refundDetailList[]`, and `checkoutDetailPriceItemList[].originalSalePrice`.
|
|
125
|
+
|
|
126
|
+
## Callback Capabilities
|
|
127
|
+
|
|
128
|
+
- `/notify/orderStatus`
|
|
129
|
+
- Method: `POST`
|
|
130
|
+
- Order status push/callback. The receiver must be idempotent.
|
|
131
|
+
- `/notify/orderOperate`
|
|
132
|
+
- Method: `POST`
|
|
133
|
+
- Order operation push/callback. The receiver must be idempotent.
|
|
134
|
+
- `/notify/orderCheckout`
|
|
135
|
+
- Method: `POST`
|
|
136
|
+
- Checkout status push/callback. The receiver must be idempotent.
|
|
137
|
+
- `/notify/orderInvoice`
|
|
138
|
+
- Method: `POST`
|
|
139
|
+
- Invoice status push/callback. The receiver must be idempotent.
|
|
140
|
+
|
|
141
|
+
## Global Notes
|
|
142
|
+
|
|
143
|
+
- Current Glink swagger route count may include outbound request APIs and callback APIs; verify against `docs/swagger/glink-api.json`.
|
|
144
|
+
- Most Glink routes accept plain business JSON bodies with no wrapper objects.
|
|
145
|
+
- For response-shape changes and enum-like values, read `field-and-enum-notes.md` before generating DTOs or examples.
|
|
146
|
+
- Platform error responses can return `401`, `403`, `404`, `500`, `502`, or `504`.
|
|
147
|
+
- Common auth-related `401` codes are `APP_KEY_INVALID`, `SIGN_ERROR`, `TIMESTAMP_EXPIRED`, and `NONCE_REPLAY`.
|
|
148
|
+
- Common `403` cause is `PRODUCT_FORBIDDEN`.
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Glink Field And Enum Notes
|
|
2
|
+
|
|
3
|
+
Source of truth: current `docs/swagger/glink-api.json` and its examples. If the public portal page is available, compare it with this file before changing SDK or customer-facing guidance.
|
|
4
|
+
|
|
5
|
+
All paths below are customer-facing short paths. Prefix `/openapi/v1/glink` only for actual gateway calls and signing.
|
|
6
|
+
|
|
7
|
+
## Current Response Shape Notes
|
|
8
|
+
|
|
9
|
+
- `/region/countries`
|
|
10
|
+
- `data` is an array of country objects directly. There is no `countries` wrapper.
|
|
11
|
+
- Example item: `countryCode`, `countryName`, `countryId`.
|
|
12
|
+
- `/region/cities`
|
|
13
|
+
- `data` is an array of province/city-group objects directly. There is no `provinces` wrapper.
|
|
14
|
+
- Example item: `countryCode`, `countryName`, `provinceCode`, `provinceName`, `citys[]`.
|
|
15
|
+
- City coordinates use `latBaidu`, `lngBaidu`, `latGoogle`, `lngGoogle`.
|
|
16
|
+
- `/region/popularCities`
|
|
17
|
+
- `data` is an array directly. There is no `list` wrapper.
|
|
18
|
+
- Current fields include `cityCode`, `cityName`, `parentAreaId`, `latBaidu`, `lngBaidu`, `timeZone`, and `areaType`.
|
|
19
|
+
- `/search/destination`
|
|
20
|
+
- `data` is an array directly. There is no `destinationDTOList` wrapper.
|
|
21
|
+
- Destination item is flat: `destinationId`, `destinationType`, `source`, `cityName`, `cityCode`, `destinationName`, province/country fields, `hotelId`, `latGoogle`, `lngGoogle`, `latBaidu`, `lngBaidu`.
|
|
22
|
+
- `/search/hotelIdList`
|
|
23
|
+
- Request supports `pageNo` and `pageSize`; default examples use `pageNo=1`, `pageSize=1000`.
|
|
24
|
+
- Response uses `totalCount`, not `total`. Pagination fields may be absent.
|
|
25
|
+
- `/search/hotelList`
|
|
26
|
+
- Hotel list coordinates use `latBaidu` and `lngBaidu`, not `latitude` and `longitude`.
|
|
27
|
+
- Items may include `groupName` and `brandName`.
|
|
28
|
+
- `/hotel/detail`
|
|
29
|
+
- Hotel static details use `facility`, not `hotelFacilityNew`.
|
|
30
|
+
- Popular hotel facilities use `popularFacility`, not `hotFacility`.
|
|
31
|
+
- `popularFacility.has24HourFrontDesk` replaces `hourFrontDesk_24`.
|
|
32
|
+
- Facility room scope uses `applicableRoomTypes`, not `applicableRoomTypeIDs`.
|
|
33
|
+
- Group and brand fields use `groupId`, `groupName`, `brandId`, and `brandName`.
|
|
34
|
+
- Baidu coordinates use `latBaidu` and `lngBaidu`; Google coordinates remain `latGoogle` and `lngGoogle`.
|
|
35
|
+
- Opening date uses `openingDate`, not `praciceDate`.
|
|
36
|
+
- Room network fields are `wiredBroadband` and `wirelessBroadband`.
|
|
37
|
+
- Comment fields are `averageScore` and `source`.
|
|
38
|
+
- `allowsPet`, `petText`, meeting-level `hotelId`, and pet charge `chargeFrequency` are not part of the current public response.
|
|
39
|
+
- Meeting images use `meetingImages`; derived size URLs and `title` are not exposed there.
|
|
40
|
+
- `roomBedTypeInfos.roomBeds[].bedGroups[].bedInfos[]` is an object list with `bedTypeCode`, `bedName`, `bedWidth`, and `bedNum`, matching `livingRoomBeds`.
|
|
41
|
+
- `/booking/productDetails`
|
|
42
|
+
- Product-level `reminder` is removed.
|
|
43
|
+
- `taxAndFeeDetails` is an object, not an array.
|
|
44
|
+
- `taxAndFeeDetails.feeItems` is an object, not an array.
|
|
45
|
+
- `priceItems[].taxDetail` includes `roomPrice`, `taxFee`, `salesTax`, and `otherTax`, all numeric.
|
|
46
|
+
- `/booking/availabilityCheck`
|
|
47
|
+
- `breakfastNum` and `breakfastType` are at the response `data` level, not under `priceItems`.
|
|
48
|
+
- `priceItems[].taxDetail` contains `roomPrice`, `taxFee`, `salesTax`, and `otherTax`.
|
|
49
|
+
- `roomTaxDetail` is an object with `taxFee`, `salesTax`, and `otherTax`.
|
|
50
|
+
- `roomStatus` is not exposed.
|
|
51
|
+
- `payAtHotelFee` and `payAtHotelFeeCurrency` refer to hotel-local currency amounts.
|
|
52
|
+
- `/booking/createOrder`
|
|
53
|
+
- `guestInfos[].guestType` replaces `guestInfos[].nationality`.
|
|
54
|
+
- `guestType` follows the dictionary item "宾客类型".
|
|
55
|
+
- `/order/orderDetail`
|
|
56
|
+
- Top-level room occupancy is represented by `roomGuestNumbers[]`, with `roomNumber`, `numberOfAdults`, `numberOfChildren`, and `childrenAges`.
|
|
57
|
+
- Top-level `roomNumber`, `numberOfAdults`, `numberOfChildren`, and `childrenAges` are not part of the current response.
|
|
58
|
+
- `originalAmount` is the order original amount.
|
|
59
|
+
- Top-level `nationality` is the country or region code.
|
|
60
|
+
- `guestInfos[].guestType` replaces `guestInfos[].nationality`.
|
|
61
|
+
- `/order/cancelOrder`
|
|
62
|
+
- Request field is `cancelReason`, not `cancelReson`.
|
|
63
|
+
- `/order/checkoutDetail`
|
|
64
|
+
- Response includes hotel and product context such as `cityCode`, `cityName`, `hotelId`, `hotelName`, `roomId`, `roomTypeName`, `ratePlanId`, and `paymentType`.
|
|
65
|
+
- `refundDetailList[]` includes `refundChannel`, `refundTime`, `amount`, and `billNo`.
|
|
66
|
+
- `checkoutDetailPriceItemList[].originalSalePrice` is the original sale price.
|
|
67
|
+
|
|
68
|
+
## Common Enum-Like Values
|
|
69
|
+
|
|
70
|
+
Destination and source:
|
|
71
|
+
|
|
72
|
+
- `destinationType`: `1` hotel, `2` city, `3` district, `4` business area, `5` tourist area, `6` city and surroundings, `7` sub-city area, `8` place or metro station, `9` province, `10` country, `13` other.
|
|
73
|
+
- `source`: `0` Glink, `1` Google, `2` Baidu.
|
|
74
|
+
|
|
75
|
+
Hotel detail:
|
|
76
|
+
|
|
77
|
+
- `facility.categoryType`: `1` hotel facility, `2` room facility.
|
|
78
|
+
- `facility.status`: `0` none for all rooms, `1` available for all rooms, `2` available for some rooms. When status is `2`, inspect `applicableRoomTypes`.
|
|
79
|
+
- `breakfastOpenType`: `0` daily open, `1` specified dates.
|
|
80
|
+
- `breakfastOpenTimes[].isOpen`: `0` closed, `1` open.
|
|
81
|
+
- `parkingLocation`: `0` in hotel, `1` nearby.
|
|
82
|
+
- `parkingType`: `0` private parking, `1` public parking.
|
|
83
|
+
- `isReserved`: `0` reservation required, `1` no reservation required, `2` cannot reserve in advance.
|
|
84
|
+
- `isChargeable`: `0` free, `1` some guests may be charged, `2` charged.
|
|
85
|
+
- `parking.chargeType`: `1` per day, `2` per hour, `3` per week, `4` per stay, `5` per entry or exit.
|
|
86
|
+
- `isLimitParking`: `0` no, `1` yes.
|
|
87
|
+
- `isChargePark`: `0` no charging parking, `1` has charging parking.
|
|
88
|
+
- `chargingPile`: comma-separated values; `0` normal charger, `1` Tesla destination charger, `2` Tesla supercharger.
|
|
89
|
+
- `chargingType`: `0` private parking, `1` public parking.
|
|
90
|
+
- `isLimitCharging`: `0` do not display, `1` display first-come-first-served.
|
|
91
|
+
- `informType`: `0` hotel notice, `1` city notice, `2` important notice.
|
|
92
|
+
- `roomInfos[].isAllowSmoking`: `1` yes, `2` no, `3` partial, `-100` unknown.
|
|
93
|
+
- `roomInfos[].addBedflag`: `0` no extra bed, `1` extra bed available, `2` partially available.
|
|
94
|
+
- `hotelVideoInfos[].videoType`: `1` hotel video, `2` room video.
|
|
95
|
+
- Child/extra-bed `chargeManner`: `1` fixed amount, `2` percentage of room fee, `3` percentage of adult average price where applicable.
|
|
96
|
+
- Child/extra-bed `chargeFrequency`: `0` per night, `1` per stay.
|
|
97
|
+
- `addBedType`: `2` extra bed, `3` crib.
|
|
98
|
+
- `childBreakfast.rangeType`: `0` age, `1` height in centimeters.
|
|
99
|
+
- `petPolicy.isCharge`: `0` free, `1` charged.
|
|
100
|
+
- `petPolicy.limitInfos.animalType`: `1` dog, `2` cat, `0` other.
|
|
101
|
+
- Hotel image `imageType`: `1` room, `2` exterior, `3` lobby, `4` facility, `5` other, `6` banquet hall, `7` meeting room, `8` ticket, `9` other service.
|
|
102
|
+
- Image `isMain`: `1` main image, `0` non-main image.
|
|
103
|
+
|
|
104
|
+
Product, booking, and payment:
|
|
105
|
+
|
|
106
|
+
- `bookType`: `0` sold out, `1` bookable, `2` partially bookable, `3` view only / not satisfying booking or stay terms.
|
|
107
|
+
- `invoiceModel`: product details currently expose `1` merchant invoice; order detail may use `0` no invoice, `1` merchant invoice, `2` hotel front desk pickup.
|
|
108
|
+
- `invoiceType`: `1` normal invoice, `2` special invoice in product detail. Invoice APIs use the invoice-specific values below.
|
|
109
|
+
- `payAtHotelFlag`: `1` pay at hotel, `0` or other values mean not pay at hotel.
|
|
110
|
+
- `cancelRestrictionType`: `0` no cancellation policy, `1` non-cancellable and non-changeable, `2` cancellation after configured day/time requires penalty, `3` after configured day/time non-cancellable and non-changeable, `4` free cancellation.
|
|
111
|
+
- `windowType`: `0` no window, `1` partial window, `2` window, `3` internal window, `4` skylight.
|
|
112
|
+
- `pointsLabel`: `7` points available; `null` no points.
|
|
113
|
+
- `commissionLabel`: `8` GDS commission; `null` no commission.
|
|
114
|
+
- `settlementLabel`: `9` agency settlement, `10` non-agency settlement.
|
|
115
|
+
- `canBook`: examples use `1` for bookable after availability check.
|
|
116
|
+
- `createOrder.result`: `1` booking succeeded, `2` booking failed.
|
|
117
|
+
- `payStatus`: `1` payment success, `2` payment failure.
|
|
118
|
+
|
|
119
|
+
Order, cancel, checkout, and invoice:
|
|
120
|
+
|
|
121
|
+
- `orderStatus`: `2` processing, `3` confirmed, `4` canceled, `5` completed.
|
|
122
|
+
- `cancelResult`: `1` cancellation success, `2` cancellation refused, `3` cancelling.
|
|
123
|
+
- `invoiceRequest.invoiceType`: `0` electronic normal, `1` electronic special, `2` paper normal, `3` paper special.
|
|
124
|
+
- `invoiceTitleType`: `0` company, `1` personal or non-company.
|
|
125
|
+
- `invoiceTitleCode`: value range `1` to `6`.
|
|
126
|
+
- `invoiceDeliveryMethod`: `1` email, `2` post, `3` self-pickup.
|
|
127
|
+
- `invoiceInfo.invoiceStatus`: `0` pending, `1` downloaded and waiting for ticket creation, `2` ticket creation failed, `3` invoice binding failed, `4` invoiced, `5` invoicing, `6` invoiced and waiting for download, `7` invoicing failed, `8` attachment downloaded.
|
|
128
|
+
- `invoicePickup.getMethod`: `1` email.
|
|
129
|
+
- `invoicePickup.sendStatus`: `0` not sent, `1` sent, `2` send failed.
|
|
130
|
+
- `checkoutRequest.refundType`: `0` whole-order cancellation, `1` partial cancellation.
|
|
131
|
+
- `checkoutDetail.paymentType`: `0` prepaid, `1` pay at hotel.
|
|
132
|
+
|
|
133
|
+
## Practical Scenarios
|
|
134
|
+
|
|
135
|
+
### Standard catalog integration
|
|
136
|
+
|
|
137
|
+
Use this when the partner maintains local hotel and room mappings.
|
|
138
|
+
|
|
139
|
+
1. Build a saleable hotel cache with `/search/hotelIdList` using `pageNo` and `pageSize`.
|
|
140
|
+
2. Fetch static details with `/hotel/detail`. Persist current field names such as `facility`, `popularFacility`, `roomInfos`, `latBaidu`, `lngBaidu`, `groupName`, and `brandName`.
|
|
141
|
+
3. Refresh static changes with `/hotel/increment`, then hydrate changed IDs with `/hotel/detail`.
|
|
142
|
+
4. Refresh starting prices with `/hotel/lowestPrice` for list display.
|
|
143
|
+
5. Call `/booking/productDetails` only for hotels in the local saleable cache.
|
|
144
|
+
6. Use `/booking/availabilityCheck` immediately before `/booking/createOrder`; repeat the check if order submission is delayed.
|
|
145
|
+
|
|
146
|
+
### Lightweight destination integration
|
|
147
|
+
|
|
148
|
+
Use this when the partner does not want a full static hotel sync.
|
|
149
|
+
|
|
150
|
+
1. Resolve a keyword with `/search/destination`; the response is an array and `destinationType/source` identify the result type and source.
|
|
151
|
+
2. Fetch filters with `/search/hotelFilters` when the UI needs filter panels.
|
|
152
|
+
3. Search hotels with `/search/hotelList`; use `latBaidu/lngBaidu`, `groupName`, and `brandName` from list items for display.
|
|
153
|
+
4. Hydrate selected hotels with `/hotel/detail` and `/hotel/images`.
|
|
154
|
+
5. Continue with `/booking/productDetails`, `/booking/availabilityCheck`, `/booking/createOrder`, and `/booking/payOrder`.
|
|
155
|
+
|
|
156
|
+
### Order aftercare
|
|
157
|
+
|
|
158
|
+
- For customer cancellation or unpaid timeout, call `/order/cancelOrder` with `cancelReason`.
|
|
159
|
+
- Treat `/notify/orderStatus` as the primary confirmation channel. Use `/order/orderDetail` only as compensation.
|
|
160
|
+
- For partial checkout/refund scenarios, call `/order/checkoutRequest` with `refundType=1`, then query `/order/checkoutDetail` by `taskOrderCode`.
|
|
161
|
+
- For invoice flows, call `/order/invoiceRequest`, then `/order/invoiceInfo` for status and pickup/download metadata.
|