{"id":"4040547b-ac07-4201-bb07-391e61ffa34e","entityType":"agent","slug":"clawhub-linkfox-ai-linkfox-temu-returns-refunds-us","name":"Temu美国站-退货退款","canonicalUrl":"https://www.xpersona.co/agent/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us","canonicalPath":"/agent/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us","generatedAt":"2026-10-10T21:48:57.169Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:37:18.992Z","emptyReason":null},"description":"Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.4K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-temu-returns-refunds-us","sourceUrl":"https://clawhub.ai/linkfox-ai/linkfox-temu-returns-refunds-us","homepage":"https://clawhub.ai/linkfox-ai/skills/linkfox-temu-returns-refunds-us","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/linkfox-ai/linkfox-temu-returns-refunds-us","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/linkfox-ai/skills/linkfox-temu-returns-refunds-us","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":63,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Temu美国站-退货退款 technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:37:18.992Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:37:18.992Z","emptyReason":null},"stars":null,"forks":null,"downloads":1357,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"1.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:37:18.992Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T15:37:18.992Z","lastCrawledAt":"2026-10-10T15:37:18.992Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T15:37:18.992Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-08-14T15:19:51.219Z","changelog":"Update from 1.0.5 to 1.0.6","fileCount":42,"zipByteSize":63091},{"version":"1.0.5","createdAt":"2026-08-07T11:24:11.714Z","changelog":"Update from 1.0.4 to 1.0.5","fileCount":42,"zipByteSize":63174},{"version":"1.0.4","createdAt":"2026-07-13T12:42:55.652Z","changelog":"Update from 1.0.3 to 1.0.4","fileCount":40,"zipByteSize":54117},{"version":"1.0.3","createdAt":"2026-07-06T11:48:40.671Z","changelog":"Update from 1.0.2 to 1.0.3","fileCount":40,"zipByteSize":53418},{"version":"1.0.2","createdAt":"2026-07-03T09:48:39.973Z","changelog":"Update from 1.0.0 to 1.0.2","fileCount":39,"zipByteSize":51980},{"version":"1.0.0","createdAt":"2026-05-28T06:36:52.584Z","changelog":"Initial release","fileCount":40,"zipByteSize":50458}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-temu-returns-refunds-us","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s171g8b6m2khwdy9ye8bxj0wx183vd4z:linkfox-temu-returns-refunds-us` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/linkfox-ai/linkfox-temu-returns-refunds-us before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T21:48:57.166Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-linkfox-ai-linkfox-temu-returns-refunds-us/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T15:37:18.992Z","emptyReason":null},"readme":"Skill: Temu美国站-退货退款\n\nOwner: linkfox-ai\n\nSummary: Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-08-14T15:19:51.219Z | user\n\nUpdate from 1.0.5 to 1.0.6\n\nv1.0.5 | 2026-08-07T11:24:11.714Z | user\n\nUpdate from 1.0.4 to 1.0.5\n\nv1.0.4 | 2026-07-13T12:42:55.652Z | user\n\nUpdate from 1.0.3 to 1.0.4\n\nv1.0.3 | 2026-07-06T11:48:40.671Z | user\n\nUpdate from 1.0.2 to 1.0.3\n\nv1.0.2 | 2026-07-03T09:48:39.973Z | user\n\nUpdate from 1.0.0 to 1.0.2\n\nv1.0.0 | 2026-05-28T06:36:52.584Z | user\n\nInitial release\n\nArchive index:\n\nArchive v1.0.6: 42 files, 63091 bytes\n\nFiles: references/access-token.md (4604b), references/api.md (6168b), references/apis/bg-aftersales-aftersales-list-get.md (4743b), references/apis/bg-aftersales-parentaftersales-list-get.md (7264b), references/apis/bg-aftersales-parentreturnorder-get.md (3584b), references/apis/README.md (1882b), references/apis/temu-aftersales-carrier-get.md (3021b), references/apis/temu-aftersales-parentaftersales-detail-get.md (7536b), references/apis/temu-aftersales-returnaddress-get.md (4425b), references/apis/temu-aftersales-returnlabel-prepare-get.md (4378b), references/apis/temu-aftersales-signature-get.md (2926b), references/apis/temu-aftersales-upload-returnlabel.md (6415b), references/authorization-flow.md (1186b), references/onboarding.md (2046b), references/partner-us-catalog.md (4787b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12434b), scripts/_temu_token_store.py (4273b), scripts/_temu_us_common.py (3104b), scripts/_us_returns_refunds_script.py (524b), scripts/check_linkfox_token.py (1798b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/onboarding.py (24089b), scripts/save_temu_access_token.py (1377b), scripts/temu_file_download.py (1695b), scripts/temu_proxy.py (2138b), scripts/temu_token_guide.py (1594b), scripts/temu_us_file_download.py (694b), scripts/temu_us_proxy.py (920b), scripts/us_returns_refunds_aftersales_aftersales_list_get.py (299b), scripts/us_returns_refunds_aftersales_carrier_get.py (270b), scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py (321b), scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py (317b), scripts/us_returns_refunds_aftersales_parentreturnorder_get.py (302b), scripts/us_returns_refunds_aftersales_returnaddress_get.py (291b), scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py (315b), scripts/us_returns_refunds_aftersales_signature_get.py (279b), scripts/us_returns_refunds_aftersales_upload_returnlabel.py (294b), skill-card.md (2970b), SKILL.md (6664b), _meta.json (150b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: linkfox-temu-returns-refunds-us\ndescription: Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。\n---\n\n# Temu 美国站 — 退货与退款（Returns & Refunds）\n\n本 skill（`linkfox-temu-returns-refunds-us`）覆盖 Partner Platform for US **Returns & Refunds / 电商退货与退款**（及关联 **After-sales** 退货退款类）相关 `bg.*` / `temu.*` 接口（`menu_code` 与各 `sub_menu_code` 以 Partner 后台为准，见 [partner-us-catalog.md](./references/partner-us-catalog.md)）。\n\n已接入 **9** 条 Partner **Return and Refund** 接口，清单见 [partner-us-catalog.md](./references/partner-us-catalog.md)。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 退货退款 OpenAPI（`us_returns_refunds_*`、`temu_us_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| **退货与退款**（本 skill） | **`linkfox-temu-returns-refunds-us`** |\n| 买家发起**取消订单**（非退货退款全流程） | `linkfox-temu-cancel-order-us` |\n| 卖家发起**取消订单** / 缺货取消 / 申诉 | `linkfox-temu-cancel-order-us` |\n| 订单列表/详情/金额/售后上下文 | `linkfox-temu-order-us` |\n| 商品管理 | `linkfox-temu-manage-product-us` |\n| 履约/发货 | `linkfox-temu-fulfillment-us` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-temu-returns-refunds-us-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 默认参数\n\n| 字段 | 默认 | 说明 |\n|------|------|------|\n| site | `us` | Partner US |\n| managementType | `semi-managed` | 半托管（具体接口以 Partner 文档为准） |\n| tokenPurpose | `order-shipping` | 订单/售后场景 token（见 [access-token.md](./references/access-token.md)） |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`（`storeKey` 时建议带 `tokenPurpose=order-shipping`）\n\n## Scripts\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_us_proxy.py` | 任意 `type` 通用转发 |\n| `temu_us_file_download.py` | 加签文件下载 |\n| `us_returns_refunds_aftersales_parentaftersales_list_get.py` | `bg.aftersales.parentaftersales.list.get` |\n| `us_returns_refunds_aftersales_aftersales_list_get.py` | `bg.aftersales.aftersales.list.get` |\n| `us_returns_refunds_aftersales_parentaftersales_detail_get.py` | `temu.aftersales.parentaftersales.detail.get` |\n| `us_returns_refunds_aftersales_parentreturnorder_get.py` | `bg.aftersales.parentreturnorder.get` |\n| `us_returns_refunds_aftersales_returnaddress_get.py` | `temu.aftersales.returnaddress.get` |\n| `us_returns_refunds_aftersales_returnlabel_prepare_get.py` | `temu.aftersales.returnlabel.prepare.get` |\n| `us_returns_refunds_aftersales_signature_get.py` | `temu.aftersales.signature.get` |\n| `us_returns_refunds_aftersales_upload_returnlabel.py` | `temu.aftersales.upload.returnlabel` |\n| `us_returns_refunds_aftersales_carrier_get.py` | `temu.aftersales.carrier.get` |\n\n## 接入更多接口（约定）\n\n你每提供一条 Partner 文档（`type` + `sub_menu_code` + URL + Request/Response 参数表），将：\n\n1. 新增 `references/apis/<type-slug>.md`（完整入参/出参层级）\n2. 新增 `scripts/us_returns_refunds_<slug>.py`（调用 `_us_returns_refunds_script.run_cli`）\n3. 更新 [partner-us-catalog.md](./references/partner-us-catalog.md)、[apis/README.md](./references/apis/README.md) 与本表\n\n## 示例（通用代理）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\n\npython scripts/temu_us_proxy.py '{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"type\": \"<TEMU_API_TYPE>\",\n  \"params\": {\n    \"request\": {}\n  }\n}'\n```\n\n**Feedback：** `skillName`：`linkfox-temu-returns-refunds-us`\n\n## 网关与授权脚本\n\n| 脚本 | 说明 |\n|------|------|\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token |\n| `get_temu_access_token.py` | 读取已保存 token |\n| `temu_proxy.py` | 通用网关转发（多 site） |\n| `temu_file_download.py` | 加签文件下载（多 site） |\n\n授权说明：[references/access-token.md](./references/access-token.md)\n\n## 积分消耗规则\n\n不消耗积分。\n\nFile v1.0.6:references/apis/README.md\n\n# Returns & Refunds — 接口文档索引\n\n每个 `type` 单独一份文档。网关见 [../api.md](../api.md)；目录见 [../partner-us-catalog.md](../partner-us-catalog.md)。\n\n## 父售后单 / 列表与详情\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n\n## 退货物流 / 地址 / 面单\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n## 承运商与签名\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n\n> 买家/卖家**取消订单**见 `linkfox-temu-cancel-order-us`。\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-returns-refunds-us\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786720791219\n}\n\nFile v1.0.6:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=us` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 美国站 | openapi-b-us.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：美国站、英国站等需分别登录对应后台获取 Token。\n3. **有效期**：Token 会过期，过期后重新在后台复制并 `save_temu_access_token.py`。\n4. **IP 白名单**：需联系紫鸟开放平台配置调用 IP。\n5. **参数小写**：`site`、`managementType` 必须小写。\n\n## 脚本一览\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_token_guide.py` | 按店铺类型/用途输出授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token（默认脱敏）|\n| `get_temu_access_token.py` | 读取指定 store 的 token |\n\nFile v1.0.6:references/api.md\n\n# linkfox-temu-returns-refunds-us — API 参考\n\nTemu **美国站退货与退款（Returns & Refunds）**，经本 skill `temu_us_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\n\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。建议 token 见 `references/access-token.md`（`tokenPurpose=order-shipping`）。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n---\n\n## 调用规范\n\n| 项 | 说明 |\n|----|------|\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\n| 退货退款 OpenAPI | `POST /temu/proxy` |\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_us_file_download.py`） |\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\n| 默认 | `site=us`，`managementType=semi-managed`，`tokenPurpose=order-shipping` |\n| 上游 OpenAPI（US） | `https://openapi-b-us.temu.com/openapi/router`（网关按 `site` 解析） |\n\n### 网关请求 Body（`/temu/proxy`）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| site | string | 是 | `us`（本 skill 默认） |\n| managementType | string | 是 | `semi-managed` |\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\n| tokenPurpose | string | 否 | 建议 **`order-shipping`** |\n| type | string | 是 | Temu 接口名，如 Partner Returns & Refunds 菜单下的 `bg.*` / `temu.*` |\n| params | object | 否 | 业务参数；多数接口业务块在 **`params.request`** |\n\n### 网关响应\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\n\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\n\n### 脚本调用\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/temu_us_proxy.py '{\"accessToken\":\"TOKEN\",\"tokenPurpose\":\"order-shipping\",\"type\":\"<API_TYPE>\",\"params\":{\"request\":{}}}'\n```\n\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\n\n---\n\n## 接口一览\n\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-us-catalog.md](./partner-us-catalog.md)。\n\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)（随接入递增）。\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n---\n\n## 与「取消订单」skill 的区分\n\n| 能力 | skill | 典型场景 |\n|------|--------|----------|\n| 买家/卖家**取消订单**（未发货或取消申请） | `linkfox-temu-cancel-order-us` | `bg.aftersales.cancel.*`、`temu.order.cancel.*` |\n| **退货、退款、售后退货退款** | **`linkfox-temu-returns-refunds-us`**（本 skill） | Partner **Returns & Refunds** 菜单下 9 条接口（见 [apis/README.md](./apis/README.md)） |\n\n订单上下文（`parentOrderSn`、`orderSn`、售后单号等）通常先通过 **`linkfox-temu-order-us`** 获取。\n\n---\n\n## 典型退货退款流程\n\n```text\n1. linkfox-temu-order-us                              → 订单/售后上下文\n2. bg.aftersales.parentaftersales.list.get            → 父售后单列表（筛选状态与时间）\n3. temu.aftersales.parentaftersales.detail.get        → 父售后详情（退款汇总、子单）\n4. bg.aftersales.aftersales.list.get                  → 子售后行项\n5. temu.aftersales.returnlabel.prepare.get            → 面单准备（仓、揽收时段）\n6. temu.aftersales.carrier.get                        → 承运商\n7. temu.aftersales.signature.get（若需要）            → 签名\n8. temu.aftersales.upload.returnlabel                 → 上传面单\n9. bg.aftersales.parentreturnorder.get                → 查询退货运单\n10. temu.aftersales.returnaddress.get                 → 买家寄回地址（自寄场景）\n```\n\n---\n\n## 网关错误码\n\n| code | 说明 | 处理 |\n|------|------|------|\n| 1002 | 参数或 LinkFox Token 无效 | 修正参数与 `LINKFOXAGENT_API_KEY` |\n| 1003 | 转发失败 | 检查 Temu token、`tokenPurpose`、白名单、网络 |\n| 402 | HTTP 402 | 按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- `skillName`: **`linkfox-temu-returns-refunds-us`**\n\nFile v1.0.6:references/apis/bg-aftersales-aftersales-list-get.md\n\n# 子售后单列表查询 — `bg.aftersales.aftersales.list.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_aftersales_list_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=d1675103eeed444fa3d650aa33b462be |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.aftersales.list.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query after-sales order list by parent after-sales SN.\n\n> **`parentAfterSalesSnList`** 为必填，通常来自 [bg-aftersales-parentaftersales-list-get](./bg-aftersales-parentaftersales-list-get.md)。\n> 入参 **`pageNo`**，出参 **`pageNumber`**。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── pageSize (INTEGER, 否)\n    ├── pageNo (INTEGER, 否)\n    └── parentAfterSalesSnList (STRING[], 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| pageSize | INTEGER | 否 | Page size for pagination, default is 10, max is 200. |\n| pageNo | INTEGER | 否 | Page number for pagination, default is 1. |\n| parentAfterSalesSnList | STRING[] | **是** | The list of parent after-sales order numbers to limit the query. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"pageNo\": 1,\n    \"pageSize\": 20,\n    \"parentAfterSalesSnList\": [\n      \"PAS-001\"\n    ]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── total (LONG)\n    ├── pageNumber (INTEGER)\n    └── data[]\n        ├── parentAfterSalesSn (STRING)\n        ├── productSkuId (LONG)\n        ├── applyAfterSalesGoodsNumber (INTEGER)\n        ├── afterSalesSn (STRING)\n        ├── goodsId (LONG)\n        ├── skuId (LONG)\n        ├── productList[]\n        │   ├── productSkuId (LONG)\n        │   └── extCode (STRING)\n        ├── afterSalesStatus (INTEGER)\n        └── afterSalesType (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `data[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| productSkuId | LONG | Product SKU ID（商品 SKU ID） |\n| applyAfterSalesGoodsNumber | INTEGER | Number of goods applied for after-sales（申请售后商品件数） |\n| afterSalesSn | STRING | After-sales order number（子售后单号） |\n| goodsId | LONG | Goods ID（商品 ID） |\n| skuId | LONG | SKU ID |\n| productList | OBJECT[] | Product SKU list（关联商品 SKU 列表） |\n| afterSalesStatus | INTEGER | After-sales status（子售后单状态码） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n\n#### `productList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| productSkuId | LONG | Product SKU ID |\n| extCode | STRING | External code / merchant SKU code（商家外部编码） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_aftersales_list_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"pageNo\": 1, \"pageSize\": 20, \"parentAfterSalesSnList\": [\"PAS-001\"]}}'\n```\n\n**典型流程：** 在取得 **`parentAfterSalesSn`** 后查询子售后行项（含 **`afterSalesSn`**、SKU 与 **`productList`**）。\n\nFile v1.0.6:references/apis/bg-aftersales-parentaftersales-list-get.md\n\n# 父售后单列表查询 — `bg.aftersales.parentaftersales.list.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=36d2f55993344cf2991815f675493560 |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.parentaftersales.list.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent after-sales order list.\n\n> 入参 **`createAtStart`/`createAtEnd`** 与 **`updateAtStart`/`updateAtEnd`** 至少提供一组时间范围（Partner Request 表说明）。\n> 入参分页为 **`pageNo`**，出参当前页为 **`pageNumber`**，勿混用。\n> 列表项中的 **`afterSalesStatusGroup`** 与入参筛选枚举一致（见下表）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── pageSize (INTEGER, 否)\n    ├── pageNo (INTEGER, 否)\n    ├── parentOrderSnList (STRING[], 否)\n    ├── parentAfterSalesSnList (STRING[], 否)\n    ├── createAtStart (INTEGER, 否)\n    ├── createAtEnd (INTEGER, 否)\n    ├── updateAtStart (INTEGER, 否)\n    ├── updateAtEnd (INTEGER, 否)\n    └── afterSalesStatusGroup (INTEGER, 否)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| pageSize | INTEGER | 否 | Page size for pagination, default is 10, max is 200. |\n| pageNo | INTEGER | 否 | Page number for pagination, default is 1. |\n| parentOrderSnList | STRING[] | 否 | The list of parent order numbers to limit the query. |\n| parentAfterSalesSnList | STRING[] | 否 | The list of parent after-sales order numbers to limit the query. |\n| createAtStart | INTEGER | 否 | The start time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the starting range of the status change time when querying parent after-sales orders. |\n| createAtEnd | INTEGER | 否 | The end time for querying the creation time of parent after-sales orders, in seconds (timestamp). Defines the ending range (closed interval) of the creation time when querying parent after-sales orders. -Must be used in conjunction with createAtStart. -- At least one set of creation or update times must be provided as required input parameters. |\n| updateAtStart | INTEGER | 否 | The start time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the starting range of the status change time when querying parent after-sales orders. |\n| updateAtEnd | INTEGER | 否 | The end time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the ending range (closed interval) of the status change time when querying parent after-sales orders. - Must be used in conjunction with updateAtStart. - At least one set of creation or update times must be provided as required input parameters. |\n| afterSalesStatusGroup | INTEGER | 否 | The after-sales order status group, enumerated as follows: 1: Pending, 2: Requested, 3: Package Shipped, 4: Platform Reviewing, 5: Refunded, 6: Rejected, 7: Cancelled. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"pageNo\": 1,\n    \"pageSize\": 20,\n    \"afterSalesStatusGroup\": 1,\n    \"createAtStart\": 1714521600,\n    \"createAtEnd\": 1714608000\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse（或解析后的根对象）\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    ├── total (LONG)\n    ├── pageNumber (INTEGER)\n    └── data[]\n        ├── parentAfterSalesSn (STRING)\n        ├── afterSalesStatusGroup (INTEGER)\n        ├── operateExpireTimeMs (LONG)\n        ├── availableOperateList[] (INTEGER)\n        ├── returnDeliveryType (INTEGER)\n        ├── parentAfterSalesStatus (INTEGER)\n        ├── parentOrderSn (STRING)\n        ├── updateAt (INTEGER)\n        ├── afterSalesType (INTEGER)\n        └── createAt (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `data[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| afterSalesStatusGroup | INTEGER | The after-sales order status group（售后状态组），见下表 |\n| operateExpireTimeMs | LONG | Operation expiration time in milliseconds（可操作截止时间，毫秒时间戳） |\n| availableOperateList | INTEGER[] | List of available operations for the seller（卖家可执行操作列表，元素为操作码） |\n| returnDeliveryType | INTEGER | Return delivery type（退货配送/交付方式类型） |\n| parentAfterSalesStatus | INTEGER | Current parent after-sales status（父售后单当前状态码） |\n| parentOrderSn | STRING | Parent order number（父订单号） |\n| updateAt | INTEGER | Last update time in seconds（最后更新时间，秒级 UNIX 时间戳） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n| createAt | INTEGER | Creation time in seconds（创建时间，秒级 UNIX 时间戳） |\n\n#### `afterSalesStatusGroup`（入参筛选 / 出参）\n\n| 值 | 说明 |\n|----|------|\n| `1` | Pending |\n| `2` | Requested |\n| `3` | Package Shipped |\n| `4` | Platform Reviewing |\n| `5` | Refunded |\n| `6` | Rejected |\n| `7` | Cancelled |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"pageNo\": 1, \"pageSize\": 20, \"afterSalesStatusGroup\": 1, \"createAtStart\": 1714521600, \"createAtEnd\": 1714608000}}'\n```\n\n**典型流程：** 退货退款流程入口：按时间窗与 **`afterSalesStatusGroup`** 分页拉取父售后单 → 用 **`parentAfterSalesSn`** 调详情/子单列表/退货物流等接口。\n\nFile v1.0.6:references/apis/bg-aftersales-parentreturnorder-get.md\n\n# 父退货物流信息 — `bg.aftersales.parentreturnorder.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentreturnorder_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=986d1dc0ad9d4d44a380b8078405bae2 |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.parentreturnorder.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent return order logistics information.\n\n> **`parentAfterSalesSn`** 必填；**`afterSalesSn`** 选填，用于限定子售后单。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentAfterSalesSn (STRING, 必填)\n    └── afterSalesSn (STRING, 否)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | parent after-sales order number. |\n| afterSalesSn | STRING | 否 | after-sales order number. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentAfterSalesSn\": \"PAS-001\",\n    \"afterSalesSn\": \"AS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    └── logisticsInfoList[]\n        ├── carrierName (STRING)\n        ├── returnWarehouseRegion1Name (STRING)\n        ├── returnWarehouseType (INTEGER)\n        └── trackingNumber (STRING)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `logisticsInfoList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| carrierName | STRING | Carrier name（承运商名称） |\n| returnWarehouseRegion1Name | STRING | Return warehouse primary region name（退货仓一级区域名称） |\n| returnWarehouseType | INTEGER | Return warehouse type（退货仓类型） |\n| trackingNumber | STRING | Tracking number（物流跟踪号） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentreturnorder_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentAfterSalesSn\": \"PAS-001\", \"afterSalesSn\": \"AS-001\"}}'\n```\n\n**典型流程：** 退货寄出后查询 **`logisticsInfoList`** 跟踪号与退货仓信息。\n\nFile v1.0.6:references/apis/temu-aftersales-carrier-get.md\n\n# 承运商列表 — `temu.aftersales.carrier.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_carrier_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=c1eceff2f3434bef8246668cc557ebb5 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.carrier.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query carriers for return label by return warehouse region.\n\n> **`returnWarehouseRegionId1`** 必填（商家退货仓一级区域 ID）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    └── returnWarehouseRegionId1 (LONG, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| returnWarehouseRegionId1 | LONG | **是** | Merchant return warehouse primary region id. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"returnWarehouseRegionId1\": 1\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    └── carrierDTOList[]\n        ├── carrierId (LONG)\n        └── carrierName (STRING)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `carrierDTOList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| carrierId | LONG | Carrier ID |\n| carrierName | STRING | Carrier name |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_carrier_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"returnWarehouseRegionId1\": 1}}'\n```\n\n**典型流程：** 上传面单前按退货仓区域查询 **`carrierId`**。\n\nFile v1.0.6:references/apis/temu-aftersales-parentaftersales-detail-get.md\n\n# 父售后单详情 — `temu.aftersales.parentaftersales.detail.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=f2551431265c4ea788e73fc3a741d075 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.parentaftersales.detail.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent after-sales order detail.\n\n> **`parentOrderSn`** 与 **`parentAfterSalesSn`** 均为必填。\n> **`refundSummary`** 与 **`afterSalesList`** 在 Partner 导出 HTML 的 Response 表中为折叠行，下列层级按 **Response Example** 全量展开。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentOrderSn (STRING, 必填)\n    └── parentAfterSalesSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentOrderSn | STRING | **是** | Order Number |\n| parentAfterSalesSn | STRING | **是** | Parent After-Sales Order Number |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentOrderSn\": \"PO-001\",\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── parentAfterSalesSn (STRING)\n    ├── availableOperateList[] (INTEGER)\n    ├── createAtMillis (LONG)\n    ├── parentAfterSalesStatus (INTEGER)\n    ├── refundSummary (OBJECT)\n    │   ├── discountFromSellerRefund (OBJECT) → currency, amount\n    │   ├── discountFromTEMURefund (OBJECT) → currency, amount\n    │   ├── buyerTotalRefund (OBJECT) → currency, amount\n    │   ├── shippingAmountRefundTaxExcl (OBJECT) → currency, amount\n    │   ├── taxTotalRefund (OBJECT) → currency, amount\n    │   └── retailPriceRefundTaxExcl (OBJECT) → currency, amount\n    ├── parentOrderSn (STRING)\n    ├── lastUpdateAtMillis (LONG)\n    ├── afterSalesType (INTEGER)\n    └── afterSalesList[]\n        ├── applyAfterSalesGoodsNumber (INTEGER)\n        ├── afterSalesSn (STRING)\n        ├── orderSn (STRING)\n        ├── applyRefundAmount (OBJECT) → currency, amount\n        ├── afterSalesReasonDesc (STRING)\n        ├── afterSalesGoodsInfo (OBJECT)\n        │   ├── productSkuId, goodsId, skuId\n        │   └── productList[] → productSkuId, extCode\n        ├── afterSalesReasonCode (INTEGER)\n        ├── buyerComment (STRING)\n        └── afterSalesStatus (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result` 业务字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| availableOperateList | INTEGER[] | Available operations for the seller（卖家可执行操作码列表） |\n| createAtMillis | LONG | Creation time in milliseconds（创建时间，毫秒） |\n| parentAfterSalesStatus | INTEGER | Parent after-sales status（父售后单状态码） |\n| refundSummary | OBJECT | Refund amount summary（退款金额汇总） |\n| parentOrderSn | STRING | Parent order number（父订单号） |\n| lastUpdateAtMillis | LONG | Last update time in milliseconds（最后更新时间，毫秒） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n| afterSalesList | OBJECT[] | Child after-sales line list（子售后行列表） |\n\n### `refundSummary` 内金额对象（`discountFromSellerRefund` 等）\n\n各子字段均为 **OBJECT**，结构相同：\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| currency | STRING | Currency code（币种） |\n| amount | NUMBER | Amount（金额） |\n\n| 子字段 | 说明 |\n|--------|------|\n| discountFromSellerRefund | Discount refunded from seller（卖家侧优惠退款） |\n| discountFromTEMURefund | Discount refunded from TEMU（平台侧优惠退款） |\n| buyerTotalRefund | Total refund to buyer（买家总退款） |\n| shippingAmountRefundTaxExcl | Shipping amount refund excluding tax（运费退款，不含税） |\n| taxTotalRefund | Total tax refund（税费退款合计） |\n| retailPriceRefundTaxExcl | Retail price refund excluding tax（零售价退款，不含税） |\n\n### `afterSalesList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| applyAfterSalesGoodsNumber | INTEGER | Applied after-sales goods quantity（申请售后商品数量） |\n| afterSalesSn | STRING | After-sales order number（子售后单号） |\n| orderSn | STRING | Order number（子订单号） |\n| applyRefundAmount | OBJECT | Applied refund amount（申请退款金额，`currency` + `amount`） |\n| afterSalesReasonDesc | STRING | After-sales reason description（售后原因描述） |\n| afterSalesGoodsInfo | OBJECT | After-sales goods information（售后商品信息） |\n| afterSalesReasonCode | INTEGER | After-sales reason code（售后原因码） |\n| buyerComment | STRING | Buyer comment（买家留言） |\n| afterSalesStatus | INTEGER | After-sales status（子售后状态码） |\n\n#### `afterSalesGoodsInfo`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| productSkuId | LONG | Product SKU ID |\n| goodsId | LONG | Goods ID |\n| skuId | LONG | SKU ID |\n| productList | OBJECT[] | Product list（`productSkuId`、`extCode`） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010000 | system error | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010005 | operate forbid | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010002 | The order has been fully shipped. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentOrderSn\": \"PO-001\", \"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** 用列表接口得到的 **`parentAfterSalesSn`** + **`parentOrderSn`** 拉取退款汇总与子售后明细，再决定上传面单/查地址等后续操作。\n\nFile v1.0.6:references/apis/temu-aftersales-returnaddress-get.md\n\n# 退货地址查询 — `temu.aftersales.returnaddress.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_returnaddress_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=05d0a325704d4d538d708f3e256168e0 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.returnaddress.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query return shipping address for after-sales.\n\n> 仅 **`parentAfterSalesSn`** 必填。\n> 错误码 **18002xxxx** 表示国家未开通、未签 DPA、全托管/仅退款/已上传面单等场景不支持查地址（见 Error Code 表）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    └── parentAfterSalesSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | parentAfterSalesSn |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── receiptAdditionalName, receiptName\n    ├── regionName1 … regionName4\n    ├── mail, mobile, backupMobile\n    ├── addressLine1 … addressLine3, addressLineAll\n    └── postCode\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| receiptAdditionalName | STRING | Additional recipient name（收件人附加名） |\n| receiptName | STRING | Recipient name（收件人姓名） |\n| regionName1 | STRING | Region level 1 name（一级地区名） |\n| regionName2 | STRING | Region level 2 name |\n| regionName3 | STRING | Region level 3 name |\n| regionName4 | STRING | Region level 4 name |\n| mail | STRING | Email |\n| mobile | STRING | Mobile phone |\n| backupMobile | STRING | Backup mobile |\n| addressLine1 | STRING | Address line 1 |\n| addressLine2 | STRING | Address line 2 |\n| addressLine3 | STRING | Address line 3 |\n| addressLineAll | STRING | Full address line（完整地址拼接） |\n| postCode | STRING | Postal code |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 180020001 | This country has not yet opened address query capabilities | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180020008 | Please sign on DPA agreement first | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021001 | full managed, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021002 | only refund type, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021003 | uploaded label, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021004 | no need upload label, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_returnaddress_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** 买家需自行寄回时先查 **`result`** 退货地址再发货或上传面单。\n\nFile v1.0.6:references/apis/temu-aftersales-returnlabel-prepare-get.md\n\n# 退货面单准备信息 — `temu.aftersales.returnlabel.prepare.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=f6d52305e84d4945b2b1c8d3218bbe20 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.returnlabel.prepare.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Get return label preparation information (pick-up times and warehouses).\n\n> **`parentAfterSalesSn`** 与 **`parentOrderSn`** 均为必填。\n> 上传面单前通常先调本接口获取 **`availableReturnWarehouseList`** 与上门揽收时间窗。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentAfterSalesSn (STRING, 必填)\n    └── parentOrderSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | Parent after-sales order number. |\n| parentOrderSn | STRING | **是** | Parent order number. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentOrderSn\": \"PO-001\",\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── userPickUpTimezone (STRING)\n    ├── userSelectedPickUpTimeList[] → startTimestamp, endTimestamp\n    ├── availableReturnWarehouseList[] → warehouseId, warehouseName\n    └── merchantLatestPickUpTime (LONG)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| userPickUpTimezone | STRING | User pick-up timezone（用户上门揽收时区） |\n| userSelectedPickUpTimeList | OBJECT[] | User-selected pick-up time intervals（可选揽收时间段） |\n| availableReturnWarehouseList | OBJECT[] | Available return warehouses（可选退货仓列表） |\n| merchantLatestPickUpTime | LONG | Merchant latest pick-up time（商家最晚揽收时间，毫秒时间戳） |\n\n#### `userSelectedPickUpTimeList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| startTimestamp | LONG | Interval start（毫秒） |\n| endTimestamp | LONG | Interval end（毫秒） |\n\n#### `availableReturnWarehouseList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| warehouseId | STRING | Warehouse ID |\n| warehouseName | STRING | Warehouse name |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010005 | operate forbid | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentOrderSn\": \"PO-001\", \"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** → [temu-aftersales-carrier-get](./temu-aftersales-carrier-get.md) 取承运商 → [temu-aftersales-upload-returnlabel](./temu-aftersales-upload-returnlabel.md) 上传面单。\n\nArchive v1.0.5: 42 files, 63174 bytes\n\nFiles: references/access-token.md (4604b), references/api.md (6168b), references/apis/bg-aftersales-aftersales-list-get.md (4743b), references/apis/bg-aftersales-parentaftersales-list-get.md (7264b), references/apis/bg-aftersales-parentreturnorder-get.md (3584b), references/apis/README.md (1882b), references/apis/temu-aftersales-carrier-get.md (3021b), references/apis/temu-aftersales-parentaftersales-detail-get.md (7536b), references/apis/temu-aftersales-returnaddress-get.md (4425b), references/apis/temu-aftersales-returnlabel-prepare-get.md (4378b), references/apis/temu-aftersales-signature-get.md (2926b), references/apis/temu-aftersales-upload-returnlabel.md (6415b), references/authorization-flow.md (1186b), references/onboarding.md (2046b), references/partner-us-catalog.md (4787b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12433b), scripts/_temu_token_store.py (4273b), scripts/_temu_us_common.py (3103b), scripts/_us_returns_refunds_script.py (524b), scripts/check_linkfox_token.py (1797b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/onboarding.py (24089b), scripts/save_temu_access_token.py (1377b), scripts/temu_file_download.py (1695b), scripts/temu_proxy.py (2138b), scripts/temu_token_guide.py (1594b), scripts/temu_us_file_download.py (694b), scripts/temu_us_proxy.py (920b), scripts/us_returns_refunds_aftersales_aftersales_list_get.py (299b), scripts/us_returns_refunds_aftersales_carrier_get.py (270b), scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py (321b), scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py (317b), scripts/us_returns_refunds_aftersales_parentreturnorder_get.py (302b), scripts/us_returns_refunds_aftersales_returnaddress_get.py (291b), scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py (315b), scripts/us_returns_refunds_aftersales_signature_get.py (279b), scripts/us_returns_refunds_aftersales_upload_returnlabel.py (294b), skill-card.md (3174b), SKILL.md (6664b), _meta.json (150b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: linkfox-temu-returns-refunds-us\ndescription: Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。\n---\n\n# Temu 美国站 — 退货与退款（Returns & Refunds）\n\n本 skill（`linkfox-temu-returns-refunds-us`）覆盖 Partner Platform for US **Returns & Refunds / 电商退货与退款**（及关联 **After-sales** 退货退款类）相关 `bg.*` / `temu.*` 接口（`menu_code` 与各 `sub_menu_code` 以 Partner 后台为准，见 [partner-us-catalog.md](./references/partner-us-catalog.md)）。\n\n已接入 **9** 条 Partner **Return and Refund** 接口，清单见 [partner-us-catalog.md](./references/partner-us-catalog.md)。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 退货退款 OpenAPI（`us_returns_refunds_*`、`temu_us_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| **退货与退款**（本 skill） | **`linkfox-temu-returns-refunds-us`** |\n| 买家发起**取消订单**（非退货退款全流程） | `linkfox-temu-cancel-order-us` |\n| 卖家发起**取消订单** / 缺货取消 / 申诉 | `linkfox-temu-cancel-order-us` |\n| 订单列表/详情/金额/售后上下文 | `linkfox-temu-order-us` |\n| 商品管理 | `linkfox-temu-manage-product-us` |\n| 履约/发货 | `linkfox-temu-fulfillment-us` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-temu-returns-refunds-us-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 默认参数\n\n| 字段 | 默认 | 说明 |\n|------|------|------|\n| site | `us` | Partner US |\n| managementType | `semi-managed` | 半托管（具体接口以 Partner 文档为准） |\n| tokenPurpose | `order-shipping` | 订单/售后场景 token（见 [access-token.md](./references/access-token.md)） |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`（`storeKey` 时建议带 `tokenPurpose=order-shipping`）\n\n## Scripts\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_us_proxy.py` | 任意 `type` 通用转发 |\n| `temu_us_file_download.py` | 加签文件下载 |\n| `us_returns_refunds_aftersales_parentaftersales_list_get.py` | `bg.aftersales.parentaftersales.list.get` |\n| `us_returns_refunds_aftersales_aftersales_list_get.py` | `bg.aftersales.aftersales.list.get` |\n| `us_returns_refunds_aftersales_parentaftersales_detail_get.py` | `temu.aftersales.parentaftersales.detail.get` |\n| `us_returns_refunds_aftersales_parentreturnorder_get.py` | `bg.aftersales.parentreturnorder.get` |\n| `us_returns_refunds_aftersales_returnaddress_get.py` | `temu.aftersales.returnaddress.get` |\n| `us_returns_refunds_aftersales_returnlabel_prepare_get.py` | `temu.aftersales.returnlabel.prepare.get` |\n| `us_returns_refunds_aftersales_signature_get.py` | `temu.aftersales.signature.get` |\n| `us_returns_refunds_aftersales_upload_returnlabel.py` | `temu.aftersales.upload.returnlabel` |\n| `us_returns_refunds_aftersales_carrier_get.py` | `temu.aftersales.carrier.get` |\n\n## 接入更多接口（约定）\n\n你每提供一条 Partner 文档（`type` + `sub_menu_code` + URL + Request/Response 参数表），将：\n\n1. 新增 `references/apis/<type-slug>.md`（完整入参/出参层级）\n2. 新增 `scripts/us_returns_refunds_<slug>.py`（调用 `_us_returns_refunds_script.run_cli`）\n3. 更新 [partner-us-catalog.md](./references/partner-us-catalog.md)、[apis/README.md](./references/apis/README.md) 与本表\n\n## 示例（通用代理）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\n\npython scripts/temu_us_proxy.py '{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"type\": \"<TEMU_API_TYPE>\",\n  \"params\": {\n    \"request\": {}\n  }\n}'\n```\n\n**Feedback：** `skillName`：`linkfox-temu-returns-refunds-us`\n\n## 网关与授权脚本\n\n| 脚本 | 说明 |\n|------|------|\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token |\n| `get_temu_access_token.py` | 读取已保存 token |\n| `temu_proxy.py` | 通用网关转发（多 site） |\n| `temu_file_download.py` | 加签文件下载（多 site） |\n\n授权说明：[references/access-token.md](./references/access-token.md)\n\n## 积分消耗规则\n\n不消耗积分。\n\nFile v1.0.5:references/apis/README.md\n\n# Returns & Refunds — 接口文档索引\n\n每个 `type` 单独一份文档。网关见 [../api.md](../api.md)；目录见 [../partner-us-catalog.md](../partner-us-catalog.md)。\n\n## 父售后单 / 列表与详情\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n\n## 退货物流 / 地址 / 面单\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n## 承运商与签名\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n\n> 买家/卖家**取消订单**见 `linkfox-temu-cancel-order-us`。\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-returns-refunds-us\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1786101851714\n}\n\nFile v1.0.5:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=us` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 美国站 | openapi-b-us.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：美国站、英国站等需分别登录对应后台获取 Token。\n3. **有效期**：Token 会过期，过期后重新在后台复制并 `save_temu_access_token.py`。\n4. **IP 白名单**：需联系紫鸟开放平台配置调用 IP。\n5. **参数小写**：`site`、`managementType` 必须小写。\n\n## 脚本一览\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_token_guide.py` | 按店铺类型/用途输出授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token（默认脱敏）|\n| `get_temu_access_token.py` | 读取指定 store 的 token |\n\nFile v1.0.5:references/api.md\n\n# linkfox-temu-returns-refunds-us — API 参考\n\nTemu **美国站退货与退款（Returns & Refunds）**，经本 skill `temu_us_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\n\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。建议 token 见 `references/access-token.md`（`tokenPurpose=order-shipping`）。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n---\n\n## 调用规范\n\n| 项 | 说明 |\n|----|------|\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\n| 退货退款 OpenAPI | `POST /temu/proxy` |\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_us_file_download.py`） |\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\n| 默认 | `site=us`，`managementType=semi-managed`，`tokenPurpose=order-shipping` |\n| 上游 OpenAPI（US） | `https://openapi-b-us.temu.com/openapi/router`（网关按 `site` 解析） |\n\n### 网关请求 Body（`/temu/proxy`）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| site | string | 是 | `us`（本 skill 默认） |\n| managementType | string | 是 | `semi-managed` |\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\n| tokenPurpose | string | 否 | 建议 **`order-shipping`** |\n| type | string | 是 | Temu 接口名，如 Partner Returns & Refunds 菜单下的 `bg.*` / `temu.*` |\n| params | object | 否 | 业务参数；多数接口业务块在 **`params.request`** |\n\n### 网关响应\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\n\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\n\n### 脚本调用\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/temu_us_proxy.py '{\"accessToken\":\"TOKEN\",\"tokenPurpose\":\"order-shipping\",\"type\":\"<API_TYPE>\",\"params\":{\"request\":{}}}'\n```\n\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\n\n---\n\n## 接口一览\n\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-us-catalog.md](./partner-us-catalog.md)。\n\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)（随接入递增）。\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n---\n\n## 与「取消订单」skill 的区分\n\n| 能力 | skill | 典型场景 |\n|------|--------|----------|\n| 买家/卖家**取消订单**（未发货或取消申请） | `linkfox-temu-cancel-order-us` | `bg.aftersales.cancel.*`、`temu.order.cancel.*` |\n| **退货、退款、售后退货退款** | **`linkfox-temu-returns-refunds-us`**（本 skill） | Partner **Returns & Refunds** 菜单下 9 条接口（见 [apis/README.md](./apis/README.md)） |\n\n订单上下文（`parentOrderSn`、`orderSn`、售后单号等）通常先通过 **`linkfox-temu-order-us`** 获取。\n\n---\n\n## 典型退货退款流程\n\n```text\n1. linkfox-temu-order-us                              → 订单/售后上下文\n2. bg.aftersales.parentaftersales.list.get            → 父售后单列表（筛选状态与时间）\n3. temu.aftersales.parentaftersales.detail.get        → 父售后详情（退款汇总、子单）\n4. bg.aftersales.aftersales.list.get                  → 子售后行项\n5. temu.aftersales.returnlabel.prepare.get            → 面单准备（仓、揽收时段）\n6. temu.aftersales.carrier.get                        → 承运商\n7. temu.aftersales.signature.get（若需要）            → 签名\n8. temu.aftersales.upload.returnlabel                 → 上传面单\n9. bg.aftersales.parentreturnorder.get                → 查询退货运单\n10. temu.aftersales.returnaddress.get                 → 买家寄回地址（自寄场景）\n```\n\n---\n\n## 网关错误码\n\n| code | 说明 | 处理 |\n|------|------|------|\n| 1002 | 参数或 LinkFox Token 无效 | 修正参数与 `LINKFOXAGENT_API_KEY` |\n| 1003 | 转发失败 | 检查 Temu token、`tokenPurpose`、白名单、网络 |\n| 402 | HTTP 402 | 按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- `skillName`: **`linkfox-temu-returns-refunds-us`**\n\nFile v1.0.5:references/apis/bg-aftersales-aftersales-list-get.md\n\n# 子售后单列表查询 — `bg.aftersales.aftersales.list.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_aftersales_list_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=d1675103eeed444fa3d650aa33b462be |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.aftersales.list.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query after-sales order list by parent after-sales SN.\n\n> **`parentAfterSalesSnList`** 为必填，通常来自 [bg-aftersales-parentaftersales-list-get](./bg-aftersales-parentaftersales-list-get.md)。\n> 入参 **`pageNo`**，出参 **`pageNumber`**。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── pageSize (INTEGER, 否)\n    ├── pageNo (INTEGER, 否)\n    └── parentAfterSalesSnList (STRING[], 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| pageSize | INTEGER | 否 | Page size for pagination, default is 10, max is 200. |\n| pageNo | INTEGER | 否 | Page number for pagination, default is 1. |\n| parentAfterSalesSnList | STRING[] | **是** | The list of parent after-sales order numbers to limit the query. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"pageNo\": 1,\n    \"pageSize\": 20,\n    \"parentAfterSalesSnList\": [\n      \"PAS-001\"\n    ]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── total (LONG)\n    ├── pageNumber (INTEGER)\n    └── data[]\n        ├── parentAfterSalesSn (STRING)\n        ├── productSkuId (LONG)\n        ├── applyAfterSalesGoodsNumber (INTEGER)\n        ├── afterSalesSn (STRING)\n        ├── goodsId (LONG)\n        ├── skuId (LONG)\n        ├── productList[]\n        │   ├── productSkuId (LONG)\n        │   └── extCode (STRING)\n        ├── afterSalesStatus (INTEGER)\n        └── afterSalesType (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `data[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| productSkuId | LONG | Product SKU ID（商品 SKU ID） |\n| applyAfterSalesGoodsNumber | INTEGER | Number of goods applied for after-sales（申请售后商品件数） |\n| afterSalesSn | STRING | After-sales order number（子售后单号） |\n| goodsId | LONG | Goods ID（商品 ID） |\n| skuId | LONG | SKU ID |\n| productList | OBJECT[] | Product SKU list（关联商品 SKU 列表） |\n| afterSalesStatus | INTEGER | After-sales status（子售后单状态码） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n\n#### `productList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| productSkuId | LONG | Product SKU ID |\n| extCode | STRING | External code / merchant SKU code（商家外部编码） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_aftersales_list_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"pageNo\": 1, \"pageSize\": 20, \"parentAfterSalesSnList\": [\"PAS-001\"]}}'\n```\n\n**典型流程：** 在取得 **`parentAfterSalesSn`** 后查询子售后行项（含 **`afterSalesSn`**、SKU 与 **`productList`**）。\n\nFile v1.0.5:references/apis/bg-aftersales-parentaftersales-list-get.md\n\n# 父售后单列表查询 — `bg.aftersales.parentaftersales.list.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=36d2f55993344cf2991815f675493560 |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.parentaftersales.list.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent after-sales order list.\n\n> 入参 **`createAtStart`/`createAtEnd`** 与 **`updateAtStart`/`updateAtEnd`** 至少提供一组时间范围（Partner Request 表说明）。\n> 入参分页为 **`pageNo`**，出参当前页为 **`pageNumber`**，勿混用。\n> 列表项中的 **`afterSalesStatusGroup`** 与入参筛选枚举一致（见下表）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── pageSize (INTEGER, 否)\n    ├── pageNo (INTEGER, 否)\n    ├── parentOrderSnList (STRING[], 否)\n    ├── parentAfterSalesSnList (STRING[], 否)\n    ├── createAtStart (INTEGER, 否)\n    ├── createAtEnd (INTEGER, 否)\n    ├── updateAtStart (INTEGER, 否)\n    ├── updateAtEnd (INTEGER, 否)\n    └── afterSalesStatusGroup (INTEGER, 否)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| pageSize | INTEGER | 否 | Page size for pagination, default is 10, max is 200. |\n| pageNo | INTEGER | 否 | Page number for pagination, default is 1. |\n| parentOrderSnList | STRING[] | 否 | The list of parent order numbers to limit the query. |\n| parentAfterSalesSnList | STRING[] | 否 | The list of parent after-sales order numbers to limit the query. |\n| createAtStart | INTEGER | 否 | The start time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the starting range of the status change time when querying parent after-sales orders. |\n| createAtEnd | INTEGER | 否 | The end time for querying the creation time of parent after-sales orders, in seconds (timestamp). Defines the ending range (closed interval) of the creation time when querying parent after-sales orders. -Must be used in conjunction with createAtStart. -- At least one set of creation or update times must be provided as required input parameters. |\n| updateAtStart | INTEGER | 否 | The start time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the starting range of the status change time when querying parent after-sales orders. |\n| updateAtEnd | INTEGER | 否 | The end time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the ending range (closed interval) of the status change time when querying parent after-sales orders. - Must be used in conjunction with updateAtStart. - At least one set of creation or update times must be provided as required input parameters. |\n| afterSalesStatusGroup | INTEGER | 否 | The after-sales order status group, enumerated as follows: 1: Pending, 2: Requested, 3: Package Shipped, 4: Platform Reviewing, 5: Refunded, 6: Rejected, 7: Cancelled. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"pageNo\": 1,\n    \"pageSize\": 20,\n    \"afterSalesStatusGroup\": 1,\n    \"createAtStart\": 1714521600,\n    \"createAtEnd\": 1714608000\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse（或解析后的根对象）\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    ├── total (LONG)\n    ├── pageNumber (INTEGER)\n    └── data[]\n        ├── parentAfterSalesSn (STRING)\n        ├── afterSalesStatusGroup (INTEGER)\n        ├── operateExpireTimeMs (LONG)\n        ├── availableOperateList[] (INTEGER)\n        ├── returnDeliveryType (INTEGER)\n        ├── parentAfterSalesStatus (INTEGER)\n        ├── parentOrderSn (STRING)\n        ├── updateAt (INTEGER)\n        ├── afterSalesType (INTEGER)\n        └── createAt (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `data[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| afterSalesStatusGroup | INTEGER | The after-sales order status group（售后状态组），见下表 |\n| operateExpireTimeMs | LONG | Operation expiration time in milliseconds（可操作截止时间，毫秒时间戳） |\n| availableOperateList | INTEGER[] | List of available operations for the seller（卖家可执行操作列表，元素为操作码） |\n| returnDeliveryType | INTEGER | Return delivery type（退货配送/交付方式类型） |\n| parentAfterSalesStatus | INTEGER | Current parent after-sales status（父售后单当前状态码） |\n| parentOrderSn | STRING | Parent order number（父订单号） |\n| updateAt | INTEGER | Last update time in seconds（最后更新时间，秒级 UNIX 时间戳） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n| createAt | INTEGER | Creation time in seconds（创建时间，秒级 UNIX 时间戳） |\n\n#### `afterSalesStatusGroup`（入参筛选 / 出参）\n\n| 值 | 说明 |\n|----|------|\n| `1` | Pending |\n| `2` | Requested |\n| `3` | Package Shipped |\n| `4` | Platform Reviewing |\n| `5` | Refunded |\n| `6` | Rejected |\n| `7` | Cancelled |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"pageNo\": 1, \"pageSize\": 20, \"afterSalesStatusGroup\": 1, \"createAtStart\": 1714521600, \"createAtEnd\": 1714608000}}'\n```\n\n**典型流程：** 退货退款流程入口：按时间窗与 **`afterSalesStatusGroup`** 分页拉取父售后单 → 用 **`parentAfterSalesSn`** 调详情/子单列表/退货物流等接口。\n\nFile v1.0.5:references/apis/bg-aftersales-parentreturnorder-get.md\n\n# 父退货物流信息 — `bg.aftersales.parentreturnorder.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentreturnorder_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=986d1dc0ad9d4d44a380b8078405bae2 |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.parentreturnorder.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent return order logistics information.\n\n> **`parentAfterSalesSn`** 必填；**`afterSalesSn`** 选填，用于限定子售后单。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentAfterSalesSn (STRING, 必填)\n    └── afterSalesSn (STRING, 否)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | parent after-sales order number. |\n| afterSalesSn | STRING | 否 | after-sales order number. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentAfterSalesSn\": \"PAS-001\",\n    \"afterSalesSn\": \"AS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    └── logisticsInfoList[]\n        ├── carrierName (STRING)\n        ├── returnWarehouseRegion1Name (STRING)\n        ├── returnWarehouseType (INTEGER)\n        └── trackingNumber (STRING)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `logisticsInfoList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| carrierName | STRING | Carrier name（承运商名称） |\n| returnWarehouseRegion1Name | STRING | Return warehouse primary region name（退货仓一级区域名称） |\n| returnWarehouseType | INTEGER | Return warehouse type（退货仓类型） |\n| trackingNumber | STRING | Tracking number（物流跟踪号） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentreturnorder_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentAfterSalesSn\": \"PAS-001\", \"afterSalesSn\": \"AS-001\"}}'\n```\n\n**典型流程：** 退货寄出后查询 **`logisticsInfoList`** 跟踪号与退货仓信息。\n\nFile v1.0.5:references/apis/temu-aftersales-carrier-get.md\n\n# 承运商列表 — `temu.aftersales.carrier.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_carrier_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=c1eceff2f3434bef8246668cc557ebb5 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.carrier.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query carriers for return label by return warehouse region.\n\n> **`returnWarehouseRegionId1`** 必填（商家退货仓一级区域 ID）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    └── returnWarehouseRegionId1 (LONG, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| returnWarehouseRegionId1 | LONG | **是** | Merchant return warehouse primary region id. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"returnWarehouseRegionId1\": 1\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    └── carrierDTOList[]\n        ├── carrierId (LONG)\n        └── carrierName (STRING)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `carrierDTOList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| carrierId | LONG | Carrier ID |\n| carrierName | STRING | Carrier name |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_carrier_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"returnWarehouseRegionId1\": 1}}'\n```\n\n**典型流程：** 上传面单前按退货仓区域查询 **`carrierId`**。\n\nFile v1.0.5:references/apis/temu-aftersales-parentaftersales-detail-get.md\n\n# 父售后单详情 — `temu.aftersales.parentaftersales.detail.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=f2551431265c4ea788e73fc3a741d075 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.parentaftersales.detail.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent after-sales order detail.\n\n> **`parentOrderSn`** 与 **`parentAfterSalesSn`** 均为必填。\n> **`refundSummary`** 与 **`afterSalesList`** 在 Partner 导出 HTML 的 Response 表中为折叠行，下列层级按 **Response Example** 全量展开。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentOrderSn (STRING, 必填)\n    └── parentAfterSalesSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentOrderSn | STRING | **是** | Order Number |\n| parentAfterSalesSn | STRING | **是** | Parent After-Sales Order Number |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentOrderSn\": \"PO-001\",\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── parentAfterSalesSn (STRING)\n    ├── availableOperateList[] (INTEGER)\n    ├── createAtMillis (LONG)\n    ├── parentAfterSalesStatus (INTEGER)\n    ├── refundSummary (OBJECT)\n    │   ├── discountFromSellerRefund (OBJECT) → currency, amount\n    │   ├── discountFromTEMURefund (OBJECT) → currency, amount\n    │   ├── buyerTotalRefund (OBJECT) → currency, amount\n    │   ├── shippingAmountRefundTaxExcl (OBJECT) → currency, amount\n    │   ├── taxTotalRefund (OBJECT) → currency, amount\n    │   └── retailPriceRefundTaxExcl (OBJECT) → currency, amount\n    ├── parentOrderSn (STRING)\n    ├── lastUpdateAtMillis (LONG)\n    ├── afterSalesType (INTEGER)\n    └── afterSalesList[]\n        ├── applyAfterSalesGoodsNumber (INTEGER)\n        ├── afterSalesSn (STRING)\n        ├── orderSn (STRING)\n        ├── applyRefundAmount (OBJECT) → currency, amount\n        ├── afterSalesReasonDesc (STRING)\n        ├── afterSalesGoodsInfo (OBJECT)\n        │   ├── productSkuId, goodsId, skuId\n        │   └── productList[] → productSkuId, extCode\n        ├── afterSalesReasonCode (INTEGER)\n        ├── buyerComment (STRING)\n        └── afterSalesStatus (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result` 业务字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| availableOperateList | INTEGER[] | Available operations for the seller（卖家可执行操作码列表） |\n| createAtMillis | LONG | Creation time in milliseconds（创建时间，毫秒） |\n| parentAfterSalesStatus | INTEGER | Parent after-sales status（父售后单状态码） |\n| refundSummary | OBJECT | Refund amount summary（退款金额汇总） |\n| parentOrderSn | STRING | Parent order number（父订单号） |\n| lastUpdateAtMillis | LONG | Last update time in milliseconds（最后更新时间，毫秒） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n| afterSalesList | OBJECT[] | Child after-sales line list（子售后行列表） |\n\n### `refundSummary` 内金额对象（`discountFromSellerRefund` 等）\n\n各子字段均为 **OBJECT**，结构相同：\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| currency | STRING | Currency code（币种） |\n| amount | NUMBER | Amount（金额） |\n\n| 子字段 | 说明 |\n|--------|------|\n| discountFromSellerRefund | Discount refunded from seller（卖家侧优惠退款） |\n| discountFromTEMURefund | Discount refunded from TEMU（平台侧优惠退款） |\n| buyerTotalRefund | Total refund to buyer（买家总退款） |\n| shippingAmountRefundTaxExcl | Shipping amount refund excluding tax（运费退款，不含税） |\n| taxTotalRefund | Total tax refund（税费退款合计） |\n| retailPriceRefundTaxExcl | Retail price refund excluding tax（零售价退款，不含税） |\n\n### `afterSalesList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| applyAfterSalesGoodsNumber | INTEGER | Applied after-sales goods quantity（申请售后商品数量） |\n| afterSalesSn | STRING | After-sales order number（子售后单号） |\n| orderSn | STRING | Order number（子订单号） |\n| applyRefundAmount | OBJECT | Applied refund amount（申请退款金额，`currency` + `amount`） |\n| afterSalesReasonDesc | STRING | After-sales reason description（售后原因描述） |\n| afterSalesGoodsInfo | OBJECT | After-sales goods information（售后商品信息） |\n| afterSalesReasonCode | INTEGER | After-sales reason code（售后原因码） |\n| buyerComment | STRING | Buyer comment（买家留言） |\n| afterSalesStatus | INTEGER | After-sales status（子售后状态码） |\n\n#### `afterSalesGoodsInfo`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| productSkuId | LONG | Product SKU ID |\n| goodsId | LONG | Goods ID |\n| skuId | LONG | SKU ID |\n| productList | OBJECT[] | Product list（`productSkuId`、`extCode`） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010000 | system error | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010005 | operate forbid | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010002 | The order has been fully shipped. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentOrderSn\": \"PO-001\", \"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** 用列表接口得到的 **`parentAfterSalesSn`** + **`parentOrderSn`** 拉取退款汇总与子售后明细，再决定上传面单/查地址等后续操作。\n\nFile v1.0.5:references/apis/temu-aftersales-returnaddress-get.md\n\n# 退货地址查询 — `temu.aftersales.returnaddress.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_returnaddress_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=05d0a325704d4d538d708f3e256168e0 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.returnaddress.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query return shipping address for after-sales.\n\n> 仅 **`parentAfterSalesSn`** 必填。\n> 错误码 **18002xxxx** 表示国家未开通、未签 DPA、全托管/仅退款/已上传面单等场景不支持查地址（见 Error Code 表）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    └── parentAfterSalesSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | parentAfterSalesSn |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── receiptAdditionalName, receiptName\n    ├── regionName1 … regionName4\n    ├── mail, mobile, backupMobile\n    ├── addressLine1 … addressLine3, addressLineAll\n    └── postCode\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| receiptAdditionalName | STRING | Additional recipient name（收件人附加名） |\n| receiptName | STRING | Recipient name（收件人姓名） |\n| regionName1 | STRING | Region level 1 name（一级地区名） |\n| regionName2 | STRING | Region level 2 name |\n| regionName3 | STRING | Region level 3 name |\n| regionName4 | STRING | Region level 4 name |\n| mail | STRING | Email |\n| mobile | STRING | Mobile phone |\n| backupMobile | STRING | Backup mobile |\n| addressLine1 | STRING | Address line 1 |\n| addressLine2 | STRING | Address line 2 |\n| addressLine3 | STRING | Address line 3 |\n| addressLineAll | STRING | Full address line（完整地址拼接） |\n| postCode | STRING | Postal code |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 180020001 | This country has not yet opened address query capabilities | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180020008 | Please sign on DPA agreement first | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021001 | full managed, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021002 | only refund type, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021003 | uploaded label, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021004 | no need upload label, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_returnaddress_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** 买家需自行寄回时先查 **`result`** 退货地址再发货或上传面单。\n\nFile v1.0.5:references/apis/temu-aftersales-returnlabel-prepare-get.md\n\n# 退货面单准备信息 — `temu.aftersales.returnlabel.prepare.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=f6d52305e84d4945b2b1c8d3218bbe20 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.returnlabel.prepare.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Get return label preparation information (pick-up times and warehouses).\n\n> **`parentAfterSalesSn`** 与 **`parentOrderSn`** 均为必填。\n> 上传面单前通常先调本接口获取 **`availableReturnWarehouseList`** 与上门揽收时间窗。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentAfterSalesSn (STRING, 必填)\n    └── parentOrderSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | Parent after-sales order number. |\n| parentOrderSn | STRING | **是** | Parent order number. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentOrderSn\": \"PO-001\",\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── userPickUpTimezone (STRING)\n    ├── userSelectedPickUpTimeList[] → startTimestamp, endTimestamp\n    ├── availableReturnWarehouseList[] → warehouseId, warehouseName\n    └── merchantLatestPickUpTime (LONG)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| userPickUpTimezone | STRING | User pick-up timezone（用户上门揽收时区） |\n| userSelectedPickUpTimeList | OBJECT[] | User-selected pick-up time intervals（可选揽收时间段） |\n| availableReturnWarehouseList | OBJECT[] | Available return warehouses（可选退货仓列表） |\n| merchantLatestPickUpTime | LONG | Merchant latest pick-up time（商家最晚揽收时间，毫秒时间戳） |\n\n#### `userSelectedPickUpTimeList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| startTimestamp | LONG | Interval start（毫秒） |\n| endTimestamp | LONG | Interval end（毫秒） |\n\n#### `availableReturnWarehouseList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| warehouseId | STRING | Warehouse ID |\n| warehouseName | STRING | Warehouse name |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010005 | operate forbid | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentOrderSn\": \"PO-001\", \"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** → [temu-aftersales-carrier-get](./temu-aftersales-carrier-get.md) 取承运商 → [temu-aftersales-upload-returnlabel](./temu-aftersales-upload-returnlabel.md) 上传面单。\n\nArchive v1.0.4: 40 files, 54117 bytes\n\nFiles: references/access-token.md (4604b), references/api.md (6168b), references/apis/bg-aftersales-aftersales-list-get.md (4743b), references/apis/bg-aftersales-parentaftersales-list-get.md (7264b), references/apis/bg-aftersales-parentreturnorder-get.md (3584b), references/apis/README.md (1882b), references/apis/temu-aftersales-carrier-get.md (3021b), references/apis/temu-aftersales-parentaftersales-detail-get.md (7536b), references/apis/temu-aftersales-returnaddress-get.md (4425b), references/apis/temu-aftersales-returnlabel-prepare-get.md (4378b), references/apis/temu-aftersales-signature-get.md (2926b), references/apis/temu-aftersales-upload-returnlabel.md (6415b), references/authorization-flow.md (1186b), references/partner-us-catalog.md (4787b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12433b), scripts/_temu_token_store.py (4273b), scripts/_temu_us_common.py (3103b), scripts/_us_returns_refunds_script.py (524b), scripts/check_linkfox_token.py (1797b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_file_download.py (1695b), scripts/temu_proxy.py (2138b), scripts/temu_token_guide.py (1594b), scripts/temu_us_file_download.py (694b), scripts/temu_us_proxy.py (920b), scripts/us_returns_refunds_aftersales_aftersales_list_get.py (299b), scripts/us_returns_refunds_aftersales_carrier_get.py (270b), scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py (321b), scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py (317b), scripts/us_returns_refunds_aftersales_parentreturnorder_get.py (302b), scripts/us_returns_refunds_aftersales_returnaddress_get.py (291b), scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py (315b), scripts/us_returns_refunds_aftersales_signature_get.py (279b), scripts/us_returns_refunds_aftersales_upload_returnlabel.py (294b), skill-card.md (2911b), SKILL.md (7281b), _meta.json (150b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: linkfox-temu-returns-refunds-us\ndescription: Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。\n---\n\n# Temu 美国站 — 退货与退款（Returns & Refunds）\n\n本 skill（`linkfox-temu-returns-refunds-us`）覆盖 Partner Platform for US **Returns & Refunds / 电商退货与退款**（及关联 **After-sales** 退货退款类）相关 `bg.*` / `temu.*` 接口（`menu_code` 与各 `sub_menu_code` 以 Partner 后台为准，见 [partner-us-catalog.md](./references/partner-us-catalog.md)）。\n\n已接入 **9** 条 Partner **Return and Refund** 接口，清单见 [partner-us-catalog.md](./references/partner-us-catalog.md)。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 退货退款 OpenAPI（`us_returns_refunds_*`、`temu_us_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| **退货与退款**（本 skill） | **`linkfox-temu-returns-refunds-us`** |\n| 买家发起**取消订单**（非退货退款全流程） | `linkfox-temu-cancel-order-us` |\n| 卖家发起**取消订单** / 缺货取消 / 申诉 | `linkfox-temu-cancel-order-us` |\n| 订单列表/详情/金额/售后上下文 | `linkfox-temu-order-us` |\n| 商品管理 | `linkfox-temu-manage-product-us` |\n| 履约/发货 | `linkfox-temu-fulfillment-us` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-temu-returns-refunds-us-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用以下措施来处理：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n### 措施\n- 优先采用skill内的 onboarding.md 引导解决问题。\n- 如找不到 onboarding.md 文件，则加载 /linkfox-onboarding 这个skill并根据它的引导来处理。如未安装请先安装：\n    - 下载 https://agent-files.linkfox.com/skills/linkfox-onboarding/release.zip，解压后安装这个skill。如需用户授权才可下载，要询问用户获得授权，你不能自己放弃下载。\n- 兜底措施：仅当前面两个措施经过所有努力都走不通时，才提示用户依据 https://skill.linkfox.com/linkfoxskills/guide.htm 指引获取API Key，或去 https://os.linkfox.com/ 补充积分。\n\n## 默认参数\n\n| 字段 | 默认 | 说明 |\n|------|------|------|\n| site | `us` | Partner US |\n| managementType | `semi-managed` | 半托管（具体接口以 Partner 文档为准） |\n| tokenPurpose | `order-shipping` | 订单/售后场景 token（见 [access-token.md](./references/access-token.md)） |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`（`storeKey` 时建议带 `tokenPurpose=order-shipping`）\n\n## Scripts\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_us_proxy.py` | 任意 `type` 通用转发 |\n| `temu_us_file_download.py` | 加签文件下载 |\n| `us_returns_refunds_aftersales_parentaftersales_list_get.py` | `bg.aftersales.parentaftersales.list.get` |\n| `us_returns_refunds_aftersales_aftersales_list_get.py` | `bg.aftersales.aftersales.list.get` |\n| `us_returns_refunds_aftersales_parentaftersales_detail_get.py` | `temu.aftersales.parentaftersales.detail.get` |\n| `us_returns_refunds_aftersales_parentreturnorder_get.py` | `bg.aftersales.parentreturnorder.get` |\n| `us_returns_refunds_aftersales_returnaddress_get.py` | `temu.aftersales.returnaddress.get` |\n| `us_returns_refunds_aftersales_returnlabel_prepare_get.py` | `temu.aftersales.returnlabel.prepare.get` |\n| `us_returns_refunds_aftersales_signature_get.py` | `temu.aftersales.signature.get` |\n| `us_returns_refunds_aftersales_upload_returnlabel.py` | `temu.aftersales.upload.returnlabel` |\n| `us_returns_refunds_aftersales_carrier_get.py` | `temu.aftersales.carrier.get` |\n\n## 接入更多接口（约定）\n\n你每提供一条 Partner 文档（`type` + `sub_menu_code` + URL + Request/Response 参数表），将：\n\n1. 新增 `references/apis/<type-slug>.md`（完整入参/出参层级）\n2. 新增 `scripts/us_returns_refunds_<slug>.py`（调用 `_us_returns_refunds_script.run_cli`）\n3. 更新 [partner-us-catalog.md](./references/partner-us-catalog.md)、[apis/README.md](./references/apis/README.md) 与本表\n\n## 示例（通用代理）\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\n\npython scripts/temu_us_proxy.py '{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"type\": \"<TEMU_API_TYPE>\",\n  \"params\": {\n    \"request\": {}\n  }\n}'\n```\n\n**Feedback：** `skillName`：`linkfox-temu-returns-refunds-us`\n\n## 网关与授权脚本\n\n| 脚本 | 说明 |\n|------|------|\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token |\n| `get_temu_access_token.py` | 读取已保存 token |\n| `temu_proxy.py` | 通用网关转发（多 site） |\n| `temu_file_download.py` | 加签文件下载（多 site） |\n\n授权说明：[references/access-token.md](./references/access-token.md)\n\n## 积分消耗规则\n\n不消耗积分。\n\nFile v1.0.4:references/apis/README.md\n\n# Returns & Refunds — 接口文档索引\n\n每个 `type` 单独一份文档。网关见 [../api.md](../api.md)；目录见 [../partner-us-catalog.md](../partner-us-catalog.md)。\n\n## 父售后单 / 列表与详情\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n\n## 退货物流 / 地址 / 面单\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n## 承运商与签名\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n\n> 买家/卖家**取消订单**见 `linkfox-temu-cancel-order-us`。\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-returns-refunds-us\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1783946575652\n}\n\nFile v1.0.4:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=us` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 美国站 | openapi-b-us.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：美国站、英国站等需分别登录对应后台获取 Token。\n3. **有效期**：Token 会过期，过期后重新在后台复制并 `save_temu_access_token.py`。\n4. **IP 白名单**：需联系紫鸟开放平台配置调用 IP。\n5. **参数小写**：`site`、`managementType` 必须小写。\n\n## 脚本一览\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_token_guide.py` | 按店铺类型/用途输出授权步骤 |\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\n| `list_temu_access_tokens.py` | 列出已保存 token（默认脱敏）|\n| `get_temu_access_token.py` | 读取指定 store 的 token |\n\nFile v1.0.4:references/api.md\n\n# linkfox-temu-returns-refunds-us — API 参考\n\nTemu **美国站退货与退款（Returns & Refunds）**，经本 skill `temu_us_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\n\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。建议 token 见 `references/access-token.md`（`tokenPurpose=order-shipping`）。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n---\n\n## 调用规范\n\n| 项 | 说明 |\n|----|------|\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\n| 退货退款 OpenAPI | `POST /temu/proxy` |\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_us_file_download.py`） |\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\n| 默认 | `site=us`，`managementType=semi-managed`，`tokenPurpose=order-shipping` |\n| 上游 OpenAPI（US） | `https://openapi-b-us.temu.com/openapi/router`（网关按 `site` 解析） |\n\n### 网关请求 Body（`/temu/proxy`）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| site | string | 是 | `us`（本 skill 默认） |\n| managementType | string | 是 | `semi-managed` |\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\n| tokenPurpose | string | 否 | 建议 **`order-shipping`** |\n| type | string | 是 | Temu 接口名，如 Partner Returns & Refunds 菜单下的 `bg.*` / `temu.*` |\n| params | object | 否 | 业务参数；多数接口业务块在 **`params.request`** |\n\n### 网关响应\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\n\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\n\n### 脚本调用\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/temu_us_proxy.py '{\"accessToken\":\"TOKEN\",\"tokenPurpose\":\"order-shipping\",\"type\":\"<API_TYPE>\",\"params\":{\"request\":{}}}'\n```\n\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\n\n---\n\n## 接口一览\n\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-us-catalog.md](./partner-us-catalog.md)。\n\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)（随接入递增）。\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n---\n\n## 与「取消订单」skill 的区分\n\n| 能力 | skill | 典型场景 |\n|------|--------|----------|\n| 买家/卖家**取消订单**（未发货或取消申请） | `linkfox-temu-cancel-order-us` | `bg.aftersales.cancel.*`、`temu.order.cancel.*` |\n| **退货、退款、售后退货退款** | **`linkfox-temu-returns-refunds-us`**（本 skill） | Partner **Returns & Refunds** 菜单下 9 条接口（见 [apis/README.md](./apis/README.md)） |\n\n订单上下文（`parentOrderSn`、`orderSn`、售后单号等）通常先通过 **`linkfox-temu-order-us`** 获取。\n\n---\n\n## 典型退货退款流程\n\n```text\n1. linkfox-temu-order-us                              → 订单/售后上下文\n2. bg.aftersales.parentaftersales.list.get            → 父售后单列表（筛选状态与时间）\n3. temu.aftersales.parentaftersales.detail.get        → 父售后详情（退款汇总、子单）\n4. bg.aftersales.aftersales.list.get                  → 子售后行项\n5. temu.aftersales.returnlabel.prepare.get            → 面单准备（仓、揽收时段）\n6. temu.aftersales.carrier.get                        → 承运商\n7. temu.aftersales.signature.get（若需要）            → 签名\n8. temu.aftersales.upload.returnlabel                 → 上传面单\n9. bg.aftersales.parentreturnorder.get                → 查询退货运单\n10. temu.aftersales.returnaddress.get                 → 买家寄回地址（自寄场景）\n```\n\n---\n\n## 网关错误码\n\n| code | 说明 | 处理 |\n|------|------|------|\n| 1002 | 参数或 LinkFox Token 无效 | 修正参数与 `LINKFOXAGENT_API_KEY` |\n| 1003 | 转发失败 | 检查 Temu token、`tokenPurpose`、白名单、网络 |\n| 402 | HTTP 402 | 按 SKILL.md 的 **## 解决认证和积分问题** 处理。 |\n\n---\n\n## Feedback API\n\n- **POST** `https://skill-api.linkfox.com/api/v1/public/feedback`\n- `skillName`: **`linkfox-temu-returns-refunds-us`**\n\nFile v1.0.4:references/apis/bg-aftersales-aftersales-list-get.md\n\n# 子售后单列表查询 — `bg.aftersales.aftersales.list.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_aftersales_list_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=d1675103eeed444fa3d650aa33b462be |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.aftersales.list.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query after-sales order list by parent after-sales SN.\n\n> **`parentAfterSalesSnList`** 为必填，通常来自 [bg-aftersales-parentaftersales-list-get](./bg-aftersales-parentaftersales-list-get.md)。\n> 入参 **`pageNo`**，出参 **`pageNumber`**。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── pageSize (INTEGER, 否)\n    ├── pageNo (INTEGER, 否)\n    └── parentAfterSalesSnList (STRING[], 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| pageSize | INTEGER | 否 | Page size for pagination, default is 10, max is 200. |\n| pageNo | INTEGER | 否 | Page number for pagination, default is 1. |\n| parentAfterSalesSnList | STRING[] | **是** | The list of parent after-sales order numbers to limit the query. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"pageNo\": 1,\n    \"pageSize\": 20,\n    \"parentAfterSalesSnList\": [\n      \"PAS-001\"\n    ]\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── total (LONG)\n    ├── pageNumber (INTEGER)\n    └── data[]\n        ├── parentAfterSalesSn (STRING)\n        ├── productSkuId (LONG)\n        ├── applyAfterSalesGoodsNumber (INTEGER)\n        ├── afterSalesSn (STRING)\n        ├── goodsId (LONG)\n        ├── skuId (LONG)\n        ├── productList[]\n        │   ├── productSkuId (LONG)\n        │   └── extCode (STRING)\n        ├── afterSalesStatus (INTEGER)\n        └── afterSalesType (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `data[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| productSkuId | LONG | Product SKU ID（商品 SKU ID） |\n| applyAfterSalesGoodsNumber | INTEGER | Number of goods applied for after-sales（申请售后商品件数） |\n| afterSalesSn | STRING | After-sales order number（子售后单号） |\n| goodsId | LONG | Goods ID（商品 ID） |\n| skuId | LONG | SKU ID |\n| productList | OBJECT[] | Product SKU list（关联商品 SKU 列表） |\n| afterSalesStatus | INTEGER | After-sales status（子售后单状态码） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n\n#### `productList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| productSkuId | LONG | Product SKU ID |\n| extCode | STRING | External code / merchant SKU code（商家外部编码） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_aftersales_list_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"pageNo\": 1, \"pageSize\": 20, \"parentAfterSalesSnList\": [\"PAS-001\"]}}'\n```\n\n**典型流程：** 在取得 **`parentAfterSalesSn`** 后查询子售后行项（含 **`afterSalesSn`**、SKU 与 **`productList`**）。\n\nFile v1.0.4:references/apis/bg-aftersales-parentaftersales-list-get.md\n\n# 父售后单列表查询 — `bg.aftersales.parentaftersales.list.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=36d2f55993344cf2991815f675493560 |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.parentaftersales.list.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent after-sales order list.\n\n> 入参 **`createAtStart`/`createAtEnd`** 与 **`updateAtStart`/`updateAtEnd`** 至少提供一组时间范围（Partner Request 表说明）。\n> 入参分页为 **`pageNo`**，出参当前页为 **`pageNumber`**，勿混用。\n> 列表项中的 **`afterSalesStatusGroup`** 与入参筛选枚举一致（见下表）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── pageSize (INTEGER, 否)\n    ├── pageNo (INTEGER, 否)\n    ├── parentOrderSnList (STRING[], 否)\n    ├── parentAfterSalesSnList (STRING[], 否)\n    ├── createAtStart (INTEGER, 否)\n    ├── createAtEnd (INTEGER, 否)\n    ├── updateAtStart (INTEGER, 否)\n    ├── updateAtEnd (INTEGER, 否)\n    └── afterSalesStatusGroup (INTEGER, 否)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| pageSize | INTEGER | 否 | Page size for pagination, default is 10, max is 200. |\n| pageNo | INTEGER | 否 | Page number for pagination, default is 1. |\n| parentOrderSnList | STRING[] | 否 | The list of parent order numbers to limit the query. |\n| parentAfterSalesSnList | STRING[] | 否 | The list of parent after-sales order numbers to limit the query. |\n| createAtStart | INTEGER | 否 | The start time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the starting range of the status change time when querying parent after-sales orders. |\n| createAtEnd | INTEGER | 否 | The end time for querying the creation time of parent after-sales orders, in seconds (timestamp). Defines the ending range (closed interval) of the creation time when querying parent after-sales orders. -Must be used in conjunction with createAtStart. -- At least one set of creation or update times must be provided as required input parameters. |\n| updateAtStart | INTEGER | 否 | The start time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the starting range of the status change time when querying parent after-sales orders. |\n| updateAtEnd | INTEGER | 否 | The end time for querying the status change time of parent after-sales orders, in seconds (timestamp). Defines the ending range (closed interval) of the status change time when querying parent after-sales orders. - Must be used in conjunction with updateAtStart. - At least one set of creation or update times must be provided as required input parameters. |\n| afterSalesStatusGroup | INTEGER | 否 | The after-sales order status group, enumerated as follows: 1: Pending, 2: Requested, 3: Package Shipped, 4: Platform Reviewing, 5: Refunded, 6: Rejected, 7: Cancelled. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"pageNo\": 1,\n    \"pageSize\": 20,\n    \"afterSalesStatusGroup\": 1,\n    \"createAtStart\": 1714521600,\n    \"createAtEnd\": 1714608000\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse（或解析后的根对象）\n├── success\n├── errorCode\n├── errorMsg\n└── result\n    ├── total (LONG)\n    ├── pageNumber (INTEGER)\n    └── data[]\n        ├── parentAfterSalesSn (STRING)\n        ├── afterSalesStatusGroup (INTEGER)\n        ├── operateExpireTimeMs (LONG)\n        ├── availableOperateList[] (INTEGER)\n        ├── returnDeliveryType (INTEGER)\n        ├── parentAfterSalesStatus (INTEGER)\n        ├── parentOrderSn (STRING)\n        ├── updateAt (INTEGER)\n        ├── afterSalesType (INTEGER)\n        └── createAt (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `data[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| afterSalesStatusGroup | INTEGER | The after-sales order status group（售后状态组），见下表 |\n| operateExpireTimeMs | LONG | Operation expiration time in milliseconds（可操作截止时间，毫秒时间戳） |\n| availableOperateList | INTEGER[] | List of available operations for the seller（卖家可执行操作列表，元素为操作码） |\n| returnDeliveryType | INTEGER | Return delivery type（退货配送/交付方式类型） |\n| parentAfterSalesStatus | INTEGER | Current parent after-sales status（父售后单当前状态码） |\n| parentOrderSn | STRING | Parent order number（父订单号） |\n| updateAt | INTEGER | Last update time in seconds（最后更新时间，秒级 UNIX 时间戳） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n| createAt | INTEGER | Creation time in seconds（创建时间，秒级 UNIX 时间戳） |\n\n#### `afterSalesStatusGroup`（入参筛选 / 出参）\n\n| 值 | 说明 |\n|----|------|\n| `1` | Pending |\n| `2` | Requested |\n| `3` | Package Shipped |\n| `4` | Platform Reviewing |\n| `5` | Refunded |\n| `6` | Rejected |\n| `7` | Cancelled |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"pageNo\": 1, \"pageSize\": 20, \"afterSalesStatusGroup\": 1, \"createAtStart\": 1714521600, \"createAtEnd\": 1714608000}}'\n```\n\n**典型流程：** 退货退款流程入口：按时间窗与 **`afterSalesStatusGroup`** 分页拉取父售后单 → 用 **`parentAfterSalesSn`** 调详情/子单列表/退货物流等接口。\n\nFile v1.0.4:references/apis/bg-aftersales-parentreturnorder-get.md\n\n# 父退货物流信息 — `bg.aftersales.parentreturnorder.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentreturnorder_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=986d1dc0ad9d4d44a380b8078405bae2 |\n| **网关** | `POST /temu/proxy`，`type`=`bg.aftersales.parentreturnorder.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent return order logistics information.\n\n> **`parentAfterSalesSn`** 必填；**`afterSalesSn`** 选填，用于限定子售后单。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentAfterSalesSn (STRING, 必填)\n    └── afterSalesSn (STRING, 否)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | parent after-sales order number. |\n| afterSalesSn | STRING | 否 | after-sales order number. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentAfterSalesSn\": \"PAS-001\",\n    \"afterSalesSn\": \"AS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    └── logisticsInfoList[]\n        ├── carrierName (STRING)\n        ├── returnWarehouseRegion1Name (STRING)\n        ├── returnWarehouseType (INTEGER)\n        └── trackingNumber (STRING)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `logisticsInfoList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| carrierName | STRING | Carrier name（承运商名称） |\n| returnWarehouseRegion1Name | STRING | Return warehouse primary region name（退货仓一级区域名称） |\n| returnWarehouseType | INTEGER | Return warehouse type（退货仓类型） |\n| trackingNumber | STRING | Tracking number（物流跟踪号） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentreturnorder_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentAfterSalesSn\": \"PAS-001\", \"afterSalesSn\": \"AS-001\"}}'\n```\n\n**典型流程：** 退货寄出后查询 **`logisticsInfoList`** 跟踪号与退货仓信息。\n\nFile v1.0.4:references/apis/temu-aftersales-carrier-get.md\n\n# 承运商列表 — `temu.aftersales.carrier.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_carrier_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=c1eceff2f3434bef8246668cc557ebb5 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.carrier.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query carriers for return label by return warehouse region.\n\n> **`returnWarehouseRegionId1`** 必填（商家退货仓一级区域 ID）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    └── returnWarehouseRegionId1 (LONG, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| returnWarehouseRegionId1 | LONG | **是** | Merchant return warehouse primary region id. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"returnWarehouseRegionId1\": 1\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    └── carrierDTOList[]\n        ├── carrierId (LONG)\n        └── carrierName (STRING)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `carrierDTOList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| carrierId | LONG | Carrier ID |\n| carrierName | STRING | Carrier name |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_carrier_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"returnWarehouseRegionId1\": 1}}'\n```\n\n**典型流程：** 上传面单前按退货仓区域查询 **`carrierId`**。\n\nFile v1.0.4:references/apis/temu-aftersales-parentaftersales-detail-get.md\n\n# 父售后单详情 — `temu.aftersales.parentaftersales.detail.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=f2551431265c4ea788e73fc3a741d075 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.parentaftersales.detail.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query parent after-sales order detail.\n\n> **`parentOrderSn`** 与 **`parentAfterSalesSn`** 均为必填。\n> **`refundSummary`** 与 **`afterSalesList`** 在 Partner 导出 HTML 的 Response 表中为折叠行，下列层级按 **Response Example** 全量展开。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentOrderSn (STRING, 必填)\n    └── parentAfterSalesSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentOrderSn | STRING | **是** | Order Number |\n| parentAfterSalesSn | STRING | **是** | Parent After-Sales Order Number |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentOrderSn\": \"PO-001\",\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── parentAfterSalesSn (STRING)\n    ├── availableOperateList[] (INTEGER)\n    ├── createAtMillis (LONG)\n    ├── parentAfterSalesStatus (INTEGER)\n    ├── refundSummary (OBJECT)\n    │   ├── discountFromSellerRefund (OBJECT) → currency, amount\n    │   ├── discountFromTEMURefund (OBJECT) → currency, amount\n    │   ├── buyerTotalRefund (OBJECT) → currency, amount\n    │   ├── shippingAmountRefundTaxExcl (OBJECT) → currency, amount\n    │   ├── taxTotalRefund (OBJECT) → currency, amount\n    │   └── retailPriceRefundTaxExcl (OBJECT) → currency, amount\n    ├── parentOrderSn (STRING)\n    ├── lastUpdateAtMillis (LONG)\n    ├── afterSalesType (INTEGER)\n    └── afterSalesList[]\n        ├── applyAfterSalesGoodsNumber (INTEGER)\n        ├── afterSalesSn (STRING)\n        ├── orderSn (STRING)\n        ├── applyRefundAmount (OBJECT) → currency, amount\n        ├── afterSalesReasonDesc (STRING)\n        ├── afterSalesGoodsInfo (OBJECT)\n        │   ├── productSkuId, goodsId, skuId\n        │   └── productList[] → productSkuId, extCode\n        ├── afterSalesReasonCode (INTEGER)\n        ├── buyerComment (STRING)\n        └── afterSalesStatus (INTEGER)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result` 业务字段\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| parentAfterSalesSn | STRING | Parent after-sales order number（父售后单号） |\n| availableOperateList | INTEGER[] | Available operations for the seller（卖家可执行操作码列表） |\n| createAtMillis | LONG | Creation time in milliseconds（创建时间，毫秒） |\n| parentAfterSalesStatus | INTEGER | Parent after-sales status（父售后单状态码） |\n| refundSummary | OBJECT | Refund amount summary（退款金额汇总） |\n| parentOrderSn | STRING | Parent order number（父订单号） |\n| lastUpdateAtMillis | LONG | Last update time in milliseconds（最后更新时间，毫秒） |\n| afterSalesType | INTEGER | After-sales type（售后类型） |\n| afterSalesList | OBJECT[] | Child after-sales line list（子售后行列表） |\n\n### `refundSummary` 内金额对象（`discountFromSellerRefund` 等）\n\n各子字段均为 **OBJECT**，结构相同：\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| currency | STRING | Currency code（币种） |\n| amount | NUMBER | Amount（金额） |\n\n| 子字段 | 说明 |\n|--------|------|\n| discountFromSellerRefund | Discount refunded from seller（卖家侧优惠退款） |\n| discountFromTEMURefund | Discount refunded from TEMU（平台侧优惠退款） |\n| buyerTotalRefund | Total refund to buyer（买家总退款） |\n| shippingAmountRefundTaxExcl | Shipping amount refund excluding tax（运费退款，不含税） |\n| taxTotalRefund | Total tax refund（税费退款合计） |\n| retailPriceRefundTaxExcl | Retail price refund excluding tax（零售价退款，不含税） |\n\n### `afterSalesList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| applyAfterSalesGoodsNumber | INTEGER | Applied after-sales goods quantity（申请售后商品数量） |\n| afterSalesSn | STRING | After-sales order number（子售后单号） |\n| orderSn | STRING | Order number（子订单号） |\n| applyRefundAmount | OBJECT | Applied refund amount（申请退款金额，`currency` + `amount`） |\n| afterSalesReasonDesc | STRING | After-sales reason description（售后原因描述） |\n| afterSalesGoodsInfo | OBJECT | After-sales goods information（售后商品信息） |\n| afterSalesReasonCode | INTEGER | After-sales reason code（售后原因码） |\n| buyerComment | STRING | Buyer comment（买家留言） |\n| afterSalesStatus | INTEGER | After-sales status（子售后状态码） |\n\n#### `afterSalesGoodsInfo`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| productSkuId | LONG | Product SKU ID |\n| goodsId | LONG | Goods ID |\n| skuId | LONG | SKU ID |\n| productList | OBJECT[] | Product list（`productSkuId`、`extCode`） |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010000 | system error | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010005 | operate forbid | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010002 | The order has been fully shipped. | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentOrderSn\": \"PO-001\", \"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** 用列表接口得到的 **`parentAfterSalesSn`** + **`parentOrderSn`** 拉取退款汇总与子售后明细，再决定上传面单/查地址等后续操作。\n\nFile v1.0.4:references/apis/temu-aftersales-returnaddress-get.md\n\n# 退货地址查询 — `temu.aftersales.returnaddress.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_returnaddress_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=05d0a325704d4d538d708f3e256168e0 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.returnaddress.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Query return shipping address for after-sales.\n\n> 仅 **`parentAfterSalesSn`** 必填。\n> 错误码 **18002xxxx** 表示国家未开通、未签 DPA、全托管/仅退款/已上传面单等场景不支持查地址（见 Error Code 表）。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    └── parentAfterSalesSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | parentAfterSalesSn |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── receiptAdditionalName, receiptName\n    ├── regionName1 … regionName4\n    ├── mail, mobile, backupMobile\n    ├── addressLine1 … addressLine3, addressLineAll\n    └── postCode\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| receiptAdditionalName | STRING | Additional recipient name（收件人附加名） |\n| receiptName | STRING | Recipient name（收件人姓名） |\n| regionName1 | STRING | Region level 1 name（一级地区名） |\n| regionName2 | STRING | Region level 2 name |\n| regionName3 | STRING | Region level 3 name |\n| regionName4 | STRING | Region level 4 name |\n| mail | STRING | Email |\n| mobile | STRING | Mobile phone |\n| backupMobile | STRING | Backup mobile |\n| addressLine1 | STRING | Address line 1 |\n| addressLine2 | STRING | Address line 2 |\n| addressLine3 | STRING | Address line 3 |\n| addressLineAll | STRING | Full address line（完整地址拼接） |\n| postCode | STRING | Postal code |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 180020001 | This country has not yet opened address query capabilities | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180020008 | Please sign on DPA agreement first | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021001 | full managed, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021002 | only refund type, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021003 | uploaded label, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n| 180021004 | no need upload label, unSupport query address | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_returnaddress_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** 买家需自行寄回时先查 **`result`** 退货地址再发货或上传面单。\n\nFile v1.0.4:references/apis/temu-aftersales-returnlabel-prepare-get.md\n\n# 退货面单准备信息 — `temu.aftersales.returnlabel.prepare.get`\n\n| 项 | 值 |\n|----|-----|\n| **脚本** | `scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py` |\n| **Partner 文档** | https://partner-us.temu.com/documentation?menu_code=d3d2812d87034d35adb016972349fcb0&sub_menu_code=f6d52305e84d4945b2b1c8d3218bbe20 |\n| **网关** | `POST /temu/proxy`，`type`=`temu.aftersales.returnlabel.prepare.get`，业务载荷放在 Body 的 `params` |\n\n**Description:** Get return label preparation information (pick-up times and warehouses).\n\n> **`parentAfterSalesSn`** 与 **`parentOrderSn`** 均为必填。\n> 上传面单前通常先调本接口获取 **`availableReturnWarehouseList`** 与上门揽收时间窗。\n\n> **网关鉴权字段**由本 skill 网关脚本处理；业务参数见下方 **`request`**。建议使用 **`tokenPurpose=order-shipping`**，**`managementType=semi-managed`**。\n\n---\n\n## Request 结构（官方顶层）\n\n```text\nparams\n└── request (OBJECT, 选填)\n    ├── parentAfterSalesSn (STRING, 必填)\n    └── parentOrderSn (STRING, 必填)\n```\n\n### `request` 内字段\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| parentAfterSalesSn | STRING | **是** | Parent after-sales order number. |\n| parentOrderSn | STRING | **是** | Parent order number. |\n\n> 官方 Request 表将顶层 **`request`** 标为选填（False）；标 **必填** 的字段须在 **`params.request`** 中提供。Partner **Request Example** CURL 将业务字段写在 JSON 顶层；经 LinkFox 网关时建议放在 **`params.request`**。\n\n### 网关 `params` 写法\n\n```json\n{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"request\": {\n    \"parentOrderSn\": \"PO-001\",\n    \"parentAfterSalesSn\": \"PAS-001\"\n  }\n}\n```\n\n---\n\n## Response（Temu `body` 解析后）\n\nPartner **Response** 表顶层为 **`response`** 对象；嵌套子行在导出 HTML 中多为折叠状态，下列层级按 **Response 表 + Response Example** 全部展开。\n\n```text\nresponse\n├── success / errorCode / errorMsg\n└── result\n    ├── userPickUpTimezone (STRING)\n    ├── userSelectedPickUpTimeList[] → startTimestamp, endTimestamp\n    ├── availableReturnWarehouseList[] → warehouseId, warehouseName\n    └── merchantLatestPickUpTime (LONG)\n```\n\n### 顶层字段（`response` 内，或根级）\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| success | BOOLEAN | success（当前请求是否成功） |\n| errorCode | INTEGER | error code（错误码） |\n| errorMsg | STRING | error message（错误信息） |\n| result | OBJECT | 业务结果对象（见下表） |\n\n### `result`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| userPickUpTimezone | STRING | User pick-up timezone（用户上门揽收时区） |\n| userSelectedPickUpTimeList | OBJECT[] | User-selected pick-up time intervals（可选揽收时间段） |\n| availableReturnWarehouseList | OBJECT[] | Available return warehouses（可选退货仓列表） |\n| merchantLatestPickUpTime | LONG | Merchant latest pick-up time（商家最晚揽收时间，毫秒时间戳） |\n\n#### `userSelectedPickUpTimeList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| startTimestamp | LONG | Interval start（毫秒） |\n| endTimestamp | LONG | Interval end（毫秒） |\n\n#### `availableReturnWarehouseList[]`\n\n| 参数 | 类型 | 说明 |\n|------|------|------|\n| warehouseId | STRING | Warehouse ID |\n| warehouseName | STRING | Warehouse name |\n\n---\n\n## Error Code（Partner 表）\n\n| errorCode | errorMsg | Error SOP / 处理建议 |\n|-----------|----------|----------------------|\n| 130010001 | The parameter is illegal. Please check if the input parameter meets the regulations. | 见 Partner 文档；修正入参或售后状态后重试 |\n| 130010005 | operate forbid | 见 Partner 文档；修正入参或售后状态后重试 |\n\n---\n\n## 脚本\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py '{\"accessToken\": \"TOKEN\", \"tokenPurpose\": \"order-shipping\", \"request\": {\"parentOrderSn\": \"PO-001\", \"parentAfterSalesSn\": \"PAS-001\"}}'\n```\n\n**典型流程：** → [temu-aftersales-carrier-get](./temu-aftersales-carrier-get.md) 取承运商 → [temu-aftersales-upload-returnlabel](./temu-aftersales-upload-returnlabel.md) 上传面单。\n\nArchive v1.0.3: 40 files, 53418 bytes\n\nFiles: references/access-token.md (4450b), references/api.md (5931b), references/apis/bg-aftersales-aftersales-list-get.md (4743b), references/apis/bg-aftersales-parentaftersales-list-get.md (7264b), references/apis/bg-aftersales-parentreturnorder-get.md (3584b), references/apis/README.md (1882b), references/apis/temu-aftersales-carrier-get.md (3021b), references/apis/temu-aftersales-parentaftersales-detail-get.md (7536b), references/apis/temu-aftersales-returnaddress-get.md (4425b), references/apis/temu-aftersales-returnlabel-prepare-get.md (4378b), references/apis/temu-aftersales-signature-get.md (2926b), references/apis/temu-aftersales-upload-returnlabel.md (6415b), references/authorization-flow.md (1186b), references/partner-us-catalog.md (4787b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12433b), scripts/_temu_token_store.py (4273b), scripts/_temu_us_common.py (3103b), scripts/_us_returns_refunds_script.py (524b), scripts/check_linkfox_token.py (1797b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_file_download.py (1695b), scripts/temu_proxy.py (2138b), scripts/temu_token_guide.py (1594b), scripts/temu_us_file_download.py (694b), scripts/temu_us_proxy.py (920b), scripts/us_returns_refunds_aftersales_aftersales_list_get.py (299b), scripts/us_returns_refunds_aftersales_carrier_get.py (270b), scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py (321b), scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py (317b), scripts/us_returns_refunds_aftersales_parentreturnorder_get.py (302b), scripts/us_returns_refunds_aftersales_returnaddress_get.py (291b), scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py (315b), scripts/us_returns_refunds_aftersales_signature_get.py (279b), scripts/us_returns_refunds_aftersales_upload_returnlabel.py (294b), skill-card.md (3221b), SKILL.md (6260b), _meta.json (150b)\n\nFile v1.0.3:SKILL.md\n\n---\r\nname: linkfox-temu-returns-refunds-us\r\ndescription: Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。\r\n---\r\n\r\n# Temu 美国站 — 退货与退款（Returns & Refunds）\r\n\r\n本 skill（`linkfox-temu-returns-refunds-us`）覆盖 Partner Platform for US **Returns & Refunds / 电商退货与退款**（及关联 **After-sales** 退货退款类）相关 `bg.*` / `temu.*` 接口（`menu_code` 与各 `sub_menu_code` 以 Partner 后台为准，见 [partner-us-catalog.md](./references/partner-us-catalog.md)）。\r\n\r\n已接入 **9** 条 Partner **Return and Refund** 接口，清单见 [partner-us-catalog.md](./references/partner-us-catalog.md)。\r\n\r\n**网关（本 skill 内置）**：\r\n\r\n| 能力 | 方法 | 路径 |\r\n|------|------|------|\r\n| 退货退款 OpenAPI（`us_returns_refunds_*`、`temu_us_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\r\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\r\n\r\n## 相关 skill\r\n\r\n| 场景 | skill |\r\n|------|--------|\r\n| **退货与退款**（本 skill） | **`linkfox-temu-returns-refunds-us`** |\r\n| 买家发起**取消订单**（非退货退款全流程） | `linkfox-temu-cancel-order-us` |\r\n| 卖家发起**取消订单** / 缺货取消 / 申诉 | `linkfox-temu-cancel-order-us` |\r\n| 订单列表/详情/金额/售后上下文 | `linkfox-temu-order-us` |\r\n| 商品管理 | `linkfox-temu-manage-product-us` |\r\n| 履约/发货 | `linkfox-temu-fulfillment-us` |\r\n| 网关与 Temu token | 本 skill `scripts/` |\r\n\r\n## 调用方式\r\n\r\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\r\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\r\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\r\n\r\n**输出策略（脚本默认行为）**：\r\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-temu-returns-refunds-us-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\r\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\r\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\r\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\r\n\r\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\r\n\r\n## 默认参数\r\n\r\n| 字段 | 默认 | 说明 |\r\n|------|------|------|\r\n| site | `us` | Partner US |\r\n| managementType | `semi-managed` | 半托管（具体接口以 Partner 文档为准） |\r\n| tokenPurpose | `order-shipping` | 订单/售后场景 token（见 [access-token.md](./references/access-token.md)） |\r\n\r\n## 鉴权\r\n\r\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\r\n2. **Temu**：`accessToken` 或 `storeKey`（`storeKey` 时建议带 `tokenPurpose=order-shipping`）\r\n\r\n## Scripts\r\n\r\n| 脚本 | 说明 |\r\n|------|------|\r\n| `temu_us_proxy.py` | 任意 `type` 通用转发 |\r\n| `temu_us_file_download.py` | 加签文件下载 |\r\n| `us_returns_refunds_aftersales_parentaftersales_list_get.py` | `bg.aftersales.parentaftersales.list.get` |\r\n| `us_returns_refunds_aftersales_aftersales_list_get.py` | `bg.aftersales.aftersales.list.get` |\r\n| `us_returns_refunds_aftersales_parentaftersales_detail_get.py` | `temu.aftersales.parentaftersales.detail.get` |\r\n| `us_returns_refunds_aftersales_parentreturnorder_get.py` | `bg.aftersales.parentreturnorder.get` |\r\n| `us_returns_refunds_aftersales_returnaddress_get.py` | `temu.aftersales.returnaddress.get` |\r\n| `us_returns_refunds_aftersales_returnlabel_prepare_get.py` | `temu.aftersales.returnlabel.prepare.get` |\r\n| `us_returns_refunds_aftersales_signature_get.py` | `temu.aftersales.signature.get` |\r\n| `us_returns_refunds_aftersales_upload_returnlabel.py` | `temu.aftersales.upload.returnlabel` |\r\n| `us_returns_refunds_aftersales_carrier_get.py` | `temu.aftersales.carrier.get` |\r\n\r\n## 接入更多接口（约定）\r\n\r\n你每提供一条 Partner 文档（`type` + `sub_menu_code` + URL + Request/Response 参数表），将：\r\n\r\n1. 新增 `references/apis/<type-slug>.md`（完整入参/出参层级）\r\n2. 新增 `scripts/us_returns_refunds_<slug>.py`（调用 `_us_returns_refunds_script.run_cli`）\r\n3. 更新 [partner-us-catalog.md](./references/partner-us-catalog.md)、[apis/README.md](./references/apis/README.md) 与本表\r\n\r\n## 示例（通用代理）\r\n\r\n```bash\r\nexport LINKFOXAGENT_API_KEY=\"<key>\"\r\n\r\npython scripts/temu_us_proxy.py '{\r\n  \"accessToken\": \"TOKEN\",\r\n  \"tokenPurpose\": \"order-shipping\",\r\n  \"type\": \"<TEMU_API_TYPE>\",\r\n  \"params\": {\r\n    \"request\": {}\r\n  }\r\n}'\r\n```\r\n\r\n**Feedback：** `skillName`：`linkfox-temu-returns-refunds-us`\r\n\r\n## 网关与授权脚本\r\n\r\n| 脚本 | 说明 |\r\n|------|------|\r\n| `check_linkfox_token.py` | 校验 LinkFox 用户 Token |\r\n| `temu_token_guide.py` | Temu accessToken 后台授权步骤 |\r\n| `save_temu_access_token.py` | 保存 accessToken 到本地 |\r\n| `list_temu_access_tokens.py` | 列出已保存 token |\r\n| `get_temu_access_token.py` | 读取已保存 token |\r\n| `temu_proxy.py` | 通用网关转发（多 site） |\r\n| `temu_file_download.py` | 加签文件下载（多 site） |\r\n\r\n授权说明：[references/access-token.md](./references/access-token.md)\n\nFile v1.0.3:references/apis/README.md\n\n# Returns & Refunds — 接口文档索引\n\n每个 `type` 单独一份文档。网关见 [../api.md](../api.md)；目录见 [../partner-us-catalog.md](../partner-us-catalog.md)。\n\n## 父售后单 / 列表与详情\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n\n## 退货物流 / 地址 / 面单\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n## 承运商与签名\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n\n> 买家/卖家**取消订单**见 `linkfox-temu-cancel-order-us`。\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-returns-refunds-us\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1783338520671\n}\n\nFile v1.0.3:references/access-token.md\n\n# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=us` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 美国站 | openapi-b-us.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n \n\nArchive v1.0.2: 39 files, 51980 bytes\n\nFiles: references/access-token.md (4450b), references/api.md (5931b), references/apis/bg-aftersales-aftersales-list-get.md (4743b), references/apis/bg-aftersales-parentaftersales-list-get.md (7264b), references/apis/bg-aftersales-parentreturnorder-get.md (3584b), references/apis/README.md (1882b), references/apis/temu-aftersales-carrier-get.md (3021b), references/apis/temu-aftersales-parentaftersales-detail-get.md (7536b), references/apis/temu-aftersales-returnaddress-get.md (4425b), references/apis/temu-aftersales-returnlabel-prepare-get.md (4378b), references/apis/temu-aftersales-signature-get.md (2926b), references/apis/temu-aftersales-upload-returnlabel.md (6415b), references/authorization-flow.md (1186b), references/partner-us-catalog.md (4787b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (12433b), scripts/_temu_token_store.py (4273b), scripts/_temu_us_common.py (3103b), scripts/_us_returns_refunds_script.py (524b), scripts/check_linkfox_token.py (1797b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_file_download.py (1695b), scripts/temu_proxy.py (2138b), scripts/temu_token_guide.py (1594b), scripts/temu_us_file_download.py (694b), scripts/temu_us_proxy.py (920b), scripts/us_returns_refunds_aftersales_aftersales_list_get.py (299b), scripts/us_returns_refunds_aftersales_carrier_get.py (270b), scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py (321b), scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py (317b), scripts/us_returns_refunds_aftersales_parentreturnorder_get.py (302b), scripts/us_returns_refunds_aftersales_returnaddress_get.py (291b), scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py (315b), scripts/us_returns_refunds_aftersales_signature_get.py (279b), scripts/us_returns_refunds_aftersales_upload_returnlabel.py (294b), SKILL.md (6260b), _meta.json (150b)\n\nArchive v1.0.0: 40 files, 50458 bytes\n\nFiles: references/access-token.md (4450b), references/api.md (5914b), references/apis/bg-aftersales-aftersales-list-get.md (4743b), references/apis/bg-aftersales-parentaftersales-list-get.md (7264b), references/apis/bg-aftersales-parentreturnorder-get.md (3584b), references/apis/README.md (1882b), references/apis/temu-aftersales-carrier-get.md (3021b), references/apis/temu-aftersales-parentaftersales-detail-get.md (7536b), references/apis/temu-aftersales-returnaddress-get.md (4425b), references/apis/temu-aftersales-returnlabel-prepare-get.md (4378b), references/apis/temu-aftersales-signature-get.md (2926b), references/apis/temu-aftersales-upload-returnlabel.md (6415b), references/authorization-flow.md (1186b), references/partner-us-catalog.md (4787b), scripts/_temu_auth_guide.py (6198b), scripts/_temu_common.py (5593b), scripts/_temu_token_store.py (4237b), scripts/_temu_us_common.py (3077b), scripts/_us_returns_refunds_script.py (524b), scripts/check_linkfox_token.py (1797b), scripts/get_temu_access_token.py (1843b), scripts/list_temu_access_tokens.py (652b), scripts/save_temu_access_token.py (1377b), scripts/temu_file_download.py (1595b), scripts/temu_proxy.py (2027b), scripts/temu_token_guide.py (1594b), scripts/temu_us_file_download.py (639b), scripts/temu_us_proxy.py (855b), scripts/us_returns_refunds_aftersales_aftersales_list_get.py (299b), scripts/us_returns_refunds_aftersales_carrier_get.py (270b), scripts/us_returns_refunds_aftersales_parentaftersales_detail_get.py (321b), scripts/us_returns_refunds_aftersales_parentaftersales_list_get.py (317b), scripts/us_returns_refunds_aftersales_parentreturnorder_get.py (302b), scripts/us_returns_refunds_aftersales_returnaddress_get.py (291b), scripts/us_returns_refunds_aftersales_returnlabel_prepare_get.py (315b), scripts/us_returns_refunds_aftersales_signature_get.py (279b), scripts/us_returns_refunds_aftersales_upload_returnlabel.py (294b), skill-card.md (2771b), SKILL.md (5225b), _meta.json (150b)","readmeExcerpt":"Skill: Temu美国站-退货退款 Owner: linkfox-ai Summary: Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。 Tags: latest:1.0.6 Version history: v1.0.6 ","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<key>\"\n\npython scripts/temu_us_proxy.py '{\n  \"accessToken\": \"TOKEN\",\n  \"tokenPurpose\": \"order-shipping\",\n  \"type\": \"<TEMU_API_TYPE>\",\n  \"params\": {\n    \"request\": {}\n  }\n}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py"},{"language":"bash","snippet":"# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'"},{"language":"bash","snippet":"export LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/temu_us_proxy.py '{\"accessToken\":\"TOKEN\",\"tokenPurpose\":\"order-shipping\",\"type\":\"<API_TYPE>\",\"params\":{\"request\":{}}}'"},{"language":"text","snippet":"1. linkfox-temu-order-us                              → 订单/售后上下文\n2. bg.aftersales.parentaftersales.list.get            → 父售后单列表（筛选状态与时间）\n3. temu.aftersales.parentaftersales.detail.get        → 父售后详情（退款汇总、子单）\n4. bg.aftersales.aftersales.list.get                  → 子售后行项\n5. temu.aftersales.returnlabel.prepare.get            → 面单准备（仓、揽收时段）\n6. temu.aftersales.carrier.get                        → 承运商\n7. temu.aftersales.signature.get（若需要）            → 签名\n8. temu.aftersales.upload.returnlabel                 → 上传面单\n9. bg.aftersales.parentreturnorder.get                → 查询退货运单\n10. temu.aftersales.returnaddress.get                 → 买家寄回地址（自寄场景）"},{"language":"text","snippet":"params\n└── request (OBJECT, 选填)\n    ├── pageSize (INTEGER, 否)\n    ├── pageNo (INTEGER, 否)\n    └── parentAfterSalesSnList (STRING[], 必填)"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: linkfox-temu-returns-refunds-us\ndescription: Temu 美国站电商退货与退款 API，经 LinkFox 网关转发 Partner US Returns & Refunds / 售后退货退款 相关 bg/temu 接口（退货申请、退款、售后单查询与处理等，接口将按 Partner 文档逐条接入）。当用户提到 Temu US 退货、退款、售后退货、return、refund、aftersales return、parentAfterSalesSn、退货单、退款单、order-shipping 售后 时触发。买家/卖家取消订单用 linkfox-temu-cancel-order-us / linkfox-temu-cancel-order-us；订单用 linkfox-temu-order-us。\n---\n\n# Temu 美国站 — 退货与退款（Returns & Refunds）\n\n本 skill（`linkfox-temu-returns-refunds-us`）覆盖 Partner Platform for US **Returns & Refunds / 电商退货与退款**（及关联 **After-sales** 退货退款类）相关 `bg.*` / `temu.*` 接口（`menu_code` 与各 `sub_menu_code` 以 Partner 后台为准，见 [partner-us-catalog.md](./references/partner-us-catalog.md)）。\n\n已接入 **9** 条 Partner **Return and Refund** 接口，清单见 [partner-us-catalog.md](./references/partner-us-catalog.md)。\n\n**网关（本 skill 内置）**：\n\n| 能力 | 方法 | 路径 |\n|------|------|------|\n| 退货退款 OpenAPI（`us_returns_refunds_*`、`temu_us_proxy`） | POST | `https://tool-gateway.linkfox.com/temu/proxy` |\n| 加签文件下载 | POST | `https://tool-gateway.linkfox.com/temu/fileDownload` |\n\n## 相关 skill\n\n| 场景 | skill |\n|------|--------|\n| **退货与退款**（本 skill） | **`linkfox-temu-returns-refunds-us`** |\n| 买家发起**取消订单**（非退货退款全流程） | `linkfox-temu-cancel-order-us` |\n| 卖家发起**取消订单** / 缺货取消 / 申诉 | `linkfox-temu-cancel-order-us` |\n| 订单列表/详情/金额/售后上下文 | `linkfox-temu-order-us` |\n| 商品管理 | `linkfox-temu-manage-product-us` |\n| 履约/发货 | `linkfox-temu-fulfillment-us` |\n| 网关与 Temu token | 本 skill `scripts/` |\n\n## 调用方式\n\n- **API 端点**：`POST /temu/proxy`（不同操作通过请求体区分；完整参数/响应/错误码见 `references/api.md`）\n- **Python 脚本**：`python scripts/<脚本名>.py '<JSON 参数>' [--inline]`（可用脚本见上文脚本一览）\n- **成本约束**：本工具会消耗积分；失败/空结果不得自动换关键词、翻页或连续试探；需要继续检索时先向用户说明会产生额外消耗。\n\n**输出策略（脚本默认行为）**：\n- **始终**将完整响应写入 `<cwd>/linkfox/<YYYY-MM-DD>/<session>/data/linkfox-temu-returns-refunds-us-<timestamp>.json`（`<cwd>` 为脚本执行时的工作目录，在 Claude Code 里即当前项目目录；`<session>` 取自环境变量 `SESSION_ID`，按用户任务自动聚合；**禁止写入 /tmp**，当前目录不可写则报错）\n- 响应体 ≤ 8 KB：落盘后把完整 JSON 打印到 stdout\n- 响应体 > 8 KB：落盘后 stdout 只输出摘要（顶层字段、常见计数如 `total`/`costToken`、最大列表字段的长度 + 前 3 条样本）\n- 加 `--inline` 强制全量打印到 stdout（同样落盘）\n\n**读数据建议**：先看摘要判断是否足够；需要具体字段时优先用 `jq`或`ConvertFrom-Json` 从保存的 json 文件按需抽取，避免整份 JSON 进入上下文。\n\n## 解决认证和积分问题\n发生以下异常情况时，采用 references/onboarding.md 引导解决问题：\n\n### 异常情况\n- **未配置API Key**：环境变量未配置 `LINKFOX_AGENT_API_KEY`，也未配置 `LINKFOXAGENT_API_KEY`。\n- **响应401或402状态码**\n- **响应提示积分或余额不足**：消息含\"积分余额不足/计费不足/余额不足/quota exceeded/insufficient balance/套餐到期/需充值/请充值\"，或类似含义的内容。\n\n## 默认参数\n\n| 字段 | 默认 | 说明 |\n|------|------|------|\n| site | `us` | Partner US |\n| managementType | `semi-managed` | 半托管（具体接口以 Partner 文档为准） |\n| tokenPurpose | `order-shipping` | 订单/售后场景 token（见 [access-token.md](./references/access-token.md)） |\n\n## 鉴权\n\n1. **LinkFox**：`LINKFOXAGENT_API_KEY` → Header `Authorization` + `Token`\n2. **Temu**：`accessToken` 或 `storeKey`（`storeKey` 时建议带 `tokenPurpose=order-shipping`）\n\n## Scripts\n\n| 脚本 | 说明 |\n|------|------|\n| `temu_us_proxy.py` | 任意 `type` 通用转发 |\n| `temu_us_file_download.py` | 加签文件下载 |\n| `us_returns_refunds_aftersales_p"},{"path":"references/apis/README.md","content":"# Returns & Refunds — 接口文档索引\n\n每个 `type` 单独一份文档。网关见 [../api.md](../api.md)；目录见 [../partner-us-catalog.md](../partner-us-catalog.md)。\n\n## 父售后单 / 列表与详情\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n\n## 退货物流 / 地址 / 面单\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-aftersales-returnaddress-get.md](./apis/temu-aftersales-returnaddress-get.md) |\n| `temu.aftersales.returnlabel.prepare.get` | 退货面单准备信息 | [temu-aftersales-returnlabel-prepare-get.md](./apis/temu-aftersales-returnlabel-prepare-get.md) |\n| `temu.aftersales.upload.returnlabel` | 上传退货面单 | [temu-aftersales-upload-returnlabel.md](./apis/temu-aftersales-upload-returnlabel.md) |\n\n## 承运商与签名\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `temu.aftersales.signature.get` | 售后签名获取 | [temu-aftersales-signature-get.md](./apis/temu-aftersales-signature-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n\n> 买家/卖家**取消订单**见 `linkfox-temu-cancel-order-us`。"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7dmc1t4j28hem1twwyav85p182pb1j\",\n  \"slug\": \"linkfox-temu-returns-refunds-us\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1786720791219\n}"},{"path":"references/access-token.md","content":"# Temu accessToken 授权与获取\n\nTemu **没有** LinkFox 侧自动 OAuth；`accessToken` 须在 Temu 卖家后台「服务市场 → 授权管理」**手动复制**。与 `LINKFOXAGENT_API_KEY`（LinkFox 用户鉴权）是两套令牌。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n## 两种鉴权（勿混淆）\n\n| 令牌 | 用途 | 获取方式 |\n|------|------|----------|\n| **LinkFox 用户 Token** | 调用 `/temu/proxy`、`/temu/fileDownload` **必填** | `LINKFOXAGENT_API_KEY` 或请求 JSON 的 `token`；Header `Authorization` + `Token`（同 amazon-store-auth）（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| **Temu accessToken** | Temu 业务 API（经紫鸟转发） | Temu 卖家后台授权后复制 |\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<your-key>\"\npython scripts/check_linkfox_token.py\n```\n\n## tokenPurpose 与场景\n\n| tokenPurpose | 店铺类型 | 推荐 site | 授权应用 |\n|--------------|----------|-----------|----------|\n| `product-inventory` | 半托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `order-shipping` | 半托管 | `us` / `global` / `eu` | Cyber-ERP酷鸟助手 |\n| `full-managed` | 全托管 | `cn` / `partner` | 酷鸟卖家助手 |\n| `local-native` | 本土（美/欧主体） | `us` 等 | Cyber-ERP |\n\n## 1. 半托管 — 商品/库存 Token\n\n1. 登录 [seller.kuajingmaihuo.com](https://seller.kuajingmaihuo.com) 或 [agentseller.temu.com](https://agentseller.temu.com)\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → 选择 **「酷鸟卖家助手」**\n4. 全选常规和特殊授权 → 确认 → **复制 access_token**\n5. 调用 API：`site=cn` 或 `partner`，`managementType=semi-managed`\n\n## 2. 半托管 — 订单/发货 Token\n\n1. 登录 Temu 卖家后台\n2. 右上角 **Seller Central** → 切换到目标区域（美区 / 欧区 / 全球）\n3. **服务市场** → **授权管理**\n4. **获取授权** → 选择 **「Cyber-ERP酷鸟助手」**\n5. 全选授权 → 确认 → 复制 token\n6. 调用 API：`site=us` / `global` / `eu`，`managementType=semi-managed`\n\n## 3. 全托管店铺\n\n1. 登录 Temu 平台\n2. **系统管理** → **服务市场** → **授权管理**\n3. **获取授权** → **「酷鸟卖家助手」** → 全选 → 复制 token\n4. 调用 API：`managementType=full-managed`，`site` 通常 `cn` 或 `partner`\n\n## 4. 本土店铺（美区、欧区主体）\n\n1. 登录 Temu\n2. **Apps And Services** → **Manage Your Apps**\n3. **Authorize a new app** → 搜索 **「Cyber-ERP」**\n4. 一般权限与敏感权限全选 → 确认 → 复制 token\n\n## 站点与 OpenAPI 网关\n\n| site | 说明 | Temu 网关 |\n|------|------|-----------|\n| cn | 中国站 | openapi.kuajingmaihuo.com |\n| partner | Partner 网关 | openapi-b-partner.temu.com |\n| us | 美国站 | openapi-b-us.temu.com |\n| global | 全球区 | openapi-b-global.temu.com |\n| eu | 欧洲站 | openapi-b-eu.temu.com |\n\n## 本地保存 Token（推荐）\n\n默认存储：`~/.linkfox/temu-access-tokens.json`（可用 `TEMU_TOKEN_STORE_PATH` 覆盖）。\n\n```bash\n# 查看授权步骤\npython scripts/temu_token_guide.py '{\"shopType\":\"semi-managed\",\"tokenPurpose\":\"product-inventory\",\"site\":\"cn\"}'\n\n# 保存 token\npython scripts/save_temu_access_token.py '{\n  \"storeKey\": \"my-shop\",\n  \"label\": \"中国半托管\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"accessToken\": \"PASTE_TOKEN\"\n}'\n\n# 列出已保存（脱敏）\npython scripts/list_temu_access_tokens.py\n\n# 用 storeKey 调 API（无需每次粘贴 token）\npython scripts/temu_proxy.py '{\n  \"storeKey\": \"my-shop\",\n  \"site\": \"cn\",\n  \"managementType\": \"semi-managed\",\n  \"tokenPurpose\": \"product-inventory\",\n  \"type\": \"bg.goods.category.mapping\",\n  \"params\": {\"goodsName\": \"测试\", \"goodsNameEn\": \"Test\"}\n}'\n```\n\n## 注意事项\n\n1. **子账号**：可能无法进入服务市场，需主账号授权。\n2. **多站点**：美国站、英国站等需分别登录对应后台获取 Token。\n"},{"path":"references/api.md","content":"# linkfox-temu-returns-refunds-us — API 参考\n\nTemu **美国站退货与退款（Returns & Refunds）**，经本 skill `temu_us_proxy`（`POST /temu/proxy`） 转发。Temu 的 `type` 写在 Body，**不是** URL 路径。\n\n> 网关与鉴权：本 skill `scripts/`（`LINKFOXAGENT_API_KEY`、`accessToken` / `storeKey`）。建议 token 见 `references/access-token.md`（`tokenPurpose=order-shipping`）。（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理）\n\n---\n\n## 调用规范\n\n| 项 | 说明 |\n|----|------|\n| 网关根地址 | `${LINKFOX_TOOL_GATEWAY}`（可用 `TEMU_API_BASE_URL` / `STORE_API_BASE_URL` 覆盖） |\n| 退货退款 OpenAPI | `POST /temu/proxy` |\n| 加签文件下载 | `POST /temu/fileDownload`（`temu_us_file_download.py`） |\n| LinkFox 鉴权 | Header **`Authorization`** 与 **`Token`**（同值）；或 `LINKFOX_AGENT_API_KEY` / `LINKFOXAGENT_API_KEY`；或 JSON `token`（如未配置 按 SKILL.md 的 **## 解决认证和积分问题** 处理） |\n| Temu 鉴权 | Body `accessToken`，或 `storeKey` + `site` + `managementType` + `tokenPurpose` |\n| 默认 | `site=us`，`managementType=semi-managed`，`tokenPurpose=order-shipping` |\n| 上游 OpenAPI（US） | `https://openapi-b-us.temu.com/openapi/router`（网关按 `site` 解析） |\n\n### 网关请求 Body（`/temu/proxy`）\n\n| 参数 | 类型 | 必填 | 说明 |\n|------|------|------|------|\n| site | string | 是 | `us`（本 skill 默认） |\n| managementType | string | 是 | `semi-managed` |\n| accessToken | string | 与 storeKey 二选一 | Temu 店铺令牌 |\n| storeKey | string | 与 accessToken 二选一 | `~/.linkfox/temu-access-tokens.json` 中的键 |\n| tokenPurpose | string | 否 | 建议 **`order-shipping`** |\n| type | string | 是 | Temu 接口名，如 Partner Returns & Refunds 菜单下的 `bg.*` / `temu.*` |\n| params | object | 否 | 业务参数；多数接口业务块在 **`params.request`** |\n\n### 网关响应\n\n| 字段 | 类型 | 说明 |\n|------|------|------|\n| body | string | Temu 原始 JSON 字符串；脚本解析为 `temuBody` |\n| code | integer | 网关错误码：`1002` 参数/Token，`1003` 转发失败 |\n\n解析顺序：**网关 `code`** → `JSON.parse(body)` → `success` / `errorCode` / `errorMsg` / `result`。\n\n### 脚本调用\n\n```bash\nexport LINKFOXAGENT_API_KEY=\"<key>\"\npython scripts/temu_us_proxy.py '{\"accessToken\":\"TOKEN\",\"tokenPurpose\":\"order-shipping\",\"type\":\"<API_TYPE>\",\"params\":{\"request\":{}}}'\n```\n\n业务字段可放在顶层或嵌套 `params`；含 `request` 时通常整体作为 `params` 转发。\n\n---\n\n## 接口一览\n\n完整 `sub_menu_code` 与 Partner 文档 URL 见 [partner-us-catalog.md](./partner-us-catalog.md)。\n\n**每个接口单独一份文档**：[apis/README.md](./apis/README.md)（随接入递增）。\n\n| type | 说明 | 文档 |\n|------|------|------|\n| `bg.aftersales.aftersales.list.get` | 子售后单列表查询 | [bg-aftersales-aftersales-list-get.md](./apis/bg-aftersales-aftersales-list-get.md) |\n| `bg.aftersales.parentaftersales.list.get` | 父售后单列表查询 | [bg-aftersales-parentaftersales-list-get.md](./apis/bg-aftersales-parentaftersales-list-get.md) |\n| `bg.aftersales.parentreturnorder.get` | 父退货物流信息 | [bg-aftersales-parentreturnorder-get.md](./apis/bg-aftersales-parentreturnorder-get.md) |\n| `temu.aftersales.carrier.get` | 承运商列表 | [temu-aftersales-carrier-get.md](./apis/temu-aftersales-carrier-get.md) |\n| `temu.aftersales.parentaftersales.detail.get` | 父售后单详情 | [temu-aftersales-parentaftersales-detail-get.md](./apis/temu-aftersales-parentaftersales-detail-get.md) |\n| `temu.aftersales.returnaddress.get` | 退货地址查询 | [temu-af"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1140,"uniquenessScore":34,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T15:37:18.992Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T15:37:18.992Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T21:48:57.169Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}