skillpp 0.1.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.
Files changed (208) hide show
  1. package/COMPATIBILITY.md +58 -0
  2. package/LICENSE +21 -0
  3. package/README.md +307 -0
  4. package/README.zh-CN.md +307 -0
  5. package/SKILL.md +490 -0
  6. package/adapters/binance-ai.md +22 -0
  7. package/adapters/claude.md +21 -0
  8. package/adapters/gemini.md +26 -0
  9. package/adapters/gpt.md +28 -0
  10. package/adapters/kimi.md +26 -0
  11. package/adapters/mimo.md +22 -0
  12. package/adapters/openclaw.md +29 -0
  13. package/assets/skillpp-banner.png +0 -0
  14. package/package.json +59 -0
  15. package/pipelines.md +310 -0
  16. package/prompts/newbie-mode.md +48 -0
  17. package/prompts/router-prompt.md +32 -0
  18. package/prompts/universal-system-prompt.md +41 -0
  19. package/registry.md +209 -0
  20. package/rules.md +323 -0
  21. package/schemas/audit.schema.json +67 -0
  22. package/schemas/checkpoint.schema.json +86 -0
  23. package/schemas/handoff.schema.json +82 -0
  24. package/schemas/token.schema.json +36 -0
  25. package/scripts/compatibility-check.mjs +130 -0
  26. package/scripts/selftest.mjs +384 -0
  27. package/scripts/skillpp.mjs +448 -0
  28. package/scripts/validate-skillpp.mjs +140 -0
  29. package/skillpp.manifest.json +714 -0
  30. package/skills/audit-plus/SKILL.md +612 -0
  31. package/skills/binance/binance/CHANGELOG.md +112 -0
  32. package/skills/binance/binance/LICENSE.md +9 -0
  33. package/skills/binance/binance/SKILL.md +69 -0
  34. package/skills/binance/binance/references/algo.md +21 -0
  35. package/skills/binance/binance/references/alpha.md +9 -0
  36. package/skills/binance/binance/references/auth.md +32 -0
  37. package/skills/binance/binance/references/c2c.md +5 -0
  38. package/skills/binance/binance/references/convert.md +19 -0
  39. package/skills/binance/binance/references/copy-trading.md +6 -0
  40. package/skills/binance/binance/references/crypto-loan.md +27 -0
  41. package/skills/binance/binance/references/derivatives-options-streams.md +25 -0
  42. package/skills/binance/binance/references/derivatives-options.md +85 -0
  43. package/skills/binance/binance/references/derivatives-portfolio-margin-pro-streams.md +5 -0
  44. package/skills/binance/binance/references/derivatives-portfolio-margin-pro.md +34 -0
  45. package/skills/binance/binance/references/derivatives-portfolio-margin-streams.md +5 -0
  46. package/skills/binance/binance/references/derivatives-portfolio-margin.md +146 -0
  47. package/skills/binance/binance/references/dual-investment.md +15 -0
  48. package/skills/binance/binance/references/fiat.md +9 -0
  49. package/skills/binance/binance/references/futures-coin-streams.md +29 -0
  50. package/skills/binance/binance/references/futures-coin.md +109 -0
  51. package/skills/binance/binance/references/futures-usds-streams.md +35 -0
  52. package/skills/binance/binance/references/futures-usds.md +144 -0
  53. package/skills/binance/binance/references/gift-card.md +10 -0
  54. package/skills/binance/binance/references/margin-trading-streams.md +6 -0
  55. package/skills/binance/binance/references/margin-trading.md +101 -0
  56. package/skills/binance/binance/references/mining.md +17 -0
  57. package/skills/binance/binance/references/pay.md +5 -0
  58. package/skills/binance/binance/references/rebate.md +5 -0
  59. package/skills/binance/binance/references/simple-earn.md +56 -0
  60. package/skills/binance/binance/references/spot-streams.md +25 -0
  61. package/skills/binance/binance/references/spot.md +114 -0
  62. package/skills/binance/binance/references/staking.md +59 -0
  63. package/skills/binance/binance/references/sub-account.md +67 -0
  64. package/skills/binance/binance/references/vip-loan.md +27 -0
  65. package/skills/binance/binance/references/wallet.md +75 -0
  66. package/skills/binance/fiat/CHANGELOG.md +11 -0
  67. package/skills/binance/fiat/LICENSE.md +9 -0
  68. package/skills/binance/fiat/SKILL.md +169 -0
  69. package/skills/binance/fiat/references/authentication.md +126 -0
  70. package/skills/binance/fiat/references/sapi-endpoints.md +217 -0
  71. package/skills/binance/onchain-pay/.local.md.example +10 -0
  72. package/skills/binance/onchain-pay/CHANGELOG.md +20 -0
  73. package/skills/binance/onchain-pay/LICENSE.md +9 -0
  74. package/skills/binance/onchain-pay/SKILL.md +466 -0
  75. package/skills/binance/onchain-pay/references/authentication.md +92 -0
  76. package/skills/binance/onchain-pay/scripts/sign_and_call.sh +52 -0
  77. package/skills/binance/p2p/CHANGELOG.md +33 -0
  78. package/skills/binance/p2p/LICENSE.md +9 -0
  79. package/skills/binance/p2p/SKILL.md +1082 -0
  80. package/skills/binance/p2p/references/agent-sapi-api.md +795 -0
  81. package/skills/binance/p2p/references/authentication.md +100 -0
  82. package/skills/binance/payment/SKILL.md +824 -0
  83. package/skills/binance/payment/common.py +560 -0
  84. package/skills/binance/payment/payment_skill.py +86 -0
  85. package/skills/binance/payment/receive.py +109 -0
  86. package/skills/binance/payment/references/setup-guide.md +77 -0
  87. package/skills/binance/payment/requirements.txt +4 -0
  88. package/skills/binance/payment/send.py +952 -0
  89. package/skills/binance/payment/send_extension/__init__.py +43 -0
  90. package/skills/binance/payment/send_extension/base.py +48 -0
  91. package/skills/binance/payment/send_extension/c2c.py +193 -0
  92. package/skills/binance/payment/send_extension/pix.py +316 -0
  93. package/skills/binance/square-post/README.md +62 -0
  94. package/skills/binance/square-post/SKILL.md +171 -0
  95. package/skills/binance/square-post/scripts/lib.mjs +175 -0
  96. package/skills/binance/square-post/scripts/post-image.mjs +80 -0
  97. package/skills/binance/square-post/scripts/post-text.mjs +41 -0
  98. package/skills/binance/square-post/scripts/post-video.mjs +110 -0
  99. package/skills/binance/square-post/scripts/save-key.mjs +34 -0
  100. package/skills/binance-web3/binance-agentic-wallet/SKILL.md +150 -0
  101. package/skills/binance-web3/binance-agentic-wallet/references/authentication.md +136 -0
  102. package/skills/binance-web3/binance-agentic-wallet/references/limit-order.md +204 -0
  103. package/skills/binance-web3/binance-agentic-wallet/references/market-order.md +179 -0
  104. package/skills/binance-web3/binance-agentic-wallet/references/prediction.md +489 -0
  105. package/skills/binance-web3/binance-agentic-wallet/references/preflight.md +66 -0
  106. package/skills/binance-web3/binance-agentic-wallet/references/security.md +47 -0
  107. package/skills/binance-web3/binance-agentic-wallet/references/send.md +53 -0
  108. package/skills/binance-web3/binance-agentic-wallet/references/wallet-setting.md +86 -0
  109. package/skills/binance-web3/binance-agentic-wallet/references/wallet-view.md +312 -0
  110. package/skills/binance-web3/binance-agentic-wallet/references/x402-payment.md +259 -0
  111. package/skills/binance-web3/binance-tokenized-securities-info/SKILL.md +613 -0
  112. package/skills/binance-web3/crypto-market-rank/SKILL.md +91 -0
  113. package/skills/binance-web3/crypto-market-rank/references/cli.md +219 -0
  114. package/skills/binance-web3/crypto-market-rank/scripts/cli.mjs +149 -0
  115. package/skills/binance-web3/meme-rush/SKILL.md +72 -0
  116. package/skills/binance-web3/meme-rush/references/cli.md +158 -0
  117. package/skills/binance-web3/meme-rush/scripts/cli.mjs +101 -0
  118. package/skills/binance-web3/query-address-info/SKILL.md +61 -0
  119. package/skills/binance-web3/query-address-info/references/cli.md +56 -0
  120. package/skills/binance-web3/query-address-info/scripts/cli.mjs +132 -0
  121. package/skills/binance-web3/query-token-audit/SKILL.md +162 -0
  122. package/skills/binance-web3/query-token-info/SKILL.md +83 -0
  123. package/skills/binance-web3/query-token-info/references/cli.md +135 -0
  124. package/skills/binance-web3/query-token-info/scripts/cli.mjs +112 -0
  125. package/skills/binance-web3/trading-signal/SKILL.md +66 -0
  126. package/skills/binance-web3/trading-signal/references/cli.md +90 -0
  127. package/skills/binance-web3/trading-signal/scripts/cli.mjs +92 -0
  128. package/skills/four-meme/four-guard/API-Contract-TaxToken.md +277 -0
  129. package/skills/four-meme/four-guard/API-CreateToken.02-02-2026.md +285 -0
  130. package/skills/four-meme/four-guard/API-Documents.03-03-2026.md +789 -0
  131. package/skills/four-meme/four-guard/AgentIdentifier.abi +585 -0
  132. package/skills/four-meme/four-guard/README.md +21 -0
  133. package/skills/four-meme/four-guard/SKILL.md +31 -0
  134. package/skills/four-meme/four-guard/TaxToken.abi +969 -0
  135. package/skills/four-meme/four-guard/TokenIdentifierSample.js_ +81 -0
  136. package/skills/four-meme/four-guard/TokenIdentifierSample.sol +69 -0
  137. package/skills/four-meme/four-guard/TokenManager.lite.abi +836 -0
  138. package/skills/four-meme/four-guard/TokenManager2.lite.abi +2325 -0
  139. package/skills/four-meme/four-guard/TokenManagerHelper3.abi +999 -0
  140. package/skills/four-meme/four-guard/go.mod +36 -0
  141. package/skills/four-meme/four-guard/go.sum +127 -0
  142. package/skills/four-meme/four-guard/main.go +183 -0
  143. package/skills/four-meme/four-meme-ai/SKILL.md +31 -0
  144. package/skills/four-meme/four-meme-ai/references/agent-creator-and-wallets.md +87 -0
  145. package/skills/four-meme/four-meme-ai/references/api-create-token.md +55 -0
  146. package/skills/four-meme/four-meme-ai/references/contract-addresses.md +47 -0
  147. package/skills/four-meme/four-meme-ai/references/create-token-scripts.md +131 -0
  148. package/skills/four-meme/four-meme-ai/references/errors.md +29 -0
  149. package/skills/four-meme/four-meme-ai/references/event-listening.md +75 -0
  150. package/skills/four-meme/four-meme-ai/references/execute-trade.md +31 -0
  151. package/skills/four-meme/four-meme-ai/references/tax-token-query.md +38 -0
  152. package/skills/four-meme/four-meme-ai/references/token-query-api.md +44 -0
  153. package/skills/four-meme/four-meme-ai/references/token-tax-info.md +77 -0
  154. package/skills/four-meme/four-meme-ai/scripts/8004-balance.ts +52 -0
  155. package/skills/four-meme/four-meme-ai/scripts/8004-register.ts +108 -0
  156. package/skills/four-meme/four-meme-ai/scripts/create-token-api.ts +321 -0
  157. package/skills/four-meme/four-meme-ai/scripts/create-token-chain.ts +102 -0
  158. package/skills/four-meme/four-meme-ai/scripts/create-token-instant.ts +106 -0
  159. package/skills/four-meme/four-meme-ai/scripts/execute-buy.ts +198 -0
  160. package/skills/four-meme/four-meme-ai/scripts/execute-sell.ts +150 -0
  161. package/skills/four-meme/four-meme-ai/scripts/get-public-config.ts +25 -0
  162. package/skills/four-meme/four-meme-ai/scripts/get-recent-events.ts +76 -0
  163. package/skills/four-meme/four-meme-ai/scripts/get-tax-token-info.ts +69 -0
  164. package/skills/four-meme/four-meme-ai/scripts/get-token-info.ts +94 -0
  165. package/skills/four-meme/four-meme-ai/scripts/quote-buy.ts +85 -0
  166. package/skills/four-meme/four-meme-ai/scripts/quote-sell.ts +66 -0
  167. package/skills/four-meme/four-meme-ai/scripts/send-token.ts +98 -0
  168. package/skills/four-meme/four-meme-ai/scripts/token-get.ts +31 -0
  169. package/skills/four-meme/four-meme-ai/scripts/token-list.ts +134 -0
  170. package/skills/four-meme/four-meme-ai/scripts/token-rankings.ts +162 -0
  171. package/skills/four-meme/four-meme-ai/scripts/verify-events.ts +47 -0
  172. package/skills/four-meme/four-meme-integration/SKILL.md +374 -0
  173. package/skills/four-meme/four-meme-integration/references/agent-creator-and-wallets.md +87 -0
  174. package/skills/four-meme/four-meme-integration/references/api-create-token.md +55 -0
  175. package/skills/four-meme/four-meme-integration/references/contract-addresses.md +47 -0
  176. package/skills/four-meme/four-meme-integration/references/create-token-scripts.md +131 -0
  177. package/skills/four-meme/four-meme-integration/references/errors.md +29 -0
  178. package/skills/four-meme/four-meme-integration/references/event-listening.md +75 -0
  179. package/skills/four-meme/four-meme-integration/references/execute-trade.md +31 -0
  180. package/skills/four-meme/four-meme-integration/references/tax-token-query.md +38 -0
  181. package/skills/four-meme/four-meme-integration/references/token-query-api.md +44 -0
  182. package/skills/four-meme/four-meme-integration/references/token-tax-info.md +77 -0
  183. package/skills/four-meme/four-meme-integration/scripts/8004-balance.ts +52 -0
  184. package/skills/four-meme/four-meme-integration/scripts/8004-register.ts +108 -0
  185. package/skills/four-meme/four-meme-integration/scripts/create-token-api.ts +321 -0
  186. package/skills/four-meme/four-meme-integration/scripts/create-token-chain.ts +102 -0
  187. package/skills/four-meme/four-meme-integration/scripts/create-token-instant.ts +106 -0
  188. package/skills/four-meme/four-meme-integration/scripts/execute-buy.ts +198 -0
  189. package/skills/four-meme/four-meme-integration/scripts/execute-sell.ts +150 -0
  190. package/skills/four-meme/four-meme-integration/scripts/get-public-config.ts +25 -0
  191. package/skills/four-meme/four-meme-integration/scripts/get-recent-events.ts +76 -0
  192. package/skills/four-meme/four-meme-integration/scripts/get-tax-token-info.ts +69 -0
  193. package/skills/four-meme/four-meme-integration/scripts/get-token-info.ts +94 -0
  194. package/skills/four-meme/four-meme-integration/scripts/quote-buy.ts +85 -0
  195. package/skills/four-meme/four-meme-integration/scripts/quote-sell.ts +66 -0
  196. package/skills/four-meme/four-meme-integration/scripts/send-token.ts +98 -0
  197. package/skills/four-meme/four-meme-integration/scripts/token-get.ts +31 -0
  198. package/skills/four-meme/four-meme-integration/scripts/token-list.ts +134 -0
  199. package/skills/four-meme/four-meme-integration/scripts/token-rankings.ts +162 -0
  200. package/skills/four-meme/four-meme-integration/scripts/verify-events.ts +47 -0
  201. package/skills/skillpp/contract-profiler/SKILL.md +118 -0
  202. package/skills/skillpp/newbie-tutor/SKILL.md +85 -0
  203. package/skills/skillpp/opportunity-board/SKILL.md +87 -0
  204. package/skills/skillpp/risk-fusion/SKILL.md +146 -0
  205. package/skills/skillpp/scam-pattern-lab/SKILL.md +115 -0
  206. package/skills/skillpp/wallet-doctor/SKILL.md +119 -0
  207. package/skills/skillpp/watchtower/SKILL.md +72 -0
  208. package/tests/compatibility/v0.1.0.json +117 -0
@@ -0,0 +1,795 @@
1
+ # Agent SAPI API Reference
2
+
3
+ Complete API reference for all C2C Agent SAPI endpoints used by the P2P Skill (Phase 3).
4
+
5
+ All endpoints require authentication (API Key + HMAC SHA256 signature).
6
+ See `authentication.md` for signing details.
7
+
8
+ **Base URL:** `https://api.binance.com`
9
+
10
+ **Common Headers:**
11
+ ```
12
+ X-MBX-APIKEY: {your_api_key}
13
+ User-Agent: binance-wallet/1.0.0 (Skill)
14
+ ```
15
+
16
+ **Common Response Wrapper:**
17
+ ```json
18
+ {
19
+ "code": "000000",
20
+ "message": null,
21
+ "data": { ... },
22
+ "success": true
23
+ }
24
+ ```
25
+
26
+ **Paginated Response Wrapper:**
27
+ ```json
28
+ {
29
+ "code": "000000",
30
+ "data": [ ... ],
31
+ "total": 100,
32
+ "success": true
33
+ }
34
+ ```
35
+
36
+ ---
37
+
38
+ ## 1. Order Match APIs
39
+
40
+ ### 1.1 Get Order Detail
41
+
42
+ Get detailed information for a specific order.
43
+
44
+ ```
45
+ POST /sapi/v1/c2c/agent/orderMatch/getUserOrderDetail
46
+ ```
47
+
48
+ **Request Body (JSON):**
49
+
50
+ | Field | Type | Required | Description |
51
+ |-------|------|----------|-------------|
52
+ | orderNumber | String | Yes | Order number to query |
53
+
54
+ **Response (AgentOrderDetailResp):**
55
+
56
+ | Field | Type | Description |
57
+ |-------|------|-------------|
58
+ | orderNumber | String | Order number |
59
+ | advOrderNumber | String | Advertisement order number |
60
+ | tradeType | String | BUY / SELL |
61
+ | orderStatus | Integer | 1=Unpaid, 2=Paid, 3=Appealing, 4=Completed, 6=Cancelled, 7=CancelledBySystem |
62
+ | asset | String | Crypto asset (e.g. USDT) |
63
+ | amount | BigDecimal | Crypto amount |
64
+ | price | BigDecimal | Unit price |
65
+ | totalPrice | BigDecimal | Total fiat amount |
66
+ | fiatUnit | String | Fiat currency code |
67
+ | fiatSymbol | String | Fiat symbol (e.g. ¥) |
68
+ | buyerNickname | String | Buyer nickname (not masked) |
69
+ | sellerNickname | String | Seller nickname (not masked) |
70
+ | createTime | Date | Order creation time |
71
+ | notifyPayTime | Date | Buyer marked paid time |
72
+ | confirmPayTime | Date | Seller confirmed time |
73
+ | cancelTime | Date | Order cancel time |
74
+ | notifyPayEndTime | Date | Payment deadline |
75
+ | confirmPayEndTime | Date | Release deadline |
76
+ | isComplaintAllowed | Boolean | Whether complaint is allowed |
77
+ | complaintStatus | Integer | Complaint status |
78
+ | commissionRate | BigDecimal | Maker commission rate |
79
+ | commission | BigDecimal | Maker commission amount |
80
+ | takerCommissionRate | BigDecimal | Taker commission rate |
81
+ | takerCommission | BigDecimal | Taker commission amount |
82
+ | takerAmount | BigDecimal | Taker net amount |
83
+
84
+ **Example:**
85
+ ```bash
86
+ curl -X POST "https://api.binance.com/sapi/v1/c2c/agent/orderMatch/getUserOrderDetail?timestamp=${TIMESTAMP}&signature=${SIGNATURE}" \
87
+ -H "X-MBX-APIKEY: ${API_KEY}" \
88
+ -H "User-Agent: binance-wallet/1.0.0 (Skill)" \
89
+ -H "Content-Type: application/json" \
90
+ -d '{"orderNumber": "20260315123456789"}'
91
+ ```
92
+
93
+ > **Note:** See `authentication.md` for the complete Bash signing setup.
94
+
95
+ ---
96
+
97
+ ### 1.2 List Orders
98
+
99
+ List orders with rich filters and pagination.
100
+
101
+ ```
102
+ POST /sapi/v1/c2c/agent/orderMatch/listOrders
103
+ ```
104
+
105
+ **Request Body (JSON):**
106
+
107
+ | Field | Type | Required | Default | Description |
108
+ |-------|------|----------|---------|-------------|
109
+ | advNo | String | No | — | Filter by advertisement number |
110
+ | asset | String | No | — | Filter by crypto asset |
111
+ | orderStatus | Integer | No | — | Filter by single status |
112
+ | tradeType | String | No | — | 0=BUY, 1=SELL |
113
+ | payType | Integer | No | — | Filter by payment method type |
114
+ | orderStatusList | List\<Integer\> | No | — | Filter by multiple statuses |
115
+ | startDate | Long | No | — | Start timestamp (ms) |
116
+ | endDate | Long | No | — | End timestamp (ms) |
117
+ | page | Integer | No | 1 | Page number |
118
+ | rows | Integer | No | 20 | Page size (max 20) |
119
+
120
+ **Response (Paginated List of AgentOrderListResp):**
121
+
122
+ | Field | Type | Description |
123
+ |-------|------|-------------|
124
+ | orderNumber | String | Order number |
125
+ | advNo | String | Advertisement number |
126
+ | tradeType | String | Trade type |
127
+ | asset | String | Crypto asset |
128
+ | fiat | String | Fiat currency |
129
+ | fiatSymbol | String | Fiat symbol |
130
+ | amount | String | Crypto amount |
131
+ | totalPrice | String | Total fiat amount |
132
+ | orderStatus | Integer | Status code |
133
+ | createTime | Date | Creation time |
134
+ | confirmPayEndTime | Date | Release deadline |
135
+ | notifyPayEndTime | Date | Payment deadline |
136
+ | buyerNickname | String | Buyer nickname |
137
+ | sellerNickname | String | Seller nickname |
138
+ | commissionRate | BigDecimal | Maker commission rate |
139
+ | commission | BigDecimal | Maker commission |
140
+ | takerCommissionRate | BigDecimal | Taker commission rate |
141
+ | takerCommission | BigDecimal | Taker commission |
142
+ | takerAmount | BigDecimal | Taker net amount |
143
+
144
+ ---
145
+
146
+ ### 1.3 List User Order History
147
+
148
+ List historical orders with pagination.
149
+
150
+ ```
151
+ GET /sapi/v1/c2c/agent/orderMatch/listUserOrderHistory
152
+ ```
153
+
154
+ **Query Parameters:**
155
+
156
+ | Field | Type | Required | Default | Description |
157
+ |-------|------|----------|---------|-------------|
158
+ | startTimestamp | Long | No | 30 days ago | Start timestamp (ms) |
159
+ | endTimestamp | Long | No | now | End timestamp (ms) |
160
+ | tradeType | String | No | — | BUY / SELL |
161
+ | page | Integer | No | 1 | Page number (min 1) |
162
+ | rows | Integer | No | 100 | Page size (min 1, max 100) |
163
+
164
+ **Response (Paginated List of AgentOrderHistoryResp):**
165
+
166
+ | Field | Type | Description |
167
+ |-------|------|-------------|
168
+ | orderNumber | String | Order number |
169
+ | advNo | String | Advertisement number |
170
+ | tradeType | String | Trade type |
171
+ | asset | String | Crypto asset |
172
+ | fiat | String | Fiat currency |
173
+ | fiatSymbol | String | Fiat symbol |
174
+ | amount | String | Crypto amount |
175
+ | totalPrice | String | Total fiat amount |
176
+ | unitPrice | BigDecimal | Unit price |
177
+ | orderStatus | String | Status name (e.g. COMPLETED) |
178
+ | createTime | Date | Creation time |
179
+ | commission | BigDecimal | Commission |
180
+ | takerCommissionRate | BigDecimal | Taker commission rate |
181
+ | takerCommission | BigDecimal | Taker commission |
182
+ | takerAmount | BigDecimal | Taker net amount |
183
+ | counterPartNickName | String | Counterparty nickname (not masked) |
184
+ | payMethodName | String | Payment method name |
185
+ | advertisementRole | String | MAKER / TAKER |
186
+
187
+ ---
188
+
189
+ ## 2. Complaint APIs
190
+
191
+ ### 2.1 Query Complaints
192
+
193
+ Query complaint/appeal records with filters and pagination.
194
+
195
+ ```
196
+ POST /sapi/v1/c2c/agent/complaint/query-complaints
197
+ ```
198
+
199
+ **Request Body (JSON):**
200
+
201
+ | Field | Type | Required | Default | Description |
202
+ |-------|------|----------|---------|-------------|
203
+ | roleIdentity | String | No | — | COMPLAINANT or RESPONDENT |
204
+ | orderNoList | List\<String\> | No | — | Filter by order numbers |
205
+ | complaintStatusList | List\<Integer\> | No | — | Filter by complaint statuses |
206
+ | orderStatusListWhenInitiate | List\<Integer\> | No | — | Filter by order status at complaint time |
207
+ | startTime | Date | No | 90 days ago | Query start time |
208
+ | endTime | Date | No | now | Query end time |
209
+ | page | Integer | No | 1 | Page number |
210
+ | rows | Integer | No | 20 | Page size |
211
+
212
+ **Response (Paginated List of AgentComplaintQueryResp):**
213
+
214
+ | Field | Type | Description |
215
+ |-------|------|-------------|
216
+ | orderNo | String | Order number |
217
+ | complaintNo | Long | Complaint number |
218
+ | complaintStatus | Integer | Complaint status |
219
+ | orderStatusWhenInitiate | Integer | Order status when complaint was filed |
220
+ | complaintCreateTime | Date | Complaint creation time |
221
+ | reason | String | Complaint reason |
222
+ | roleIdentity | String | COMPLAINANT / RESPONDENT |
223
+ | orderFiat | String | Order fiat currency |
224
+ | orderAsset | String | Order crypto asset |
225
+ | orderAmount | BigDecimal | Order amount |
226
+ | orderAmountInUsdt | BigDecimal | Order amount in USDT |
227
+ | disputeAmount | BigDecimal | Dispute amount |
228
+
229
+ ---
230
+
231
+ ## 3. Ads APIs
232
+
233
+ ### 3.1 Get Ad Detail By Number
234
+
235
+ ```
236
+ POST /sapi/v1/c2c/agent/ads/getDetailByNo?advNo={advNo}
237
+ ```
238
+
239
+ **Query Parameters:**
240
+
241
+ | Field | Type | Required | Description |
242
+ |-------|------|----------|-------------|
243
+ | advNo | String | Yes | Advertisement number |
244
+
245
+ > **Note:** This endpoint only returns ads owned by the authenticated user. Querying another user's ad will return error `-1002`.
246
+
247
+ **Response (AgentAdDetailResp):**
248
+
249
+ | Field | Type | Description |
250
+ |-------|------|-------------|
251
+ | advNo | String | Advertisement number |
252
+ | classify | String | mass / profession / block / cash |
253
+ | tradeType | String | BUY / SELL |
254
+ | asset | String | Crypto asset |
255
+ | fiatUnit | String | Fiat currency code |
256
+ | advStatus | Integer | 1=Online, 3=Offline, 4=Closed |
257
+ | priceType | Integer | 1=Fixed, 2=Floating |
258
+ | priceFloatingRatio | BigDecimal | Floating ratio % |
259
+ | price | BigDecimal | Unit price |
260
+ | initAmount | BigDecimal | Initial amount |
261
+ | surplusAmount | BigDecimal | Remaining amount |
262
+ | tradableQuantity | BigDecimal | Tradable quantity |
263
+ | maxSingleTransAmount | BigDecimal | Max fiat per order |
264
+ | minSingleTransAmount | BigDecimal | Min fiat per order |
265
+ | payTimeLimit | Integer | Payment time limit (min) |
266
+ | remarks | String | Remarks |
267
+ | autoReplyMsg | String | Auto reply message |
268
+ | createTime | Date | Creation time |
269
+ | tradeMethods | List\<AgentTradeMethodResp\> | Payment methods |
270
+ | commissionRate | BigDecimal | Commission rate |
271
+ | buyerKycLimit | Integer | Buyer KYC required |
272
+ | buyerRegDaysLimit | Integer | Buyer min reg days |
273
+ | buyerBtcPositionLimit | BigDecimal | Buyer min BTC |
274
+ | takerAdditionalKycRequired | Integer | Extra verification |
275
+
276
+ **AgentTradeMethodResp:**
277
+
278
+ | Field | Type | Description |
279
+ |-------|------|-------------|
280
+ | identifier | String | Method identifier (e.g. ALIPAY) |
281
+ | tradeMethodName | String | Display name |
282
+ | iconUrlColor | String | Icon URL |
283
+
284
+ ---
285
+
286
+ ### 3.2 List Ads With Pagination
287
+
288
+ List current user's own advertisements.
289
+
290
+ ```
291
+ POST /sapi/v1/c2c/agent/ads/listWithPagination
292
+ ```
293
+
294
+ **Request Body (JSON):**
295
+
296
+ | Field | Type | Required | Default | Description |
297
+ |-------|------|----------|---------|-------------|
298
+ | page | Integer | No | 1 | Page number |
299
+ | rows | Integer | No | 20 | Page size |
300
+
301
+ **Response:** Paginated list of `AgentAdDetailResp` (same schema as 3.1).
302
+
303
+ ---
304
+
305
+ ### 3.3 Search Ads
306
+
307
+ Search market ads with rich filters.
308
+
309
+ ```
310
+ POST /sapi/v1/c2c/agent/ads/search
311
+ ```
312
+
313
+ **Request Body (JSON):**
314
+
315
+ | Field | Type | Required | Default | Description |
316
+ |-------|------|----------|---------|-------------|
317
+ | publisherType | String | No | — | "user" or "merchant" |
318
+ | fiat | String | Yes | — | Fiat currency |
319
+ | asset | String | Yes | — | Crypto asset |
320
+ | tradeType | String | Yes | — | BUY / SELL |
321
+ | payTypes | List\<String\> | No | — | Payment method filters |
322
+ | transAmount | BigDecimal | No | — | Transaction amount filter |
323
+ | countries | List\<String\> | No | — | Country filters |
324
+ | classifies | List\<String\> | No | auto | Ad classifies filter |
325
+ | page | Integer | No | 1 | Page number |
326
+ | rows | Integer | No | 20 | Page size |
327
+
328
+ **Response (Paginated List of AgentAdSearchResp):**
329
+
330
+ | Field | Type | Description |
331
+ |-------|------|-------------|
332
+ | adv | AgentAdDetailResp | Ad detail (see 3.1) |
333
+ | advertiser | AgentAdvertiserResp | Advertiser info |
334
+
335
+ **AgentAdvertiserResp:**
336
+
337
+ | Field | Type | Description |
338
+ |-------|------|-------------|
339
+ | userNo | String | User number |
340
+ | nickName | String | Nickname (not masked) |
341
+ | orderCount | Integer | Total order count |
342
+ | monthOrderCount | Integer | 30-day orders |
343
+ | monthFinishRate | BigDecimal | 30-day completion rate |
344
+ | advConfirmTime | Integer | Avg release time (seconds) |
345
+ | userType | String | user / merchant |
346
+ | tagIconUrls | List\<String\> | Tag icon URLs |
347
+
348
+ ---
349
+
350
+ ### 3.4 Get Reference Price
351
+
352
+ Get market reference prices for pricing decisions.
353
+
354
+ ```
355
+ POST /sapi/v1/c2c/agent/ads/getReferencePrice
356
+ ```
357
+
358
+ **Request Body (JSON):**
359
+
360
+ | Field | Type | Required | Description |
361
+ |-------|------|----------|-------------|
362
+ | assets | List\<String\> | No | Crypto assets (max 3), e.g. ["BTC","ETH","USDT"] |
363
+ | fiatCurrency | String | Yes | Fiat currency |
364
+ | tradeType | String | Yes | BUY or SELL |
365
+ | payType | String | No | Payment method filter |
366
+
367
+ **Response (List of AgentAdReferencePriceResp):**
368
+
369
+ | Field | Type | Description |
370
+ |-------|------|-------------|
371
+ | asset | String | Crypto asset |
372
+ | currency | String | Fiat currency |
373
+ | currencyScale | Integer | Fiat decimal scale |
374
+ | currencySymbol | String | Fiat symbol |
375
+ | referencePrice | BigDecimal | Reference exchange rate |
376
+ | assetScale | Integer | Asset decimal scale |
377
+ | priceScale | Integer | Price decimal scale |
378
+
379
+ ---
380
+
381
+ ### 3.5 Get Available Ads Category
382
+
383
+ Get ad categories the current user can publish.
384
+
385
+ ```
386
+ GET /sapi/v1/c2c/agent/ads/getAvailableAdsCategory
387
+ ```
388
+
389
+ **No request body.**
390
+
391
+ **Response (AgentAdsCategoryResp):**
392
+
393
+ | Field | Type | Description |
394
+ |-------|------|-------------|
395
+ | advClassifies | List\<String\> | Available classifies: mass, profession, block, cash |
396
+
397
+ ---
398
+
399
+ ### 3.6 Get User Payment Methods
400
+
401
+ Get current user's configured payment methods (agent-safe: no account details).
402
+
403
+ ```
404
+ GET /sapi/v1/c2c/agent/ads/getPayMethodByUserId
405
+ ```
406
+
407
+ **No request body.**
408
+
409
+ **Response (List of AgentPayMethodResp):**
410
+
411
+ | Field | Type | Description |
412
+ |-------|------|-------------|
413
+ | payId | Long | Payment method ID (needed for SELL ads) |
414
+ | identifier | String | Method identifier (e.g. ALIPAY) |
415
+ | tradeMethodName | String | Display name |
416
+
417
+ > **Note:** For SELL ads, use `payId` in tradeMethods. For BUY ads, use `identifier` from system trade methods.
418
+
419
+ ---
420
+
421
+ ### 3.7 List All System Trade Methods
422
+
423
+ List all available trade methods in the system.
424
+
425
+ ```
426
+ POST /sapi/v1/c2c/agent/ads/listAllTradeMethods
427
+ ```
428
+
429
+ **No request body.**
430
+
431
+ **Response (List of TradeMethodBaseInfoVO):**
432
+
433
+ | Field | Type | Description |
434
+ |-------|------|-------------|
435
+ | identifier | String | Trade method identifier |
436
+ | tradeMethodName | String | Display name |
437
+ | (other fields) | — | Additional method info |
438
+
439
+ ---
440
+
441
+ ### 3.8 Post Ad (Write Operation)
442
+
443
+ Publish a new advertisement. **Requires merchant permission.**
444
+
445
+ ```
446
+ POST /sapi/v1/c2c/agent/ads/post
447
+ ```
448
+
449
+ **Request Body (JSON):**
450
+
451
+ | Field | Type | Required | Default | Description |
452
+ |-------|------|----------|---------|-------------|
453
+ | classify | String | Yes | "mass" | Ad category |
454
+ | tradeType | String | Yes | — | 0=BUY, 1=SELL |
455
+ | asset | String | Yes | — | Crypto asset |
456
+ | fiatUnit | String | Yes | — | Fiat currency |
457
+ | priceType | Integer | Yes | — | 1=Fixed, 2=Floating |
458
+ | priceFloatingRatio | BigDecimal | Conditional | — | Required if priceType=2 |
459
+ | rateFloatingRatio | BigDecimal | No | — | Exchange rate floating |
460
+ | price | BigDecimal | Conditional | — | Required if priceType=1 |
461
+ | initAmount | BigDecimal | Yes | — | Total crypto amount |
462
+ | maxSingleTransAmount | BigDecimal | Yes | — | Max fiat per order |
463
+ | minSingleTransAmount | BigDecimal | Yes | — | Min fiat per order |
464
+ | buyerKycLimit | Integer | Yes | — | 0=No, 1=Yes |
465
+ | buyerRegDaysLimit | Integer | No | — | Min buyer reg days |
466
+ | buyerBtcPositionLimit | BigDecimal | No | — | Min buyer BTC |
467
+ | remarks | String | No | — | Max 1000 chars |
468
+ | autoReplyMsg | String | No | — | Max 1000 chars |
469
+ | onlineNow | Boolean | No | — | Go online immediately |
470
+ | payTimeLimit | Integer | No | — | Payment time limit (min) |
471
+ | tradeMethods | List\<TradeMethod\> | Yes | — | Payment methods |
472
+ | takerAdditionalKycRequired | Integer | No | — | 0=No, 1=Yes |
473
+ | launchCountry | List\<String\> | No | — | Target countries |
474
+
475
+ **TradeMethod object:**
476
+
477
+ | Field | Type | Description |
478
+ |-------|------|-------------|
479
+ | payId | Long | User's payment method ID (for SELL ads) |
480
+ | payType | String | Payment type |
481
+ | identifier | String | Trade method identifier (for BUY ads) |
482
+
483
+ **Response:** `CommonRet<String>` where data is the new ad number (advNo).
484
+
485
+ ---
486
+
487
+ ### 3.9 Update Ad (Write Operation)
488
+
489
+ Update an existing advertisement. **Requires merchant permission.**
490
+
491
+ > **Important — full-object update:** The downstream service validates the complete ad object, not just the changed fields. Sending only `advNo` + one field (e.g. `price`) will result in error `-9000`. The recommended workflow is:
492
+ > 1. Call `getDetailByNo?advNo={advNo}` to fetch the current ad.
493
+ > 2. Merge your changes into the full response object.
494
+ > 3. Submit the merged object to this endpoint.
495
+
496
+ ```
497
+ POST /sapi/v1/c2c/agent/ads/update
498
+ ```
499
+
500
+ **Request Body (JSON):**
501
+
502
+ | Field | Type | Required | Description |
503
+ |-------|------|----------|-------------|
504
+ | advNo | String | Yes | Ad number to update |
505
+ | tradeType | String | No | 0=BUY, 1=SELL |
506
+ | asset | String | No | Crypto asset |
507
+ | fiatUnit | String | No | Fiat currency |
508
+ | priceType | Integer | No | 1=Fixed, 2=Floating |
509
+ | priceFloatingRatio | BigDecimal | No | Floating ratio |
510
+ | rateFloatingRatio | BigDecimal | No | Rate floating |
511
+ | price | BigDecimal | No | Fixed price |
512
+ | initAmount | BigDecimal | No | Total amount |
513
+ | maxSingleTransAmount | BigDecimal | No | Max fiat per order |
514
+ | minSingleTransAmount | BigDecimal | No | Min fiat per order |
515
+ | buyerKycLimit | Integer | No | 0=No, 1=Yes |
516
+ | buyerRegDaysLimit | Integer | No | Min reg days |
517
+ | buyerBtcPositionLimit | BigDecimal | No | Min BTC |
518
+ | remarks | String | No | Remarks |
519
+ | autoReplyMsg | String | No | Auto reply |
520
+ | payTimeLimit | Integer | No | Payment time limit |
521
+ | tradeMethods | List\<TradeMethod\> | No | Payment methods |
522
+ | advStatus | Integer | No | 1=Online, 3=Offline, 4=Closed |
523
+ | takerAdditionalKycRequired | Integer | No | 0=No, 1=Yes |
524
+ | launchCountry | List\<String\> | No | Countries |
525
+
526
+ **Response:** `CommonRet<Boolean>` — true if update succeeded.
527
+
528
+ ---
529
+
530
+ ### 3.10 Update Ad Status (Write Operation)
531
+
532
+ Batch update advertisement status (online/offline/close).
533
+
534
+ ```
535
+ POST /sapi/v1/c2c/agent/ads/updateStatus
536
+ ```
537
+
538
+ **Request Body (JSON):**
539
+
540
+ | Field | Type | Required | Description |
541
+ |-------|------|----------|-------------|
542
+ | advNos | List\<String\> | Yes | Ad numbers to update (min 1) |
543
+ | advStatus | Integer | Yes | 1=Online, 3=Offline, 4=Closed |
544
+
545
+ **Response (AgentAdUpdateStatusResp):**
546
+
547
+ | Field | Type | Description |
548
+ |-------|------|-------------|
549
+ | status | Boolean | Overall success/failure |
550
+ | failList | List\<StatusUpdateResult\> | Failed items (if any) |
551
+
552
+ **StatusUpdateResult:**
553
+
554
+ | Field | Type | Description |
555
+ |-------|------|-------------|
556
+ | advNo | String | Failed ad number |
557
+ | errorCode | String | Error code |
558
+ | errorMessage | String | Error description |
559
+
560
+ ---
561
+
562
+ ## 4. Merchant APIs
563
+
564
+ ### 4.1 Get Merchant Ad Details
565
+
566
+ Get merchant public profile with buy/sell ad listings.
567
+
568
+ ```
569
+ GET /sapi/v1/c2c/agent/merchant/getAdDetails?merchantNo={merchantNo}
570
+ ```
571
+
572
+ **Query Parameters:**
573
+
574
+ | Field | Type | Required | Description |
575
+ |-------|------|----------|-------------|
576
+ | merchantNo | String | Yes | Merchant number |
577
+
578
+ **Response (AgentMerchantAdsDetailResp):**
579
+
580
+ | Field | Type | Description |
581
+ |-------|------|-------------|
582
+ | merchant | AgentMerchantDetailResp | Merchant profile |
583
+ | buyList | List\<AgentAdDetailResp\> | Buy advertisements |
584
+ | sellList | List\<AgentAdDetailResp\> | Sell advertisements |
585
+
586
+ **AgentMerchantDetailResp:**
587
+
588
+ | Field | Type | Description |
589
+ |-------|------|-------------|
590
+ | merchantNo | String | Merchant number |
591
+ | userType | String | user / merchant |
592
+ | nickName | String | Nickname (not masked) |
593
+ | orderCount | Integer | Total order count |
594
+ | monthOrderCount | Integer | 30-day orders |
595
+ | monthFinishRate | BigDecimal | 30-day completion rate |
596
+ | advConfirmTime | Integer | Avg release time (s) |
597
+ | onlineStatus | String | 0=Offline, 1=Online |
598
+ | registerDays | Integer | Registration days |
599
+ | firstOrderDays | Integer | Days since first order |
600
+ | avgReleaseTimeOfLatest30day | Double | 30-day avg release (s) |
601
+ | avgPayTimeOfLatest30day | Double | 30-day avg payment (s) |
602
+ | completedOrderNumOfLatest30day | Long | 30-day completed orders |
603
+
604
+ ---
605
+
606
+ ## 5. Support APIs
607
+
608
+ ### 5.1 List Digital Currencies
609
+
610
+ ```
611
+ POST /sapi/v1/c2c/agent/digitalCurrency/list
612
+ ```
613
+
614
+ **No request body.**
615
+
616
+ **Response:** `List<DigitalCurrencyResponse>` — all supported digital currencies.
617
+
618
+ ---
619
+
620
+ ### 5.2 List Fiat Currencies
621
+
622
+ ```
623
+ POST /sapi/v1/c2c/agent/fiatCurrency/list
624
+ ```
625
+
626
+ **No request body.**
627
+
628
+ **Response:** `List<FiatCurrencyResponse>` — all supported fiat currencies.
629
+
630
+ ---
631
+
632
+ ## Authentication Notes
633
+
634
+ All Agent SAPI endpoints share the same authentication mechanism:
635
+
636
+ 1. All requests require `timestamp` and `signature` query parameters
637
+ 2. **SAPI signing: DO NOT sort parameters** — keep insertion order
638
+ 3. Required headers: `X-MBX-APIKEY` + `User-Agent`
639
+ 4. See `authentication.md` for complete signing process
640
+
641
+ ## Privacy & Security
642
+
643
+ All Agent SAPI responses are **pre-filtered** at the DTO level:
644
+ - **Excluded:** real names, phone numbers, emails, bank accounts, payment details, KYC info
645
+ - **Included:** nicknames (not masked), order/ad data, trade statistics
646
+ - The Agent field filter (`AgentFieldFilter`) handles any runtime masking needed
647
+
648
+ ## 6. File Upload (AgentFileUploadController)
649
+
650
+ Base path: `/sapi/v1/c2c/agent/file-upload`
651
+
652
+ ### 6.1 Get S3 Presigned URL
653
+
654
+ ```
655
+ GET /sapi/v1/c2c/agent/file-upload/get-s3-presigned-url
656
+ ```
657
+
658
+ Get a presigned S3 URL for uploading complaint evidence files. The URL is valid for 5 minutes.
659
+
660
+ **Query Parameters:**
661
+
662
+ | Parameter | Type | Required | Description |
663
+ |-----------|------|----------|-------------|
664
+ | fileName | String | Yes | File name with extension, e.g. `proof.jpg` |
665
+ | scenario | String | No | Upload scenario. Default: `complaint`. Agent only supports `complaint`. |
666
+
667
+ **Response:** `S3FileUrlInfo`
668
+
669
+ | Field | Type | Description |
670
+ |-------|------|-------------|
671
+ | uploadUrl | String | S3 presigned upload URL (PUT to this URL with file binary) |
672
+ | filePath | String | Final file path in S3 (use this in submit-evidence `fileUrls`) |
673
+
674
+ **Supported file types (complaint scenario):**
675
+ `txt, doc, xls, docx, xlsx, jpg, jpeg, png, pdf, mp3, mp4, avi, rm, rmvb, mov, wmv`
676
+
677
+ **Upload flow:**
678
+ 1. Call this endpoint to get `uploadUrl` and `filePath`
679
+ 2. `PUT` the file binary to `uploadUrl` (must complete within 5 minutes)
680
+ 3. Use `filePath` in the `submit-evidence` request
681
+
682
+ ---
683
+
684
+ ## 7. Complaint Operations (AgentComplaintController — Extended)
685
+
686
+ These endpoints extend the existing complaint controller (Section 2).
687
+
688
+ ### 7.1 Submit Appeal Evidence
689
+
690
+ ```
691
+ POST /sapi/v1/c2c/agent/complaint/submit-evidence
692
+ ```
693
+
694
+ Submit supplementary evidence for an existing complaint/appeal.
695
+
696
+ **Request Body:** `AgentComplaintSupplementReq`
697
+
698
+ | Field | Type | Required | Description |
699
+ |-------|------|----------|-------------|
700
+ | orderNo | String | Yes | Order number |
701
+ | description | String | Yes | Evidence description (1-500 chars) |
702
+ | fileUrls | List\<String\> | No | List of S3 file paths from presigned upload |
703
+
704
+ **Response:** `Boolean` — `true` if evidence submitted successfully.
705
+
706
+ **Error cases:**
707
+ - Order not found / not in appeal → error response
708
+ - No active complaint for order → error response
709
+ - File URLs not from valid S3 upload → may fail validation
710
+
711
+ ---
712
+
713
+ ### 7.2 Get Complaint Flows (Timeline)
714
+
715
+ ```
716
+ POST /sapi/v1/c2c/agent/complaint/get-complaint-flows
717
+ ```
718
+
719
+ Get the chronological timeline of a complaint process, including all actions, evidence submissions, and CS reviews.
720
+
721
+ **Request Body:** `AgentComplaintFlowQueryReq`
722
+
723
+ | Field | Type | Required | Description |
724
+ |-------|------|----------|-------------|
725
+ | orderNo | String | Yes | Order number |
726
+ | complaintNo | Long | No | Specific complaint number (optional; narrows to specific complaint) |
727
+
728
+ **Response:** `List<AgentComplaintFlowResp>`
729
+
730
+ | Field | Type | Description |
731
+ |-------|------|-------------|
732
+ | complaintNo | Long | Complaint number |
733
+ | orderNo | String | Order number |
734
+ | infoType | Integer | Flow info type (1=Initiated, 2=Evidence, 3=CS Note, 4=Resolution) |
735
+ | description | String | Flow entry description |
736
+ | fileUrls | List\<String\> | Evidence file URLs (CDN-assembled, directly accessible) |
737
+ | creatorNickName | String | Creator nickname |
738
+ | operatorName | String | Operator name (CS agent if applicable) |
739
+ | remark | String | Remark (plain text) |
740
+ | remarkHtml | String | Remark (HTML version; takes precedence over `remark` when available) |
741
+ | createTime | Date | Flow entry creation time |
742
+ | source | String | Flow info source |
743
+
744
+ ---
745
+
746
+ ### 7.3 Cancel Complaint
747
+
748
+ ```
749
+ POST /sapi/v1/c2c/agent/complaint/cancel-complaint
750
+ ```
751
+
752
+ Cancel (withdraw) an existing complaint/appeal for an order. This is an irreversible action.
753
+
754
+ **Request Body:** `AgentComplaintCancelReq`
755
+
756
+ | Field | Type | Required | Description |
757
+ |-------|------|----------|-------------|
758
+ | orderNo | String | Yes | Order number of the complaint to cancel |
759
+
760
+ **Response:** `Boolean` — `true` if the complaint was successfully cancelled.
761
+
762
+ **Error cases:**
763
+ - Order not found → error response
764
+ - No active complaint for order → error response
765
+ - Complaint already resolved/closed → error response
766
+ - User not the complaint initiator → error response
767
+
768
+ **Important:** The agent MUST confirm with the user before calling this endpoint, as cancelling an appeal is irreversible and the user forfeits their dispute rights.
769
+
770
+ ---
771
+
772
+ ### 7.4 Get Complaint Reasons
773
+
774
+ ```
775
+ POST /sapi/v1/c2c/agent/complaint/get-complaint-reasons
776
+ ```
777
+
778
+ Get available complaint/appeal reasons for a given order. Returns localized reason descriptions.
779
+
780
+ **Request Body:** `AgentComplaintCancelReq` (reused — only needs `orderNo`)
781
+
782
+ | Field | Type | Required | Description |
783
+ |-------|------|----------|-------------|
784
+ | orderNo | String | Yes | Order number to get complaint reasons for |
785
+
786
+ **Response:** `List<AgentComplaintReasonResp>`
787
+
788
+ | Field | Type | Description |
789
+ |-------|------|-------------|
790
+ | reasonCode | Integer | Reason code identifier |
791
+ | reasonDesc | String | Localized reason description |
792
+
793
+ **Error cases:**
794
+ - Order not found → error response
795
+ - Order not in a state where complaints are applicable → error response