{"openapi":"3.0.3","info":{"title":"Chukoudan API (OpenAPI 3.0 edition)","version":"1.0.0","description":"外贸出口常用的计算和数据，只读、无需密钥：出口退税、报价、结汇成本、体积重（CBM）、装柜，以及本站展示的数据集和按海关编码查退税率。这是给只能导入 OpenAPI 3.0 的平台用的简化版；完整版是 OpenAPI 3.1：https://chukoudan.com/v1/openapi.json 。每个回答都带 provenance（数据来源和日期）。结果是参考，不是官方渠道，以官方公布为准。 / Read-only and keyless: export tax refund, quotes, FX cost, CBM and container loading, the datasets the site shows, and the refund rate by customs code. A plain OpenAPI 3.0 edition for platforms that cannot import 3.1; the full document is /v1/openapi.json."},"servers":[{"url":"https://chukoudan.com","description":"正式站点 / the live site"}],"paths":{"/v1/datasets":{"get":{"operationId":"listDatasets","summary":"列出本站可展示的数据集","description":"本站可以展示的全部数据集（人民币汇率中间价、出口退税率文库、集装箱尺寸等），每个附当前版本。每个回答都带 provenance：数据来自哪个版本、发布方的日期和来源说明。 / The datasets the site may show, each with its current version. Every answer carries provenance.\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.","parameters":[{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"responses":{"200":{"description":"数据集清单 / The datasets","content":{"application/json":{"schema":{"type":"object","properties":{"datasets":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"current":{"type":"string","nullable":true},"versions":{"type":"integer","minimum":0},"links":{"type":"object","properties":{"self":{"type":"string"},"latest_csv":{"type":"string"},"latest_json":{"type":"string"}},"required":["self"]}},"required":["id","current","versions","links"]}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}},"required":["datasets","provenance"]}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}},"/v1/datasets/{id}/current":{"get":{"operationId":"getCurrentRows","summary":"读取一个数据集当前版本的数据行（分页）","description":"例如 id 填 central-parity，得到最新一天的人民币汇率中间价（中国人民银行公布，每个工作日一次）；填 refund-rates 得到出口退税率文库。数据行按发布时的样子给出，不做改动；回答里的 provenance 写明版本和来源。 / The rows of a dataset’s current version, as published, in pages.\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.","parameters":[{"name":"id","in":"path","required":true,"description":"central-parity · 数据集编号","schema":{"type":"string","example":"central-parity"}},{"name":"offset","in":"query","required":false,"description":"0 · 跳过的行数","schema":{"type":"integer","minimum":0,"default":0,"example":0}},{"name":"limit","in":"query","required":false,"description":"5 · 一页多少行","schema":{"type":"integer","minimum":1,"maximum":5000,"default":1000,"example":5}},{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"responses":{"200":{"description":"一页数据行 / A page of rows","content":{"application/json":{"schema":{"type":"object","description":"A page of a version’s rows, as published.","properties":{"dataset":{"type":"string"},"version":{"type":"string"},"published_at":{"type":"string"},"fetched_at":{"type":"string"},"edition":{"type":"string"},"notice":{"type":"object","description":"The official notice that announced this edition, where the register records one: its number and title as the notice writes them, its own date (not the day the file was published), and its page.","properties":{"number":{"type":"string"},"title":{"type":"string"},"day":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"url":{"type":"string"}},"required":["number","title","day","url"]},"content_hash":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$"},"rows":{"type":"integer","minimum":0},"columns":{"type":"array","items":{"type":"string"}},"current":{"type":"boolean"},"links":{"type":"object","description":"Where the version and its two downloads are.","properties":{"self":{"type":"string"},"csv":{"type":"string"},"json":{"type":"string"}},"required":["self","csv","json"]},"license":{"type":"object","description":"The license of a version, as copy keys. `draft` was true until the text was approved (2026-10-12) and is false now.","properties":{"ours":{"type":"string"},"underlying":{"type":"string"},"draft":{"type":"boolean"}},"required":["ours","underlying","draft"]},"offset":{"type":"integer","minimum":0},"limit":{"type":"integer","minimum":1,"maximum":5000},"next":{"description":"The offset of the next page; null on the last.","type":"integer","nullable":true},"data":{"type":"array","description":"数据行：每行是一个对象；不同数据集的列不同，下面列出所有数据集出现过的列，某一行没有的列就不会出现。","items":{"type":"object","description":"一行数据","properties":{"currency":{"type":"string","description":"数据列 currency"},"value":{"type":"string","description":"数据列 value"},"per":{"type":"string","description":"数据列 per"},"published":{"type":"object","description":"数据列 published","properties":{"figure":{"type":"string","description":"数据列 figure"},"form":{"type":"string","description":"数据列 form"},"unit":{"type":"string","description":"数据列 unit"}}},"date":{"type":"string","description":"数据列 date"},"open":{"type":"boolean","description":"数据列 open"},"name":{"type":"string","description":"数据列 name（多数数据集是文字；个别数据集是按语言分的对象）"},"type":{"type":"string","description":"数据列 type"},"length_mm":{"type":"string","description":"数据列 length_mm"},"width_mm":{"type":"string","description":"数据列 width_mm"},"height_mm":{"type":"string","description":"数据列 height_mm"},"door_width_mm":{"type":"string","description":"数据列 door_width_mm"},"door_height_mm":{"type":"string","description":"数据列 door_height_mm"},"payload_min_kg":{"type":"string","description":"数据列 payload_min_kg"},"payload_max_kg":{"type":"string","description":"数据列 payload_max_kg"},"mode":{"type":"string","description":"数据列 mode"},"cm3_per_kg":{"type":"string","description":"数据列 cm3_per_kg"},"id":{"type":"string","description":"数据列 id"},"region":{"type":"string","description":"数据列 region"},"search":{"type":"object","description":"数据列 search","properties":{"zh":{"type":"array","description":"数据列 zh","items":{"type":"string","description":"数据列 zh"}},"pinyin":{"type":"array","description":"数据列 pinyin","items":{"type":"string","description":"数据列 pinyin"}},"en":{"type":"array","description":"数据列 en","items":{"type":"string","description":"数据列 en"}}}},"code":{"type":"string","description":"数据列 code"},"tax":{"type":"string","description":"数据列 tax"},"vat_rates":{"type":"array","description":"数据列 vat_rates","items":{"type":"string","description":"数据列 vat_rates"}},"refund_rate":{"type":"string","description":"数据列 refund_rate"},"per_unit":{"type":"string","description":"数据列 per_unit"},"ad_valorem":{"type":"string","description":"数据列 ad_valorem"},"unit":{"type":"string","description":"数据列 unit"},"from":{"type":"string","description":"数据列 from"},"to":{"type":"string","description":"数据列 to"}}}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}},"required":["dataset","version","published_at","fetched_at","content_hash","rows","columns","current","links","license","offset","limit","next","data","provenance"]}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}},"/v1/refund-rate":{"get":{"operationId":"lookupRefundRate","summary":"查某个海关编码（HS）的出口退税率","description":"查询一个海关编码（HS 编码，8 位或 10 位，可带点或空格）在出口退税率文库中的各个时期，给出退税率和征税率。适用哪一期取决于报关单上的出口日期（不是开票日期）：带上 export_date 就标出那一天适用的一期；不带就按今天（北京时间）标出，回答里的 lookup.in_force_on 写明用的是哪一天。用户问“现在”“今天”时不要填 export_date，绝不要自己猜今天的日期。编码不在文库中时返回 404 和前六位相同的相近编码，绝不编造税率。本站非官方渠道，仅供参考，以官方公布为准。\nLooks up ONE customs code (8 or 10 digits; dots and spaces are fine) in the 出口退税率文库 and returns every period the library holds for it, with the refund rate (退税率) and the levy rate (征税率). The rate that applies to a shipment is the one in force on the export date on the customs declaration (报关单出口日期), not the invoice date: pass it as export_date to get the period in force on that date; without it the period in force today (Beijing calendar) is marked, and lookup.in_force_on says which day was used. For “now” or “today” leave export_date out and never guess today’s date. An unknown code answers 404 with nearby codes (first 6 digits equal) and never a made-up rate. Reference data from this site, not the official channel; the official publication prevails.\n取值含义：export_date 格式 YYYY-MM-DD，必须是真实存在的一天。\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.","parameters":[{"name":"code","in":"query","required":true,"description":"8506101110 · 海关编码（HS）","schema":{"type":"string","example":"8506101110"}},{"name":"export_date","in":"query","required":false,"description":"2026-05-01 · 出口日期（问现在就不填）","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","example":"2026-05-01"}},{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"responses":{"200":{"description":"各个时期的退税率，以及适用的一期（按出口日期，没给就按今天） / The code’s periods","content":{"application/json":{"schema":{"type":"object","description":"按海关编码查退税率的回答。lookup.found 为 true 才是找到了；false 时看 lookup.nearest。","properties":{"lookup":{"type":"object","description":"查询结果。found 为 true 时有 periods 等；为 false 时只有 code、nearest、data_from，绝不编造税率。","properties":{"found":{"type":"boolean","description":"true 找到了；false 文库里没有这个编码"},"code":{"type":"string","description":"查的编码（8 位或 10 位数字）"},"listing":{"type":"string","description":"own 这个编码自己在文库里；heading 是上一级税目，看 children；narrower 只有更细的编码，看 children"},"listed_at":{"type":"string","description":"文库里实际列出的编码"},"data_from":{"type":"string","description":"文库数据的起始日 YYYY-MM-DD"},"export_date":{"type":"string","nullable":true,"description":"查询用的出口日期；没给就是 null"},"periods":{"type":"array","description":"文库里这个编码的各个时期（新旧都有），按文库原文","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"splits":{"type":"array","description":"这个编码下细分的各期","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"children":{"type":"array","description":"下一级的编码和商品名称","items":{"type":"object","description":"一个编码和它的商品名称。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"}}}},"children_total":{"type":"integer","description":"下一级一共有多少个（children 最多列 100 个）"},"in_force":{"type":"object","description":"适用哪一期：给了 export_date 就按那一天，没给就按今天（北京时间），用的是哪一天看 in_force_on。status：rate 有唯一一期（看 period）；choose 要从通用一期和几个细分里选（看 general、splits，不要替用户挑）；narrower 要看更细的编码（看 periods）；not_listed_on_date 当天文库里没有；before_data 日期早于文库的起始日。","properties":{"status":{"type":"string","description":"rate、choose、narrower、not_listed_on_date、before_data 之一"},"period":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}},"general":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}},"nullable":true},"splits":{"type":"array","description":"细分的各期","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"periods":{"type":"array","description":"更细编码的各期","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"data_from":{"type":"string","description":"文库数据的起始日 YYYY-MM-DD（before_data 时）"}},"nullable":true},"in_force_on":{"type":"string","nullable":true,"description":"标出适用一期所用的那一天 YYYY-MM-DD：给了 export_date 就是它，没给就是今天（北京时间）"},"in_force_basis":{"type":"string","description":"export_date 按给出的出口日期；today 没给出口日期，按今天（北京时间）"},"nearest":{"type":"array","description":"文库里前六位相同的相近编码（found 为 false 时）","items":{"type":"object","description":"一个编码和它的商品名称。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"}}}}}},"dataset":{"type":"object","description":"这份数据来自哪里。","properties":{"id":{"type":"string","description":"数据集编号"},"version":{"type":"string","description":"版本号"},"edition":{"type":"string","description":"文库的版次"},"published_at":{"type":"string","description":"发布日期"},"notice":{"type":"object","description":"这一版对应的官方通知（有记录时才有）。","properties":{"number":{"type":"string","description":"文号"},"title":{"type":"string","description":"标题"},"day":{"type":"string","description":"通知日期 YYYY-MM-DD"},"url":{"type":"string","description":"通知页面"}}},"imported_at":{"type":"string","description":"导入时间"},"content_hash":{"type":"string","description":"内容校验值"},"license":{"type":"object","description":"许可说明（文案键）","properties":{"ours":{"type":"string","description":"本站部分"},"underlying":{"type":"string","description":"底层数据部分"},"draft":{"type":"boolean","description":"是否草稿"}}}}},"links":{"type":"object","description":"本站相关页面（找到时才有）。","properties":{"chapter_page":{"type":"string","description":"这一章的页面路径"},"calculator":{"type":"string","description":"带着这个编码的退税计算器路径"}}},"notes":{"type":"array","description":"请一并转告用户的几句话：本站不是官方渠道、文库只是参考数据、税率看出口日期等","items":{"type":"object","description":"一句话","properties":{"key":{"type":"string","description":"文案键"},"text":{"type":"string","description":"这句话的内容"}}}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}}}}}},"404":{"description":"编码不在文库中：lookup.found 为 false，lookup.nearest 列出前六位相同的相近编码；绝不编造税率 / The library does not list the code; nearby codes in lookup.nearest","content":{"application/json":{"schema":{"type":"object","description":"按海关编码查退税率的回答。lookup.found 为 true 才是找到了；false 时看 lookup.nearest。","properties":{"lookup":{"type":"object","description":"查询结果。found 为 true 时有 periods 等；为 false 时只有 code、nearest、data_from，绝不编造税率。","properties":{"found":{"type":"boolean","description":"true 找到了；false 文库里没有这个编码"},"code":{"type":"string","description":"查的编码（8 位或 10 位数字）"},"listing":{"type":"string","description":"own 这个编码自己在文库里；heading 是上一级税目，看 children；narrower 只有更细的编码，看 children"},"listed_at":{"type":"string","description":"文库里实际列出的编码"},"data_from":{"type":"string","description":"文库数据的起始日 YYYY-MM-DD"},"export_date":{"type":"string","nullable":true,"description":"查询用的出口日期；没给就是 null"},"periods":{"type":"array","description":"文库里这个编码的各个时期（新旧都有），按文库原文","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"splits":{"type":"array","description":"这个编码下细分的各期","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"children":{"type":"array","description":"下一级的编码和商品名称","items":{"type":"object","description":"一个编码和它的商品名称。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"}}}},"children_total":{"type":"integer","description":"下一级一共有多少个（children 最多列 100 个）"},"in_force":{"type":"object","description":"适用哪一期：给了 export_date 就按那一天，没给就按今天（北京时间），用的是哪一天看 in_force_on。status：rate 有唯一一期（看 period）；choose 要从通用一期和几个细分里选（看 general、splits，不要替用户挑）；narrower 要看更细的编码（看 periods）；not_listed_on_date 当天文库里没有；before_data 日期早于文库的起始日。","properties":{"status":{"type":"string","description":"rate、choose、narrower、not_listed_on_date、before_data 之一"},"period":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}},"general":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}},"nullable":true},"splits":{"type":"array","description":"细分的各期","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"periods":{"type":"array","description":"更细编码的各期","items":{"type":"object","description":"文库里一个时期的一行：税率和起止日期，按文库原文，不做改动。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"},"tax":{"type":"string","description":"文库里的税种标记，按原文"},"refund_rate":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"退税率，带类型的数值（ratio，0.13 即 13%）"},"refund_percent":{"type":"string","description":"退税率（%），按文库原文，例如 \"13.00\""},"levy_rates":{"type":"array","description":"征税率（带类型的数值）","items":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"征税率"}},"levy_percents":{"type":"array","description":"征税率（%），按文库原文","items":{"type":"string"}},"unit":{"type":"string","description":"计量单位，按文库原文"},"per_unit":{"type":"string","description":"从量税额，按文库原文"},"ad_valorem":{"type":"string","description":"从价税率，按文库原文"},"from":{"type":"string","description":"这一期的开始日期 YYYY-MM-DD"},"to":{"type":"string","nullable":true,"description":"这一期的结束日期 YYYY-MM-DD；null 表示本站数据里这一期没有结束日期（不代表以后不会调整）"},"no_end_announced":{"type":"boolean","description":"true 表示本站数据里这一期没有结束日期"}}}},"data_from":{"type":"string","description":"文库数据的起始日 YYYY-MM-DD（before_data 时）"}},"nullable":true},"in_force_on":{"type":"string","nullable":true,"description":"标出适用一期所用的那一天 YYYY-MM-DD：给了 export_date 就是它，没给就是今天（北京时间）"},"in_force_basis":{"type":"string","description":"export_date 按给出的出口日期；today 没给出口日期，按今天（北京时间）"},"nearest":{"type":"array","description":"文库里前六位相同的相近编码（found 为 false 时）","items":{"type":"object","description":"一个编码和它的商品名称。","properties":{"code":{"type":"string","description":"海关编码"},"name":{"type":"string","description":"商品名称"}}}}}},"dataset":{"type":"object","description":"这份数据来自哪里。","properties":{"id":{"type":"string","description":"数据集编号"},"version":{"type":"string","description":"版本号"},"edition":{"type":"string","description":"文库的版次"},"published_at":{"type":"string","description":"发布日期"},"notice":{"type":"object","description":"这一版对应的官方通知（有记录时才有）。","properties":{"number":{"type":"string","description":"文号"},"title":{"type":"string","description":"标题"},"day":{"type":"string","description":"通知日期 YYYY-MM-DD"},"url":{"type":"string","description":"通知页面"}}},"imported_at":{"type":"string","description":"导入时间"},"content_hash":{"type":"string","description":"内容校验值"},"license":{"type":"object","description":"许可说明（文案键）","properties":{"ours":{"type":"string","description":"本站部分"},"underlying":{"type":"string","description":"底层数据部分"},"draft":{"type":"boolean","description":"是否草稿"}}}}},"links":{"type":"object","description":"本站相关页面（找到时才有）。","properties":{"chapter_page":{"type":"string","description":"这一章的页面路径"},"calculator":{"type":"string","description":"带着这个编码的退税计算器路径"}}},"notes":{"type":"array","description":"请一并转告用户的几句话：本站不是官方渠道、文库只是参考数据、税率看出口日期等","items":{"type":"object","description":"一句话","properties":{"key":{"type":"string","description":"文案键"},"text":{"type":"string","description":"这句话的内容"}}}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}}}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}},"/v1/tools/tuishui/compute":{"post":{"operationId":"compute_tuishui","summary":"出口退税计算器","description":"填发票金额和退税率，立刻看到应退税额和每一步的出处\nTrading companies (exempt-and-refund) and manufacturers (exempt-credit-refund)\n取值含义：enterpriseType：trading=外贸企业（免退税），manufacturer=生产企业（免抵退）；日期（YYYY-MM-DD）必须是真实存在的一天。\n用户没有给的数字和日期不要自己编：必填的先问用户，选填的不填。 / Never make up a figure or a date the user did not give: ask for a required one, leave an optional one out.\nsteps 和 warnings 里每一项的 message 是现成的一句话（数值已代入）：请用它们来说明，不要自己编数字。 / Use the message of each step and warning; do not make up figures.\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.\n请求体是 {\"inputs\": {…}}；所有数字用字符串。 / The body is {\"inputs\": {…}}; figures are strings.","parameters":[{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"type":"object","properties":{"enterpriseType":{"enum":["trading","manufacturer"],"type":"string","description":"trading 或 manufacturer · 企业类型","example":"trading"},"exports":{"type":"array","items":{"type":"object","properties":{"hsCode":{"type":"string","pattern":"^\\d{8}(\\d{2})?$","description":"61091000 · 商品编码（HS）","example":"61091000"},"exportDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"2026-09-24 · 出口日期（报关单）","example":"2026-09-24"},"taxRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"13 · 征税率（%）","example":"13"},"refundRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"13 · 退税率（%）","example":"13"},"invoiceAmount":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"100000 · 专票金额（不含税）（CNY）","example":"100000"}},"required":["exportDate","taxRate","refundRate"]},"minItems":1,"maxItems":20,"description":"可填多项 · 出口货物","example":[{"exportDate":"2026-09-24","taxRate":"13","refundRate":"13","hsCode":"61091000","invoiceAmount":"100000"}]}},"required":["enterpriseType","exports"],"description":"出口退税计算器的输入。只列出常用的几项；没列出的都有默认值，不用填。可选项留空（空字符串）按“没填”处理。数字最好写成字符串（十进制，如 \"12.5\"），JSON 数字也行；千位逗号只认 1,234,567 这种写法，小数点用英文句点，不要带货币符号或单位。币种可写 USD、usd 或 美元，单位可写 cm 或 厘米，日期可写 2026-05-01、2026/05/01 或 20260501。读不准的一律拒绝并说明原因，绝不猜；回答里的 normalized 列出实际采用的值。"}},"required":["inputs"]}}}},"responses":{"200":{"description":"计算结果 / Core’s outputs, steps and warnings","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string","enum":["tuishui"],"description":"工具编号"},"outputs":{"type":"object","description":"各项结果，键是结果编号，值是带类型的数值（金额 amount+currency，数量 value+unit，比例 value 如 0.13 即 13%）。下面只列最常用的 13 项；某一项算不出来时不会出现。","properties":{"refund":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"应退税额（金额）"},"basis":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"计税依据（金额）"},"inputVat":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"进项税额（金额）"},"costAddition":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"不予退税，计入成本（金额）"},"nonCreditableOffset":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"不得免征和抵扣税额抵减额（金额）"},"nonCreditable":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"不得免征和抵扣税额（金额）"},"taxPayable":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"当期应纳税额（金额）"},"endCredit":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"期末留抵税额（金额）"},"exemptionOffset":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"免抵退税额抵减额（金额）"},"exemption":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"免抵退税额（金额）"},"exempted":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"当期免抵税额（金额）"},"carriedForward":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"期末结转留抵税额（金额）"},"taxDue":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"应缴税额（金额）"}}},"steps":{"type":"array","description":"计算步骤：每步一个文案键 id 和代入的数值 values。","items":{"type":"object","description":"一个计算步骤","properties":{"id":{"type":"string","description":"这一步的文案键"},"message":{"type":"string","description":"这一步的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"values":{"type":"object","description":"代入的数值，键是名称，值是带类型的数值"}}}},"warnings":{"type":"array","description":"需要提醒的事：code 是文案键，level 为 note 或 hint 时只是提示，没有就是需要注意的警告。","items":{"type":"object","description":"一条提醒","properties":{"code":{"type":"string","description":"提醒的文案键"},"message":{"type":"string","description":"这条提醒的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"level":{"type":"string","description":"note 或 hint；没有表示警告"},"next":{"type":"string","description":"hint 时：建议接着用哪个工具（页面名）"},"values":{"type":"object","description":"提醒里用到的数值"}}}},"normalized":{"type":"array","description":"What the API changed in the inputs before core saw them, so the caller sees what was understood: a JSON number as text, a thousands comma, full-width digits, a currency or unit name or a date written another way. Absent when nothing was changed.","items":{"type":"object","properties":{"path":{"type":"string","description":"The input, like `cartons.0.length`."},"given":{"type":"string","description":"What was sent, as text."},"used":{"type":"string","description":"What core was given."}},"required":["path","given","used"]}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}},"required":["tool","outputs","steps","warnings","provenance"]}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}},"/v1/tools/baojia/compute":{"post":{"operationId":"compute_baojia","summary":"FOB/CIF/CFR 报价","description":"由成本算三种术语报价和利润\nQuotes and profit on all three terms, from your cost\n取值含义：mode：forward=正算：成本 → 报价，reverse=反算：报价 → 利润；freightBasis：container=每柜，cbm=每立方米，total=合计；marginBasis：quote=报价，cost=成本；term：FOB=FOB，CFR=CFR，CIF=CIF。\n用户没有给的数字和日期不要自己编：必填的先问用户，选填的不填。 / Never make up a figure or a date the user did not give: ask for a required one, leave an optional one out.\nsteps 和 warnings 里每一项的 message 是现成的一句话（数值已代入）：请用它们来说明，不要自己编数字。 / Use the message of each step and warning; do not make up figures.\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.\n请求体是 {\"inputs\": {…}}；所有数字用字符串。 / The body is {\"inputs\": {…}}; figures are strings.","parameters":[{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"type":"object","properties":{"mode":{"enum":["forward","reverse"],"type":"string","description":"forward 或 reverse · 计算方向","example":"forward"},"price":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"50 · 含税采购单价（CNY）","example":"50"},"quantity":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"4500 · 数量","example":"4500"},"taxRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"13 · 征税率（%）","example":"13"},"refundRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"13 · 退税率（%）","example":"13"},"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"USD · 报价币种","example":"USD"},"fxRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"7.0850 · 汇率","example":"7.0850"},"freight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"1800 · 海运费","example":"1800"},"freightBasis":{"enum":["container","cbm","total"],"type":"string","description":"container/cbm/total · 运费计价方式","example":"container"},"containers":{"type":"string","pattern":"^(0|[1-9]\\d*)$","description":"1 · 柜数","example":"1"},"margin":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"10 · 目标利润率（%）","example":"10"},"marginBasis":{"enum":["quote","cost"],"type":"string","description":"quote 或 cost · 利润率按","example":"quote"},"term":{"enum":["FOB","CFR","CIF"],"type":"string","description":"FOB 或 CFR 或 CIF · 你报的术语","example":"FOB"},"quotedPrice":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"7.50 · 你的报价单价","example":"7.50"}},"required":["price","quantity","taxRate","refundRate","fxRate"],"description":"FOB/CIF/CFR 报价的输入。只列出常用的几项；没列出的都有默认值，不用填。可选项留空（空字符串）按“没填”处理。数字最好写成字符串（十进制，如 \"12.5\"），JSON 数字也行；千位逗号只认 1,234,567 这种写法，小数点用英文句点，不要带货币符号或单位。币种可写 USD、usd 或 美元，单位可写 cm 或 厘米，日期可写 2026-05-01、2026/05/01 或 20260501。读不准的一律拒绝并说明原因，绝不猜；回答里的 normalized 列出实际采用的值。"}},"required":["inputs"]}}}},"responses":{"200":{"description":"计算结果 / Core’s outputs, steps and warnings","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string","enum":["baojia"],"description":"工具编号"},"outputs":{"type":"object","description":"各项结果，键是结果编号，值是带类型的数值（金额 amount+currency，数量 value+unit，比例 value 如 0.13 即 13%）。下面只列最常用的 26 项；某一项算不出来时不会出现。","properties":{"priceFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 单价（金额）"},"totalFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 总价（金额）"},"commissionPriceFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 含佣单价（金额）"},"commissionTotalFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 含佣总价（金额）"},"profitFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 利润额（元）（金额）"},"marginFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 利润率（比例）"},"marginAltFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 另一口径的利润率（比例）"},"breakEvenFob":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"FOB 保本价（金额）"},"priceCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 单价（金额）"},"totalCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 总价（金额）"},"commissionPriceCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 含佣单价（金额）"},"commissionTotalCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 含佣总价（金额）"},"profitCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 利润额（元）（金额）"},"marginCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 利润率（比例）"},"marginAltCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 另一口径的利润率（比例）"},"breakEvenCfr":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CFR 保本价（金额）"},"priceCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 单价（金额）"},"totalCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 总价（金额）"},"commissionPriceCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 含佣单价（金额）"},"commissionTotalCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 含佣总价（金额）"},"profitCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 利润额（元）（金额）"},"marginCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 利润率（比例）"},"marginAltCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 另一口径的利润率（比例）"},"breakEvenCif":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"CIF 保本价（金额）"},"refundTotal":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"出口退税额（元）（金额）"},"costTotal":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"总成本（元）（金额）"}}},"steps":{"type":"array","description":"计算步骤：每步一个文案键 id 和代入的数值 values。","items":{"type":"object","description":"一个计算步骤","properties":{"id":{"type":"string","description":"这一步的文案键"},"message":{"type":"string","description":"这一步的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"values":{"type":"object","description":"代入的数值，键是名称，值是带类型的数值"}}}},"warnings":{"type":"array","description":"需要提醒的事：code 是文案键，level 为 note 或 hint 时只是提示，没有就是需要注意的警告。","items":{"type":"object","description":"一条提醒","properties":{"code":{"type":"string","description":"提醒的文案键"},"message":{"type":"string","description":"这条提醒的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"level":{"type":"string","description":"note 或 hint；没有表示警告"},"next":{"type":"string","description":"hint 时：建议接着用哪个工具（页面名）"},"values":{"type":"object","description":"提醒里用到的数值"}}}},"normalized":{"type":"array","description":"What the API changed in the inputs before core saw them, so the caller sees what was understood: a JSON number as text, a thousands comma, full-width digits, a currency or unit name or a date written another way. Absent when nothing was changed.","items":{"type":"object","properties":{"path":{"type":"string","description":"The input, like `cartons.0.length`."},"given":{"type":"string","description":"What was sent, as text."},"used":{"type":"string","description":"What core was given."}},"required":["path","given","used"]}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}},"required":["tool","outputs","steps","warnings","provenance"]}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}},"/v1/tools/fx-cost/compute":{"post":{"operationId":"compute_fx_cost","summary":"结汇成本计算器","description":"比较银行和其他方式一年到手多少人民币\nCompare banks and other options: how much RMB you actually get in a year\n取值含义：useB（添加方案 B）：true=是，false=否。\n用户没有给的数字和日期不要自己编：必填的先问用户，选填的不填。 / Never make up a figure or a date the user did not give: ask for a required one, leave an optional one out.\nsteps 和 warnings 里每一项的 message 是现成的一句话（数值已代入）：请用它们来说明，不要自己编数字。 / Use the message of each step and warning; do not make up figures.\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.\n请求体是 {\"inputs\": {…}}；所有数字用字符串。 / The body is {\"inputs\": {…}}; figures are strings.","parameters":[{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"type":"object","properties":{"receipts":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"USD · 币种","example":"USD"},"amount":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"100000 · 月收汇金额","example":"100000"},"count":{"type":"string","pattern":"^(0|[1-9]\\d*)$","description":"1 · 每月收汇笔数","example":"1"},"bankRate":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"7.0800 · 银行的结汇汇率","example":"7.0800"},"rateB":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"7.1000 · 方案 B 的结汇汇率","example":"7.1000"}},"required":["currency","amount"]},"minItems":1,"maxItems":8,"description":"可填多项 · 收汇情况","example":[{"currency":"USD","amount":"100000","bankRate":"7.0800","rateB":"7.1000","count":"1"}]},"bankFee":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"50 · 银行的每笔费用（CNY）","example":"50"},"useB":{"type":"boolean","description":"true 或 false · 添加方案 B","example":true},"feePercentB":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"0.3 · 方案 B 的费率（%）","example":"0.3"},"feePerReceiptB":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"0 · 方案 B 的每笔费用（CNY）","example":"0"}},"required":["receipts"],"description":"结汇成本计算器的输入。只列出常用的几项；没列出的都有默认值，不用填。可选项留空（空字符串）按“没填”处理。数字最好写成字符串（十进制，如 \"12.5\"），JSON 数字也行；千位逗号只认 1,234,567 这种写法，小数点用英文句点，不要带货币符号或单位。币种可写 USD、usd 或 美元，单位可写 cm 或 厘米，日期可写 2026-05-01、2026/05/01 或 20260501。读不准的一律拒绝并说明原因，绝不猜；回答里的 normalized 列出实际采用的值。"}},"required":["inputs"]}}}},"responses":{"200":{"description":"计算结果 / Core’s outputs, steps and warnings","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string","enum":["fx-cost"],"description":"工具编号"},"outputs":{"type":"object","description":"各项结果，键是结果编号，值是带类型的数值（金额 amount+currency，数量 value+unit，比例 value 如 0.13 即 13%）。下面只列最常用的 17 项；某一项算不出来时不会出现。","properties":{"annualBank":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"一年到手（银行）（金额）"},"feesBank":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"一年的费用（银行）（金额）"},"costBank":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"和按中间价结汇相比，每年少收（银行）（金额）"},"gainBank":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"比到手最多的方案每年少收（银行）（金额）"},"rankBank":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"排名（银行）（个数）"},"annualB":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"一年到手（方案 B）（金额）"},"feesB":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"一年的费用（方案 B）（金额）"},"costB":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"和按中间价结汇相比，每年少收（方案 B）（金额）"},"gainB":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"比到手最多的方案每年少收（方案 B）（金额）"},"rankB":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"排名（方案 B）（个数）"},"annualC":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"一年到手（方案 C）（金额）"},"feesC":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"一年的费用（方案 C）（金额）"},"costC":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"和按中间价结汇相比，每年少收（方案 C）（金额）"},"gainC":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"比到手最多的方案每年少收（方案 C）（金额）"},"rankC":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"排名（方案 C）（个数）"},"annualMidpoint":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"按中间价结汇，一年可得（金额）"},"best":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"到手最多的方案（代码）"}}},"steps":{"type":"array","description":"计算步骤：每步一个文案键 id 和代入的数值 values。","items":{"type":"object","description":"一个计算步骤","properties":{"id":{"type":"string","description":"这一步的文案键"},"message":{"type":"string","description":"这一步的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"values":{"type":"object","description":"代入的数值，键是名称，值是带类型的数值"}}}},"warnings":{"type":"array","description":"需要提醒的事：code 是文案键，level 为 note 或 hint 时只是提示，没有就是需要注意的警告。","items":{"type":"object","description":"一条提醒","properties":{"code":{"type":"string","description":"提醒的文案键"},"message":{"type":"string","description":"这条提醒的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"level":{"type":"string","description":"note 或 hint；没有表示警告"},"next":{"type":"string","description":"hint 时：建议接着用哪个工具（页面名）"},"values":{"type":"object","description":"提醒里用到的数值"}}}},"normalized":{"type":"array","description":"What the API changed in the inputs before core saw them, so the caller sees what was understood: a JSON number as text, a thousands comma, full-width digits, a currency or unit name or a date written another way. Absent when nothing was changed.","items":{"type":"object","properties":{"path":{"type":"string","description":"The input, like `cartons.0.length`."},"given":{"type":"string","description":"What was sent, as text."},"used":{"type":"string","description":"What core was given."}},"required":["path","given","used"]}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}},"required":["tool","outputs","steps","warnings","provenance"]}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}},"/v1/tools/cbm/compute":{"post":{"operationId":"compute_cbm","summary":"CBM / 体积重","description":"算立方数、毛重和空运快递计费重\nCBM, gross weight and chargeable weight for air and express\n取值含义：lengthUnit：cm=cm，mm=mm，in=in；weightUnit：kg=kg，lb=lb；mode：lcl=海运拼箱，air=空运，express=快递。\n每箱毛重 grossWeight 可以不填：不填就只算体积，回答里没有总毛重和计费重，并有一句说明。用户只问“多少方”时不要填，绝不要编一个重量。 / grossWeight may be left out: the answer then has the volumes only, and says so. Leave it out when the user asked only for the volume; never invent a weight.\n用户没有给的数字和日期不要自己编：必填的先问用户，选填的不填。 / Never make up a figure or a date the user did not give: ask for a required one, leave an optional one out.\nsteps 和 warnings 里每一项的 message 是现成的一句话（数值已代入）：请用它们来说明，不要自己编数字。 / Use the message of each step and warning; do not make up figures.\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.\n请求体是 {\"inputs\": {…}}；所有数字用字符串。 / The body is {\"inputs\": {…}}; figures are strings.","parameters":[{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"type":"object","properties":{"cartons":{"type":"array","items":{"type":"object","properties":{"length":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"60 · 长","example":"60"},"width":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"40 · 宽","example":"40"},"height":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"50 · 高","example":"50"},"grossWeight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"18 · 每箱毛重（没给就不填）","example":"18"},"quantity":{"type":"string","pattern":"^(0|[1-9]\\d*)$","description":"450 · 箱数","example":"450"}},"required":["length","width","height","quantity"]},"minItems":1,"maxItems":20,"description":"可填多项 · 箱规","example":[{"length":"60","width":"40","height":"50","grossWeight":"18","quantity":"450"}]},"lengthUnit":{"enum":["cm","mm","in"],"type":"string","description":"cm 或 mm 或 in · 尺寸单位","example":"cm"},"weightUnit":{"enum":["kg","lb"],"type":"string","description":"kg 或 lb · 重量单位","example":"kg"},"mode":{"enum":["lcl","air","express"],"type":"string","description":"lcl 或 air 或 express · 运输方式","example":"lcl"}},"required":["cartons"],"description":"CBM / 体积重的输入。只列出常用的几项；没列出的都有默认值，不用填。可选项留空（空字符串）按“没填”处理。数字最好写成字符串（十进制，如 \"12.5\"），JSON 数字也行；千位逗号只认 1,234,567 这种写法，小数点用英文句点，不要带货币符号或单位。币种可写 USD、usd 或 美元，单位可写 cm 或 厘米，日期可写 2026-05-01、2026/05/01 或 20260501。读不准的一律拒绝并说明原因，绝不猜；回答里的 normalized 列出实际采用的值。"}},"required":["inputs"]}}}},"responses":{"200":{"description":"计算结果 / Core’s outputs, steps and warnings","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string","enum":["cbm"],"description":"工具编号"},"outputs":{"type":"object","description":"各项结果，键是结果编号，值是带类型的数值（金额 amount+currency，数量 value+unit，比例 value 如 0.13 即 13%）。下面只列最常用的 12 项；某一项算不出来时不会出现。","properties":{"totalVolume":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"总体积（CBM）（数量）"},"lclChargeable":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"拼箱计费吨 W/M（数量）"},"perCartonVolume":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"单箱体积（数量）"},"totalGrossWeight":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"总毛重（数量）"},"airChargeable":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"空运计费重（数量）"},"expressChargeable":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"快递计费重（数量）"},"airVolumetric":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"空运体积重（数量）"},"expressVolumetric":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"快递体积重（数量）"},"chargeable":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"所选运输方式的计费量（数量）"},"airBy":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"空运按什么计费（代码）"},"expressBy":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"快递按什么计费（代码）"},"lclBy":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"拼箱按什么计费（代码）"}}},"steps":{"type":"array","description":"计算步骤：每步一个文案键 id 和代入的数值 values。","items":{"type":"object","description":"一个计算步骤","properties":{"id":{"type":"string","description":"这一步的文案键"},"message":{"type":"string","description":"这一步的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"values":{"type":"object","description":"代入的数值，键是名称，值是带类型的数值"}}}},"warnings":{"type":"array","description":"需要提醒的事：code 是文案键，level 为 note 或 hint 时只是提示，没有就是需要注意的警告。","items":{"type":"object","description":"一条提醒","properties":{"code":{"type":"string","description":"提醒的文案键"},"message":{"type":"string","description":"这条提醒的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"level":{"type":"string","description":"note 或 hint；没有表示警告"},"next":{"type":"string","description":"hint 时：建议接着用哪个工具（页面名）"},"values":{"type":"object","description":"提醒里用到的数值"}}}},"normalized":{"type":"array","description":"What the API changed in the inputs before core saw them, so the caller sees what was understood: a JSON number as text, a thousands comma, full-width digits, a currency or unit name or a date written another way. Absent when nothing was changed.","items":{"type":"object","properties":{"path":{"type":"string","description":"The input, like `cartons.0.length`."},"given":{"type":"string","description":"What was sent, as text."},"used":{"type":"string","description":"What core was given."}},"required":["path","given","used"]}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}},"required":["tool","outputs","steps","warnings","provenance"]}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}},"/v1/tools/container-load/compute":{"post":{"operationId":"compute_container_load","summary":"装柜计算器","description":"每柜装多少箱、要几个柜、怎么摆\nCartons per container, containers needed, and how to stack them\n取值含义：fill（装满为止（不填箱数））：true=是，false=否；upright（必须正放（此面朝上））：true=是，false=否；containerType：auto=自动比较，20gp=20GP，40gp=40GP，40hq=40HQ，45hq=45HQ。\n每箱毛重 grossWeight 可以不填：用户没给重量就不要填，绝不要编一个。不填时只按尺寸算能装多少箱、要几个柜，没有核对载重上限；回答里第一条 warning 的 message 说明了这一点，回复用户时必须把这句话原样带上。 / grossWeight may be left out: when the user gave no weight, do not fill it and never invent one. The answer is then a count by size alone with the payload limit not checked; the first warning’s message says so, and your reply must pass that sentence on.\n用户没有给的数字和日期不要自己编：必填的先问用户，选填的不填。 / Never make up a figure or a date the user did not give: ask for a required one, leave an optional one out.\nsteps 和 warnings 里每一项的 message 是现成的一句话（数值已代入）：请用它们来说明，不要自己编数字。 / Use the message of each step and warning; do not make up figures.\n回复用户时，请原样引用回答里 provenance.source_line 那一行（来源和数据日期）。 / Quote provenance.source_line as it is in your reply.\n请求体是 {\"inputs\": {…}}；所有数字用字符串。 / The body is {\"inputs\": {…}}; figures are strings.","parameters":[{"name":"lang","in":"query","required":false,"description":"zh-CN 或 en · 数据来源语言","schema":{"enum":["zh-CN","en"],"default":"zh-CN","type":"string","example":"zh-CN"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"inputs":{"type":"object","properties":{"length":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"60 · 长","example":"60"},"width":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"40 · 宽","example":"40"},"height":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"50 · 高","example":"50"},"grossWeight":{"type":"string","pattern":"^-?(0|[1-9]\\d*)(\\.\\d+)?$","description":"18 · 每箱毛重（没给就不填）","example":"18"},"quantity":{"type":"string","pattern":"^(0|[1-9]\\d*)$","description":"450 · 箱数","example":"450"},"fill":{"type":"boolean","description":"true 或 false · 装满为止（不填箱数）","example":false},"upright":{"type":"boolean","description":"true 或 false · 必须正放（此面朝上）","example":false},"containerType":{"enum":["auto","20gp","40gp","40hq","45hq"],"type":"string","description":"auto/20gp/40gp/40hq/45hq · 柜型","example":"auto"}},"required":["length","width","height"],"description":"装柜计算器的输入。只列出常用的几项；没列出的都有默认值，不用填。可选项留空（空字符串）按“没填”处理。数字最好写成字符串（十进制，如 \"12.5\"），JSON 数字也行；千位逗号只认 1,234,567 这种写法，小数点用英文句点，不要带货币符号或单位。币种可写 USD、usd 或 美元，单位可写 cm 或 厘米，日期可写 2026-05-01、2026/05/01 或 20260501。读不准的一律拒绝并说明原因，绝不猜；回答里的 normalized 列出实际采用的值。"}},"required":["inputs"]}}}},"responses":{"200":{"description":"计算结果 / Core’s outputs, steps and warnings","content":{"application/json":{"schema":{"type":"object","properties":{"tool":{"type":"string","enum":["container-load"],"description":"工具编号"},"outputs":{"type":"object","description":"各项结果，键是结果编号，值是带类型的数值（金额 amount+currency，数量 value+unit，比例 value 如 0.13 即 13%）。下面只列最常用的 25 项；某一项算不出来时不会出现。","properties":{"perContainer20GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"每柜可装（20GP）（个数）"},"containers20GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"需要柜数（20GP）（个数）"},"lastContainer20GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"最后一柜（20GP）（个数）"},"volumeUse20GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"体积利用率（20GP）（比例）"},"weightUse20GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"载重利用率（20GP）（比例）"},"limit20GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"限制因素（20GP）（代码）"},"perContainer40GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"每柜可装（40GP）（个数）"},"containers40GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"需要柜数（40GP）（个数）"},"lastContainer40GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"最后一柜（40GP）（个数）"},"volumeUse40GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"体积利用率（40GP）（比例）"},"weightUse40GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"载重利用率（40GP）（比例）"},"limit40GP":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"限制因素（40GP）（代码）"},"perContainer40HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"每柜可装（40HQ）（个数）"},"containers40HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"需要柜数（40HQ）（个数）"},"lastContainer40HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"最后一柜（40HQ）（个数）"},"volumeUse40HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"体积利用率（40HQ）（比例）"},"weightUse40HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"载重利用率（40HQ）（比例）"},"limit40HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"限制因素（40HQ）（代码）"},"perContainer45HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"每柜可装（45HQ）（个数）"},"containers45HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"需要柜数（45HQ）（个数）"},"lastContainer45HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"最后一柜（45HQ）（个数）"},"volumeUse45HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"体积利用率（45HQ）（比例）"},"weightUse45HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"载重利用率（45HQ）（比例）"},"limit45HQ":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"限制因素（45HQ）（代码）"},"best":{"type":"object","properties":{"kind":{"type":"string"},"value":{"type":"string"},"amount":{"type":"string"},"currency":{"type":"string"},"unit":{"type":"string"},"places":{"type":"integer"},"base":{"type":"string"},"quote":{"type":"string"},"per":{"type":"string"},"grouping":{"type":"boolean"}},"description":"柜数最少的方案（代码）"}}},"steps":{"type":"array","description":"计算步骤：每步一个文案键 id 和代入的数值 values。","items":{"type":"object","description":"一个计算步骤","properties":{"id":{"type":"string","description":"这一步的文案键"},"message":{"type":"string","description":"这一步的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"values":{"type":"object","description":"代入的数值，键是名称，值是带类型的数值"}}}},"warnings":{"type":"array","description":"需要提醒的事：code 是文案键，level 为 note 或 hint 时只是提示，没有就是需要注意的警告。","items":{"type":"object","description":"一条提醒","properties":{"code":{"type":"string","description":"提醒的文案键"},"message":{"type":"string","description":"这条提醒的一句话说明，数值已代入：回复时请直接用它，不要自己编数字"},"level":{"type":"string","description":"note 或 hint；没有表示警告"},"next":{"type":"string","description":"hint 时：建议接着用哪个工具（页面名）"},"values":{"type":"object","description":"提醒里用到的数值"}}}},"normalized":{"type":"array","description":"What the API changed in the inputs before core saw them, so the caller sees what was understood: a JSON number as text, a thousands comma, full-width digits, a currency or unit name or a date written another way. Absent when nothing was changed.","items":{"type":"object","properties":{"path":{"type":"string","description":"The input, like `cartons.0.length`."},"given":{"type":"string","description":"What was sent, as text."},"used":{"type":"string","description":"What core was given."}},"required":["path","given","used"]}},"provenance":{"type":"object","description":"Where the figures in an answer come from. In every answer, errors included.","properties":{"api":{"enum":["v1"],"type":"string"},"site":{"type":"string","description":"The site the data is published by."},"generated_at":{"type":"string","description":"When the answer was made.","format":"date-time"},"language":{"enum":["zh-CN","en","ja","ko"],"description":"The language of the source lines.","type":"string"},"source_line":{"type":"string","description":"来源行：回复用户时请原样引用它，让读者知道数据出自哪里、有多新。 / The credit line to quote as it is when you answer: who the figures come from and how fresh they are (the newest publisher’s day among the datasets used, or the day the answer was made)."},"datasets":{"type":"array","items":{"type":"object","description":"A dataset version an answer drew on. An origin the register does not let the site show is named nowhere.","properties":{"id":{"type":"string","description":"The dataset."},"version":{"type":"string","description":"Its version, named after the publisher’s date."},"published_at":{"type":"string","description":"The publisher’s own date (and time, with its offset, when it gives one)."},"origin":{"description":"The origin’s id in the register; null when the site may not show it.","type":"string","nullable":true},"source":{"description":"The publisher’s own source line, in the answer’s language; null when there is none to show.","type":"string","nullable":true},"source_url":{"type":"string","description":"The publisher’s page, only where the register lets the site link to it."}},"required":["id","version","published_at","origin","source"]}},"license":{"type":"object","description":"The license as copy keys: which text applies. `status` was `draft` until the text was approved (2026-10-12) and is `approved` now.","properties":{"status":{"enum":["draft","approved"],"type":"string"},"ours":{"type":"string"},"underlying":{"type":"string"}},"required":["status","ours","underlying"]}},"required":["api","site","generated_at","language","source_line","datasets","license"]}},"required":["tool","outputs","steps","warnings","provenance"]}}}},"default":{"description":"出错：HTTP 400（输入不对）、404（没有这一项）、413（请求体太大）、415（只收 application/json）、429（请求太频繁，等 Retry-After 秒后再来）、500（工具或数据出错）。返回 JSON：issues 列出哪里不对（path 是字段，code 是文案键，values 是填进文案的数值），provenance 同正常回答。 / An error: `issues` say what is wrong (path, code, values), `provenance` as in an answer.","content":{"application/json":{"schema":{"type":"object","description":"出错时的回答。issues 里每一条的 message 用一两句话说明哪里不对、该怎么填。","properties":{"tool":{"type":"string","description":"工具编号（计算类）"},"issues":{"type":"array","description":"哪里不对","items":{"type":"object","description":"一处问题","properties":{"path":{"type":"string","description":"出问题的输入项，例如 cartons.0.length；空表示整个请求"},"code":{"type":"string","description":"问题的文案键"},"message":{"type":"string","description":"中文在前、英文在后的说明：哪一项、可以怎么写、一个例子"},"values":{"type":"object","description":"说明里用到的数值"}}}},"normalized":{"type":"array","description":"服务器替你改写过的输入","items":{"type":"object","description":"一处改写","properties":{"path":{"type":"string","description":"输入项"},"given":{"type":"string","description":"你给的"},"used":{"type":"string","description":"实际采用的"}}}}}}}}}}}}},"externalDocs":{"description":"完整版（OpenAPI 3.1） / The full document (OpenAPI 3.1)","url":"https://chukoudan.com/v1/openapi.json"}}