@mongoui/skills 0.1.5 → 0.1.6
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/tools/index.js +2 -2
- package/package.json +1 -1
- package/skills/flink-flight-api/flink-openapi-integration/SKILL.md +14 -9
- package/skills/flink-flight-api/flink-openapi-integration/agents/openai.yaml +2 -2
- package/skills/flink-flight-api/flink-openapi-integration/references/api-workflows.md +2 -2
- package/skills/flink-flight-api/flink-openapi-integration/references/auth-and-credentials.md +4 -4
- package/skills/flink-flight-api/flink-openapi-integration/references/endpoint-index.md +1 -1
- package/skills/glink-hotel-api/glink-openapi-integration/SKILL.md +33 -14
- package/skills/glink-hotel-api/glink-openapi-integration/agents/openai.yaml +2 -2
- package/skills/glink-hotel-api/glink-openapi-integration/references/api-workflows.md +36 -10
- package/skills/glink-hotel-api/glink-openapi-integration/references/auth-and-credentials.md +8 -8
- package/skills/glink-hotel-api/glink-openapi-integration/references/endpoint-index.md +6 -2
package/dist/tools/index.js
CHANGED
|
@@ -94,7 +94,7 @@ export function renderInstalledContent(tool, productName, displayName, sourceCon
|
|
|
94
94
|
"",
|
|
95
95
|
`# ${displayName}`,
|
|
96
96
|
"",
|
|
97
|
-
`Imported from
|
|
97
|
+
`Imported from @mongoui/skills as the \`${productName}\` rule.`,
|
|
98
98
|
"",
|
|
99
99
|
skillBody,
|
|
100
100
|
"",
|
|
@@ -118,7 +118,7 @@ export function renderInstalledContent(tool, productName, displayName, sourceCon
|
|
|
118
118
|
return [
|
|
119
119
|
`# ${displayName}`,
|
|
120
120
|
"",
|
|
121
|
-
`Imported from
|
|
121
|
+
`Imported from @mongoui/skills for \`${productName}\`.`,
|
|
122
122
|
"",
|
|
123
123
|
skillBody,
|
|
124
124
|
"",
|
package/package.json
CHANGED
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: flink-openapi-integration
|
|
3
|
-
description: Integrate with the Flink flight OpenAPI exposed through the
|
|
3
|
+
description: Integrate with the Flink flight OpenAPI exposed through the Open Platform runtime gateway. Use when Codex needs to read, verify, explain, test, or implement against `docs/swagger/flink-api.json` or Flink route code; choose Flink ticket endpoints; generate or debug `X-OP-*` signatures; explain sandbox or production credential issuance/reset; or drive Chinese/English requests about Flink 机票 search, booking, payment, order detail, change, refund, airport, airline, nationality, and fields workflows.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Flink OpenAPI Integration
|
|
7
7
|
|
|
8
8
|
## Quick Start
|
|
9
9
|
|
|
10
|
-
Use this skill when the task is "call Flink through the open platform"
|
|
10
|
+
Use this skill when the task is "call Flink through the open platform".
|
|
11
11
|
|
|
12
|
-
Start with the smallest
|
|
12
|
+
Start with the smallest current source that answers the request:
|
|
13
13
|
|
|
14
|
+
- Prefer the repository source of truth when it exists: `docs/swagger/flink-api.json`, route handlers, DTOs, and tests.
|
|
14
15
|
- Read `references/auth-and-credentials.md` for signing, headers, key acquisition, reset, or auth troubleshooting.
|
|
15
16
|
- Read `references/api-workflows.md` for business sequencing such as search to booking, change, or refund.
|
|
16
|
-
- Read `references/endpoint-index.md` for
|
|
17
|
+
- Read `references/endpoint-index.md` for a compact endpoint map, then verify fragile fields against the current swagger or code.
|
|
17
18
|
- Use `scripts/flink_signed_request.py` to generate headers, inspect the canonical string, or send a signed request.
|
|
18
19
|
|
|
19
20
|
## Working Rules
|
|
@@ -21,15 +22,17 @@ Start with the smallest reference that answers the request:
|
|
|
21
22
|
Follow this workflow:
|
|
22
23
|
|
|
23
24
|
1. Confirm the environment: `sandbox` and `production` credentials are separate.
|
|
24
|
-
2. Confirm the
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
5.
|
|
25
|
+
2. Confirm whether the user is asking for documentation, code changes, local smoke testing, or live API calls.
|
|
26
|
+
3. Confirm the public path under `/openapi/v1/flink/*` and the required `lang` path parameter when present.
|
|
27
|
+
4. Build the minimum valid request body from swagger/code first, using `references/endpoint-index.md` as navigation.
|
|
28
|
+
5. Sign the exact request path, sorted query string, and raw body bytes with the platform secret.
|
|
29
|
+
6. Evaluate both HTTP status and response envelope `code`, not HTTP status alone.
|
|
28
30
|
|
|
29
31
|
Do not violate these rules:
|
|
30
32
|
|
|
31
33
|
- Always send `X-OP-App-Key`, `X-OP-Timestamp`, `X-OP-Nonce`, and `X-OP-Sign`.
|
|
32
|
-
- Never send
|
|
34
|
+
- Never send Flink-side `appid`, `timestamp`, or `sign`; the platform injects Flink downstream auth fields.
|
|
35
|
+
- Never invent credentials or secrets. Use explicit user-provided values or environment variables.
|
|
33
36
|
- Treat `code=SUCCESS` as success. Treat `code=SUPPLIER_BIZ_ERROR` as a business failure even if HTTP status is `200`.
|
|
34
37
|
- Keep timestamp skew within `+-5` minutes.
|
|
35
38
|
- Reuse of the same nonce under the same app key can trigger `NONCE_REPLAY`.
|
|
@@ -53,6 +56,8 @@ Use these patterns by default:
|
|
|
53
56
|
When answering or coding with this skill:
|
|
54
57
|
|
|
55
58
|
- Prefer concrete request examples over abstract summaries.
|
|
59
|
+
- Name the source used when the current swagger/code and bundled references disagree.
|
|
56
60
|
- State which environment the credential belongs to.
|
|
57
61
|
- State which identifier from the previous step is needed next.
|
|
58
62
|
- Call out auth failures with the likely root cause and the exact header or field to inspect.
|
|
63
|
+
- For code changes, keep Flink downstream auth and platform gateway auth clearly separated.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Flink OpenAPI 接入"
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "Use $flink-openapi-integration to
|
|
3
|
+
short_description: "Flink 机票开放接口鉴权、签名和业务调用"
|
|
4
|
+
default_prompt: "Use $flink-openapi-integration to implement or debug Flink flight OpenAPI auth, signatures, endpoint selection, and order workflows."
|
|
@@ -100,5 +100,5 @@ Use the same `lang` across related calls unless there is a clear reason to switc
|
|
|
100
100
|
## Business Handling Rules
|
|
101
101
|
|
|
102
102
|
- Do not treat HTTP `200` as enough; inspect `code`.
|
|
103
|
-
- Do not rebuild
|
|
104
|
-
- Preserve the original
|
|
103
|
+
- Do not rebuild Flink headers; the runtime gateway handles downstream authentication.
|
|
104
|
+
- Preserve the original Flink identifiers from earlier responses instead of recomputing them.
|
package/skills/flink-flight-api/flink-openapi-integration/references/auth-and-credentials.md
CHANGED
|
@@ -59,7 +59,7 @@ Sandbox:
|
|
|
59
59
|
|
|
60
60
|
1. The developer applies for app access.
|
|
61
61
|
2. The operator activates the app access with `env_type=sandbox`.
|
|
62
|
-
3. The platform records sandbox
|
|
62
|
+
3. The platform records sandbox Flink mapping and issues a sandbox `open_app_id/open_app_secret`.
|
|
63
63
|
4. The app access becomes `sandbox_active`.
|
|
64
64
|
|
|
65
65
|
Production:
|
|
@@ -73,7 +73,7 @@ Important constraints:
|
|
|
73
73
|
|
|
74
74
|
- Sandbox and production credentials are separate and not interchangeable.
|
|
75
75
|
- Developers can see platform credentials only.
|
|
76
|
-
- Developers cannot see
|
|
76
|
+
- Developers cannot see Flink downstream secrets.
|
|
77
77
|
|
|
78
78
|
## How To View Or Reset Keys
|
|
79
79
|
|
|
@@ -131,6 +131,6 @@ The platform wraps business responses in a common envelope:
|
|
|
131
131
|
Interpretation:
|
|
132
132
|
|
|
133
133
|
- `request_id` and `trace_id` are platform-side tracing keys.
|
|
134
|
-
- `downstream_request_id` is the
|
|
134
|
+
- `downstream_request_id` is the Flink request identifier when available.
|
|
135
135
|
- `code=SUCCESS` means the business call succeeded.
|
|
136
|
-
- `code=SUPPLIER_BIZ_ERROR` means
|
|
136
|
+
- `code=SUPPLIER_BIZ_ERROR` means Flink returned a business error and can still arrive with HTTP `200`.
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: glink-openapi-integration
|
|
3
|
-
description: Integrate with the Glink hotel OpenAPI exposed through the
|
|
3
|
+
description: Integrate with the Glink hotel OpenAPI exposed through the Open Platform runtime gateway. Use when Codex needs to read, verify, explain, test, or implement against `docs/swagger/glink-api.json` or Glink route code; choose Glink hotel endpoints; generate or debug `X-OP-*` signatures; explain sandbox or production credential issuance/reset; or drive Chinese/English requests about Glink 酒店 static data, hotel search, hotel info, product detail, booking, payment, order, cancel, order status push/callback, checkout, invoice, and balance workflows.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Glink OpenAPI Integration
|
|
7
7
|
|
|
8
8
|
## Quick Start
|
|
9
9
|
|
|
10
|
-
Use this skill when the task is "call Glink through the open platform"
|
|
10
|
+
Use this skill when the task is "call Glink through the open platform".
|
|
11
11
|
|
|
12
|
-
Start with the smallest
|
|
12
|
+
Start with the smallest current source that answers the request:
|
|
13
13
|
|
|
14
|
+
- Prefer the repository source of truth when it exists: `docs/swagger/glink-api.json`, route handlers, DTOs, and tests.
|
|
14
15
|
- Read `references/auth-and-credentials.md` for signing, headers, key acquisition, reset, and auth troubleshooting.
|
|
15
16
|
- Read `references/api-workflows.md` for hotel search, booking, cancel, checkout, invoice, and balance workflows.
|
|
16
|
-
- Read `references/endpoint-index.md` for
|
|
17
|
+
- Read `references/endpoint-index.md` for a compact endpoint map and platform-managed field caveats, then verify fragile fields against the current swagger or code.
|
|
17
18
|
- Use `scripts/glink_signed_request.py` to generate headers, inspect the canonical string, or send a signed request.
|
|
18
19
|
|
|
19
20
|
## Working Rules
|
|
@@ -21,28 +22,44 @@ Start with the smallest reference that answers the request:
|
|
|
21
22
|
Follow this workflow:
|
|
22
23
|
|
|
23
24
|
1. Confirm the environment: `sandbox` and `production` credentials are separate.
|
|
24
|
-
2. Confirm the
|
|
25
|
-
3.
|
|
26
|
-
4.
|
|
27
|
-
5.
|
|
25
|
+
2. Confirm whether the user is asking for documentation, code changes, local smoke testing, or live API calls.
|
|
26
|
+
3. Confirm the public path under `/openapi/v1/glink/*`.
|
|
27
|
+
4. Build the minimum valid request body from swagger/code first, using `references/endpoint-index.md` as navigation.
|
|
28
|
+
5. Sign the exact public path, sorted query string, and raw body bytes with the platform secret.
|
|
29
|
+
6. Evaluate both HTTP status and response envelope `code`, not HTTP status alone.
|
|
30
|
+
|
|
31
|
+
When the user asks for the Open Platform Glink hotel onboarding or booking flow, apply this required sequence:
|
|
32
|
+
|
|
33
|
+
1. Static bootstrap: `queryCityList` -> `queryHotelIdList` by city -> `queryHotelInfo` for hotel/room static data, then persist mapping locally.
|
|
34
|
+
2. Static maintenance: run `queryHotelIncrement`, then call `queryHotelInfo` for changed hotel IDs and update or disconnect local mappings when needed.
|
|
35
|
+
3. List pricing: run `queryHotelLowestPrice` for mapped hotels, normally as a daily job after the Glink price refresh window, and use it as list-page display/reference data.
|
|
36
|
+
4. Detail pricing: before `queryProductDetail`, check the local saleable hotel ID cache; skip hotels not in the saleable list. Use `bookType=1` products as bookable candidates.
|
|
37
|
+
5. Booking: call `checkBooking` with the actual room count before entering or submitting the order flow; call it again before `createOrder` when the local order is ready.
|
|
38
|
+
6. Payment and confirmation: after `createOrder`, call `payOrder` only after local customer payment succeeds or the platform has decided the Glink order should be confirmed.
|
|
39
|
+
7. Confirmation result: treat Glink order operation push/callback as primary and idempotent; use `queryOrderDetail` only as low-frequency compensation before final confirmation or cancellation.
|
|
40
|
+
8. Cancellation: call `cancelOrder` for unpaid timeout such as 30 minutes or customer cancellation. If the cancellation API returns success, update the local order and do not keep polling for another status push.
|
|
28
41
|
|
|
29
42
|
Do not violate these rules:
|
|
30
43
|
|
|
31
44
|
- Always send `X-OP-App-Key`, `X-OP-Timestamp`, `X-OP-Nonce`, and `X-OP-Sign`.
|
|
32
|
-
- Never send
|
|
33
|
-
- Never wrap the payload in
|
|
45
|
+
- Never send Glink-side `partnerCode`, `signature`, `requestType`, or Glink-side `timestamp`.
|
|
46
|
+
- Never wrap the payload in Glink-style `header` or `businessRequest`; send only business fields.
|
|
47
|
+
- Never invent credentials or secrets. Use explicit user-provided values or environment variables.
|
|
34
48
|
- Treat `code=SUCCESS` as success. Treat `code=SUPPLIER_BIZ_ERROR` as a business failure even if HTTP status is `200`.
|
|
35
49
|
- Keep timestamp skew within `+-5` minutes.
|
|
36
50
|
- Reuse of the same nonce under the same app key can trigger `NONCE_REPLAY`.
|
|
37
|
-
- If a swagger schema still shows
|
|
51
|
+
- If a swagger schema still shows Glink-managed fields as required, follow the route description first and omit those platform-managed downstream fields from the client payload.
|
|
52
|
+
- Do not frequently poll order status. Stop polling once the order is confirmed or canceled; rely on idempotent push/callback handling as the source of truth for confirmation progress.
|
|
53
|
+
- Do not query real-time products for hotels outside the cached saleable hotel list; it wastes integration quota and usually returns no useful sellable data.
|
|
38
54
|
|
|
39
55
|
## Typical Requests
|
|
40
56
|
|
|
41
57
|
Use these patterns by default:
|
|
42
58
|
|
|
43
59
|
- Static data: city, country, district, business area, and brand lookup calls
|
|
44
|
-
-
|
|
45
|
-
-
|
|
60
|
+
- Catalog sync: `queryCityList` -> `queryHotelIdList` -> `queryHotelInfo`; maintain with `queryHotelIncrement` -> `queryHotelInfo`
|
|
61
|
+
- Search and booking: mapped saleable hotel IDs -> `queryHotelLowestPrice` for list display -> `queryProductDetail` for hotel detail -> `checkBooking` -> optional second `checkBooking` -> `createOrder` -> `payOrder` -> order push/callback primary, `queryOrderDetail` as compensation
|
|
62
|
+
- Order aftercare: `cancelOrder`, Glink order push/callback, `queryOrderDetail`, `queryOrderCheckDetailInfo`, `checkoutApply`, `queryCheckoutDetail`
|
|
46
63
|
- Finance: `createInvoice`, `queryCreditBalance`
|
|
47
64
|
|
|
48
65
|
## Output Expectations
|
|
@@ -50,7 +67,9 @@ Use these patterns by default:
|
|
|
50
67
|
When answering or coding with this skill:
|
|
51
68
|
|
|
52
69
|
- Prefer concrete request examples over abstract summaries.
|
|
70
|
+
- Name the source used when the current swagger/code and bundled references disagree.
|
|
53
71
|
- State which environment the credential belongs to.
|
|
54
72
|
- State whether the payload should contain only business fields.
|
|
55
|
-
- Call out
|
|
73
|
+
- Call out Glink-managed field residue in the swagger when relevant.
|
|
56
74
|
- Call out auth failures with the likely root cause and the exact header or field to inspect.
|
|
75
|
+
- For code changes, keep Glink downstream auth and platform gateway auth clearly separated.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
interface:
|
|
2
2
|
display_name: "Glink OpenAPI 接入"
|
|
3
|
-
short_description: "
|
|
4
|
-
default_prompt: "Use $glink-openapi-integration to
|
|
3
|
+
short_description: "Glink 酒店开放接口鉴权、签名和业务调用"
|
|
4
|
+
default_prompt: "Use $glink-openapi-integration to implement or debug Glink hotel OpenAPI auth, signatures, endpoint selection, and order workflows."
|
|
@@ -15,6 +15,19 @@ Use these calls to build hotel search prerequisites:
|
|
|
15
15
|
|
|
16
16
|
These APIs usually feed city selection, district filters, brand filters, and keyword suggestions.
|
|
17
17
|
|
|
18
|
+
For the required Open Platform Glink onboarding flow, build local hotel and room mapping in this order:
|
|
19
|
+
|
|
20
|
+
1. `glink.queryCityList`
|
|
21
|
+
- Get Glink city codes used by the platform hotel flow.
|
|
22
|
+
2. `glink.queryHotelIdList`
|
|
23
|
+
- Use the city code to fetch the account's saleable hotel ID list and cache it locally.
|
|
24
|
+
3. `glink.queryHotelInfo`
|
|
25
|
+
- Fetch hotel and room static data for the cached hotel IDs. Persist only the fields needed for local hotel and room mapping.
|
|
26
|
+
4. `glink.queryHotelIncrement`
|
|
27
|
+
- Periodically fetch changed hotel IDs, including added, updated, or deleted hotels.
|
|
28
|
+
5. `glink.queryHotelInfo`
|
|
29
|
+
- Rehydrate changed hotel IDs and decide whether local mappings should be updated or disconnected.
|
|
30
|
+
|
|
18
31
|
## Hotel Search And Product Selection
|
|
19
32
|
|
|
20
33
|
Use this sequence for discovery and pricing:
|
|
@@ -32,6 +45,12 @@ Use this sequence for discovery and pricing:
|
|
|
32
45
|
|
|
33
46
|
Use `queryHotelAllList`, `queryHotelIdList`, and `queryHotelIncrement` when synchronizing hotel catalogs rather than serving live booking UX.
|
|
34
47
|
|
|
48
|
+
For the Open Platform Glink flow, prefer the local mapped catalog over broad live search during booking:
|
|
49
|
+
|
|
50
|
+
- Use `glink.queryHotelLowestPrice` for mapped hotels to refresh daily starting prices. It is list-page reference/display data and should normally be refreshed once daily after the Glink price refresh window, for example after 05:00.
|
|
51
|
+
- Before calling `glink.queryProductDetail`, verify that the hotel is still in the cached saleable hotel ID list. Do not query products for hotels outside the saleable list.
|
|
52
|
+
- Use `glink.queryProductDetail` when the customer enters a hotel detail or booking path. Treat products with `bookType=1` as bookable candidates, then confirm with `checkBooking`.
|
|
53
|
+
|
|
35
54
|
## Booking Flow
|
|
36
55
|
|
|
37
56
|
Use this sequence for a normal hotel booking flow:
|
|
@@ -39,18 +58,20 @@ Use this sequence for a normal hotel booking flow:
|
|
|
39
58
|
1. `glink.queryProductDetail`
|
|
40
59
|
- Identify the exact sellable room and rate.
|
|
41
60
|
2. `glink.checkBooking`
|
|
42
|
-
- Perform pre-booking validation.
|
|
61
|
+
- Perform pre-booking validation with the actual room count. Use this before showing or entering the final order submission path.
|
|
43
62
|
3. `glink.createOrder`
|
|
44
|
-
- Submit the order with guest, contact, amount, and price item details.
|
|
63
|
+
- Submit the order with guest, contact, amount, and price item details. When the local order has been created and is ready to submit, call `checkBooking` again first if there is any delay or state change risk.
|
|
45
64
|
4. `glink.payOrder`
|
|
46
|
-
-
|
|
47
|
-
5.
|
|
48
|
-
-
|
|
65
|
+
- Notify Glink after local customer payment succeeds, or after the platform has decided the Glink order should be confirmed.
|
|
66
|
+
5. Glink order operation push/callback
|
|
67
|
+
- Treat the push/callback as the primary confirmation result channel. The receiver must be idempotent.
|
|
68
|
+
6. `glink.queryOrderDetail`
|
|
69
|
+
- Use as low-frequency compensation only before final confirmation or cancellation. Do not keep polling confirmed or canceled orders.
|
|
49
70
|
|
|
50
71
|
Key order identifiers:
|
|
51
72
|
|
|
52
73
|
- `coOrderCode`: your platform-side order number
|
|
53
|
-
- `fcOrderCode`:
|
|
74
|
+
- `fcOrderCode`: Glink-side order number when available
|
|
54
75
|
|
|
55
76
|
Prefer carrying both once they appear, because several aftercare APIs accept one or both.
|
|
56
77
|
|
|
@@ -59,7 +80,9 @@ Prefer carrying both once they appear, because several aftercare APIs accept one
|
|
|
59
80
|
Use these calls after booking:
|
|
60
81
|
|
|
61
82
|
- `glink.cancelOrder`
|
|
62
|
-
- Cancel an order when policy permits.
|
|
83
|
+
- Cancel an order when policy permits, when the customer asks to cancel, or when the local unpaid timeout is reached, such as 30 minutes. If cancellation returns success, update the local order and do not continue polling for another push.
|
|
84
|
+
- Glink order operation push/callback
|
|
85
|
+
- This is required for order confirmation progress after `payOrder`. It may not appear as a public `/openapi/v1/glink/*` request route in swagger because it is an inbound callback capability; inspect platform callback route code before implementing.
|
|
63
86
|
- `glink.queryOrderCheckDetailInfo`
|
|
64
87
|
- Read extended order or check-in related detail.
|
|
65
88
|
- `glink.checkoutApply`
|
|
@@ -73,12 +96,15 @@ Use these calls for financial follow-up:
|
|
|
73
96
|
|
|
74
97
|
- `glink.createInvoice`
|
|
75
98
|
- Submit invoice information using business fields only.
|
|
76
|
-
- Ignore
|
|
99
|
+
- Ignore Glink-managed `partnerCode` and `sign` even if they appear in the swagger schema.
|
|
77
100
|
- `glink.queryCreditBalance`
|
|
78
101
|
- Read remaining credit balance.
|
|
79
102
|
|
|
80
103
|
## Business Handling Rules
|
|
81
104
|
|
|
82
105
|
- Do not treat HTTP `200` as enough; inspect `code`.
|
|
83
|
-
- Do not rebuild
|
|
84
|
-
- Preserve
|
|
106
|
+
- Do not rebuild Glink headers or wrapper payloads; the runtime gateway handles downstream authentication and wrapping.
|
|
107
|
+
- Preserve Glink order identifiers from earlier responses instead of recomputing them.
|
|
108
|
+
- Keep local saleable hotel ID cache and hotel/room mappings current before pricing and booking.
|
|
109
|
+
- Avoid integration quota waste: skip `queryProductDetail` for hotels not in the saleable hotel cache.
|
|
110
|
+
- Push/callback is primary for order confirmation; `queryOrderDetail` is only a compensation path and should not be frequent.
|
|
@@ -51,7 +51,7 @@ Notes:
|
|
|
51
51
|
|
|
52
52
|
## Platform Wrapping Rules
|
|
53
53
|
|
|
54
|
-
Glink
|
|
54
|
+
Glink downstream authentication is handled by the runtime gateway.
|
|
55
55
|
|
|
56
56
|
Client responsibilities:
|
|
57
57
|
|
|
@@ -61,16 +61,16 @@ Client responsibilities:
|
|
|
61
61
|
Do not send:
|
|
62
62
|
|
|
63
63
|
- `partnerCode`
|
|
64
|
-
- `signature` or `sign` used by
|
|
64
|
+
- `signature` or `sign` used by Glink downstream auth
|
|
65
65
|
- `requestType`
|
|
66
|
-
-
|
|
66
|
+
- Glink-side `timestamp`
|
|
67
67
|
- wrapper objects like `header` or `businessRequest`
|
|
68
68
|
|
|
69
69
|
Important exception handling:
|
|
70
70
|
|
|
71
71
|
- `createInvoice` currently still exposes `partnerCode` and `sign` in schema examples and required lists.
|
|
72
72
|
- The route description still says the platform fills those fields automatically.
|
|
73
|
-
- Prefer the route description and treat those fields as
|
|
73
|
+
- Prefer the route description and treat those fields as platform-managed downstream fields.
|
|
74
74
|
|
|
75
75
|
## Credential Acquisition
|
|
76
76
|
|
|
@@ -80,7 +80,7 @@ Sandbox:
|
|
|
80
80
|
|
|
81
81
|
1. The developer applies for app access.
|
|
82
82
|
2. The operator activates the app access with `env_type=sandbox`.
|
|
83
|
-
3. The platform records sandbox
|
|
83
|
+
3. The platform records sandbox Glink mapping and issues a sandbox `open_app_id/open_app_secret`.
|
|
84
84
|
4. The app access becomes `sandbox_active`.
|
|
85
85
|
|
|
86
86
|
Production:
|
|
@@ -94,7 +94,7 @@ Important constraints:
|
|
|
94
94
|
|
|
95
95
|
- Sandbox and production credentials are separate and not interchangeable.
|
|
96
96
|
- Developers can see platform credentials only.
|
|
97
|
-
- Developers cannot see
|
|
97
|
+
- Developers cannot see Glink downstream secrets.
|
|
98
98
|
|
|
99
99
|
## How To View Or Reset Keys
|
|
100
100
|
|
|
@@ -152,6 +152,6 @@ The platform wraps business responses in a common envelope:
|
|
|
152
152
|
Interpretation:
|
|
153
153
|
|
|
154
154
|
- `request_id` and `trace_id` are platform-side tracing keys.
|
|
155
|
-
- `downstream_request_id` is the
|
|
155
|
+
- `downstream_request_id` is the Glink request identifier when available.
|
|
156
156
|
- `code=SUCCESS` means the business call succeeded.
|
|
157
|
-
- `code=SUPPLIER_BIZ_ERROR` means
|
|
157
|
+
- `code=SUPPLIER_BIZ_ERROR` means Glink returned a business error and can still arrive with HTTP `200`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Glink Endpoint Index
|
|
2
2
|
|
|
3
|
-
All routes are public gateway routes. Sign the public path, not the downstream
|
|
3
|
+
All routes are public gateway routes. Sign the public path, not the downstream Glink path.
|
|
4
4
|
|
|
5
5
|
## Static Data
|
|
6
6
|
|
|
@@ -52,6 +52,7 @@ All routes are public gateway routes. Sign the public path, not the downstream s
|
|
|
52
52
|
- `glink.queryHotelIdList`
|
|
53
53
|
- `POST /openapi/v1/glink/queryHotelIdList`
|
|
54
54
|
- Required body fields: none
|
|
55
|
+
- The Open Platform Glink onboarding flow commonly uses `cityCode` to fetch the account's saleable hotel IDs for that city; verify the current swagger/code example before generating strict DTOs.
|
|
55
56
|
- `glink.queryHotelInfo`
|
|
56
57
|
- `POST /openapi/v1/glink/queryHotelInfo`
|
|
57
58
|
- Required body fields: `hotelIds`
|
|
@@ -96,6 +97,9 @@ All routes are public gateway routes. Sign the public path, not the downstream s
|
|
|
96
97
|
- `POST /openapi/v1/glink/queryOrderDetail`
|
|
97
98
|
- Required body fields: none
|
|
98
99
|
- Common fields: `coOrderCode`, `fcOrderCode`
|
|
100
|
+
- Glink order operation push/callback
|
|
101
|
+
- Required by the Open Platform Glink booking flow after `payOrder`.
|
|
102
|
+
- This is an inbound callback capability rather than a normal public `/openapi/v1/glink/*` request route in the current endpoint list. Before implementing, inspect route code or product requirements for the platform callback URL, signature/auth expectations, idempotency key, and retry handling.
|
|
99
103
|
- `glink.queryOrderCheckDetailInfo`
|
|
100
104
|
- `POST /openapi/v1/glink/queryOrderCheckDetailInfo`
|
|
101
105
|
- Required body fields: none
|
|
@@ -113,7 +117,7 @@ All routes are public gateway routes. Sign the public path, not the downstream s
|
|
|
113
117
|
- `glink.createInvoice`
|
|
114
118
|
- `POST /openapi/v1/glink/createInvoice`
|
|
115
119
|
- Business-required fields to focus on: `orderCode`, `invoiceTypeInteger`, `invoiceHeader`, `amount`, `applyId`, `invoiceTitleType`, `getMethod`
|
|
116
|
-
- Schema still marks `partnerCode` and `sign` as required, but route docs say the platform injects
|
|
120
|
+
- Schema still marks `partnerCode` and `sign` as required, but route docs say the platform injects Glink auth fields. Do not send Glink-managed fields from the client.
|
|
117
121
|
- `glink.queryCreditBalance`
|
|
118
122
|
- `POST /openapi/v1/glink/queryCreditBalance`
|
|
119
123
|
- Required body fields: none
|